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++通讯录管理系统(添加联系人,显示联系人,删除联系人,查找联系人,修改联系人,清空联系人,退出通讯录)的更多相关文章

  1. mssqlserver修改表名,列名,添加表列,删除表列,修改表列类型

    mssqlserver修改表名,列名,添加表列,删除表列,修改表列类型 ,代码肯定省事的呀 --添加表列 alter table test ) null; --删除表列 alter table tes ...

  2. iOS --SQL的增加、删除、查找、修改

    iOS对于数据库的操作:增加.删除.查找.修改 首先需要创建一个数据库:本程序的数据库是在火狐浏览器里的插件里写的微量型数据库 火狐找查找SQLite Manager的步骤: 第一步:在工具栏找到附加 ...

  3. Python练习 ——名片管理系统(增添,删除,查找,修改)

    需要注意的一个地方是,如果你用的版本是3.6的,那么下面的用到的所有从外界接收信息所用到的input()用input()就行了,如果是2.7版本,那么如果接收的是字符串要用raw_input()(将接 ...

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

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

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

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

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

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

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

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

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

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

  9. c++—通讯录管理系统

    一.运用所学的结构体.地址指针等基础知识,完成通讯录管理系统 二.系统主要有以下6个功能: 1.添加联系人2.显示联系人 3.删除联系人 4.查找联系人5.修改联系人 6.清空联系人 1 #inclu ...

随机推荐

  1. python3实现几种常见的排序算法

    python3实现几种常见的排序算法 冒泡排序 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来.走访数列的工作是重复地进行直到没有再需要 ...

  2. Redis热点key优化

    热门新闻事件或商品通常会给系统带来巨大的流量,对存储这类信息的Redis来说却是一个巨大的挑战.以Redis Cluster为例,它会造成整体流量的不均知,个别节点出现OPS过大的情况,极端情况下热点 ...

  3. Keepalive介绍及工作原理

    注:keepalive和Nginx和高可用没有关联. 1.什么是高可用,为什么要设计高可用? 1.两台业务系统启动着相同的服务,如果有一台故障,另一台自动接管,我们将国称之为高可用.2.系统可用率算法 ...

  4. centos安装配置和使用 Nexus

    Nexus安装配置和使用 第一步安装jdk yum install java-1.8.0-openjdk-devel 第二步下载nexus-3.12.1-01-unix.tar.gzjdk 下载地址: ...

  5. 资源:Kafka消息队列下载路径

    Kafka下载路径 http://kafka.apache.org/downloads.html

  6. Linux:CentOS-7配置VMware-15.5与本机IP同网段

    确认本机IP ctrl+R:输入cmd 回车 输入命令:ipconfig  可以看出一下信息:本机ip: 192.168.1.162网关:192.168.1.1DNS服务器:192.168.1.1 设 ...

  7. 面试:Spring面试知识点总结

    Spring知识点总结 1. 简介一下Spring框架. 答:Spring框架是一个开源的容器性质的轻量级框架.主要有三大特点:容器.IOC(控制反转).AOP(面向切面编程). 2. Spring框 ...

  8. IntelliJ idea 中新建Spring项目 并部署到tomcat

    步骤还不熟悉  看的别人的文章做下去的 :https://www.cnblogs.com/yangyquin/p/5285272.html 一:新建Spring项目: 1. 2. 3. 4.然后在We ...

  9. Pytest学习笔记12-配置文件pytest.ini

    前言 pytest配置文件可以改变pytest的运行方式,它是一个固定的文件pytest.ini文件,读取配置信息,按指定的方式去运行. 常用的配置项 marks 作用:测试用例中添加了自定义标记( ...

  10. python pyinsane应用

    import sys from PIL import Image try: import src.abstract as pyinsane except ImportError: import pyi ...