通讯录是一个可以记录亲人,好友的信息工具。
功能包括:
1,添加联系人:向通讯录添加新人,包括(姓名,性别年龄,联系电话,家庭住址)
2,显示联系人:显示通讯录中所有联系人的信息
3,删除联系人:按照姓名进行删除指定联系人
4,查找联系人:按照姓名查看指定联系人的信息
5,修改联系人:按照姓名重新修改联系人的信息
6,清空联系人:清空通讯录中所有的信息
7,退出通讯录:退出当前使用的通讯录
菜单界面:
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;
}
1,添加联系人:
(1)设计联系人结构体
#include<string>
struct person{string m_name;//姓名 int m_sex;//性别:1:男2:女int m_age;//年龄 string m_phone;//电话string m_addr;// 住址
};
(2)设计通讯录结构体
#define MAX 1000 //最大人数
struct addressbooks{struct person personarr[MAX];//通讯录中保存的联系人的数组 int m_size//通讯录中人员的个数
};
(3)main函数中创建通讯录
//创建通讯录结构体变量addressbooks abs;//初始化通讯录中当前人员的个数abs.m_size=0;
(4)封装添加联系人函数
void addperson(addressbooks *abs)
{//判断通讯录是否已满,如果满了就不进行添加if(abs->m_size==MAX){cout<<"通讯录已满,无法添加!"<<endl;} else{//添加具体联系人string name;cout<<"请输入姓名:"<<endl;cin>>name;abs->personarr[abs->m_size].m_name=name; //性别cout<<"请输入性别:"<<endl;cout<<"1----男"<<endl;cout<<"2----女"<<endl;int sex=0;while(true){cin>>sex;if(sex==1||sez==2){abs->personarr[abs->m_size].m_sex=sex;break;} cout>>"输入有误,请重新输入"; }//年龄cout<<"请输入年龄:"<<endl;int age=0;cin>>age;abs->personarr[abs->m_size].m_age=age;///电话cout<<"请输入联系电话:"<<endl;string phone;cin>>phone;abs->personarr[abs->m_size].m_phone=phone;//住址cout<<"请输入家庭住址:"<<endl;string address;cin>>address;abs->personarr[abs->m_size].m_addr=address;//更新通讯录人数abs->m_size++;cout<<"添加成功"<<endl;system("pause");//请安任意键继续system("cls");//清屏操作 }}
(5)测试添加联系人功能
case 1://1,添加联系人addperson(&abs);//利用地址传递可以修改 break;
2,显示联系人
(1)封装显示联系人
如果当时没有人,就标记记录为空,人数大于0就显示
//2,显示所有联系人void showperson(addressbooks *abs){if(abs->m_size==0){cout<<"当前记录为空"<<endl; }else{for(int i=0;i<abs->m_size;i++){cout<<"姓名:"<<abs->personarr[i].m_name<<"\t";cout<<"性别:"<<(abs->personarr[i].m_sex==1?"男":"女")<<"\t";cout<<"年龄:"<<abs->personarr[i].m_age<<"\t";cout<<"电话:"<<abs->personarr[i].m_phone<<"\t";cout<<"住址:"<<abs->personarr[i].m_addr<<"\t";}}system("pause");system("cls");}
(2) 测试显示联系人
case 2://2,显示联系人showperson(&abs);break;
3,删除联系人
(1)封装检测联系人是否存在
//检测联系人是否存在,如果存在,返回联系人所在数组中的具体位置,不存在返回-1int isexist(addressbooks *abs,string name){for(int i=0;i<abs->m_size;i++){if(abs->personarr[i].m_name==name){return 1;}}}
(2)封装删除联系人函数(将要删除的人做一个前移,依次前移)
//删除联系人void deleteperson(addressbooks *abs){cout<<"请输入您要删除的联系人"<<endl;string name;cin>>name;int ret=isexist(abs,name);if(ret!=-1){for(int i=ret;i<abs->m_szie;i++){abs->personarr[i]=abs->personarr[i+1];}abs->m_size--;cout<<"删除成功"<<endl; } else{cout<<"查无此人";}}
(3)测试删除联系人功能
case 3://3,删除联系人{cout<<"请输入删除联系人姓名:"<<endl;string name;cin>>name; if(isexist(&abs,name)==-1){cout<<"查无此人"<<endl; }else{cout<<"找到此人"<<endl; deleteperson(&abs)}}break;
4,查找联系人
判断联系人是否存在,如果存在显示联系人,不存在则提示查无此人
(1)封装查找联系人
//4,查找联系人 void findperson(addressbooks *abs){cout<<"请输入您要查找的联系人"<<endl; string name;cin>>name;int ret=isexist(abs,name);if(ret!=-1)//找到联系人{cout <<"姓名:"<<abs->personarr[ret].m_name<<"\t";cout <<"性别:"<<abs->personarr[ret].m_sex<<"\t";cout <<"年龄:"<<abs->personarr[ret].m_age<<"\t";cout <<"电话:"<<abs->personarr[ret].m_phone<<"\t";cout <<"住址:"<<abs->personarr[ret].m_addr<<"\t";}else{cout<<"查无此人"<<endl; }system("pause");system("cls");}
(2)测试查找指定的联系人
case 4://4,查找联系人findperson( &abs);break;
5,修改联系人
(1)封装修改联系人的函数
//5,修改联系人 void modifyperson(addressbooks *abs){cout<<"请输入要修改的联系人"<<endl;string name;cin>>name;int ret=isexist(abs,name);if(ret!=-1){//姓名string name;cout<<"请输入姓名:"<<endl;cin>>name;abs->personarr[ret].m_name=name;//性别cout<<"请输入性别:"<<endl;cout<<"1---男"<<endl;cout<<"2---女"<<endl;int sex=0;while(true){cin>>sex;if (sex==1||sex==2){abs->personarr[ret].m_sex=sex;break;}cout<<"输入有误,请重新输入"<<endl;}//年龄cout<<"请输入年龄:"<<endl;int age;cin>>age;abs->personarr[ret].m_age=age;//电话cout<<"请输入电话:"<<endl;string phone;cin>>phone;abs->personarr[ret].m_phone=phone;//住址cout<<"请输入家庭住址:"<<endl;string address;cin>>address;abs->personarr[ret].m_addr=address;cout<<"修改成功!"<<endl; }else{cout<<"查无此人"<<endl;}system("pause");system("cls");}
(2) 测试修改联系人的函数
case 5://5,修改联系人modifyperson(&abs);break;
6,清空联系人
(1)封装联系人的函数
将通讯录所有联系人的信息清除掉,值要将通讯录记录的联系人数量置为0,做逻辑清空即可
//6,清空联系人void cleanperson(addressbooks *abs){abs->m_size=0;//将当期人数置为0,做逻辑清空操作 cout<<"通讯录已经清空"<<endl;system("pause");system("cls"); }
(2)测试清空联系人
case 6://6,清空联系人cleanperson(&abs); break;