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.退出通讯录

posted @   Whp_bicycle  阅读(139)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示