一、运用所学的结构体、地址指针等基础知识,完成通讯录管理系统

二、系统主要有以下6个功能:

1.添加联系人
2.显示联系人 
3.删除联系人 
4.查找联系人
5.修改联系人 
6.清空联系人

  1 #include<iostream>
2 using namespace std;
3 #include<string>
4 #define MAX 1000
5
6
7 //菜单界面
8 void showMenu()
9 {
10 cout << "**************************" << endl;
11 cout << "***** 1.添加联系人 *****" << endl;
12 cout << "***** 2.显示联系人 *****" << endl;
13 cout << "***** 3.删除联系人 *****" << endl;
14 cout << "***** 4.查找联系人 *****" << endl;
15 cout << "***** 5.修改联系人 *****" << endl;
16 cout << "***** 6.清空联系人 *****" << endl;
17 cout << "***** 0.退出通讯录 *****" << endl;
18 cout << "**************************" << endl;
19 }
20
21 //联系人结构体
22 struct Person
23 {
24 string m_Name;//姓名
25 int m_sex;//性别1男,2女
26 int m_age;//年龄
27 string m_phone;//电话
28 string m_Addr; //住址
29 };
30 //通讯录结构体
31 struct Addressbooks
32 {
33 //联系人数组
34 struct Person personarray[MAX];
35 //联系人个数
36 int m_size;
37
38 };
39 //1添加联系人
40 void addPerson(Addressbooks* abs)
41 {
42 //判断通讯录是否满了
43 if (abs->m_size==MAX)
44 {
45 cout << "通讯录已满,无法添加!" << endl;
46 return;
47 }
48 else
49 {
50 //添加联系人
51
52 //姓名
53 string name="";
54 cout << "请输入姓名: " << endl;
55 cin >> name;
56 abs->personarray[abs->m_size].m_Name = name;
57
58 //性别
59 int sex=0;
60 cout << "请输入性别: " << endl;
61 cout << "1 --- 男" << endl;
62 cout << "2 --- 女" << endl;
63 while (true)
64 {
65 cin >> sex;
66 if (sex == 1 || sex == 2)
67 {
68 abs->personarray[abs->m_size].m_sex = sex;
69 break;
70 }
71 cout << "输入有误,请重新输入!" << endl;
72 }
73
74 //年龄
75 cout << "请输入年龄: " << endl;
76 int age = 0;
77 while (true)
78 {
79 cin >> age;
80 if (age<101)
81 {
82 abs->personarray[abs->m_size].m_age = age;
83 break;
84 }
85 cout << "输入有误,请重新输入!" << endl;
86
87 }
88
89 //电话
90 cout << "请输入电话: " << endl;
91 string phone="";
92 cin >> phone;
93 abs->personarray[abs->m_size].m_phone = phone;
94
95 //住址
96 cout << "请输入家庭住址: " << endl;
97 string place="";
98 cin >> place;
99 abs->personarray[abs->m_size].m_Addr = place;
100
101 //更新通讯录人数
102 abs->m_size++;
103 cout << "添加成功" << endl;
104
105 system("pause");//请按任意键继续
106 system("cls");//清屏操作
107 }
108 }
109
110 //2.显示联系人
111 void showperson(Addressbooks* abs)
112 {
113 if (abs->m_size == 0)
114 {
115 cout << "当前记录为空" << endl;
116 }
117 else
118 {
119 for (int i = 0; i < abs->m_size; i++)
120 {
121 cout << "姓名: " << abs->personarray[i].m_Name << "\t";
122 cout << "性别: " << (abs->personarray[i].m_sex == 1 ? "男":"女") << "\t";
123 cout << "年龄: " << abs->personarray[i].m_age << "\t";
124 cout << "电话: " << abs->personarray[i].m_phone << "\t";
125 cout << "住址: " << abs->personarray[i].m_Addr << endl;
126 }
127 }
128 system("pause");
129 system("cls");
130 }
131
132 //3.1检测联系人是否存在
133 int Exist(Addressbooks* abs,string name)//通讯录,对比姓名
134 {
135 for (int i = 0; i < abs->m_size; i++)
136 {
137 if (abs->personarray[i].m_Name == name)
138 {
139 return i;
140 }
141 }
142 return -1;
143 }
144 //3.2删除联系人
145 void Delteperson(Addressbooks* abs)
146 {
147 cout << "请输入您要删除的联系人" << endl;
148
149 string name;
150 cin >> name;
151
152 int ret = Exist(abs, name);
153
154 if (ret!=-1)
155 {
156 for (int i = ret; i < abs->m_size; i++)
157 {
158 //数据前移
159 abs->personarray[i] = abs->personarray[i + 1];
160 }
161 abs->m_size--;//更新人员数量
162 cout << "删除成功" << endl;
163 }
164 else
165 {
166 cout << "查无此人!" << endl;
167 }
168 system("pause");
169 system("cls");
170 }
171
172 //4.查找联系人
173 void findperson(Addressbooks* abs)
174 {
175 cout << "请输入需要查找的联系人" << endl;
176 string name;
177 cin >> name;
178
179 //判断是否存在
180 int ret = Exist(abs, name);
181
182 if (ret!=-1)
183 {
184 int i = ret;
185 cout << "姓名: " << abs->personarray[i].m_Name << "\t";
186 cout << "性别: " << (abs->personarray[i].m_sex == 1 ? "男" : "女") << "\t";
187 cout << "年龄: " << abs->personarray[i].m_age << "\t";
188 cout << "电话: " << abs->personarray[i].m_phone << "\t";
189 cout << "住址: " << abs->personarray[i].m_Addr << endl;
190 }
191 else
192 {
193 cout << "查无此人!" << endl;
194 }
195 system("pause");
196 system("cls");
197
198 }
199
200 //5.修改联系人
201 void modifyperson(Addressbooks* abs)
202 {
203 cout << "请输入需要修改的联系人" << endl;
204 string name;
205 cin >> name;
206
207 //判断是否存在
208 int ret = Exist(abs, name);
209
210 if (ret != -1)
211 {
212 int i= ret;
213 //显示要修改人信息
214 cout << "---------------------------------------------" << endl;
215 cout << "姓名: " << abs->personarray[i].m_Name << "\t";
216 cout << "性别: " << (abs->personarray[i].m_sex == 1 ? "男" : "女") << "\t";
217 cout << "年龄: " << abs->personarray[i].m_age << "\t";
218 cout << "电话: " << abs->personarray[i].m_phone << "\t";
219 cout << "住址: " << abs->personarray[i].m_Addr << endl;
220
221 //根据不同需求修改联系人信息
222 int n = 0;
223 cout << "---------------------------------------------" << endl;
224 cout << " 请选择需要修改的内容选项: " << endl;
225 cout << "---------------------------------------------" << endl;
226 cout << "1--姓名;2--性别;3--年龄;4--电话;5--住址;6--全部修改;7--退出" << endl;
227
228 while (n!=7)
229 {
230 cin >> n;
231 string me = "";
232 int sex=0;
233 int age = 0;
234 string phone = "";
235 string place = "";
236
237 switch (n)
238 {
239 case 1:
240 //姓名
241 cout << "请输入姓名: " << endl;
242 cin >> me;
243 abs->personarray[i].m_Name = me;
244 cout << "修改成功" << endl;
245 cout << "如要修改请继续选择其他选项,退出请按7" << endl;
246 break;
247 case 2:
248 //性别
249 cout << "请输入性别: " << endl;
250 cout << "1 --- 男" << endl;
251 cout << "2 --- 女" << endl;
252
253 while (true)
254 {
255 cin >> sex;
256 if (sex == 1 || sex == 2)
257 {
258 abs->personarray[i].m_sex = sex;
259 break;
260 }
261 cout << "输入有误,请重新输入!" << endl;
262 }
263 cout << "修改成功" << endl;
264 cout << "如要修改请继续选择其他选项,退出请按7" << endl;
265 break;
266
267 case 3:
268 //年龄
269 cout << "请输入年龄: " << endl;
270
271 cin >> age;
272 abs->personarray[i].m_age = age;
273 cout << "修改成功" << endl;
274 cout << "如要修改请继续选择其他选项,退出请按7" << endl;
275 break;
276
277 case 4:
278 //电话
279 cout << "请输入电话: " << endl;
280
281 cin >> phone;
282 abs->personarray[i].m_phone = phone;
283 cout << "修改成功" << endl;
284 cout << "如要修改请继续选择其他选项,退出请按7" << endl;
285 break;
286
287 case 5:
288 //住址
289 cout << "请输入家庭住址: " << endl;
290
291 cin >> place;
292 abs->personarray[i].m_Addr = place;
293 cout << "修改成功" << endl;
294 cout << "如要修改请继续选择其他选项,退出请按7" << endl;
295 break;
296
297
298 case 6:
299 //姓名
300 cout << "请输入姓名: " << endl;
301 cin >> name;
302 abs->personarray[i].m_Name=name;
303
304 //性别
305 cout << "请输入性别: " << endl;
306 cout << "1 --- 男" << endl;
307 cout << "2 --- 女" << endl;
308
309 while (true)
310 {
311 cin >> sex;
312 if (sex == 1 || sex == 2)
313 {
314 abs->personarray[i].m_sex = sex;
315 break;
316 }
317 cout << "输入有误,请重新输入!" << endl;
318 }
319
320 //年龄
321 cout << "请输入年龄: " << endl;
322 cin >> age;
323 abs->personarray[i].m_age = age;
324
325 //电话
326 cout << "请输入电话: " << endl;
327 cin >> phone;
328 abs->personarray[i].m_phone = phone;
329
330 //住址
331 cout << "请输入家庭住址: " << endl;
332 cin >> place;
333 abs->personarray[i].m_Addr = place;
334 cout << "修改成功" << endl;
335 n = 7;
336 break;
337
338 default:
339 break;
340 }
341 }
342
343 }
344 else
345 {
346 cout << "查无此人!" << endl;
347 }
348 system("pause");
349 system("cls");
350
351 }
352 //6、清空所有联系人
353 void cleanperson(Addressbooks* abs)
354 {
355 cout << "请问是否真的要清空通讯录? " << endl;
356 cout << "1--确定" << endl;
357 cout << "0--不清空" << endl;
358 int b;
359 cin >> b;
360 while (b==1)
361 {
362 abs->m_size = 0;
363 cout << "通讯录已清空" << endl;
364 break;
365 }
366 system("pause");
367 system("cls");
368 }
369
370 int main()
371 {
372 //创建通讯录结构体变量
373 Addressbooks abs;
374 //当前人员个数
375 abs.m_size = 0;
376
377 int select = 0;//创建用户选择输入变量
378
379 while (true) //除了选0,能一直使用
380 {
381 //菜单调用
382 showMenu();
383
384 cin >> select;
385 switch (select)
386 {
387 case 1: //1.添加联系人
388 addPerson(&abs); //地址传递
389 break;
390 case 2: //2.显示联系人
391 showperson(&abs);
392 break;
393 case 3: //3.删除联系人
394 Delteperson(&abs);
395 break;
396 case 4: //4.查找联系人
397 findperson(&abs);
398 break;
399 case 5: //5.修改联系人
400 modifyperson(&abs);
401 break;
402 case 6: //6.清空联系人
403 cleanperson(&abs);
404 break;
405 case 0: //0.退出通讯录
406 cout << "欢迎下次使用" << endl;
407 system("pause");
408 return 0;
409 break;
410 default:
411 break;
412 }
413 }
414
415
416
417 system("pause");
418 return 0;
419 }

