1. #include<iostream>
  2. #include<fstream>
  3. #include<string>
  4. #include<cstring>
  5. #include<conio.h>
  6. #include<Windows.h>
  7. //#include<windows.h>
  8. using namespace std;
  9. string ID;//具有唯一性
  10. class Person
  11. {
  12. protected:
  13. string No; //学号
  14. string Age;//年龄
  15. string QQ;//QQ号码
  16. char Name[20]; //姓名
  17. char Sex[10]; //性别
  18. string Tel; //电话号码
  19. char domitory[25];//宿舍
  20. char canteen[25];//最喜欢的食堂
  21. char sports[100];//最喜欢的运动
  22. char subject[50];//最喜欢的科目
  23. Person *next;
  24. public:
  25. Person(string ID,char *Name,char*Sex,string Age,string Tel,char*domitory,string QQ,char*canteen,char*sports,char*subject)
  26. {
  27. strcpy(this->Name,Name);
  28. strcpy(this->Sex,Sex);
  29. this->QQ=QQ;
  30. strcpy(this->domitory,domitory);
  31. strcpy(this->canteen,canteen);
  32. strcpy(this->sports,sports);
  33. strcpy(this->subject,subject);
  34. this->Tel=Tel;
  35. this->No=ID;
  36. this->Age=Age;
  37. }
  38. friend class Manage;
  39. };
  40. class Manage
  41. {
  42. private:
  43. Person *person;
  44. public:
  45. Manage()
  46. {
  47. person=0;
  48. Load();
  49. }
  50. ~Manage()
  51. {
  52. Person *p;
  53. p=person;
  54. while(p)
  55. {
  56. p=p->next;
  57. delete person;
  58. person=p;
  59. }
  60. person=0;
  61. }
  62. void Find(char Name[20]);//按姓名查找
  63. void Find(string ID);//按编号查找
  64. void Add(); //加入加信息
  65. void Delete(); //删除信息
  66. void Modify(string ID); //改动信息
  67. void Query(); //查询信息
  68. void TJ(); //清除文件信息
  69. void Save(); //保存数据
  70. void Load(); //读入数据
  71. void Look();//预览
  72. void DesTory();
  73. void Output(Person *p)
  74. {
  75. cout<<"\t\t【 学号 】:"<<p->No<<endl;
  76. cout<<"\t\t【 姓名 】:"<<p->Name<<endl;
  77. cout<<"\t\t【 性别 】:"<<p->Sex<<endl;
  78. cout<<"\t\t【 年龄 】:"<<p->Age<<endl;
  79. cout<<"\t\t【 联系电话 】:"<<p->Tel<<endl;
  80. cout<<"\t\t【 QQ号码 】:"<<p->QQ<<endl;
  81. cout<<"\t\t【 宿舍地址 】:"<<p->domitory<<endl;
  82. cout<<"\t\t【最喜欢的饭堂】:"<<p->canteen<<endl;
  83. cout<<"\t\t【最喜欢的科目】:"<<p->subject<<endl;
  84. cout<<"\t\t【最喜欢的运动】:"<<p->sports<<endl;
  85. cout<<endl;
  86. }
  87. };
  88. void Manage::Add()
  89. {
  90. system("cls");
  91. Person *p,*p2; //新结点指针
  92. string No,Age,Tel,QQ;
  93. char Name[20],Sex[10],domitory[25],canteen[25],sports[100],subject[50];
  94. char c;
  95. cout<<"\n\t ◆ 新增学生通讯录 ◆\n";
  96. cout<<"================================================"<<endl;
  97. //输入学生信息
  98. cout<<"输入学号: \t";
  99. cin>>No;
  100. cout<<endl;
  101. {
  102. Person *p1;
  103. p1=person;
  104. while(p1)
  105. {
  106. if(p1->No==No)
  107. {
  108. break;
  109. }
  110. else
  111. {
  112. p1=p1->next;
  113. }
  114. }
  115. if(p1!=NULL)
  116. {
  117. cout<<"该学号已存在,是否改动该学生信息(Y/N) "<<endl;
  118. cin>>c;
  119. if(toupper(c)=='Y')
  120. {
  121. cout<<"该学生信息为:"<<endl;
  122. Find(No);
  123. cout<<endl;
  124. Modify(No);
  125. return ;
  126. }
  127. else
  128. return ;
  129. }
  130. }
  131. cout<<"输入姓名: \t";
  132. cin>>Name;
  133. cout<<endl;
  134. cout<<"输入性别: \t";
  135. cin>>Sex;
  136. cout<<endl;
  137. cout<<"输入年龄: \t";
  138. cin>>Age;
  139. cout<<endl;
  140. cout<<"输入QQ号码: \t";
  141. cin>>Tel;
  142. cout<<endl;
  143. cout<<"输入宿舍地址: \t";
  144. cin>>domitory;
  145. cout<<endl;
  146. cout<<"输入最喜欢的饭堂:\t";
  147. cin>>canteen;
  148. cout<<endl;
  149. cout<<"输入最喜欢的科目:\t";
  150. cin>>subject;
  151. cout<<endl;
  152. cout<<"输入最喜欢的体育运动:\t";
  153. cin>>sports;
  154. cout<<endl;
  155. p=new Person(No,Name,Sex,Age,Tel,domitory,QQ,canteen,sports,subject);
  156. p->next=0;
  157. //学生结点加入链表
  158. if(person) //若已经存在结点
  159. {
  160. p2=person;
  161. while(p2->next) //查找尾结点
  162. {
  163. p2=p2->next;
  164. }
  165. p2->next=p; //连接
  166. }
  167. else //若不存在结点(表空)
  168. {
  169. person=p; //连接
  170. }
  171. system("cls");
  172. cout<<"\t\t\t【联系人已成功加入】\n"<<endl;
  173. cout<<"\t\t是否继续加入联系人?(Y/N) "<<endl;
  174. cin>>c;
  175. if(toupper(c)=='Y')
  176. {
  177. Add();
  178. return ;
  179. }
  180. else
  181. return ;
  182. }
  183. void Manage::Delete() //删除人员
  184. {
  185. system("cls");
  186. char c;
  187. string No;
  188. cout<<"\n\t◆ 删除信息 ◆\n";
  189. cout<<"===================================================";
  190. cout<<"输入要删除的学生ID:\t";
  191. cin>>No;
  192. cout<<endl;
  193. //查找要删除的结点
  194. Person *p1,*p2;
  195. p1=person;
  196. while(p1)
  197. {
  198. if(p1->No==No)
  199. break;
  200. else
  201. {
  202. p2=p1;
  203. p1=p1->next;
  204. }
  205. }
  206. //删除结点
  207. if(p1!=NULL)//若找到结点,则删除
  208. {
  209. cout<<"所要删除的学生的信息例如以下:\n"<<endl;
  210. Output(p1);
  211. cout<<"确定是否删除(Y/N): ";
  212. cin>>c;
  213. if(toupper(c)!='Y')
  214. return;
  215. // system("pause");
  216. if(p1==person) //若要删除的结点是第一个结点
  217. {
  218. person=p1->next;
  219. delete p1;
  220. }
  221. else //若要删除的结点是兴许结点
  222. {
  223. p2->next=p1->next;
  224. delete p1;
  225. }
  226. cout<<"\t\t【联系人已成功删除】\n";
  227. cout<<"是否继续删除(Y/N) "<<endl;
  228. cin>>c;
  229. if(toupper(c)=='Y')
  230. {
  231. Delete();
  232. return ;
  233. }
  234. else
  235. return ;
  236. }
  237. else //未找到结点
  238. cout<<"\n\t\tOops!系统未能找到该同学\n";
  239. getch();//等待按下随意键继续
  240. }
  241. void Manage::Modify(string ID)
  242. {
  243. Person *p1;
  244. char c;
  245. p1=person;
  246. while(p1)
  247. {
  248. if(p1->No==ID)
  249. break;
  250. else
  251. {
  252. p1=p1->next;
  253. }
  254. }
  255. if(p1!=NULL)//若找到结点
  256. {
  257. system("cls");
  258. cout<<"所要改动的学生的信息例如以下:\n"<<endl;
  259. Output(p1);
  260. do
  261. {
  262. cout<<"1.改动姓名 2.改动性别 3 改动年龄\n"<<endl;
  263. cout<<"4.改动电话号码 5.改动宿舍地址 6.改动QQ号码\n"<<endl;
  264. cout<<"7.改动最喜欢饭堂 8.改动最喜欢运动 9.改动最喜欢科目\n"<<endl;
  265. cout<<"0.退出改动\n"<<endl;
  266. cout<<"请选择(0-9)要改动的信息:\n"<<endl;
  267. cin>>c;
  268. if(c!='0')
  269. cout<<"请输入新的信息: ";
  270. switch(c)
  271. {
  272. case '1': cin>>p1->Name; break;
  273. case '2': cin>>p1->Sex; break;
  274. case '3': cin>>p1->Age; break;
  275. case '4': cin>>p1->Tel; break;
  276. case '5': cin>>p1->domitory; break;
  277. case '6': cin>>p1->QQ; break;
  278. case '7': cin>>p1->canteen; break;
  279. case '8': cin>>p1->sports; break;
  280. case '9': cin>>p1->subject; break;
  281. default: break;
  282. }
  283. }while(c!='0');
  284. system("cls");
  285. cout<<"\t 【联系人已成功改动】\n"<<endl;
  286. cout<<"是否继续改动(Y/N): "<<endl;
  287. cin>>c;
  288. if(toupper(c)=='Y')
  289. {
  290. cout<<"请输入要改动人员的ID: ";
  291. cin>>ID;
  292. cout<<endl;
  293. Modify(ID);
  294. return ;
  295. }
  296. else
  297. return ;
  298. }
  299. else //未找到结点
  300. cout<<"未找到该学生!\n";
  301. getch();//暂停(会等待你按下随意键,再继续运行以下的语句;)
  302. }
  303. void Manage::Save() //数据写入到文件
  304. {
  305. ofstream fPerson("Person.txt",ios::out);
  306. char c;
  307. cout<<"\n【将要保存数据,是否继续?】[Y/N]:";
  308. cin>>c;
  309. if(toupper(c)!='Y')
  310. return;
  311. Person *p=person;
  312. while(p)
  313. {
  314. fPerson<<p->No<<" "<<p->Name<<" "<<p->Sex<<" "<<p->Age<<" "<<p->Tel<<" "<<p->domitory<<" "<<p->QQ<<" "<<p->canteen<<" "<<p->sports<<" "<<p->subject<<endl;
  315. p=p->next;
  316. }
  317. fPerson.close();
  318. cout<<"\n【已成功保存数据】\n";
  319. system("pause");
  320. }
  321. void Manage::Load() //数据读入
  322. {
  323. ifstream fPerson;
  324. Person *p=person;
  325. string No,Age,Tel,QQ;
  326. char Name[20],Sex[10],domitory[25],canteen[25],sports[100],subject[50];
  327. fPerson.open("person.txt",ios::in);
  328. fPerson>>No>>Name>>Sex>>Age>>Tel>>domitory>>QQ>>canteen>>sports>>subject;
  329.  
  330. while(fPerson.good())//文件打开成功时
  331. {
  332. p=new Person(No,Name,Sex,Age,Tel,domitory,QQ,canteen,sports,subject);
  333. p->next=0;
  334. //结点加入链表
  335. if(person) //若已经存在结点
  336. {
  337. Person *p2;
  338. p2=person;
  339. while(p2->next) //查找尾结点
  340. {
  341. p2=p2->next;
  342. }
  343. p2->next=p; //连接
  344. }
  345. else //若不存在结点(表空)
  346. {
  347. person=p; //连接
  348. }
  349. fPerson>>No>>Name>>Sex>>Age>>Tel>>domitory>>QQ>>canteen>>sports>>subject;
  350. }
  351. fPerson.close();
  352. }
  353. void Manage::Find(string ID)
  354. {
  355. Person *p1;
  356. p1=person;
  357. while(p1)
  358. {
  359. if(p1->No==ID)
  360. break;
  361. else
  362. {
  363. p1=p1->next;
  364. }
  365. }
  366. if(p1!=NULL)
  367. {
  368. Output(p1);
  369. }
  370. else
  371. cout<<"\n\t\tOops!系统未能找到该同学\n"<<endl;
  372. }
  373.  
  374. void Manage::Find(char Name[20])
  375. {
  376. Person *p1;
  377. int count=0;
  378. p1=person;
  379. while(p1)
  380. {
  381. if(strcmp(p1->Name,Name)==0)
  382. {
  383. count++;
  384. Output(p1);
  385. }
  386. p1=p1->next;
  387. }
  388. if(count)
  389. {
  390. cout<<"\t●查询结果例如以下:●"<<endl;
  391. cout<<"\n系统共为您找到了 "<<count<<" 个名字为 ★"<<Name<<"★ 的同学\n"<<endl;
  392. }
  393. else
  394. cout<<"\n\t\tOops!系统未能找到该同学\n"<<endl;
  395. }
  396. void Manage::Query()
  397. {
  398. char c;
  399. string ID,Tel,QQ;
  400. char Name[20];
  401. do{
  402. cout<<"1.按学号查找 2.按名字查找 3.按电话号码查找 4.按QQ查找 5.退出查找"<<endl;
  403. cin>>c;
  404. // system("cls");
  405. cout<<endl;
  406. switch(c)
  407. {
  408. case '1': {
  409. cout<<"输入学号 ID: ";
  410. cin>>ID;
  411. Find(ID);
  412. }; break;
  413. case '2': {
  414. cout<<"输入姓名 Name: ";
  415. cin>>Name;
  416. Find(Name);
  417. }; break;
  418. case '3': {
  419. cout<<"输入电话号码 Tel:"<<endl;
  420. cin>>Tel;
  421. Find(Tel);
  422. };break;
  423. case '4': {
  424. cout<<"输入QQ号码 QQ:"<<endl;
  425. cin>>QQ;
  426. Find(QQ);
  427. };break;
  428. case '5':break;
  429. default: cout<<"Oops! 输入有误 请又一次输入...\n"<<endl;
  430. }
  431. }while(c!='1'&&c!='2'&&c!='3'&&c!='4'&&c!='5');
  432. cout<<"\t\t\t 【查找成功】\n"<<endl;
  433. cout<<"是否继续查找?(Y/N) "<<endl;
  434. cin>>c;
  435. if(toupper(c)=='Y')
  436. {
  437. Query();
  438. return ;
  439. }
  440. else
  441. return ;
  442. system("pause");
  443. }
  444. void Manage::Look()
  445. {
  446. //设置字体颜色
  447. SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |
  448. FOREGROUND_RED | FOREGROUND_BLUE);
  449. system("cls");
  450. Person *p1;
  451. int count=0;
  452. char c;
  453. p1=person;
  454. while(p1)
  455. {
  456. cout<<"学号: "<<p1->No<<"\t姓名: "<<p1->Name<<endl;
  457. count++;
  458. p1=p1->next;
  459. }
  460. if(count!=0)
  461. {
  462. cout<<"\n\t【预览信息载入成功!】 \n"<<endl;
  463. cout<<"是否查询具体信息?(Y/N): ";
  464. cin>>c;
  465. if(toupper(c)=='Y')
  466. {
  467. Query();
  468. return;
  469. }
  470. else
  471. return ;
  472. }
  473. else
  474. {
  475. cout<<"Oops! 尚未创建通讯录,是否如今创建?(Y/N)"<<endl;
  476. cin>>c;
  477. if(toupper(c)=='Y')
  478. {
  479. Add();
  480. return;
  481. }
  482. else
  483. return ;
  484. }
  485. }
  486. void Manage::DesTory()
  487. { //设置字体为红色
  488. SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |
  489. FOREGROUND_RED);
  490. char c;
  491. system("cls");
  492. cout<<"\n\t\t\t ◆清除信息◆ \n"<<endl;
  493. cout<<"=============================================================="<<endl;
  494. cout<<"\t\t\t ※警告※\n\n\t清除通讯录信息会导致全部已保存的信息全然丢失!!!\n"<<endl;
  495. cout<<"★是否决定清除全部通讯录信息?★(Y/N): "<<endl;
  496. cin>>c;
  497. if(toupper(c)!='Y')
  498. return;
  499. cout<<"★您确认要清楚全部通讯录信息吗?★(Y/N)"<<endl;
  500. cin>>c;
  501. if(toupper(c)!='Y')
  502. return;
  503. else
  504. {
  505. Person *p;
  506. p=person;
  507. while(p)
  508. {
  509. p=p->next;
  510. delete person;
  511. person=p;
  512. }
  513. person=0;
  514. // ofstream fPerson("person.txt");
  515. // fPerson.close();
  516. }
  517. system("pause");
  518. }
  519. void Manage::TJ()
  520. {
  521. Person *p1;
  522. int count=0,Boy=0,Girl=0;
  523. p1=person;
  524. while(p1)
  525. {
  526. count++;
  527. if(strcmp(p1->Sex,"男")==0)
  528. Boy++;
  529. if(strcmp(p1->Sex,"女")==0)
  530. Girl++;
  531. p1=p1->next;
  532. }
  533. cout<<"通讯录内共同拥有 "<<count<<"人\n"<<endl;
  534. cout<<"男生: "<<Boy<<"人"<<endl<<"女生: "<<Girl<<"人"<<"\n"<<endl;
  535. system("pause");
  536. }
  537. int main(void)
  538. {
  539. Manage m;
  540. int c;
  541. do
  542. {
  543. //设置字体为绿色
  544. SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |
  545. FOREGROUND_GREEN);
  546. system("cls");
  547. cout<<" ★ 通讯录系统 ★ "<<endl;
  548. cout<<"============================================================================="<<endl;
  549. cout<<" ( ̄3 ̄)│ 【 1.新增通讯录 】│ ◢◣ ◢◣。 ◢◣ ☆圣★"<<endl;
  550. cout<<" │ │ ◢★◣ ◢★◣。 ◢★◣ ★诞☆"<<endl;
  551. cout<<" (╯_╰)│ 【 2.删除名单 】│ ◢■■◣ ◢■■◣。 ◢■■◣ ☆节★"<<endl;
  552. cout<<" │ │◢■■■◣ ◢■■■◣。◢■■■◣ ★快☆"<<endl;
  553. cout<<" (⊙_⊙)│ 【 3.改动名单 】│︸︸||︸︸ ︸︸||︸︸ ︸︸||︸︸ ☆乐★"<<endl;
  554. cout<<" │ │"<<endl;
  555. cout<<" ( -﹏-)│ 【 4.查询具体信息 】││\__╭╭╭╭╭__/│"<<endl;
  556. cout<<" │ ││           │ "<<endl;
  557. cout<<" (∩_∩)│ 【 5.保存数据 】││           │ ╭─────╮"<<endl;
  558. cout<<" │ ││           │ │ 欢迎使用通 │"<<endl;
  559. cout<<" (≧o≦)│ 【 6.预览信息 】││ ≧       ≦ │< 讯录,请按数│"<<endl;
  560. cout<<" │ ││ ≡ ╰┬┬┬╯ ≡ │ │ 字提示操作!│"<<endl;
  561. cout<<" (〒_〒)│ 【 7.清空名单 】││    ╰─╯    │ ╰──────╯"<<endl;
  562. cout<<" │ │╰──┬O───O┬──╯"<<endl;
  563. cout<<" (→_→)│ 【 8.人数统计 】│ │ ╬ │"<<endl;
  564. cout<<" │ │ ╰┬───┬╯ ──Made by George.S"<<endl;
  565. cout<<" (ㄒoㄒ)│ 【 0.退出系统 】│ SYSU-CS-Class2"<<endl;
  566. cout<<"============================================================================="<<endl;
  567. cout<<"请输入对应数字选择(1-8): ";
  568. cin>>c;
  569. switch(c)
  570. {
  571. case 1: m.Add(); break;
  572. case 2: m.Delete();break;
  573. case 3: {
  574. system("cls");
  575. cout<<"请输入要改动人员的ID: ";
  576. cin>>ID;
  577. cout<<endl;
  578. m.Modify(ID);
  579. };break;
  580. case 4: {
  581. system("cls");
  582. m.Query();
  583. }; break;
  584. case 5: m.Save(); break;
  585. case 6: m.Look(); break;
  586. case 7: m.DesTory(); break;
  587. case 8: m.TJ(); break;
  588. default: break;
  589. }
  590. }while(c!=0);
  591. char s;
  592. cout<<"\n【是否要保存您的全部操作?】(Y/N): "<<endl;
  593. cin>>s;
  594. if(toupper(s)=='Y')
  595. m.Save();
  596. return 0;
  597. }

