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 }

 

 

 

 

 

 

posted on 2021-08-04 16:41  Bytezero!  阅读(1012)  评论(3编辑  收藏  举报