C++一阶--通讯录管理系统

发布时间 2023-09-01 21:26:26作者: HuangWQ289

照着黑马程序员C++视频敲的,可以快速回忆起当时上课学的东西。其实当时期末的那个设计我也是敲得这个”通讯录管理系统“,这算是我大学以及编程的第一个成就。再次完成亦有感慨。

先说我我想说的:

  • 体会了结构体
  • 增删改查的实现
  • 冒泡排序
  • 指针中”&“与”*“的区别
  • 函数封装的妙处

 结构体的定义及如何使用,用”.“来使用其成员

指针,&a指的是a(a是个值)的地址,*a指的是a(此a是个地址)的值

冒泡排序,有个第三者,中间量

增删改查,有数组,能隐约感受到数据结构的感觉,只是有那么一点感觉。

我敲的代码,实现上看不算精致,但功能都实现了

  1 #include <iostream>
  2 #include <string>
  3 using namespace std;
  4 #define MAX 3//最大人数
  5 
  6 //1、菜单
  7 //封装函数显示界面,void shouMenu()
  8 void showMenu()
  9 {
 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<<"7、退出系统"<<endl;
 17 }
 18 
 19 //任务:添加联系人
 20 //设计联系人结构体
 21 struct Person
 22 {
 23     string m_Name;//姓名
 24     int m_Sex;//性别
 25     int m_age;//年龄
 26     string m_Phone;//电话
 27     string m_Add;//地址
 28 };
 29 
 30 //设计通讯录结构体
 31 struct Addressbooks
 32 {
 33     struct Person personArray[MAX];//通讯录中保存的联系人数组
 34     int m_Size;//通讯录中人员个数
 35 };
 36 //main函数中创建通讯录
 37 
 38 //封装添加联系人函数
 39 void addPerson(Addressbooks *abs)
 40 {
 41     //判断通讯录是否已满,如果满了就不再添加
 42     if(abs->m_Size==MAX)
 43     {
 44         cout<<"通讯录已满!"<<endl;
 45         return ;
 46     }
 47     else
 48     {
 49         //添加具体联系人
 50         
 51         //姓名
 52         string name;
 53         cout<<"请输入姓名:"<<endl;
 54         cin>>name;
 55         abs->personArray[abs->m_Size].m_Name=name;
 56         //性别
 57         cout<<"请输入性别:"<<endl;
 58         cout<<"1---男"<<endl;
 59         cout<<"2---女"<<endl;
 60         int sex = 0;
 61         while(true){
 62             cin>>sex;
 63             if(sex==1||sex==2)
 64             {
 65                 abs->personArray[abs->m_Size].m_Sex=sex;
 66                 break;
 67             }else
 68             {
 69                 cout<<"输入有误!请再次输入"<<endl;
 70                 sex=0;
 71             }
 72         }
 73         //年龄
 74         cout<<"请输入年龄:"<<endl;
 75         int age=0;
 76         cin>>age;
 77         abs->personArray[abs->m_Size].m_age=age;
 78         //电话
 79         cout<<"请输入电话号码:"<<endl;
 80         string phone;
 81         cin>>phone;
 82         abs->personArray[abs->m_Size].m_Phone=phone;
 83         //地址
 84         cout<<"请输入地址:"<<endl;
 85         string address;
 86         cin>>address;
 87         abs->personArray[abs->m_Size].m_Add=address;
 88         abs->m_Size++;
 89         cout<<"添加成功!"<<endl;
 90         system("pause");
 91         system("cls");
 92     }
 93     return;
 94 }
 95 
 96 //封装显示联系人函数
 97 void showPerson(Addressbooks *abs)
 98 {
 99     if(abs->m_Size==0)
100     {
101         cout<<"当前联系人为空"<<endl;
102     }
103     else
104     {
105         cout<<"查询成功!"<<endl;
106         for(int i=0;i<abs->m_Size;i++){
107             cout<<"\t姓名:"<<abs->personArray[i].m_Name;
108             cout<<"\t性别:"<<(abs->personArray[i].m_Sex==1?"":"");
109             cout<<"\t年龄:"<<abs->personArray[i].m_age;
110             cout<<"\t电话:"<<abs->personArray[i].m_Phone;
111             cout<<"\t住址:"<<abs->personArray[i].m_Add<<endl;
112         }
113     }
114     
115     system("pause");
116     return;
117 }
118 
119 //删除联系人
120 //1、封装检测联系人是否存在
121 //2、封装删除联系人函数
122 
123 //检测联系人是否存在,如果存在,返回联系人所在数组中的具体位置,不存在返回-1
124 int isExist(Addressbooks *abs,string name)
125 {
126     for(int i=0; i<abs->m_Size;i++){
127         if(abs->personArray[i].m_Name==name)
128         {
129             return i;
130         }    
131     }
132     return -1;
133 }
134 
135 void deletePerson(Addressbooks *abs)
136 {
137     cout<<"输入你要删除的姓名:"<<"\t";
138     string name;
139     cin>>name;
140     int ret=isExist(abs,name);
141     if(ret!=-1)
142     {
143         for(int i=ret;i<abs->m_Size;i++){
144             abs->personArray[i]=abs->personArray[i+1];
145         }
146         cout<<"删除成功"<<endl;
147     }
148     else
149     {
150         cout<<"查无此人"<<endl;
151     }
152     abs->m_Size--;
153     system("pause");
154 }
155 
156 void findPersion(Addressbooks *abs)
157 {
158     cout<<"请输入您要查找的联系人"<<endl;
159     string name;
160     cin>>name;
161     int ret=isExist(abs,name);
162     if(ret!=-1)
163     {
164         cout<<"\t姓名:"<<abs->personArray[ret].m_Name;
165         cout<<"\t性别:"<<(abs->personArray[ret].m_Sex==1?"":"");
166         cout<<"\t年龄:"<<abs->personArray[ret].m_age;
167         cout<<"\t电话:"<<abs->personArray[ret].m_Phone;
168         cout<<"\t住址:"<<abs->personArray[ret].m_Add<<endl;
169     }
170     else
171     {
172         cout<<"查无此人!"<<endl;
173     }
174 }
175 
176 void modifyPersion(Addressbooks *abs)
177 {
178     cout<<"请输入你要修改的联系人:\t";
179     string name;
180     cin>>name;
181     int ret=isExist(abs,name);
182     if(ret!=-1)
183     {    
184         cout<<"\t姓名:"<<abs->personArray[ret].m_Name;
185         cout<<"\t性别:"<<(abs->personArray[ret].m_Sex==1?"":"");
186         cout<<"\t年龄:"<<abs->personArray[ret].m_age;
187         cout<<"\t电话:"<<abs->personArray[ret].m_Phone;
188         cout<<"\t住址:"<<abs->personArray[ret].m_Add<<endl;
189         cout<<"进行修改:"<<endl;
190         cout<<"请输入姓名:\t";
191         cin>>name;
192         abs->personArray[ret].m_Name=name;
193         cout<<endl;
194         cout<<"请输入性别:"<<endl;
195         cout<<"1---男"<<endl;
196         cout<<"2---女"<<endl;
197         int sex = 0;
198         while(true){
199             cin>>sex;
200             if(sex==1||sex==2)
201             {
202                 abs->personArray[ret].m_Sex=sex;
203                 break;
204             }else
205             {
206                 cout<<"输入有误!请再次输入"<<endl;
207                 sex=0;
208             }
209         }
210         //年龄
211         cout<<"请输入年龄:"<<endl;
212         int age=0;
213         cin>>age;
214         abs->personArray[ret].m_age=age;
215         //电话
216         cout<<"请输入电话号码:"<<endl;
217         string phone;
218         cin>>phone;
219         abs->personArray[ret].m_Phone=phone;
220         //地址
221         cout<<"请输入地址:"<<endl;
222         string address;
223         cin>>address;
224         abs->personArray[ret].m_Add=address;
225         cout<<"修改成功!"<<endl;
226         system("pause");        
227     }
228     else
229     {
230         cout<<"查无此人!"<<endl;
231         system("pause");
232     }
233 }
234 
235 void clearPersion(Addressbooks *abs)
236 {
237     abs->m_Size=0;
238     cout<<"通讯录已清空!"<<endl;
239     system("pause");
240 }
241 
242 int main()
243 {
244     int select=8;
245     Addressbooks abs;
246     abs.m_Size=0;//初始化也很重要
247     string name;
248     while(1){
249         showMenu();
250         cin>>select;
251         switch(select)
252         {
253             case 1://1、添加联系人
254                 addPerson(&abs);
255                 break;
256             case 2://2、显示联系人
257                 showPerson(&abs);
258                 break;
259             case 3://3、删除联系人
260                 deletePerson(&abs);
261                 break;
262             case 4://4、查找联系人
263             findPersion(&abs);
264             break;
265                 
266             case 5://5、修改联系人
267                 modifyPersion(&abs);
268                 break;
269             case 6://6、清空联系人
270                 {
271                     string sure;
272                     cout<<"确定?(确定请输入Y/y,其他字符为取消)"<<endl;
273                     cin>>sure;
274                     if(sure=="Y"||sure=="y")
275                     {
276                         clearPersion(&abs);
277                     }
278                     else
279                     {
280                         cout<<"已取消"<<endl;;
281                     }
282                     break;
283                 }
284             case 7://7、退出系统
285                 cout<<"欢迎下次使用"<<endl;
286                 system("pause");
287                 return 0;
288                 break;                
289         }            
290     }
291     return 0;
292 }
View Code