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












C++通讯录管理系统(添加联系人,显示联系人,删除联系人,查找联系人,修改联系人,清空联系人,退出通讯录)的更多相关文章
- mssqlserver修改表名,列名,添加表列,删除表列,修改表列类型
mssqlserver修改表名,列名,添加表列,删除表列,修改表列类型 ,代码肯定省事的呀 --添加表列 alter table test ) null; --删除表列 alter table tes ...
- iOS --SQL的增加、删除、查找、修改
iOS对于数据库的操作:增加.删除.查找.修改 首先需要创建一个数据库:本程序的数据库是在火狐浏览器里的插件里写的微量型数据库 火狐找查找SQLite Manager的步骤: 第一步:在工具栏找到附加 ...
- Python练习 ——名片管理系统(增添,删除,查找,修改)
需要注意的一个地方是,如果你用的版本是3.6的,那么下面的用到的所有从外界接收信息所用到的input()用input()就行了,如果是2.7版本,那么如果接收的是字符串要用raw_input()(将接 ...
- c++实例之通讯录管理系统之清空联系人功能(七)
#include<iostream> using namespace std; constexpr auto MAX = ; //联系人结构体 struct Person { string ...
- iOS学习之Object-C语言简单的通讯录管理系统
用这几天学的OC的知识,写了一个实现简单功能的通讯录管理系统,在这里分享给大家: 通讯录管理系统 * 需求: 1.定义联系人类Contact.实例变量:姓名(拼音,首字母大写).性别.电话号码.住址 ...
- c++实现通讯录管理系统(控制台版)
c++实现通讯录管理系统(控制台版) 此项目适合c++初学者,针对c++基础知识,涉及到变量.结构体定义使用.数组定义使用.指针定义使用等. 运行之后的结果如下: 代码: #include <i ...
- C++入门-控制台版的通讯录管理系统
通讯录管理系统 1.系统需求 通讯录是一个可以记录亲人.好友信息的工具. 本教程主要利用C++来实现一个通讯录管理系统 系统中需要实现的功能如下: 添加联系人:向通讯录中添加新人,信息包括(姓名.性别 ...
- C++课程设计 通讯录管理系统 原码及解析
设计题目:通信录管理系统 用C++设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理. (一)功能要求 查看功能:选择此功能时,列出下列三类选择. A 办公类B 个人类C 商务类,当选中某类时 ...
- c++—通讯录管理系统
一.运用所学的结构体.地址指针等基础知识,完成通讯录管理系统 二.系统主要有以下6个功能: 1.添加联系人2.显示联系人 3.删除联系人 4.查找联系人5.修改联系人 6.清空联系人 1 #inclu ...
随机推荐
- 升级openssl并重新编译Nginx
在漏洞扫描的时候出现"启用TLS1.0"的安全漏洞,描述为:不被视为 PCI 数据安全标准,推荐使用TLS1.2及以上版本: 我这边服务器使用的是CentOS7,默认自带的open ...
- Vue3全家桶升级指南一composition API
1.setup() vue3中的composition API中最重要的就是setup方法了,相当于组件的入口,所有的composition API都必须放到setup()中的使用. setup是在组 ...
- 5、mysql_sql语言介绍
5.1.什么是sql: 总结:sql语句是关系型数据库的结构化查询和程序设计语言: 5.2.sql的分类: 1.数据库查询语言(DQL): select user,host,password from ...
- 《PHP基础知识总结》系列分享专栏
总结PHP基础知识,对初学者还是高手都值得参考巩固. <PHP基础知识总结>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/2017 ...
- [zebra源码]分片语句ShardPreparedStatement执行过程
主要过程包括: 分库分表的路由定位 sql语句的 ast 抽象语法树的解析 通过自定义 SQLASTVisitor (MySQLSelectASTVisitor) 遍历sql ast,解析出逻辑表名 ...
- 如何修改Windows 11 任务栏大小
1.首先Win+R输入regedit打开注册表编辑器 2.进入注册表编辑器后,在地址栏中输入: HKEY_CURRENT_USER\Software\Microsoft\ Window ...
- pip install 默认安装路径修改
一.使用命令查看pip默认安装目录 python -m site 这里的USER_BASE和USER_SITE其实就是默认的启用Python通过pip自动下载的脚本和依赖安装包的基础路径. 接着使用命 ...
- springMVC-5-视图解析器
视图和视图解析器工作流程 第一步:获取到ModelAndView对象 请求处理方法执行完成后,无论返回是String,View 还是 ModeMap 类型,Spring MVC 也会在内部将它们装配成 ...
- PAT甲级:1036 Boys vs Girls (25分)
PAT甲级:1036 Boys vs Girls (25分) 题干 This time you are asked to tell the difference between the lowest ...
- 简单快速安装Apache+PHP+MySql服务环境(四)—— 将php版本升级到7.2
书接上文,简单快速安装Apache+PHP+MySql服务环境(二)-- centos使用yum安装指定版本的php. 随着各种PHP框架的升级,对PHP的版本也有了更高的要求,所以笔者也尝试着更新升 ...