c++—通讯录管理系统
一、运用所学的结构体、地址指针等基础知识,完成通讯录管理系统
二、系统主要有以下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++—通讯录管理系统的更多相关文章
- iOS学习之Object-C语言简单的通讯录管理系统
用这几天学的OC的知识,写了一个实现简单功能的通讯录管理系统,在这里分享给大家: 通讯录管理系统 * 需求: 1.定义联系人类Contact.实例变量:姓名(拼音,首字母大写).性别.电话号码.住址 ...
- c语言实现通讯录管理系统(c课程设计)
工具:Visual C++6.0 说明: 本系统基于C语言实现班级通讯录管理系统,为大一时学习C语言刚入门所做的课程设计.功能包括增.删.查.改等,非常适合初学者练手.通讯录包括的个人信息有姓名.学号 ...
- c++实现通讯录管理系统(控制台版)
c++实现通讯录管理系统(控制台版) 此项目适合c++初学者,针对c++基础知识,涉及到变量.结构体定义使用.数组定义使用.指针定义使用等. 运行之后的结果如下: 代码: #include <i ...
- C++入门-控制台版的通讯录管理系统
通讯录管理系统 1.系统需求 通讯录是一个可以记录亲人.好友信息的工具. 本教程主要利用C++来实现一个通讯录管理系统 系统中需要实现的功能如下: 添加联系人:向通讯录中添加新人,信息包括(姓名.性别 ...
- C++课程设计 通讯录管理系统 原码及解析
设计题目:通信录管理系统 用C++设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理. (一)功能要求 查看功能:选择此功能时,列出下列三类选择. A 办公类B 个人类C 商务类,当选中某类时 ...
- C++通讯录管理系统(添加联系人,显示联系人,删除联系人,查找联系人,修改联系人,清空联系人,退出通讯录)
1 /** 2 * ProjectNmae:通讯录管理系统 3 * 功能: 4 * 添加联系人:向通讯录添加新人 5 * 显示联系人:显示通讯录中的所有联系人信息 6 * 删除联系人:按照姓名进行删除 ...
- C语言通讯录管理系统
本文转载自:http://blog.csdn.net/hackbuteer1/article/details/6573488 实现了通讯录的录入信息.保存信息.插入.删除.排序.查找.单个显示等功能. ...
- 通讯录管理系统(C语言)
/* * 对通讯录进行插入.删除.排序.查找.单个显示功能 */ #include <stdio.h> #include <malloc.h> #include <str ...
- c++实例之通讯录管理系统之清空联系人功能(七)
#include<iostream> using namespace std; constexpr auto MAX = ; //联系人结构体 struct Person { string ...
随机推荐
- 在 Apple Silicon Mac 上 DFU 模式恢复 macOS 固件
DFU 模式全新安装 macOS Big Sur 或 macOS Monterey 请访问原文链接:https://sysin.org/blog/apple-silicon-mac-dfu/,查看最新 ...
- Logback设置保留日志文件个数
Logback日志文件占用存储空间太多,设置保留文件个数,清理之前的文件. 主要由如下三个参数配合使用 maxHistory ,可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件,,例如设置 ...
- Linux学习 - 数值运算
1 declare 声明变量类型 declare [+/-] [选项] 变量名 - 给变量设定类型属性 + 取消变量的类型属性 -i 将变量声明为整数型 -x 将变量声明为环境变量(同export) ...
- Hystrix断路器中的服务熔断与服务降级
一.Hystrix断路器 微服务架构特点就是多服务,多数据源,支撑系统应用.这样导致微服务之间存在依赖关系.如果其中一个服务故障,可能导致系统宕机,这就是所谓的雪崩效应. 1.为什么需要断路器 服务雪 ...
- Mysql配置文件 innodb引擎
目录 innodb参数 innodb_buffer_pool_size innodb_read_io_threads|innodb_write_io_threads innodb_open_files ...
- 测试工具_siage
目录 一.简介 二.例子 三.参数 一.简介 Siege是一个多线程http负载测试和基准测试工具. 1.他可以查看每一个链接的状态和发送字节数 2.可以模拟不同用户进行访问 3.可以使用POST方法 ...
- ciscn_2019_s_4***(栈迁移)
这是十分经典的栈迁移题目 拿到题目例行检查 32位程序开启了nx保护 进入ida,发现了很明显的system 我们进入main函数查看vul 可以看到溢出的部分不够我们rop所以这道题通过栈迁移去做 ...
- 【web】php文件包含(利用phpinfo)
Docker搭建复现环境 地址:https://github.com/vulhub/vulhub/tree/master/php/inclusion ps. github单独下载一个文件夹的方法: 安 ...
- C# 使用163的SMTP服务器发送邮件
string Receiver, string Subject, string content: //163邮箱发送配置 client = new System.Net.Mail.SmtpClient ...
- CF1177A Digits Sequence (Easy Edition) 题解
Content 一个序列由从 \(1\) 开始的数字不断在末端拼接,就像这样:\(12345678910111213141516...\).现在,给定一个数字 \(k\),请输出这个序列的第 \(k\ ...