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 }











