1 #include<iostream>
2 #include<string>
3 using namespace std;
4 # define MAX 1000
5
6 struct Person
7 {
8 string m_Name;
9 int m_Sex;
10 int m_Age;
11 string m_Phone;
12 string m_Addr;
13 };
14
15 struct AddressBook
16 {
17 Person personArray[MAX];
18 int m_Size;
19 };
20
21
22
23 void showMenu()
24 {
25 cout << "**************************" << endl;
26 cout << "***** 1.添加联系人 *****" << endl;
27 cout << "***** 2.显示联系人 *****" << endl;
28 cout << "***** 3.删除联系人 *****" << endl;
29 cout << "***** 4.查找联系人 *****" << endl;
30 cout << "***** 5.修改联系人 *****" << endl;
31 cout << "***** 6.清空联系人 *****" << endl;
32 cout << "***** 0.退出通讯录 *****" << endl;
33 cout << "**************************" << endl;
34 }
35
36
37 // 1. 添加联系人
38 void addPerson(AddressBook* abs)
39 {
40 if (abs->m_Size == MAX)
41 {
42 cout << "通讯录已满!" << endl;
43 return;
44 }
45
46 else
47 {
48 // 1.
49 string name;
50 cout << "输入姓名:" << endl;
51 cin >> name;
52 abs->personArray[abs->m_Size].m_Name = name;
53
54 // 2.
55 int sex = 0;
56 cout << "输入性别:(1---男, 2---女)" << endl;
57
58 while (true)
59 {
60 cin >> sex;
61 if (sex == 1 || sex == 2)
62 {
63 abs->personArray[abs->m_Size].m_Sex = sex;
64 break;
65 }
66
67 cout << "输入错误,请重新输入:" << endl;
68
69
70 }
71
72 // 3.
73 int age;
74 cout << "输入年龄:" << endl;
75 cin >> age;
76 abs->personArray[abs->m_Size].m_Age = age;
77
78 // 4.
79 string phone_num;
80 cout << "输入电话" << endl;
81 cin >> phone_num;
82 abs->personArray[abs->m_Size].m_Phone = phone_num;
83
84 // 5.
85 string address;
86 cout << "输入住址:" << endl;
87 cin >> address;
88 abs->personArray[abs->m_Size].m_Addr = address;
89 }
90
91 cout << "添加成功!" << endl;
92 abs->m_Size++;
93 system("pause");
94 system("cls");
95
96
97 }
98
99
100 // 2. 显示联系人
101 void showPerson(AddressBook* abs)
102 {
103 if (abs->m_Size == 0)
104 {
105 cout << "通讯录为空!" << endl;
106 }
107
108 else
109 {
110 for (int i = 0; i < abs->m_Size; i++)
111 {
112 cout << "姓名:" << abs->personArray[i].m_Name << "\t";
113 cout << "性别:" << (abs->personArray[i].m_Sex == 1 ? "男" : "女") << "\t";
114 cout << "年龄:" << abs->personArray[i].m_Age << "\t";
115 cout << "电话号码:" << abs->personArray[i].m_Phone << "\t";
116 cout << "住址:" << abs->personArray[i].m_Addr << "\t" << endl;
117
118 }
119 }
120 system("pause");
121 system("cls");
122
123 }
124
125
126 // 3.1 删除联系人(先判断是否存在)
127 int isExist(AddressBook* abs, string name)
128 {
129 for (int i = 0; i < abs->m_Size; i++)
130 {
131 if (abs->personArray[i].m_Name == name)
132 {
133 return i;
134 }
135
136 }
137
138 return -1;
139
140 }
141
142
143 // 3.2 删除
144 void deletePerson(AddressBook* abs, string name)
145 {
146 int position = isExist(abs, name);
147 if (position == -1)
148 {
149 cout << "查无此人!" << endl;
150 }
151 else
152 {
153 for (int i = position; i < abs->m_Size; i++)
154 {
155 abs->personArray[i].m_Name = abs->personArray[i + 1].m_Name;
156 abs->personArray[i].m_Age = abs->personArray[i + 1].m_Age;
157 abs->personArray[i].m_Sex = abs->personArray[i + 1].m_Sex;
158 abs->personArray[i].m_Phone = abs->personArray[i + 1].m_Phone;
159 abs->personArray[i].m_Addr = abs->personArray[i + 1].m_Addr;
160
161
162 }
163
164 abs->m_Size--;
165 }
166
167 cout << "删除成功!" << endl;
168 system("pause");
169 system("cls");
170
171
172 }
173
174
175 // 4.查找联系人
176 void findPerson(AddressBook* abs, string name)
177 {
178 int position = isExist(abs, name);
179 if (position == -1)
180 {
181 cout << "查无此人!" << endl;
182 }
183 else
184 {
185 cout << "姓名" << abs->personArray[position].m_Name << "\t"
186 << "年龄" << abs->personArray[position].m_Age << "\t"
187 << "性别" << (abs->personArray[position].m_Sex == 1 ? "男":"女") << "\t"
188 << "电话号码" << abs->personArray[position].m_Phone << "\t"
189 << "住址" << abs->personArray[position].m_Addr << "\t" << endl;
190 }
191 system("pause");
192 system("cls");
193
194 }
195
196
197 // 5.修改联系人
198 void modifyPerson(AddressBook* abs)
199 {
200 cout << "输入要修改的联系人:" << endl;
201 string name;
202 cin >> name;
203
204 int position = isExist(abs, name);
205 if (position == -1)
206 {
207 cout << "查无此人!" << endl;
208 }
209
210 else
211 {
212 // 1.
213 string the_name;
214 cout << "输入姓名:" << endl;
215 cin >> the_name;
216 abs->personArray[position].m_Name = the_name;
217
218 // 2.
219 int sex;
220 cout << "输入性别:(1---男,2---女)" << endl;
221 while (true)
222 {
223 cin >> sex;
224 if (sex == 1 || sex == 2)
225 {
226 abs->personArray[position].m_Sex = sex;
227 break;
228 }
229 cout << "输入错误,重新输入:" << endl;
230
231 }
232
233 // 3.
234 int age;
235 cout << "输入年龄:" << endl;
236 cin >> age;
237 abs->personArray[position].m_Age = age;
238
239 // 4. 手机号码
240 string phone;
241 cout << "输入电话号码:" << endl;
242 cin >> phone;
243 abs->personArray[position].m_Phone = phone;
244
245 // 5. 住址
246 string address;
247 cout << "输入地址: " << endl;
248 cin >> address;
249 abs->personArray[position].m_Addr = address;
250 }
251
252 cout << "修改成功!" << endl;
253 system("pause");
254 system("cls");
255
256
257 }
258
259
260 // 6. 清空联系人
261 void cleanPerson(AddressBook* abs)
262 {
263 abs->m_Size = 0;
264 cout << "通讯录清除成功!" << endl;
265 system("pause");
266 system("cls");
267
268 }
269
270
271 int main()
272 {
273 int select = 0;
274 AddressBook abs;
275 abs.m_Size = 0;
276
277 while (true)
278 {
279 showMenu();
280 cin >> select;
281
282 switch (select)
283 {
284
285 // 1. 添加联系人
286 case 1:
287 addPerson(&abs);
288 break;
289
290 // 2. 显示联系人
291 case 2:
292 showPerson(&abs);
293 break;
294
295 // 3. 删除联系人
296 case 3:
297 {
298 cout << "输入要删去的联系人:" << endl;
299 string name;
300 cin >> name;
301 deletePerson(&abs, name);
302 }
303 break;
304
305 // 4. 查找联系人
306 case 4:
307 {
308 string the_name;
309 cout << "输入要查找的联系人:" << endl;
310 cin >> the_name;
311 findPerson(&abs, the_name);
312 }
313 break;
314
315
316 case 5:
317 modifyPerson(&abs);
318 break;
319
320
321 case 6:
322 cleanPerson(&abs);
323 break;
324
325
326 case 0:
327 cout << " "<< endl;
328 system("pause");
329 return 0;
330 break;
331
332
333 default:
334 break;
335 }
336 }
337
338 system("pause");
339 return 0;
340 }