好久没写文章了,终于结束了满课的前三周以及烦人的考试,可以有多余的时间来自己学习。
今天学习了利用C++实现通讯录管理系统,自己手敲了一遍。
可以用来当实验题的答案或课设哦!
具体的解释在代码注释当中。
#include <iostream> using namespace std; #include <string> #define max 1000
//菜单界面 void showMenu() { cout<<"*****************************"<<endl; cout<<
"*****\t 1.添加联系人 \t*****"<<endl; cout<<"*****\t 2.显示联系人 \t*****"<<endl; cout<<
"*****\t 3.删除联系人 \t*****"<<endl; cout<<"*****\t 4.查找联系人 \t*****"<<endl; cout<<
"*****\t 5.修改联系人 \t*****"<<endl; cout<<"*****\t 6.清空联系人 \t*****"<<endl; cout<<
"*****\t 0.退出通讯录 \t*****"<<endl; cout<<"*****************************"<<endl; }
//联系人结构体 struct Person{ string name; int sex; int age; string phone; string addr
; }; //通讯录结构体 struct Addressbooks{ struct Person personarr[max]; int size; };
//1.添加联系人 void addPerson(Addressbooks *abs){ //判断通讯录是否已满 if(abs->size==max){
cout<<"通讯录已满,无法添加!"<<endl; return; }else{ //添加具体的联系人 //姓名 string name; cout<<
"请输入姓名:"<<endl; cin>>name; abs->personarr[abs->size].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->personarr[
abs->size].sex=sex; break; } cout<<"输入有误,请重新输入!"<<endl; } //年龄 cout<<"请输入年龄:"<<
endl; int age=0; while(true){ //输入正确的年龄才可以退出循环 cin>>age; if(age>=0&&age<=150){
abs->personarr[abs->size].age=age; break; } cout<<"您输入的年龄有误,请重新输入!"<<endl; }
//电话 cout<<"请输入联系电话:"<<endl; string phone; cin>>phone; abs->personarr[abs->size]
.phone=phone; //住址 cout<<"请输入家庭住址:"<<endl; string address; cin>>address; abs->
personarr[abs->size].addr=address; //更新通讯录人数 abs->size++; cout<<"添加成功!"<<endl;
system("pause"); //按任意键继续 system("cls"); //清屏操作 } } //显示联系人 void showperson(
Addressbooks*abs){ //判断通讯录中人数是否为0 if(abs->size==0){ cout<<"通讯录为空!"<<endl; } else
{ for(int i=0;i<abs->size;i++){ cout<<"姓名:"<<abs->personarr[i].name<<"\t"; cout
<<"性别:"<<(abs->personarr[i].sex==1?"男":"女")<<"\t"; cout<<"年龄:"<<abs->personarr[i
].age<<"\t"; cout<<"电话:"<<abs->personarr[i].phone<<"\t"; cout<<"住址:"<<abs->
personarr[i].addr<<endl; } } system("pause"); system("cls"); } //检测联系人是否存在 int
isexist(Addressbooks *abs,string name){ for(int i=0;i<abs->size;i++){ if(abs->
personarr[i].name==name){ return i; //如果找到则返回联系人的序号 } } return -1; } //删除联系人
void deletep(Addressbooks *abs){ cout<<"请输入您要删除的联系人:"<<endl; string name; cin>>
name; int ret=isexist(abs,name); if(ret!=-1){ for(int i=ret;i<abs->size;i++) {
abs->personarr[i]=abs->personarr[i+1]; } cout<<"删除成功!"<<endl; abs->size--; }else
{ cout<<"查无此人!"<<endl; } } //查找指定的联系人信息 void findperson(Addressbooks *abs) {
cout<<"输入您要查找的联系人:"<<endl; string name; cin>>name; int ret=isexist(abs,name); if
(ret!=-1){ cout<<"姓名:"<<abs->personarr[ret].name<<"\t"; cout<<"性别:"<<abs->
personarr[ret].sex<<"\t"; cout<<"年龄:"<<abs->personarr[ret].age<<"\t"; cout<<
"电话:"<<abs->personarr[ret].phone<<"\t"; cout<<"地址:"<<abs->personarr[ret].addr<<
endl; }else{ cout<<"查无此人!"<<endl; } system("pause"); system("cls"); } //修改联系人信息
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].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].sex=sex; break; }else{ cout<<
"输入有误,请重新输入:"<<endl; } } cout<<"请输入年龄:"<<endl; int age=0; while(true){
//符合条件则退出循环 cin>>age; if(age>=0&&age<=150){ abs->personarr[ret].age=age; break;
} cout<<"输入有误,请重新输入:"<<endl; } cout<<"请输入电话:"<<endl; string phone; cin>>phone;
abs->personarr[ret].phone=phone; cout<<"请输入地址:"<<endl; string addr; cin>>addr;
abs->personarr[ret].addr=addr; }else{ cout<<"未找到联系人!"<<endl; } // 按任意键清屏 system(
"pause"); system("cls"); } //清空联系人 void clearp(Addressbooks *abs){ cout<<"确定清空?"
<<endl; cout<<"1-----确定"<<endl; cout<<"2-----取消"<<endl; int sel=0; while(true){
cin>>sel; if(sel==1){ abs->size=0; cout<<"通讯录已清空!"<<endl; system("pause");
system("cls"); break; }else if(sel==2) { return; break; } else { cout<<
"输入有误,请重新输入:"<<endl; } } } int main() { //创建通讯录结构体变量 Addressbooks abs;
//初始化通讯录当中当前的人数个数 abs.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.删除联系人
deletep(&abs); break; case 4: //4.查找联系人 findperson(&abs); break; case 5:
//5.修改联系人 modifyperson(&abs); break; case 6: //6.清空联系人 clearp(&abs); break; case
0: //0.退出通讯录 cout<<"欢迎下次使用!"<<endl; system("pause"); return 0; break; default:
cout<<"输入有误,请重新输入!"<<endl; break; } } system("pause"); return 0; }