通讯录管理系统功能
设计一个通讯录,实现的功能如下:
1、添加联系人
2、显示联系人
3、删除联系人
4、查找联系人
5、修改联系人
6、清空联系人
0、退出通讯录
一、创建菜单界面
- 封装一个菜单界面函数,显示通讯录要实现的具体功能
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;
}
- 在主函数中调用菜单界面函数
- 创建一个联系人的结构体
- 创建一个通讯录的结构体
struct Person
{
string m_name;
int m_sex; //1、男 2、女
int m_age;
string m_phone;
string m_addr;
};
struct Addressbooks
{
struct Person personArray[MAX ];
//通讯录中人员个数
int m_size;
};
二、添加联系人
- 封装一个添加联系人的函数
首先检测通讯录已有联系人数量是否达到内存上线,未达到即可添加联系人,达到提示无法添加。
//1、添加联系人
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 ;
//添加性别
int sex=0;
cout<<"请输入性别:1、男 2、女"<<endl;
while(true)
{
cin>>sex ;
if(sex ==1||sex==2)
{
abs->personArray[abs->m_size ].m_sex =sex ;
break;
}
cout<<"输入有误,请重新输入!"<<endl;
}
//添加年龄
int age=0;
cout<<"请输入年龄:"<<endl;
cin>>age;
abs->personArray[abs->m_size ].m_age =age ;
//添加电话
string phone;
cout<<"请输入电话:"<<endl;
cin>>phone ;
abs->personArray[abs->m_size ].m_phone =phone ;
//添加住址
string address;
cout<<"请输入地址:"<<endl;
cin>>address ;
abs->personArray[abs->m_size ].m_addr =address ;
//更新通讯录人数
abs->m_size ++;
cout<<"添加成功"<<endl;
system ("pause");
system ("cls");
}
}
- 检查添加联系人函数功能
三、显示联系人
- 封装一个显示联系人的函数
判断通讯录中是否有成员,如果有,显示所有成员,如果没有,提示通讯录为空。
void showPerson(struct Addressbooks *abs )
{
//判断通讯录人员是否为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 ;
cout<<"\t联系人的性别为:"<<(abs->personArray[i].m_sex == 1 ?"男":"女" ) ;
cout<<"\t联系人的年龄为:"<<abs->personArray[i].m_age ;
cout<<"\t联系人的电话为:"<<abs->personArray[i].m_phone ;
cout<<"\t联系人的地址为:"<<abs->personArray[i].m_addr<<endl ;
}
}
system ("pause");
system ("cls");
}
- 检查显示联系人函数功能
四、删除联系人
- 封装一个检测联系人是否存在的代码
//检测联系人是否存在,如果存在返回联系人所在数组中的具体位置,不存在返回:-1
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;
}
- 检测代码
- 封装一个删除联系人的函数
void deletePerson(struct Addressbooks *abs)
{
cout<<"请输入要删除的联系人:";
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");
}
- 检查删除联系人函数功能
五、查找联系人
- 封装一个查找联系人的函数
void findPerson(Addressbooks *abs)
{
cout<<"请输入要查找的联系人:";
string name;
cin>>name ;
//ret==-1 未查到
//ret!=-1 查到了
int ret=isExist (abs,name);
if(ret!=-1)
{
cout<<"联系人的姓名为:" <<abs->personArray [ret].m_name ;
cout<<"\t联系人的性别为:"<<(abs->personArray[ret].m_sex == 1 ?"男":"女" ) ;
cout<<"\t联系人的年龄为:"<<abs->personArray [ret].m_age ;
cout<<"\t联系人的电话为:"<<abs->personArray [ret].m_phone ;
cout<<"\t联系人的地址为:"<<abs->personArray [ret].m_addr<<endl ;
}
else
{
cout<<"查无此人"<<endl;
}
system ("pause");
system ("cls");
}
- 检查查找联系人函数功能
六、修改联系人
- 封装一个修改联系人的函数
void modifyPerson(Addressbooks *abs )
{
cout<<"请输入要修改的联系人:";
string name;
cin>>name ;
//ret==-1 未查到
//ret!=-1 查到了
int ret=isExist (abs,name);
if(ret!=-1)
{
//添加姓名
string name;
cout<<"请输入姓名:"<<endl;
cin>>name;
abs->personArray[ret ].m_name =name ;
//添加性别
int sex=0;
cout<<"请输入性别:1、男 2、女"<<endl;
while(true)
{
cin>>sex ;
if(sex ==1||sex==2)
{
abs->personArray[ret ].m_sex =sex ;
break;
}
cout<<"输入有误,请重新输入!"<<endl;
}
//添加年龄
int age=0;
cout<<"请输入年龄:"<<endl;
cin>>age;
abs->personArray[ret ].m_age =age ;
//添加电话
string phone;
cout<<"请输入电话:"<<endl;
cin>>phone ;
abs->personArray[ret ].m_phone =phone ;
//添加住址
string address;
cout<<"请输入地址:"<<endl;
cin>>address ;
abs->personArray[ret ].m_addr =address ;
cout<<"修改成功!"<<endl;
}
else
{
cout<<"查无此人"<<endl;
}
system ("pause");
system ("cls");
}
- 检查修改联系人函数功能
七、清空联系人
- 封装一个清空联系人的函数
//6、清空联系人
void clearPerson(Addressbooks * abs )
{
int select=0;
cout<<"你是否要继续清空通讯录:1、继续 2、取消"<<endl;
while(true)
{
cin>>select ;
if(select ==1||select ==2)
{
if (select ==1)
{
abs->m_size =0;
cout<<"通讯录已清空"<<endl;
}
else
{
cout<<"取消成功!"<<endl;
}
break;
}
cout<<"输入有误,请重新输入!"<<endl;
}
system ("pause");
system ("cls");
}
- 检查清空联系人函数功能
主函数代码
主函数中使用switch语句根据用户选择不同选项,分别实现不同功能。
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、删除联系人
deletePerson (&abs);
break;
case 4: //4、查找联系人
findPerson (&abs);
break;
case 5: //5、修改联系人
modifyPerson(&abs );
break;
case 6: //6、清空联系人
clearPerson(&abs);
break;
case 0: //0、退出通讯录
cout<<"欢迎下次使用"<<endl;
system("pause");
return 0;
break;
default:
break;
}
};
system("pause");
return 0;
}