NO.1 通讯录管理系统+源代码(C++)
一、菜单
功能描述:显示简单的菜单,供用户选择操作
实现步骤:直接cout输出
二、退出功能
功能描述:根据用户不同的操作代码选择,进入不同的功能,我们使用switch分支结构进行搭建
实现步骤:用while(ture)循环包涵switch, case 0:时用return 0 ,退出循环,即退出通讯录。
三、添加联系人
功能描述:实现添加联系人功能,联系人上限为1000人,联系信息包括(姓名、性别、年龄、联系电话、家庭住址)
实现步骤:
-
- 设计联系人结构体
- 设计通讯录结构体
- main函数中创建通讯录
- 封装添加联系人函数
四、显示联系人
功能描述:显示通信录中所有人员信息
实现步骤:判断通讯录中联系人是否为0,不为0则显示联系人所有信息
五、删除联系人
功能描述:按照姓名删除指定联系人
实现步骤:封装检测联系人是否存在函数,封装删除联系人函数
六、查找联系人
功能描述:按照姓名查找联系人
实现步骤:判断是否存在此人,存在则输出信息
七、修改联系人
功能描述:按照姓名重新修改联系人信息
实现步骤:判断是否存在此人,存在则进行修改操作
八、清空联系人
功能描述:清空通讯录中所有信息
实现步骤:将通信录中联系人数量标志位置为0,做逻辑清空。
九、完整代码:(vs coed 编写)
1 #include <iostream>
2 #include <string>
3 #define Max 1000
4 using namespace std;
5
6 //通讯录菜单界面
7 void ShowMenu(){
8 cout << "**************************" << endl;
9 cout << "通讯录操作编号" << endl << endl;
10 cout << " 1 : " << "添加联系人" << endl;
11 cout << " 2 : " << "显示联系人" << endl;
12 cout << " 3 : " << "删除联系人" << endl;
13 cout << " 4 : " << "查找联系人" << endl;
14 cout << " 5 : " << "修改联系人" << endl;
15 cout << " 6 : " << "清空联系人" << endl;
16 cout << " 0 : " << "退出通讯录" << endl;
17 cout << "**************************" << endl;
18
19 }
20
21 //设计联系人结构体
22 struct Person{
23 //姓名
24 string m_Name;
25 //性别
26 int m_Sex;
27 //年龄
28 int m_Age;
29 //电话
30 string m_Phone;
31 //住址
32 string m_Addr;
33 };
34
35 //设计通讯录结构体
36 struct Addressbooks{
37 //保存联系人的数组
38 struct Person personArray[Max];
39 //已保存联系人个数
40 int m_Size;
41 };
42
43 //添加联系人函数
44 void addPerson(Addressbooks *abc){
45 if(abc->m_Size > 1000){
46 cout << "通讯录已满,无法再添加!" << endl;
47 }else{
48 //姓名
49 string name;
50 cout << "请输入姓名" << endl;
51 cin >> name;
52 abc->personArray[abc->m_Size].m_Name = name;
53
54 //性别
55 cout << "请输入性别:";
56 cout << " 1--男" << " ";
57 cout << "2--女" << endl;
58 int sex = 0;
59 while(true){
60 cin >> sex;
61 if (sex == 1 || sex == 2)
62 {
63 abc->personArray[abc->m_Size].m_Sex = sex;
64 break;
65 }else{
66 cout << "输入有误,请重新输入:" << endl;
67 }
68 }
69
70 //年龄
71 cout << "请输入年龄:" << endl;
72 int age;
73 cin >> age;
74 abc->personArray[abc->m_Size].m_Age = age;
75
76 //联系电话
77 cout << "请输入联系电话:" << endl;
78 string phone;
79 cin >> phone;
80 abc->personArray[abc->m_Size].m_Phone = phone;
81
82 //家庭住址
83 cout << "请输入家庭住址:" << endl;
84 string address;
85 cin >> address;
86 abc->personArray[abc->m_Size].m_Addr = address;
87
88 //更新通讯录人数
89 abc->m_Size++;
90
91 cout << "添加成功!" << endl;
92
93 //mac系统下无法使用
94 system("pause");//按任意键继续
95 system("cls");//清屏工作
96
97 }
98 }
99
100 //显示联系人函数
101 void showPerson(Addressbooks *abc){
102 if(abc->m_Size == 0){
103 cout << "通讯录中无联系人!" << endl;
104 }else{
105 for(int i = 0;i < abc->m_Size;i++){
106 cout << i+1 << ". ";//显示联系人编号
107 cout << "姓名:" << abc->personArray[i].m_Name << " ";
108 cout << "性别:" << (abc->personArray[i].m_Sex == 1 ? "男":"女")<< " ";
109 cout << "年龄:" << abc->personArray[i].m_Age << " ";
110 cout << "电话:" << abc->personArray[i].m_Phone << " ";
111 cout << "家庭住址:" << abc->personArray[i].m_Addr << " " << endl;
112
113 }
114 }
115
116 system("pause");//按任意键继续
117 system("cls");//清屏工作
118 }
119
120 //检测联系人是存在函数
121 int isExist(Addressbooks *abc,string name){
122 for(int i = 0;i<abc->m_Size;i++){
123 if(abc->personArray[i].m_Name == name){
124 return i;//找到了返回数组下标
125 }else{
126
127 }
128 }
129 return -1;//未找到
130 }
131
132 //删除指定联系人函数
133 void deletePerson(Addressbooks *abc){
134 cout << "请输入您要删除的联系人" << endl;
135 string name;
136 cin >> name;
137 int ret = isExist(abc,name);//调用检测联系人是否存在函数
138 if(ret != -1){
139 //查到此人,进行删除
140 for(int i = ret;i<abc->m_Size;i++){
141 //数据前移覆盖
142 abc->personArray[i] = abc->personArray[i+1];
143 }
144 abc->m_Size--;
145 cout << "删除成功!" << endl;
146 }else{
147 cout << "查无此人!" << endl;
148 }
149 //清屏
150 system("pause");
151 system("cls");
152 }
153
154 //查找指定联系人信息
155 void findPerson(Addressbooks *abc){
156 cout << "请输入您要查找的联系人姓名:" << endl;
157 string name;
158 cin >> name;
159 //判断联系人是否存在通讯录中
160 int ret = isExist(abc,name);
161 if(ret != -1){
162 cout << "姓名:" << abc->personArray[ret].m_Name << " ";
163 cout << "性别:" << (abc->personArray[ret].m_Sex == 1 ? "男":"女") << " ";
164 cout << "年龄:" << abc->personArray[ret].m_Age << " ";
165 cout << "电话:" << abc->personArray[ret].m_Phone << " ";
166 cout << "家庭住址:" << abc->personArray[ret].m_Addr << " " << endl;
167 }else{
168 cout << "查无此人!" << endl;
169 }
170
171 //清屏
172 system("pause");
173 system("cls");
174 }
175
176 //修改指定联系人信息
177 void modifyPerson(Addressbooks *abc){
178 cout << "请输入您要修改的联系人姓名:" << endl;
179 string name;
180 cin >> name;
181 int ret = isExist(abc,name);
182 if(ret != -1){//修改信息
183 //姓名
184 string name;
185 cout << "请输入姓名" << endl;
186 cin >> name;
187 abc->personArray[ret].m_Name = name;
188
189 //性别
190 cout << "请输入性别:";
191 cout << " 1--男" << " ";
192 cout << "2--女" << endl;
193 int sex = 0;
194 while(true){
195 cin >> sex;
196 if (sex == 1 || sex == 2)
197 {
198 abc->personArray[ret].m_Sex = sex;
199 break;
200 }else{
201 cout << "输入有误,请重新输入:" << endl;
202 }
203 }
204
205 //年龄
206 cout << "请输入年龄:" << endl;
207 int age;
208 cin >> age;
209 abc->personArray[ret].m_Age = age;
210
211 //联系电话
212 cout << "请输入联系电话:" << endl;
213 string phone;
214 cin >> phone;
215 abc->personArray[ret].m_Phone = phone;
216
217 //家庭住址
218 cout << "请输入家庭住址:" << endl;
219 string address;
220 cin >> address;
221 abc->personArray[ret].m_Addr = address;
222 }else{
223 cout << "查无此人!" << endl;
224 }
225 cout << "您修改成功!" << endl;
226 //清屏
227 system("pause");
228 system("cls");
229 }
230
231 //清空所有联系人
232 void clearPerson(Addressbooks *abc){
233 cout << "您确定要清空所有联系人吗?" << endl;
234 cout << "1--确定 " << "2--取消" << endl;
235 int a;
236 while (true){
237 cin >> a;
238 if(a == 1){
239 abc->m_Size = 0;
240 cout << "通讯录已清空!" << endl;
241 system("pause");
242 system("cls");
243 break;
244 }else if(a == 2){
245 cout << "已取消清空通讯录!" << endl;
246 break;
247 }else{
248 cout << "您的输入有误!" << "请选择 1 or 2 输入" << endl;
249 }
250 }
251
252 }
253
254
255
256 int main(){
257
258 //创建通讯录结构体变量
259 Addressbooks abc;
260
261 //初始化通讯录当前人员个数
262 abc.m_Size = 0;
263
264 //用于保存用户输入
265 int select = 0;
266
267 while(true){
268 //菜单调用
269 ShowMenu();
270
271 //用户选择
272 cin >> select;//用户输入
273 switch (select)
274 {
275 case 1://添加联系人
276 addPerson(&abc);//调用添加联系人函数
277 break;
278 case 2://显示联系人
279 showPerson(&abc);
280 break;
281 case 3://删除联系人
282 deletePerson(&abc);
283 break;
284 case 4://查找联系人
285 findPerson(&abc);
286 break;
287 case 5://修改联系人
288 modifyPerson(&abc);
289 break;
290 case 6://清空联系人
291 clearPerson(&abc);
292 break;
293 case 0://退出通讯录
294 cout << "欢迎下次使用。" << endl;
295 return 0;
296 break;
297 default:
298 break;
299 }
300
301 }
302 //清屏
303 system("pause");
304 return 0;
305 }



