一、菜单

  功能描述:显示简单的菜单,供用户选择操作

  实现步骤:直接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 << "\t";
108             cout << "性别:" << (abc->personArray[i].m_Sex == 1 ? "":"")<< "\t";
109             cout << "年龄:" << abc->personArray[i].m_Age << "\t";
110             cout << "电话:" << abc->personArray[i].m_Phone << "\t  ";
111             cout << "家庭住址:" << abc->personArray[i].m_Addr << "\t" << 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 << "\t";
163          cout << "性别:" << (abc->personArray[ret].m_Sex == 1 ? "":"") << "\t\t";
164          cout << "年龄:" << abc->personArray[ret].m_Age << "\t";
165          cout << "电话:" << abc->personArray[ret].m_Phone << "\t   ";
166          cout << "家庭住址:" << abc->personArray[ret].m_Addr << "\t" << 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 }