当前位置:   article > 正文

VS2013 IDE C#生成CodeMap_66ma4b.top

66ma4b.top
<span style="font-size:32px;">下边的代码是C#控制台程序,测试了一些模板、接口等的用法,作为入门。</span>
<span style="font-size:32px;">利用下边的代码在VS2013里生成代码的类图,类、接口关系图。</span>
<span style="font-size:18px;">生成方法:</span>
<span style="font-size:18px;"><span style="white-space:pre">	</span>解决方案(右键)->Show on Code Map.即可动画查看类图。</span>

  1. <span style="font-size:18px;">using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace ConsoleTest
  6. {
  7. class Program
  8. {
  9. private delegate void pIndex(int n);
  10. private delegate int pInt(int m, int n);
  11. private delegate double pDbl(double m, double n);
  12. static void Main(string[] args) // Default PRIVATE Attr.
  13. {
  14. int i = 0;
  15. int j = 0;
  16. int k = 0;
  17. Console.Write("Hello, C#!\n");
  18. ///---/// 显示当前日期及时间
  19. isolationStrip();
  20. DateTime dt1 = DateTime.Now;
  21. Console.WriteLine();
  22. Console.WriteLine("dt1: {0} Year {1} Month {2} Day {3} Hour {4} Minutes {5} Seconds {6} MillSec",
  23. dt1.Year, dt1.Month, dt1.Day, dt1.Hour, dt1.Minute, dt1.Second, dt1.Millisecond);
  24. Console.Write("\n\n");
  25. ///---/// 数学函数测试
  26. isolationStrip();
  27. double doublePara1 = Math.Sin(0.5);
  28. Console.WriteLine("\nSin({1}) is :{0}.", doublePara1, 0.5);
  29. TestDelegate classOne = new TestDelegate();
  30. pIndex p = new pIndex( classOne.showDoubleValue);
  31. p(111);
  32. p = new pIndex( classOne.showValue);
  33. p(111);
  34. pInt pInt = new pInt(classOne.Add);
  35. pInt(172,12);
  36. pInt = new pInt(classOne.Red);
  37. pInt(108, 12);
  38. pInt = new pInt(classOne.Multi);
  39. pInt(108, 12);
  40. pInt = new pInt(classOne.Div);
  41. pInt(108, 12);
  42. pDbl pDbl = new pDbl(classOne.Add);
  43. pDbl(172.345, 12.34);
  44. pDbl = new pDbl(classOne.Red);
  45. pDbl(172.345, 12.34);
  46. pDbl = new pDbl(classOne.Multi);
  47. pDbl(172.345, 12.34);
  48. pDbl = new pDbl(classOne.Div);
  49. pDbl(172.345, 12.34);
  50. int e = 0;
  51. string e1 = "";
  52. Stack<string> sStr = new Stack<string>();
  53. Stack<int> sInt = new Stack<int>();
  54. // Int type stack
  55. sInt.Push(14);
  56. sInt.Push(54);
  57. sInt.Push(12);
  58. Console.WriteLine("Pop Stack Sort:");
  59. while ( !sInt.StackEmpty())
  60. {
  61. sInt.Pop( ref e);
  62. Console.WriteLine(" {0} ", e);
  63. }
  64. Console.WriteLine();
  65. Console.WriteLine();
  66. // String type stack
  67. sStr.Push("LE");
  68. sStr.Push("YY");
  69. sStr.Push("Bright");
  70. Console.WriteLine("Pop Stack Sort:");
  71. while (!sStr.StackEmpty())
  72. {
  73. sStr.Pop(ref e1);
  74. Console.WriteLine(" {0} ", e1);
  75. }
  76. Console.WriteLine();
  77. Console.WriteLine();
  78. ///---/// Output 第1个矩形信息
  79. isolationStrip();
  80. Rectangle rect = new Rectangle(200.0, 120.00);
  81. rect.showDetialInfo();
  82. Console.WriteLine("\nNow outputting the {0}th circle info, \nits area is {1}", 1, rect.getArea());
  83. Console.WriteLine();
  84. ///---/// Output 第1个椭球信息
  85. isolationStrip();
  86. Circle Ellipsoid = new Ellipsoid(1.00, 5.00, 12.0);
  87. Ellipsoid.showInfo();
  88. Console.WriteLine("\nNow outputting the {0}th circle info, \nits area is {1}", 1, Ellipsoid.getArea());
  89. Ellipsoid.showDetialInfo();
  90. Console.WriteLine();
  91. Console.WriteLine();
  92. ///---/// Output 第1个圆形信息
  93. isolationStrip();
  94. Circle circleClass = new Circle( 1.00, 5.00);
  95. circleClass.showInfo();
  96. Console.WriteLine("\nNow outputting the {0}th circle info, \nits area is {1}", 1, circleClass.getArea());
  97. circleClass.showDetialInfo();
  98. Console.WriteLine();
  99. Console.WriteLine();
  100. ///---/// Output 第2个圆形信息
  101. Circle circleClass2 = new Circle();
  102. circleClass2.showInfo();
  103. Console.WriteLine("\nNow outputting the {0}th circle info, \nits area is {1}", 2, circleClass2.getArea());
  104. circleClass2.showDetialInfo();
  105. Console.WriteLine();
  106. Console.WriteLine();
  107. ///---/// Output 第3个圆形信息
  108. Circle circleClass3 = new Circle(100.00, 512.00);
  109. circleClass3.showInfo();
  110. Console.WriteLine("\nNow outputting the {0}th circle info, \nits area is {1}", 3, circleClass3.getArea());
  111. Console.WriteLine();
  112. Console.WriteLine();
  113. ///---/// 模板方法1
  114. isolationStrip();
  115. MyOpe<Circle> thiOpe = new MyOpe<Circle>();
  116. circleClass2.showDetialInfo();
  117. circleClass3.showDetialInfo();
  118. Console.WriteLine("\n");
  119. thiOpe.MySwap( ref circleClass2, ref circleClass3);
  120. Console.WriteLine("After calling the template function - swap:\n");
  121. circleClass2.showDetialInfo();
  122. circleClass3.showDetialInfo();
  123. Console.WriteLine("\n\n");
  124. ///---/// 模板方法2
  125. MyPurelOpe<Circle> forthOpe = new MyPurelOpe<Circle>();
  126. circleClass2.showDetialInfo();
  127. circleClass3.showDetialInfo();
  128. Console.WriteLine("\n");
  129. forthOpe.MySwap(ref circleClass2, ref circleClass3);
  130. Console.WriteLine("After calling the template function - swap:\n");
  131. circleClass2.showDetialInfo();
  132. circleClass3.showDetialInfo();
  133. Console.WriteLine("\n\n");
  134. ---/// 自定义函数调用
  135. Console.WriteLine( FcnTest001());
  136. FcnTest002();
  137. Console.ReadKey();
  138. }
  139. /// <summary>
  140. /// 添加自定义函数
  141. /// </summary>
  142. /// <returns></returns>
  143. private static string FcnTest001()
  144. {
  145. return "\nSelf-defination Funciotn 001:\n"+"Now testing the Function Call FcnTest001.";
  146. }
  147. private static void FcnTest002()
  148. {
  149. Console.WriteLine("\nSelf-defination Funciotn 002:\n" +
  150. "Now testing the Function Call FcnTest002. ..." +
  151. "And the static is necessary to limiting the function.");
  152. }
  153. private static void isolationStrip()
  154. {
  155. Console.WriteLine("\n" +
  156. "///---///---///---///---///---///---///---///---///---///---///---///---///---///" +
  157. "\n"+
  158. "///---///---///---///---///---/ Isolationg Strip /---///---///---///---///---///" +
  159. "\n" +
  160. "///---///---///---///---///---///---///---///---///---///---///---///---///---///" +
  161. "\n");
  162. }
  163. /// <summary>
  164. /// 模板方法实例001
  165. /// </summary>
  166. /// <typeparam name="T"></typeparam>
  167. /// <param name="para1"></param>
  168. /// <param name="para2"></param>
  169. private static void MySwap<T>(ref T para1, ref T para2)
  170. {
  171. T tmp = para1;
  172. para1 = para2;
  173. para2 = tmp;
  174. }
  175. }
  176. /// <summary>
  177. /// 一些自定义类以及接口
  178. /// </summary>
  179. public class TestDelegate
  180. {
  181. /// <summary>
  182. /// 纯方法类,无属性
  183. /// </summary>
  184. public void showDoubleValue(int n)
  185. {
  186. Console.WriteLine("{0} Multiply 2 is {1}", n, 2 * n);
  187. }
  188. public void showValue(int n)
  189. {
  190. Console.WriteLine("Varialbe is {0}", n);
  191. }
  192. public int Add(int m, int n)
  193. {
  194. Console.WriteLine("{0} Add {1} is {2}", m, n, m+n);
  195. return m + n;
  196. }
  197. public int Red(int m, int n)
  198. {
  199. Console.WriteLine("{0} Reduce {1} is {2}", m, n, m - n);
  200. return m - n;
  201. }
  202. public int Multi(int m, int n)
  203. {
  204. Console.WriteLine("{0} Multi {1} is {2}", m, n, m * n);
  205. return m * n;
  206. }
  207. public int Div(int m, int n)
  208. {
  209. Console.WriteLine("{0} Divide {1} is {2}", m, n, m / n);
  210. return m / n;
  211. }
  212. public double Add(double m, double n)
  213. {
  214. Console.WriteLine("{0} Add {1} is {2}", m, n, m + n);
  215. return m + n;
  216. }
  217. public double Red(double m, double n)
  218. {
  219. Console.WriteLine("{0} Reduce {1} is {2}", m, n, m - n);
  220. return m - n;
  221. }
  222. public double Multi(double m, double n)
  223. {
  224. Console.WriteLine("{0} Multi {1} is {2}", m, n, m * n);
  225. return m * n;
  226. }
  227. public double Div(double m, double n)
  228. {
  229. Console.WriteLine("{0} Divide {1} is {2}", m, n, m / n);
  230. return m / n;
  231. }
  232. }
  233. public class Stack<T>
  234. {
  235. /// <summary>
  236. /// 堆栈类
  237. /// </summary>
  238. ///
  239. T[] data;
  240. int top;
  241. public Stack()
  242. {
  243. data = new T[10];
  244. top = -1;
  245. }
  246. public bool StackEmpty()
  247. {
  248. return -1 == top;
  249. }
  250. public void Push( T e)
  251. {
  252. top ++;
  253. data[top] = e;
  254. }
  255. public void Pop( ref T e)
  256. {
  257. e = data[top];
  258. top--;
  259. }
  260. }
  261. public class MyOpe<T>
  262. {
  263. /// <summary>
  264. /// 模板类,操作测试,含属性成员数组,有构造函数
  265. /// </summary>
  266. public T[] temp;
  267. public MyOpe()
  268. {
  269. temp = new T[3];
  270. }
  271. public void MySwap(ref T para1, ref T para2)
  272. {
  273. temp[0] = para1;
  274. para1 = para2;
  275. para2 = temp[0];
  276. }
  277. public void MySwap(T para1, T para2)
  278. {
  279. temp[0] = para1;
  280. para1 = para2;
  281. para2 = temp[0];
  282. }
  283. public void MySwap( )
  284. {
  285. temp[2] = temp[0];
  286. temp[0] = temp[1];
  287. temp[1] = temp[2];
  288. }
  289. public void show()
  290. {
  291. Console.WriteLine( "\n"+temp[0].ToString());
  292. Console.WriteLine( "\n"+temp[1].ToString());
  293. Console.WriteLine( "\n"+temp[2].ToString());
  294. }
  295. }
  296. public class MyPurelOpe<T>
  297. {
  298. /// <summary>
  299. /// 模板操作类,含一个属性成员,无构造函数
  300. /// </summary>
  301. public T temp;
  302. public void MySwap(ref T para1, ref T para2)
  303. {
  304. temp = para1;
  305. para1 = para2;
  306. para2 = temp;
  307. }
  308. public void show()
  309. {
  310. Console.WriteLine("\n" + temp.ToString()+"\n");
  311. }
  312. }
  313. public interface Ia
  314. {
  315. /// <summary>
  316. /// 接口定义
  317. /// </summary>
  318. /// <returns></returns>
  319. double getArea();
  320. double getCircumference();
  321. }
  322. public interface Ib
  323. {
  324. /// <summary>
  325. /// 接口定义
  326. /// </summary>
  327. void showInfo();
  328. void showDetialInfo();
  329. }
  330. public interface Ic
  331. {
  332. /// <summary>
  333. /// 接口定义
  334. /// </summary>
  335. double getScale();
  336. }
  337. public interface Id
  338. {
  339. /// <summary>
  340. /// 接口定义
  341. /// </summary>
  342. double getCubeScale();
  343. double getVolume();
  344. }
  345. public class Rectangle:Ia,Ib
  346. {
  347. private double x,y;
  348. public Rectangle()
  349. {
  350. x = 1.00;
  351. y = 1.00;
  352. Console.WriteLine("Rectangle Constructor");
  353. }
  354. ~Rectangle()
  355. {
  356. Console.WriteLine("Rectangle Deconstructor");
  357. }
  358. public Rectangle( double x1, double y1)
  359. {
  360. x = x1;
  361. y = y1;
  362. Console.WriteLine("Rectangle Constructor");
  363. }
  364. public virtual double getArea()
  365. {
  366. return x * y;
  367. }
  368. public virtual double getCircumference()
  369. {
  370. return 2*(x + y);
  371. }
  372. public virtual void showInfo()
  373. {
  374. Console.WriteLine("Rectangle element x is : {0}", x);
  375. Console.WriteLine("Rectangle element y is : {0}", y);
  376. }
  377. public virtual void showDetialInfo()
  378. {
  379. Console.WriteLine("Rectangle element x is : {0}", x);
  380. Console.WriteLine("Rectangle element y is : {0}", y);
  381. Console.WriteLine("Rectangle Area is : {0}", getArea());
  382. Console.WriteLine("Rectangle circumference is : {0}", getCircumference());
  383. }
  384. }
  385. public class Circle : Rectangle,Ic
  386. {
  387. double x, y;
  388. public Circle()
  389. {
  390. x = 3.00;
  391. y = x;
  392. Console.WriteLine("Circle Constructor");
  393. }
  394. ~Circle()
  395. {
  396. Console.WriteLine("Circle Deconstructor");
  397. }
  398. public Circle(double x1, double y1)
  399. {
  400. x = x1;
  401. y = y1;
  402. Console.WriteLine("Circle Constructor");
  403. }
  404. public override double getArea()
  405. {
  406. return 3.1415926*x*y;
  407. }
  408. public override double getCircumference()
  409. {
  410. return 3.1415926 * (x + y);
  411. }
  412. public virtual double getScale()
  413. {
  414. return x>y ? 2*x : 2*y;
  415. }
  416. public override void showInfo()
  417. {
  418. Console.WriteLine("Circle element x is : {0}", x);
  419. Console.WriteLine("Circle element y is : {0}", y);
  420. }
  421. public override void showDetialInfo()
  422. {
  423. Console.WriteLine("Circle element x is : {0}", x);
  424. Console.WriteLine("Circle element y is : {0}", y);
  425. Console.WriteLine("Circle Area is : {0}", getArea());
  426. Console.WriteLine("Circle Circumference is : {0}", getCircumference());
  427. Console.WriteLine("Circle Size-Scale is : {0}", getScale());
  428. }
  429. }
  430. public class Ellipsoid : Circle, Id
  431. {
  432. double x, y, z;
  433. public Ellipsoid()
  434. {
  435. x = 3.00;
  436. y = x;
  437. z = y;
  438. Console.WriteLine("Ellipsoid Constructor");
  439. }
  440. ~Ellipsoid()
  441. {
  442. Console.WriteLine("Ellipsoid Deconstructor");
  443. }
  444. public Ellipsoid(double singlePara)
  445. {
  446. x = singlePara;
  447. y = x;
  448. z = x;
  449. Console.WriteLine("Ellipsoid Constructor");
  450. }
  451. public Ellipsoid(double x1, double y1, double z1)
  452. {
  453. x = x1;
  454. y = y1;
  455. z = z1;
  456. Console.WriteLine("Ellipsoid Constructor");
  457. }
  458. public override double getArea()
  459. {
  460. double p = 1.6075;
  461. p = 4 * 3.1415926 * Math.Pow((Math.Pow(x * y, p) + Math.Pow(x * z, p) + Math.Pow(z * y, p))/3.00, 1.0 / p);
  462. return getVolume();
  463. }
  464. public override double getCircumference()
  465. {
  466. return 2*3.1415926*getScale(); ///---/// 最大切面的 circumference
  467. }
  468. public override double getScale()
  469. {
  470. return Math.Max(z,Math.Max( x, y));
  471. }
  472. public virtual double getCubeScale()
  473. {
  474. return x*y*z;
  475. }
  476. public virtual double getVolume()
  477. {
  478. return 4.0/3.0*3.1415926*x*y*z;
  479. }
  480. public override void showInfo()
  481. {
  482. Console.WriteLine("Following are the informations of the attributes of current element :");
  483. Console.WriteLine("Ellipsoid element x is : {0}", x);
  484. Console.WriteLine("Ellipsoid element y is : {0}", y);
  485. Console.WriteLine("Ellipsoid element z is : {0}", z);
  486. }
  487. public override void showDetialInfo()
  488. {
  489. Console.WriteLine("Ellipsoid element x is : {0}", x);
  490. Console.WriteLine("Ellipsoid element y is : {0}", y);
  491. Console.WriteLine("Ellipsoid element z is : {0}", z);
  492. Console.WriteLine("Ellipsoid Area is : {0}", getArea());
  493. Console.WriteLine("Ellipsoid Circumference is : {0}", getCircumference());
  494. Console.WriteLine("Ellipsoid Size-Scale is : {0}", getScale());
  495. Console.WriteLine("Ellipsoid Volume is : {0}", getVolume());
  496. }
  497. }
  498. }</span>
  1. <span style="font-size:18px;">
  2. </span>
  1. <span style="font-size:18px;">
  2. </span>
  1. <span style="font-size:18px;">
  2. </span>
