实现功能
1、添加联系人
2、显示联系人
3、删除联系人
4、查找联系人
5、修改联系人
6、清空联系人
0、退出通讯录
//-封装函数显示该界面 如 void showmenu
//-在main函数中调用封装好的函数
#include<iostream>
#include<string>
#define max 1000
using namespace std;
struct person{//姓名string m_name;//性别 1 男 2 女 int m_sex;//年龄int m_age;//电话string m_phone;//住址string m_addr;
};//设计通讯里结构体
struct addressbooks{//通讯录中保存的联系人数组struct person personarray[max];//通讯录中记录当前联系人个数int m_size;
};
void addperson(addressbooks * abs){if(abs->m_size == max){cout<<"通讯录已满,无法添加!"<<endl;return;}else{//添加具体联系人//姓名string name;cout<<"请输入姓名:"<<endl;cin>>name;abs->personarray[abs->m_size].m_name = name;//性别cout<<"请输入性别"<<endl;cout<<"1 --- 男"<<endl;cout<<"2 --- 女"<<endl;int sex = 0;while(true){//如果输入的是 1 或者 2 可以退出循环,因为输入的是正确值//如果输入有误,重新输入cin>>sex;if(sex == 1 || sex == 2){abs->personarray[abs->m_size].m_sex = sex;break;}cout<<"输入有误,请重新输入!"<<endl;}//年龄cout<<"请输入年龄:"<<endl;int age = 0;cin>>age;abs->personarray[abs->m_size].m_age = age;//电话cout<<"请输入电话:"<<endl;string phone;cin>>phone;abs->personarray[abs->m_size].m_phone = phone;//住址cout<<"请输入地址:"<<endl;string address;cin>>address;abs->personarray[abs->m_size].m_addr = address;//更新通讯录里的人数abs->m_size++;cout<<"添加成功"<<endl;system("pause");//请按任意键继续system("cls");//清屏操作}
}
//2、显示联系人
void showperson(addressbooks * abs){//判断通讯录中人数是否为0,如果为0,提示信息为空//如果不为0,显示记录的联系人信息if(abs->m_size == 0){cout<<"当前记录为空"<<endl;}else{for(int i = 0;i<abs->m_size;i++){cout<<"姓名:"<<abs->personarray[i].m_name<<"\t";cout<<"性别:"<<(abs->personarray[i].m_sex == 1 ?"男":"女")<<"\t";cout<<"年龄:"<<abs->personarray[i].m_age<<"\t";cout<<"电话:"<<abs->personarray[i].m_phone<<"\t";cout<<"住址:"<<abs->personarray[i].m_addr<<endl;}}system("pause");//按任意键继续system("cls");//清屏
}
//检测联系人是否存在,如果存在,返回联系人所在数组中的位置,不存在返回-1
//参数1 通讯录 参数2 对比姓名
int isexist(addressbooks * abs,string name){for (int i = 0;i < abs->m_size;i++){//找到用户输入的姓名了if(abs->personarray[i].m_name == name){return i; //找到了,返回这个人在数组中的下标位置}}return -1;//如果遍历结束都没有找到,返回-1
}
//3、删除联系人
void deleteperson(addressbooks * abs){cout<<"请输入您要删除的联系人"<<endl;string name;cin>>name;//ret == -1 未查到//ret != -1 查到了int ret = isexist(abs,name);//传过来的是地址,所以不用取地址符!!if(ret != -1){//查找到人,要进行删除操作for(int i = ret;i<abs->m_size;i++){//数据前移abs->personarray[i] = abs->personarray[i+1];}abs->m_size--;cout<<"删除成功"<<endl;}else{cout<<"查无此人"<<endl;}system("pause");system("cls");
}
//4、查找指定联系人信息
void findperson(addressbooks * abs){cout<<"请输入您要查找的联系人"<<endl;string name;cin>>name;//判断指定的联系人是否存在通讯录中int ret = isexist(abs,name);if(ret != -1)//找到联系人{cout<<"姓名:"<<abs->personarray[ret].m_name<<"\t";cout<<"性别:"<<(abs->personarray[ret].m_sex == 1 ?"男":"女")<<"\t";cout<<"年龄:"<<abs->personarray[ret].m_age<<"\t";cout<<"电话:"<<abs->personarray[ret].m_phone<<"\t";cout<<"住址:"<<abs->personarray[ret].m_addr<<endl;}else//未找到联系人{cout<<"查无此人"<<endl;}//任意键按下后,清屏system("pause");system("cls");
}
//5、修改指定联系人信息
void modify(addressbooks * abs){cout<<"请输入您要修改的联系人"<<endl;string name;cin>>name;int ret = isexist(abs,name);if(ret != -1)//找到指定联系人{//姓名string name;cout<<"请输入姓名:"<<endl;cin>>name;abs->personarray[ret].m_name = name;//性别cout<<"请输入性别:"<<endl;cout<<"1 --- 男"<<endl;cout<<"2 --- 女"<<endl;int sex = 0;cin>>sex;while(true){if(sex == 1 || sex ==2){//输入正确 退出循环程序abs->personarray[ret].m_sex = sex;break;}cout<<"输入有误,请重新输入"<<endl;}//年龄cout<<"请输入年龄:"<<endl;int age = 0;cin>>age;abs->personarray[ret].m_age = age;//电话cout<<"请输入联系电话:"<<endl;string phone;cin>>phone;abs->personarray[ret].m_phone = phone;//地址cout<<"请输入家庭地址:"<<endl;string address;cin>>address;abs->personarray[ret].m_addr = address;}else//未找到联系人{cout<<"查无此人"<<endl;}system("pause");system("cls");
}
//6、清空所有联系人
void cleanperson(addressbooks * abs){abs->m_size = 0;//将当期记录联系人数量置为0,做逻辑清空操作cout<<"通讯录已清空"<<endl;system("pause");system("cls");
}
using namespace std;
//菜单界面
void showmenu(){cout<<"*************************"<<endl;cout<<"***** 1、添加联系人 *****"<<endl;cout<<"***** 2、显示联系人 *****"<<endl;cout<<"***** 3、删除联系人 *****"<<endl;cout<<"***** 4、查找联系人 *****"<<endl;cout<<"***** 5、修改联系人 *****"<<endl;cout<<"***** 6、清空联系人 *****"<<endl;cout<<"***** 0、退出通讯录 *****"<<endl;cout<<"*************************"<<endl;
}
int main()
{//创建通讯录结构体变量addressbooks abs;//初始化通讯录中当前人员个数abs.m_size = 0;//创建用户选择输入的变量int select = 0; while(true){showmenu();cin>>select;switch(select){case 1://1、添加联系人addperson(&abs);//利用地址传递,可以修饰实参break;case 2://2、显示联系人showperson(&abs);break;case 3://3、删除联系人//{// cout<<"请输入删除联系人姓名:"<<endl;// string name;// cin>>name;// if(isexist(&abs,name) == -1){// cout<<"查无此人"<<endl;// }else{// cout<<"找到此人"<<endl;// }//}deleteperson(&abs);break;case 4://4、查找联系人findperson(&abs);break;case 5://5、修改联系人modify(&abs);break; case 6://6、清空联系人cleanperson(&abs);break;case 0://0、退出通讯录cout<<"欢迎下次使用"<<endl;system("pause");return 0;default:break; }}return 0;
}