0.退出通讯录

c++—通讯录管理系统的更多相关文章

  1. iOS学习之Object-C语言简单的通讯录管理系统

    用这几天学的OC的知识,写了一个实现简单功能的通讯录管理系统,在这里分享给大家: 通讯录管理系统 *  需求: 1.定义联系人类Contact.实例变量:姓名(拼音,首字母大写).性别.电话号码.住址 ...

  2. c语言实现通讯录管理系统(c课程设计)

    工具:Visual C++6.0 说明: 本系统基于C语言实现班级通讯录管理系统,为大一时学习C语言刚入门所做的课程设计.功能包括增.删.查.改等,非常适合初学者练手.通讯录包括的个人信息有姓名.学号 ...

  3. c++实现通讯录管理系统(控制台版)

    c++实现通讯录管理系统(控制台版) 此项目适合c++初学者,针对c++基础知识,涉及到变量.结构体定义使用.数组定义使用.指针定义使用等. 运行之后的结果如下: 代码: #include <i ...

  4. C++入门-控制台版的通讯录管理系统

    通讯录管理系统 1.系统需求 通讯录是一个可以记录亲人.好友信息的工具. 本教程主要利用C++来实现一个通讯录管理系统 系统中需要实现的功能如下: 添加联系人:向通讯录中添加新人,信息包括(姓名.性别 ...

  5. C++课程设计 通讯录管理系统 原码及解析

    设计题目:通信录管理系统 用C++设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理. (一)功能要求 查看功能:选择此功能时,列出下列三类选择. A 办公类B 个人类C 商务类,当选中某类时 ...

  6. C++通讯录管理系统(添加联系人,显示联系人,删除联系人,查找联系人,修改联系人,清空联系人,退出通讯录)

    1 /** 2 * ProjectNmae:通讯录管理系统 3 * 功能: 4 * 添加联系人:向通讯录添加新人 5 * 显示联系人:显示通讯录中的所有联系人信息 6 * 删除联系人:按照姓名进行删除 ...

  7. C语言通讯录管理系统

    本文转载自:http://blog.csdn.net/hackbuteer1/article/details/6573488 实现了通讯录的录入信息.保存信息.插入.删除.排序.查找.单个显示等功能. ...

  8. 通讯录管理系统(C语言)

    /* * 对通讯录进行插入.删除.排序.查找.单个显示功能 */ #include <stdio.h> #include <malloc.h> #include <str ...

  9. c++实例之通讯录管理系统之清空联系人功能(七)

    #include<iostream> using namespace std; constexpr auto MAX = ; //联系人结构体 struct Person { string ...

随机推荐

  1. maven管理本地jar包

    maven作为包管理工具,好处不必多说.但是有些情况,比如需要引入第三方包,如快递鸟,支付宝,微信等jar包(当然有可能直接提供maven依赖),如果直接下载到本地之后,怎么整合到自己的maven工程 ...

  2. Maven配置大全

    maven项目打jar包(带依赖) <build> <plugins> <plugin> <artifactId>maven-assembly-plug ...

  3. 如何将java对象转换成json数据

    package cn.hopetesting.com.test;import cn.hopetesting.com.domain.User;import com.fasterxml.jackson.c ...

  4. 使用buffered流结合byte数组,读入文件中的内容,包括中文字符

    package com.itcast.demo05.Buffered;import java.io.BufferedInputStream;import java.io.FileInputStream ...

  5. Jaeger开发入门(java版)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  6. mrctf2020_shellcode_revenge(可见符shellcode)!!!!

    第一次碰到这种题目,需要用可见符shellcode来做 题目我就不放了,我认为网上大佬会比我说的更加详细 [原创]纯字母shellcode揭秘-软件逆向-看雪论坛-安全社区|安全招聘|bbs.pedi ...

  7. [BUUCTF]PWN——babyheap_0ctf_2017

    [BUUCTF]PWN--babyheap_0ctf_2017 附件 步骤: 例行检查,64位,保护全开 试运行一下程序,看到这个布局菜单,知道了这是一道堆的题目,第一次接触堆的小伙伴可以去看一下这个 ...

  8. IPv6 DDNS 阿里云动态解析程序推荐: AliyunDdnsCSharp

    IPV6 DDNS 设置 概述 中国移动宽带提供了公网IPv6地址,为了物尽其用,于是折腾了域名到IPv6 的解析服务. 平台使用的阿里云解析DNS,平台提供了接口可以方便的添加与修改解析地址. 本打 ...

  9. 联盛德 HLK-W806 (十): 在 CDK IDE开发环境中使用WM-SDK-W806

    目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...

  10. uniapp+nvue开发之仿微信语音+视频通话功能 :实现一对一语音视频在线通话

    ​ 本篇文章是利用uni-app和nvue实现微信效果功能的第三篇了,今天我们基于uniapp + nvue实现的uniapp仿微信音视频通话插件实例项目,实现了以下功能: 1: 语音通话 2: 视频 ...