经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C++ » 查看文章
c++通讯录管理系统
来源:cnblogs  作者:Adalight  时间:2021/3/29 9:14:42  对本文有异议

代码拷贝

  1. #include<iostream>
  2. #include<string>
  3. #include<stdlib.h>
  4. #define MAX 1000
  5. using namespace std;
  6. //设计联系人结构体
  7. struct Person
  8. {
  9. //姓名
  10. string m_Name;
  11. //性别 1男 2女
  12. int m_Sex;
  13. //年龄
  14. int m_Age;
  15. //电话
  16. string m_Phone;
  17. //住址
  18. string m_Addr;
  19. };
  20. //设计通讯录结构体
  21. struct Addressbooks
  22. {
  23. //通讯录中保存的联系人数组
  24. struct Person personArray[MAX];
  25. //通讯录中当前记录联系人个数
  26. int m_Size;
  27. };
  28. //1.添加联系人
  29. void addPerson(Addressbooks *abs)
  30. {
  31. //判断通讯录是否已满,如果满了就不再添加
  32. if (abs->m_Size == MAX)
  33. {
  34. cout << "通讯录已满,无法添加!" << endl;
  35. return;
  36. }
  37. else
  38. {
  39. //添加具体联系人
  40. //姓名
  41. string name;
  42. cout << "请输入姓名:" << endl;
  43. cin >> name;
  44. abs->personArray[abs->m_Size].m_Name = name;
  45. //性别
  46. cout << "请输入性别:" << endl;
  47. cout << "1--男" << endl;
  48. cout << "2--女" << endl;
  49. int sex = 0;
  50. while(true)
  51. {
  52. //输入的是1或者2,可以退出循环,因为输入的是正确值
  53. //如果输入有误,重新输入
  54. cin >> sex;
  55. if (sex == 1 || sex == 2)
  56. {
  57. abs->personArray[abs->m_Size].m_Sex = sex;
  58. break;
  59. }
  60. cout << "输入有误,请重新输入" << endl;
  61. }
  62. //年龄
  63. cout << "请输入年龄:" << endl;
  64. int age = 0;
  65. cin >> age;
  66. abs->personArray[abs->m_Size].m_Age = age;
  67. //电话
  68. cout << "请输入联系电话:" << endl;
  69. string phone;
  70. cin >> phone;
  71. abs->personArray[abs->m_Size].m_Phone = phone;
  72. //住址
  73. cout << "请输入家庭住址:" << endl;
  74. string address;
  75. cin >> address;
  76. abs->personArray[abs->m_Size].m_Addr = address;
  77. //更新通讯录中的人数
  78. abs->m_Size++;
  79. cout << "添加成功" << endl;
  80. system("pause");//按任意键继续
  81. system("cls");//清屏操作
  82. }
  83. }
  84. //2.显示所有联系人
  85. void showPerson(Addressbooks * abs)
  86. {
  87. //判断通讯录中人数是否为0,如果为0,提示记录为空
  88. //如果不为0,显示记录的联系人信息
  89. if (abs->m_Size == 0)
  90. {
  91. cout << "当前记录为空" << endl;
  92. }
  93. else
  94. {
  95. for (int i = 0; i < abs->m_Size; i++)
  96. {
  97. cout << "姓名:" << abs->personArray[i].m_Name << "\t";
  98. cout << "性别:" << ( abs->personArray[i].m_Sex == 1 ? "男":"女") << "\t";
  99. cout << "年龄:" << abs->personArray[i].m_Age << "\t";
  100. cout << "电话:" << abs->personArray[i].m_Phone << "\t";
  101. cout << "住址:" << abs->personArray[i].m_Addr << endl;
  102. }
  103. }
  104. system("pause");//按任意键继续
  105. system("cls");//清屏操作
  106. }
  107. //检测联系人是否存在,如果存在,返回联系人所在数组中的具体位置,不存在返回-1
  108. //参数1 通讯录 参数2 对比人名
  109. int isExist(Addressbooks*abs,string name)
  110. {
  111. for (int i = 0; i < abs->m_Size; i++)
  112. {
  113. //找到用户输入的姓名了
  114. if (abs->personArray[i].m_Name == name)
  115. {
  116. /*system("cls");*/
  117. return i;//找到了,返回这个人在数组中的下标
  118. }
  119. }
  120. /*system("cls");*/
  121. return -1;//如果遍历结束都没有找到,返回-1
  122. }
  123. //3.删除指定的联系人
  124. void deletePerson(Addressbooks*abs)
  125. {
  126. cout << "请输入您要删除的联系人" << endl;
  127. string name;
  128. cin >> name;
  129. //ret=-1未查到 ret!=-1查到
  130. int ret=isExist(abs, name);
  131. if(ret!=-1)
  132. {
  133. //查找到人,要进行删除操作
  134. for (int i = ret; i < abs->m_Size; i++)
  135. {
  136. //数据前移
  137. abs->personArray[i] = abs->personArray[i + 1];
  138. }
  139. abs->m_Size--;//更新通讯录中的人员数
  140. cout << "删除成功" << endl;
  141. }
  142. else
  143. {
  144. cout << "查无此人" << endl;
  145. }
  146. system("pause");
  147. system("cls");
  148. }
  149. //4.查找指定联系人信息
  150. void findPerson(Addressbooks*abs)
  151. {
  152. cout << "请输入您要查找的联系人" << endl;
  153. string name;
  154. cin >> name;
  155. //判断指定的联系人是否存在通讯录中
  156. int ret = isExist(abs, name);
  157. if (ret != -1)//找到联系人
  158. {
  159. cout << "姓名:" << abs->personArray[ret].m_Name << "\t";
  160. cout << "性别:" << abs->personArray[ret].m_Sex << "\t";
  161. cout << "年龄:" << abs->personArray[ret].m_Age << "\t";
  162. cout << "电话:" << abs->personArray[ret].m_Phone << "\t";
  163. cout << "住址:" << abs->personArray[ret].m_Addr<< endl;
  164. }
  165. else//未找到联系人
  166. {
  167. cout << "查无此人" << endl;
  168. }
  169. //任意键按下后清屏
  170. system("pause");
  171. system("cls");
  172. }
  173. //5.修改指定的联系人信息
  174. void modifyPerson(Addressbooks*abs)
  175. {
  176. cout << "请输入您要修改的联系人" << endl;
  177. string name;
  178. cin >> name;
  179. int ret = isExist(abs, name);
  180. if (ret != -1)//找到指定的联系人
  181. {
  182. //姓名
  183. string name;
  184. cout << "请输入姓名:" << endl;
  185. cin >> name;
  186. abs->personArray[ret].m_Name = name;
  187. //性别
  188. cout << "请输入性别" << endl;
  189. cout << "1-男" << endl;
  190. cout << "2-女" << endl;
  191. int sex;
  192. while (true)
  193. {
  194. cin >> sex;
  195. if (sex == 1 || sex == 2)
  196. {
  197. //输入正确,退出
  198. abs->personArray[ret].m_Sex = sex;
  199. break;
  200. }
  201. else
  202. {
  203. cout << "输入有误,请重新输入" << endl;
  204. }
  205. }
  206. //年龄
  207. cout << "请输入年龄:" << endl;
  208. int age;
  209. cin >> age;
  210. abs->personArray[ret].m_Age = age;
  211. //电话
  212. cout << "请输入联系电话:" << endl;
  213. string phone;
  214. cin >> phone;
  215. abs->personArray[ret].m_Phone = phone;
  216. //地址
  217. cout << "请输入家庭住址:" << endl;
  218. string address;
  219. cin >> address;
  220. abs->personArray[ret].m_Addr = address;
  221. cout << "修改成功!" << endl;
  222. }
  223. else//未找到联系人
  224. {
  225. cout << "查无此人" << endl;
  226. }
  227. //按任意键清屏
  228. system("pause");
  229. system("cls");
  230. }
  231. //6.清空所有的联系人
  232. void cleanPerson(Addressbooks*abs)
  233. {
  234. abs->m_Size = 0;//将当期记录联系人数重置为0,做逻辑清空操作
  235. cout << "通讯录已清空" << endl;
  236. //按任意键后清屏
  237. system("pause");
  238. system("cls");
  239. }
  240. //菜单界面
  241. void showMenu()
  242. {
  243. cout << "**********************" << endl;
  244. cout << "*****1.添加联系人*****"<< endl;
  245. cout << "*****2.显示联系人*****" << endl;
  246. cout << "*****3.删除联系人*****" << endl;
  247. cout << "*****4.查找联系人*****" << endl;
  248. cout << "*****5.修改联系人*****" << endl;
  249. cout << "*****6.清空联系人*****" << endl;
  250. cout << "*****0.退出通讯录*****" << endl;
  251. cout << "**********************" << endl;
  252. }
  253. int main()
  254. {
  255. //创建通讯录结构体变量
  256. Addressbooks abs;
  257. //初始化通讯录中当前人员个数
  258. abs.m_Size = 0;
  259. int select = 0;//创建用户选择输入的变量
  260. while (true)
  261. {
  262. //菜单调用
  263. showMenu();
  264. cout << "请输入一个数字:" << endl;
  265. cin >> select;
  266. switch (select)
  267. {
  268. case 1: //1.添加联系人
  269. addPerson(&abs);//利用地址传递,可以修饰实参
  270. break;
  271. case 2: //2.显示联系人
  272. showPerson(&abs);
  273. break;
  274. case 3: //3.删除联系人
  275. /*{
  276. cout << "请输入删除联系人姓名:" << endl;
  277. string name;
  278. cin >> name;
  279. if (isExist(&abs, name) == -1)
  280. {
  281. cout << "查无此人" << endl;
  282. }
  283. else
  284. {
  285. cout << "找到此人" << endl;
  286. }
  287. }*/
  288. deletePerson(&abs);
  289. break;
  290. case 4: //4.查找联系人
  291. findPerson(&abs);
  292. break;
  293. case 5: //5.修改联系人
  294. modifyPerson(&abs);
  295. break;
  296. case 6: //6.清空联系人
  297. cleanPerson(&abs);
  298. break;
  299. case 0: //0.退出通讯录
  300. cout << "欢迎下次使用" << endl;
  301. system("pause");
  302. return 0;
  303. break;
  304. default:
  305. break;
  306. }
  307. }
  308. system("pause");
  309. return 0;
  310. }

原文链接:http://www.cnblogs.com/Adalight/p/14547808.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号