通讯录C++console application的更多相关文章

  1. 如何将Console application的Program函数变成支持async的?

    如何将Console application的Program函数变成支持async的?   class Program { static void Main(string[] args) { Task ...

  2. win32 console application 如何修改图标?

    win32 console application ,不要看这名字高端大气上档次,让你摸不着头脑,其实他就是我们最先学习c语言那种黑色窗口的东西......话说他怎么修改图标呢?第一种方法是:右键-〉 ...

  3. Hello World 之 控制台版本(Console Application)

    原文:Hello World 之 控制台版本(Console Application) 先来介绍下Hello, World   "Hello, World"程序指的是只在计算机屏幕 ...

  4. RESTful Console Application

    RESTful Console Application Introduction Inspirited by RESTFul architecture, A console application t ...

  5. Using Spring.net in console application

    Download Spring.net in http://www.springframework.net/ Install Spring.NET.exe Create a console appli ...

  6. Fix Visual Studio 2013 Razor CSHTML Intellisense in Class Library or Console Application

    https://mhusseini.wordpress.com/2015/02/05/fix-visual-studio-2013-razor-cshtml-intellisense-in-class ...

  7. C# 控制台程序(Console Application )启动后隐藏

    背景 前段时间给项目编写了数据适配器,读取其他系统的数据后推送到MQ上,我们的系统通过订阅MQ的方式来获取.由于其他系统支持C#编程,且为了一时方便,选择了C#的控制台程序. 最近用户在使用中,总是不 ...

  8. .NET 如何隐藏Console Application的窗口

    1)创建Console Application工程 2)修改Output type 为Windows Application即可

  9. VS2015 create a C++ console application based on WinRT

    1. Enable /ZW 2. Disable /Gm 3. #using C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcpack ...

