C/C++ - 指针操作结构体数组综合项目开发 - 通信录管理系统

指针操作结构体数组综合项目开发 - 通信录管理系统

本项目涉及知识点:

1:宏定义与访问;

2:结构体数组;

3:指针;

4:值传递与引用传递; 

5:任意键继续和清屏。

源代码:

  1 //通信录最大储存人数
  2 #define Max 1000 //最大人数
  3 
  4 
  5 //定义一个联系人结构体
  6 struct Contacts
  7 {
  8     string cName;        //姓名
  9     int cGender = 1;    //性别
 10     int cAge = 0;        //年龄
 11     string cPhone;        //电话号码
 12     string cAdd;        //住址
 13 };
 14 
 15 //定义一个通信录结构体
 16 struct AddressBooks
 17 {
 18     Contacts contactsArry[Max];    //通信录联系人信息数组
 19     int aCount = 0;                    //通信录中人员的个数
 20 };
 21 
 22 //显示主菜单
 23 void showMenu()
 24 {
 25     cout << "********************************" << endl;
 26     cout << "***** 通 信 录 管 理 系 统 *****" << endl;
 27     cout << "********************************" << endl;
 28     cout << "*****    1、添加联系人     *****" << endl;
 29     cout << "*****    2、显示联系人     *****" << endl;
 30     cout << "*****    3、删除联系人     *****" << endl;
 31     cout << "*****    4、查找联系人     *****" << endl;
 32     cout << "*****    5、修改联系人     *****" << endl;
 33     cout << "*****    6、清空联系人     *****" << endl;
 34     cout << "*****    0、退出通信录     *****" << endl;
 35     cout << "********************************" << endl;
 36     cout << "***********Version1.0***********" << endl;
 37     cout << "********************************" << endl;
 38 }
 39 
 40 //添加联系人
 41 void AddContacts(AddressBooks* abs)
 42 {
 43     //判断是否满员
 44     if (abs->aCount == Max)
 45     {
 46         cout << "通信录已满,无法添加!" << endl;
 47         return;
 48     }
 49     else
 50     {
 51         //姓名
 52         string name;
 53         cout << "请输入姓名: " << endl;
 54         cin >> name;
 55         abs->contactsArry[abs->aCount].cName = name;
 56 
 57         //性别
 58         int gender;
 59         cout << "请输入性别: " << endl;
 60         cout << "1 ---- 男 " << endl;
 61         cout << "2 ---- 女 " << endl;
 62 
 63         while (true)
 64         {
 65             cin >> gender;
 66             if (gender == 1 || gender == 2)
 67             {
 68                 abs->contactsArry[abs->aCount].cGender = gender;
 69                 break;
 70             }
 71             cout << "输入有误请重新输入!" << endl;
 72         }
 73 
 74         //年龄
 75         int age;
 76         cout << "请输入年龄: " << endl;
 77         cin >> age;
 78         abs->contactsArry[abs->aCount].cAge = age;
 79 
 80         //电话
 81         string phone;
 82         cout << "请输入电话: " << endl;
 83         cin >> phone;
 84         abs->contactsArry[abs->aCount].cPhone = phone;
 85 
 86         //地址
 87         string add;
 88         cout << "请输入地址: " << endl;
 89         cin >> add;
 90         abs->contactsArry[abs->aCount].cAdd = add;
 91 
 92         //个数加一
 93         abs->aCount += 1;
 94         cout << "添加成功!" << endl;
 95         system("pause");
 96         //清屏
 97         system("cls");
 98     }
 99 
100 }
101 
102 //显示联系人
103 void ShowContacts(AddressBooks* abs)
104 {
105     if (abs->aCount == 0)
106     {
107         cout << "无联系人,请先添加一下吧!" << endl;
108     }
109     else
110     {
111         //显示所有联系人
112         for (int i = 0; i < abs->aCount; i++)
113         {
114             cout << "姓名:" << abs->contactsArry[i].cName << " 性别:" << (abs->contactsArry[i].cGender != 2 ? "" : "") << " 年龄:" << abs->contactsArry[i].cAge << " 电话:" << abs->contactsArry[i].cPhone << " 住址:" << abs->contactsArry[i].cAdd << endl;
115         }
116     }
117     system("pause");
118     system("cls");
119 }
120 
121 //检测某人是否存在
122 int IsExit(AddressBooks* abs, string name)
123 {
124     for (int i = 0; i < abs->aCount; i++)
125     {
126         if (abs->contactsArry[i].cName == name)
127         {
128             return i;
129         }
130     }
131     return -1;
132 }
133 
134 //删除联系人
135 void DeleteContacts(AddressBooks* abs)
136 {
137     //记录用户输入的姓名
138     string name;
139     cout << "请输入您要删除的用户姓名:" << endl;
140     cin >> name;
141     //判断联系人是否存在
142     int index = IsExit(abs, name);
143     //存在
144     if (index > -1)
145     {
146         for (int i = index; i < abs->aCount - 1; i++)
147         {
148             //往前移位操作
149             Contacts temp = abs->contactsArry[i];
150             abs->contactsArry[i] = abs->contactsArry[i + 1];
151             abs->contactsArry[i + 1] = temp;
152         }
153         //减少一个记录
154         abs->aCount--;
155         cout << "删除成功!" << endl;
156     }
157     else//不存在
158     {
159         cout << "查无此人" << endl;
160     }
161     system("pause");
162     system("cls");
163 }
164 
165 //查找联系人
166 void GetContacts(AddressBooks* abs)
167 {
168     //记录用户输入的姓名
169     string name;
170     cout << "请输入您要查找的用户姓名" << endl;
171     cin >> name;
172     //判断联系人是否存在
173     int index = IsExit(abs, name);
174     if (index > -1)
175     {
176         //存在
177         cout << "姓名:" << abs->contactsArry[index].cName << endl;
178         cout << "性别:" << abs->contactsArry[index].cGender << endl;
179         cout << "年龄:" << abs->contactsArry[index].cAge << endl;
180         cout << "电话:" << abs->contactsArry[index].cPhone << endl;
181         cout << "住址:" << abs->contactsArry[index].cAdd << endl;
182     }
183     else
184     {
185         //不存在
186         cout << "查无此人" << endl;
187     }
188     system("pause");
189     system("cls");
190 
191 }
192 
193 //修改联系人
194 void ModefyContacts(AddressBooks* abs)
195 {
196     //记录用户输入的姓名
197     string name;
198     cout << "请输入您要修改的用户姓名" << endl;
199     cin >> name;
200     //判断联系人是否存在
201     int index = IsExit(abs, name);
202     if (index > -1)
203     {
204         //存在
205         //姓名
206         string name;
207         cout << "请输入修改后的姓名: " << endl;
208         cin >> name;
209         abs->contactsArry[index].cName = name;
210 
211         //性别
212         int gender;
213         cout << "请输入修改后的性别: " << endl;
214         cout << "1 ---- 男 " << endl;
215         cout << "2 ---- 女 " << endl;
216 
217         while (true)
218         {
219             cin >> gender;
220             if (gender == 1 || gender == 2)
221             {
222                 abs->contactsArry[index].cGender = gender;
223                 break;
224             }
225             cout << "输入有误请重新输入!" << endl;
226         }
227 
228         //年龄
229         int age;
230         cout << "请输入修改后的年龄: " << endl;
231         cin >> age;
232         abs->contactsArry[index].cAge = age;
233 
234         //电话
235         string phone;
236         cout << "请输入修改后的电话: " << endl;
237         cin >> phone;
238         abs->contactsArry[index].cPhone = phone;
239 
240         //地址
241         string add;
242         cout << "请输入修改后的地址: " << endl;
243         cin >> add;
244         abs->contactsArry[index].cAdd = add;
245         cout << "修改成功!" << endl;
246     }
247     else
248     {
249         //不存在
250         cout << "查无此人" << endl;
251     }
252     system("pause");
253     system("cls");
254 }
255 
256 //清空联系人
257 void ClearContacts(AddressBooks* abs)
258 {
259     string choose = "N";
260     cout << "您确定要清空通信录吗?(Y 确认/N 取消)" << endl;
261 
262     while (true)
263     {
264         cin >> choose;
265         if (choose == "Y" || choose == "N")
266         {
267             break;
268         }
269         else
270         {
271             cout << "输入有误请重新输入!!" << endl;
272         }
273     }
274 
275     if (choose == "Y")
276     {
277         abs->aCount = 0;
278         cout << "清空成功!!" << endl;
279     }
280     else
281     {
282         cout << "操作已取消!!" << endl;
283     }
284     system("pause");
285     system("cls");
286 }
287 
288 
289 int main()
290 {
291     //记录用户输入的信息
292     int select = 0;
293     //定义一个通信录结构体
294     AddressBooks abs;
295     //设置当前人数为零
296     abs.aCount = 0;
297 
298     while (true)
299     {
300         //显示主菜单
301         showMenu();
302 
303         cin >> select;
304         switch (select)
305         {
306         case 1://1、添加联系人
307             AddContacts(&abs);    //地址传递
308             break;
309         case 2://2、显示联系人
310             ShowContacts(&abs); //地址传递
311             break;
312         case 3://3、删除联系人
313             DeleteContacts(&abs);
314             break;
315         case 4://4、查找联系人
316             GetContacts(&abs);
317             break;
318         case 5://5、修改联系人
319             ModefyContacts(&abs);
320             break;
321         case 6://6、清空联系人
322             ClearContacts(&abs);
323             break;
324         case 0://0、退出通信录
325             cout << "欢迎下次使用,再见!" << endl;
326             system("pause");
327             return 0;
328             break;
329         default:
330             break;
331         }
332     }
333 
334 
335     system("pause");//按任意键继续
336     return 0;
337 }
View Code

运行效果:

 

  作者:Jeremy.Wu
  出处:https://www.cnblogs.com/jeremywucnblog/
  本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

posted @ 2020-03-17 15:20  Jeremy.Wu  阅读(235)  评论(0编辑  收藏  举报