经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C++ » 查看文章
C++实现通讯录系统项目实战
来源:jb51  时间:2022/6/20 16:23:03  对本文有异议

本文实例为大家分享了C++实现通讯录系统项目的具体代码,供大家参考,具体内容如下

制作一个具有添加联系人、删除联系人、修改联系人等功能的通讯录系统

效果图:

代码如下:

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

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

本站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号