<span style="font-size:18px;"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABNkAAAIuCAYAAACCb958AAAgAElEQVR4AezdB3xb5b3/8Z/t2Nlx9nJwEjIgO4FAQ0IhQCCUvUtp6eA25Q+Ulg4o0HJpS2/XZXZAW1o6KBS4QAstlNVQaKEBAhlkQAZJSEyWs8j2/J/vsR/5SJZsWZItyfo8eSk6ks58S7J0vnpGXmlpaa1REEAAAQQQQAABBBBAAAEEEEAAAQQQQCBhgfyEl2RBBBBAAAEEEEAAAQQQQAABBBBAAAEEEPAFCNl4ISCAAAIIIIAAAggggAACCCCAAAIIIJCkACFbkoAsjgACCCCAAAIIIIAAAggggAACCCCAACEbrwEEEEAAAQQQQAABBBBAAAEEEEAAAQSSFCBkSxKQxRFAAAEEEEAAAQQQQAABBBBAAAEEECBk4zWAAAIIIIAAAggggAACCCCAAAIIIIBAkgKEbEkCsjgCCCCAAAIIIIAAAggggAACCCCAAAKEbLwGEEAAAQQQQAABBBBAAAEEEEAAAQQQSFKAkC1JQBZHAAEEEEAAAQQQQAABBBBAAAEEEECAkI3XAAIIIIAAAggggAACCCCAAAIIIIAAAkkKELIlCcjiCCCAAAIIIIAAAggggAACCCCAAAIIELLxGkAAAQQQQAABBBBAAAEEEEAAAQQQQCBJAUK2JAFZHAEEEEAAAQQQQAABBBBAAAEEEEAAAUI2XgMIIIAAAggggAACCCCAAAIIIIAAAggkKUDIliQgiyOAAAIIIIAAAggggAACCCCAAAIIIEDIxmsAAQQQQAABBBBAAAEEEEAAAQQQQACBJAUI2ZIEZHEEEEAAAQQQQAABBBBAAAEEEEAAAQQI2XgNIIAAAggggAACCCCAAAIIIIAAAgggkKQAIVuSgCyOAAIIIIAAAggggAACCCCAAAIIIIAAIRuvAQQQQAABBBBAAAEEEEAAAQQQQAABBJIUIGRLEpDFEUAAAQQQQAABBBBAAAEEEEAAAQQQIGTjNYAAAggggAACCCCAAAIIIIAAAggggECSAoRsSQKyOAIIIIAAAggggAACCCCAAAIIIIAAAoRsvAYQQAABBBBAAAEEEEAAAQQQQAABBBBIUoCQLUlAFkcAAQQQQAABBBBAAAEEEEAAAQQQQICQjdcAAggggAACCCCAAAIIIIAAAggggAACSQoQsiUJyOIIIIAAAggggAACCCCAAAIIIIAAAggQsvEaQAABBBBAAAEEEEAAAQQQQAABBBBAIEkBQrYkAVkcAQQQQAABBBBAAAEEEEAAAQQQQAABQjZeAwgggAACCCCAAAIIIIAAAggggAACCCQpQMiWJCCLI4AAAggggAACCCCAAAIIIIAAAgggQMjGawABBBBAAAEEEEAAAQQQQAABBBBAAIEkBQjZkgRkcQQQQAABBBBAAAEEEEAAAQQQQAABBAjZeA0ggAACCCCAAAIIIIAAAggggAACCCCQpAAhW5KALI4AAggggAACCCCAAAIIIIAAAggggAAhG68BBBBAAAEEEEAAAQQQQAABBBBAAAEEkhQgZEsSkMURQAABBBBAAAEEEEAAAQQQQAABBBAgZOM1gAACCCCAAAIIIIAAAggggAACCCCAQJIChGxJArI4AggggAACCCCAAAIIIIAAAggggAAChGy8BhBAAAEEEEAAAQQQQAABBBBAAAEEEEhSgJAtSUAWRwABBBBAAAEEEEAAAQQQQAABBBBAgJCN1wACCCCAAAIIIIAAAggggAACCCCAAAJJChCyJQnI4ggggAACCCCAAAIIIIAAAggggAACCBCy8RpAAAEEEEAAAQQQQAABBBBAAAEEEEAgSQFCtiQBWRwBBBBAAAEEEEAAAQQQQAABBBBAAAFCNl4DCCCAAAIIIIAAAggggAACCCCAAAIIJClAyJYkIIsjgAACCCCAAAIIIIAAAggggAACCGSXQF5eXsp3mJAt5aSsEAEEEEAAAQQQQAABBBBAAAEEEEAgkwVqa2tTvnuEbCknZYUIIIAAAggggAACCCCAAAIIIIAAArkmQMiWa884x4sAAggggAACCCCAAAIIIIAAAgggkHIBQraUk7JCBBBAAAEEEEAAAQQQQAABBBBAAIFcEyBky7VnnONFAAEEEEAAAQQQQAABBBBAAAEEEEi5ACFbyklZIQIIIIAAAggggAACCCCAAAIIIIBArgkQsuXaM87xIoAAAggggAACCCCAAAIIIIAAAgikXICQLeWkrBABBBBAAAEEEEAAAQQQQAABBBBAINcECNly7RnneBFAAAEEEEAAAQQQQAABBBBAAAEEUi5AyJZyUlaIAAIIIIAAAggggAACCCCAAAIIIJBrAoRsufaMc7wIIIAAAggggAACCCCAAAIIIIAAAikXIGRLOSkrRAABBBBAAAEEEEAAAQQQQAABBBDINQFCtlx7xjleBBBAAAEEEEAAAQQQQAABBBBAAIGUCxCypZyUFSKAAAIIIIAAAggggAACCCCAAAII5JoAIVuuPeMcLwIIIIAAAggggAACCCCAAAIIIIBAygU6pHyNca5w9NBKG3FIpQ3sW209utbEuRSzIYAAAggggAACCCCAAAIIIIAAAgi0R4GN5QW2eVsHW7C8yD7cm331wto0ZFOY9sVPfGinH7fXBnnhGgUBBBBAAAEEEEAAAQQQQAABBBBAAIGgQJUXGb25rJP99i/d7bn/dA4+lNHTeaWlpbVtsYeXnLbHrvvcTmqttQU220AAAQQQQAABBBBAAAEEEEAAAQTagcD8pR3tq7f2sQ2b27SeWEJybRKy3fj5nfb58z5MaAdZCAEEEEAAAQQQQAABBBBAAAEEEEAgdwW27iiwy7/b1xa+2zGjEVo1ZOvUsdauv2ynffrM3U0irNvWvcnHeRABBBBAAAEEEEAAAQQQQAABBBBAoP0K9Oxy0Io7V8Q8wOXvFdkP7+tp/3qrU8x50v1Aq4ZsZx6/z+76RnmjY9xzsNB+OneSvbKm1Bas62Mf7su+zuwaHRR3IIAAAggggAACCCCAAAIIIIAAAggkLDCs/wH7yLAP7OIj37FZY9c3Ws+6DzrYqVcOsoMVeY0ey4Q7Wq1B69gRFXb1J3Y1OsY31gywzz1whllhV/voyaPt+E/1tNLhxY3m4w4EEEAAAQQQQAABBBBAAAEEEEAAgdwQ2Lenwla+u91WLN9qF/zqUPvUsWvth2fOtW4dK0MAQwdX2WXn7LZ7HukRui+TJlqtJtvnvIO+6Qs7wo717Q197Lhbz7dTzxpln7t8shUVFYQ9zg0EEEAAAQQQQAABBBBAAAEEEEAAgdwWWOWFbbfe8i8b32e1PfqFv4VhfLg332Z8usT27s+82myt1k5z9vR9YQhVNfn2Xw+daSfOGmKXX30kAVuYDjcQQAABBBBAAAEEEEAAAQQQQAABBCQw8rDe9p1bZ9m/VpbYL18aF4bSo2uNHXvE/rD7MuVGq4RsOuAjxhwMO8YH5o22bXu72mVXHR12PzcQQAABBBBAAAEEEEAAAQQQQAABBBAICgwY2NU++/+m2v88My14tz89fVJ45tRohjTd0SohW99e1dYhoiXogk2lNn7yQOvarShNh8pmEUAAAQQQQAABBBBAAAEEEEAAAQSyRWDG8UNsx54O9u7mnmG7fOiQhn7awh5I841WGfhgUN
本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号