C++Note 通讯录管理系统___案例

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

 

posted on   廿陆  阅读(12)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示