随机推荐

  1. Android - 和其他APP交互 - 把用户带到其他app

    Android的重要功能之一就是app可以根据要执行的操作让用户启动另外一个app.例如,app有一个商业地址然后想要在地图上显示,并不需要在app中加一个显示地图的activity,可以直接用Int ...

  2. LeetCode——Add Binary

    Given two binary strings, return their sum (also a binary string). For example, a = "11" b ...

  3. MSSQL基础

    前言 最近看到一些关于sql的汇总博客,觉得还是很不错的.于是心血来潮,也想写一篇自己对这方面的一些认识(主要是点出一下自己比较少用demo写的,一般都是直接改设计时的,例如建表.该字段名). 一.数 ...

  4. Codeforces 338D GCD Table 中国剩余定理

    主题链接:点击打开链接 特定n*m矩阵,[i,j]分值为gcd(i,j) 给定一个k长的序列,问能否匹配上 矩阵的某一行的连续k个元素 思路: 我们要求出一个解(i,j) 使得 i<=n &am ...

  5. 对于C11中的正則表達式的使用

    Regular Expression Special Characters "."---Any single character(a "wildcard") & ...

  6. 几个cd快速提示

    cd是project师每天都会用到的命令. 今天就来分享几条和cd有关的小技巧 cd 假设你用cd ~来进入当前用户的home文件夹的话,那么能够试试直接敲cd. 相同效果,少敲两下键盘. cd - ...

  7. 揭秘上海传智播客平均工资超过7k 其中一位知情人士

    大学毕业生人数破700万大关.如何破解"毕业即失业"中国式的大学困境? 2014年全国高校毕业生总数将达到727万人,比被称为"史上最难就业年"的2013年再添 ...

  8. Struts2大约Action系统培训6大约action的接受三个参数的方法

    我们知道,action在web它在控制器的发展起到了一定作用,通过接收client来到参数,运行不同的模块只实现运营,因此,接收参数是非常重要的组成部分,有接收到的参数的仅前端.操作权限运行数据库后端 ...

  9. Oracle压缩总结2— 估计表压缩效应

    使用压缩前,我们可以估算压缩能有多大效果. 11gr2我已经能够使用dbms_comp_advisor,具体代码见附件.只需要运行两个文件dbmscomp.sql和prvtcomp.plb.然后使用D ...

  10. spring与mybatis集成和事务控制

    一个. 基本介绍 本文将使用spring整合mybatis, 并加入事务管理, 以此为记, 方便以后查阅. 二. 样例 1. 代码结构图: 2. 建表语句: DROP DATABASE test; C ...