1 #include<iostream>
2 #include<Windows.h>
3 #include<string>
4
5 using namespace std;
6
7 #define MAX 1000
8
9 #pragma region 结构体
10
11
12
13 struct stcPersong
14 {
15 int id;
16 string name;
17 int sex;
18 int age;
19 string adress;
20 };
21
22 struct stcMenu
23 {
24 stcPersong stcperson[MAX];//联系人结构体
25 int m_size;//人数
26 };
27
28 #pragma endregion
29
30 #pragma region 函数
31
32 void showMenu()
33 {
34 cout << "********** 1.添加联系人 ********** " << endl;
35 cout << "********** 2.显示联系人 ********** " << endl;
36 cout << "********** 3.删除联系人 ********** " << endl;
37 cout << "********** 4.查找联系人 ********** " << endl;
38 cout << "********** 5.修改联系人 ********** " << endl;
39 cout << "********** 6.清空联系人 ********** " << endl;
40 cout << "********** 0.退出系统 ********** " << endl;
41 }
42
43 //限制输入数字
44 int numInput()
45 {
46 char n;
47 int num;
48 //cout << "please enter a number:" << endl;
49 cin >> n;
50 num = n;
51 while (1)
52 {
53 if (int(num) >= 48 || int(num) <= 57|| int(num) ==46||int(num) == 8)
54 break;
55 else
56 {
57 cout << "你输入的不是一个数字!!" << endl;
58 }
59 cin >> n;
60 }
61
62 return n;
63 }
64 //仅输入数字
65 void onlyNumber()
66 {
67 cout << "请输入:" << endl;
68 string s;
69 cin >> s;
70 while (s.size() != 1 || s[0] <= '0' || s[0] >= '9') {
71 cout << "输入错误,请重新输入:" << endl;
72 cin >> s;
73 }
74 cout << "成功" << endl;
75 }
76
77 //添加联系人
78 void addPerson(stcMenu * stc)
79 {
80 if (stc->m_size > MAX)
81 {
82 cout << "通讯录已满" << endl;
83 }
84 else
85 {
86 string nam;
87 stc->stcperson[stc->m_size].id = stc->m_size;
88 cout << "输入姓名" << endl;
89 cin >> nam;
90 stc->stcperson[stc->m_size].name = nam;
91
92 cout << "输入性别" << endl;
93 int se;
94 cin >> se;
95 stc->stcperson[stc->m_size].age = se;
96
97 cout << "输入年龄" << endl;
98 int ag = 0;
99 ag = numInput();
100 //cin >> ag;
101 stc->stcperson[stc->m_size].age = ag;
102
103 cout << "添加完成" << endl;
104 stc->m_size++;
105 }
106 system("pause");
107 system("cls");
108 return;
109 }
110 //显示联系人
111 void showPerson(stcMenu * stc)
112 {
113 if (stc->m_size == 0)
114 {
115 cout << "通讯录为空" << endl;
116 }
117 else
118 {
119 for (int i = 0; i < stc->m_size; i++)
120 {
121 cout << "序号 " << stc->stcperson[i].id << " 姓名 " << stc->stcperson[i].name <<
122 " 性别 " << (stc->stcperson[i].sex == 1 ? "男" : "女") << " 年龄" << stc->stcperson[i].age << endl;
123 }
124 }
125 }
126 //检测联系人
127 int checkPerson(stcMenu * stc, string name)
128 {
129 if (stc->m_size > 0)
130 {
131 for (size_t i = 0; i < stc->m_size; i++)
132 {
133 if (stc->stcperson[0].name == name)
134 {
135 return i;
136 }
137 }
138 return -1;
139 }
140 else
141 {
142 cout << "通讯录为空!" << endl;
143 return -1;
144 }
145 }
146 //删除联系人
147 void deletePerson(stcMenu * stc)
148 {
149 cout << "删除联系人\n";
150 cout << " 输入姓名:\n";
151 string m_name;
152 cin >> m_name;
153 int ret = checkPerson(stc, m_name);
154 if (ret != -1)
155 {
156 for (size_t i = ret; i < stc->m_size - ret; i++)
157 {
158 stc->stcperson[i] = stc->stcperson[i + 1];
159 }
160 stc->m_size--;
161 }
162 else
163 {
164 cout << "查无此人!" << endl;
165 }
166 system("pause");
167 system("cls");
168 return;
169 }
170
171 //查找联系人
172 void findPerson(stcMenu * stc)
173 {
174 cout << "查找联系人\n";
175 cout << " 输入姓名:\n";
176 string m_name;
177 cin >> m_name;
178 int ret = checkPerson(stc, m_name);
179 if (ret != -1)
180 {
181 cout << "序号:" << stc->stcperson[ret].id << " 姓名:" << stc->stcperson[ret].name << " 年龄:" << stc->stcperson[ret].age << endl;;
182 }
183 else
184 {
185 cout << "查无此人!" << endl;
186 }
187 system("pause");
188 system("cls");
189 return;
190 }
191 //修改联系人
192 void alterPerson(stcMenu * stc)
193 {
194 cout << "修改联系人\n";
195 cout << " ---- 输入姓名:\n";
196 string m_name;
197 cin >> m_name;
198 int ret = checkPerson(stc, m_name);
199 if (ret != -1)
200 {
201 cout << "输入新年龄:\n";
202 int m_age;
203 cin >> m_age;
204 stc->stcperson[ret].age = m_age;
205 cout << "修改完成\n";
206 }
207 else
208 {
209 cout << "查无此人!" << endl;
210 }
211 system("pause");
212 system("cls");
213 return;
214 }
215 //清空联系人
216 void clearPerson(stcMenu * stc)
217 {
218 again:
219 int select;
220 cout << "清空联系人\n,确定--1,取消--2"<<endl;
221 //cin >> select;
222 select = numInput();
223 if (select == 1)
224 {
225 cout << "已经清空联系人\n";
226 stc->m_size = 0;
227 }
228 else if (select == 2)
229 {
230 cout << "已经取消清空联系人\n";
231 }
232 else
233 {
234 cout << "请输入正确选项\n";
235 goto again;
236 }
237 system("pause");
238 system("cls");
239 return;
240 }
241
242
243 #pragma endregion
244
245
246 int main()
247 {
248 int select;
249
250 stcMenu stcp;
251 stcp.m_size = 0;
252 while (true)
253 {
254 showMenu();
255 cin >> select;
256
257 switch (select)
258 {
259 case 1://1.添加联系
260 addPerson(&stcp);
261 break;
262 case 2://2.显示联系人
263 showPerson(&stcp);
264 break;
265 case 3:// 3.删除联系人
266 deletePerson(&stcp);
267 break;
268 case 4://4.查找联系人
269 findPerson(&stcp);
270 break;
271 case 5://5.修改联系人
272 alterPerson(&stcp);
273 break;
274 case 6://6.清空联系人
275 clearPerson(&stcp);
276 break;
277 case 0://0.退出系统
278 cout << "欢迎下次使用" << endl;
279 system("pause");
280 return 0;
281 break;
282 }
283
284 }
285
286 return 0;
287 }