#include <iostream>
#include <string>
using namespace std;
#define MAX 2000//联系人上限(可更改)
//显示菜单:
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;
string m_Sex;
string m_Age;
string m_Phone;
string m_Address;
};
//菜单结构体:
struct Addressbooks{
struct Person personArray[MAX];
int m_Size;
};
//添加联系人函数:
void addPerson (Addressbooks *abs)
{
if(abs->m_Size ==MAX)
{
cout<<"通讯录已满,无法添加!"<<endl;
return ;
}
else
{
int len=0;
cout<<"请输入你要添加的联系人个数:"<<endl;
cin>> len;
for(int i=0;i<len;i++)
{
cout<<"正在添加第"<<abs->m_Size+1<<"位联系人"<<endl;
string Name;
cout<<"请输入姓名"<<endl;
cin>>Name;
abs->personArray[abs->m_Size].m_Name=Name;
string Sex;
cout<<"请输入性别"<<endl;
cin>>Sex;
abs->personArray[abs->m_Size].m_Sex=Sex;
string Age;
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_Address=Address;
abs->m_Size++;
cout<<"添加成功!"<<endl;
cout<<" "<<endl;
}
system("pause");
system("cls");
}
}
//显示联系人函数:
void showPerson(Addressbooks *abs)
{
if(abs->m_Size==0)
{
cout<<"无联系人"<<endl;
return ;
}
else
{
cout<<"当前联系人列表:"<<endl;
cout<<" "<<endl;
for(int i=0;i<abs->m_Size;i++)
{
cout<<"姓名: "<<abs->personArray[i].m_Name<<"\t";
cout<<"性别: "<<abs->personArray[i].m_Sex<<"\t";
cout<<"年龄: "<<abs->personArray[i].m_Age<<"\t";
cout<<"电话: "<<abs->personArray[i].m_Phone<<"\t";
cout<<"住址: "<<abs->personArray[i].m_Address<<"\t";
cout<<" "<<endl;
}
//system("pause");
//system("cls");
}
}
//打印联系人:
void showPerson_1(Addressbooks *abs,int num_1)
{
cout<<"姓名: "<<abs->personArray[num_1].m_Name<<"\t";
cout<<"性别: "<<abs->personArray[num_1].m_Sex<<"\t";
cout<<"年龄: "<<abs->personArray[num_1].m_Age<<"\t";
cout<<"电话: "<<abs->personArray[num_1].m_Phone<<"\t ";
cout<<"住址: "<<abs->personArray[num_1].m_Address<<"\t";
cout<<" "<<endl;
}
//查找联系人函数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;
}
//删除联系人函数1:
Addressbooks* deleteperson_arr(Addressbooks *abs,int deleteperson_lacation)
{
for(int i=deleteperson_lacation;i<abs->m_Size;i++)
{
abs->personArray[i]=abs->personArray[i+1];
}
abs->m_Size--;
return abs;
}
//删除联系人函数2:
void deletperson(Addressbooks *abs)
{
if(abs->m_Size==0)
{
cout<<"通讯录为空,无法删除"<<endl;
return ;
}
string name;
restart_3recin: cout<<"请输入你要删除的联系人名字"<<endl;
cin>>name;
int recet=isExist(abs,name);
if(recet==-1)
{
cout<<"查无此人,是否重新输入联系人名字?1--是、任意键--退出"<<endl;
int recin_3=0;
cin>>recin_3;
if(recin_3==1)
{
goto restart_3recin;
}
else
{
return ;
}
}
else
{
cout<<"查找成功!该联系人在第"<<recet+1<<"位"<<endl;
showPerson_1(abs,recet);
}
cout<<"确定删除该联系人吗?1--删除、任意键--退出"<<endl;
int delete_1=0;
cin>>delete_1;
if(delete_1==1)
{
deleteperson_arr(abs,recet);//数组删除函数
cout<<"删除成功!"<<endl;
showPerson(abs);
showMenu();
}
else
{
return ;
}
}
//查找联系人函数2:
void findPeron(Addressbooks *abs)
{
if(abs->m_Size==0)
{
cout<<"通讯录为空,无法查找"<<endl;
return ;
}
else
{
restart_4: cout<<"请输入你要查找的联系人名字"<<endl;
string name;
cin>>name;
int recet_4=isExist(abs, name);
if(recet_4==-1)
{
cout<<"查无此人,是否重新输入名字查找?1--是、任意键--否" <<endl;
int recin_4=0;
cin>>recin_4;
if(recin_4==1)
{
goto restart_4;
}
else
{
return ;
}
}
else
{
cout<<"查找成功!联系人在第"<<recet_4+1<<"位"<<endl;
showPerson_1(abs,recet_4);
}
}
}
//修改联系人函数1:
void changePerson_5(Addressbooks *abs,int changenum_5)
{
rechange_5: cout<<"请输入你要修改的类别:1--姓名、2--性别、3--年龄、4--电话、5--住址"<<endl;
int change_5;
cin>>change_5;
switch (change_5)
{
case 1:
{
cout<<"请输入姓名:"<<endl;
string name_5;
cin>>name_5;
abs->personArray[changenum_5].m_Name=name_5;
cout<<"修改成功!是否还需要修改其它内容?1--是、任意键--否"<<endl;
int recin_5=0;
cin>>recin_5;
if(recin_5==1)
{
goto rechange_5;
}
else
{
return ;
}
}
break;
case 2:
{
cout<<"请输入性别:"<<endl;
string sex_5;
cin>>sex_5;
abs->personArray[changenum_5].m_Sex=sex_5;
cout<<"修改成功!是否还需要修改其它内容?1--是、任意键--否"<<endl;
int recin_5=0;
cin>>recin_5;
if(recin_5==1)
{
goto rechange_5;
}
else
{
return ;
}
}
break;
case 3:
{
cout<<"请输入年龄:"<<endl;
string age_5;
cin>>age_5;
abs->personArray[changenum_5].m_Age=age_5;
cout<<"修改成功!是否还需要修改其它内容?1--是、任意键--退出"<<endl;
int recin_5=0;
cin>>recin_5;
if(recin_5==1)
{
goto rechange_5;
}
else
{
return ;
}
}
break;
case 4:
{
cout<<"请输入电话:"<<endl;
string phone_5;
cin>>phone_5;
abs->personArray[changenum_5].m_Phone=phone_5;
cout<<"修改成功!是否还需要修改其它内容?1--是、任意键--否"<<endl;
int recin_5=0;
cin>>recin_5;
if(recin_5==1)
{
goto rechange_5;
}
else
{
return ;
}
}
break;
case 5:
{
cout<<"请输入住址:"<<endl;
string address_5;
cin>>address_5;
abs->personArray[changenum_5].m_Address=address_5;
cout<<"修改成功!是否还需要修改其它内容?1--是、任意键--否"<<endl;
int recin_5=0;
cin>>recin_5;
if(recin_5==1)
{
goto rechange_5;
}
else
{
return ;
}
}
break;
default:
break;
}
}
//修改联系人函数2:
void changePerson(Addressbooks *abs)
{
showPerson(abs);
if(abs->m_Size==0)
{
return ;
}
recin: cout<<"请输入你要修改的联系人的名字"<<endl;
string name;
cin>>name;
int recet_5 = isExist(abs,name);
if(recet_5==-1)
{
cout<<"查无此人,是否重新输入名字?1--是、任意键--退出" <<endl;
int recet_cin_5=0;
cin>>recet_cin_5;
if(recet_cin_5==1)
{
goto recin;
}
else
{
return ;
}
}
else
{
cout<<"查找成功!联系人在第"<<recet_5+1<<"位"<<endl;
showPerson_1(abs,recet_5);
changePerson_5(abs,recet_5);
}
}
//清空联系人函数:
void cleanPerson(Addressbooks *abs)
{
if(abs->m_Size==0)
{
cout<<"无联系人"<<endl;
return ;
}
cout<<"确定清空通讯录吗?1--确定、任意键--退出"<<endl;
int cleanPerson_6=0;
cin>>cleanPerson_6;
if(cleanPerson_6==1)
{
abs->m_Size=0;
cout<<"清空成功!"<<endl;
showPerson(abs);
}
else
{
return ;
}
}
//菜单选择、主要功能:
void menuselet( Addressbooks *abs)
{
int select=0;
while(true)
{
showMenu();
select_recin: cout<<"请输入你想选择的功能"<<endl;
cin>>select;
switch (select)
{
case 1:
addPerson (abs);
break;
case 2:
{
showPerson(abs);
goto select_recin;
}
break;
case 3:
{
showPerson(abs);
deletperson(abs);
goto select_recin;
}
break;
case 4:
{
findPeron(abs);
goto select_recin;
}
break;
case 5:
{
changePerson(abs);
goto select_recin;
}
break;
case 6:
{
cleanPerson(abs);
goto select_recin;
}
break;
case 0:
cout<<"欢迎下次使用"<<endl;
return ;
break;
default:
break;
}
}
}
//主函数:
int main()
{
Addressbooks abs;
abs.m_Size=0;
menuselet(&abs);
return 0;
}
软件:Dev-C++