#include<iostream>
using namespace std;
#include<string>
#define MAX 1000
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;
int m_Age;
string m_Phone;
string m_Addr;
};
struct Addressbooks
{
struct Person personArray[MAX];
int m_Size;
};
void addperson(struct Addressbooks *abs )
{ //输入名字
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)
{
cin>>sex;
if(sex==1||sex==2)
{
abs->personArray[abs->m_Size].m_Sex=sex;
break;
}
cout<<"输入有误,请重新输入";
}
//年龄
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 addr;
cin>>addr;
abs->personArray[abs->m_Size].m_Addr=addr;
//更新通信录
abs->m_Size++;
cout<<"添加成功"<<endl;
system("pause");
system("cls");
}
int isExist(struct 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 showPerson(struct Addressbooks*abs)
{
if(abs->m_Size==0)
{
cout<<"通讯录为空"<<endl;
}
else
{
for(int i; 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");
}
void findPerson(struct Addressbooks*abs)
{
cout<<"请输入你想要查找的姓名"<<endl;
string name;
cin>>name;
int ret;
ret=isExist(abs,name);
if(ret==-1)
{
cout<<"查无此人"<<endl;
}
else
{
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;
}
system("pause");
system("cls");
}
void deletePerson(struct Addressbooks*abs)
{
cout<<"请输入你想要删除的名字"<<endl;
string name ;
cin>>name;
int ret;
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 modifyPerson(struct Addressbooks *abs)
{
cout<<"请输入你想要修改人的名字"<<endl;
string name ;
cin>>name ;
int ret;
ret=isExist(abs,name);
if(ret==-1)
{
cout<<"查无此人"<<endl;
}
else
{ //姓名
string name;
cout << "请输入姓名:" << endl;
cin >> name;
abs->personArray[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->personArray[ret].m_Sex = sex;
break;
}
cout << "输入有误,请重新输入";
}
//年龄
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;
cout << "修改成功" << endl;
}
system("pause");
system("cls");
}
void cleanPerson(struct Addressbooks *abs)
{
abs->m_Size=0;
system("pause");
system("cls");
}
int main()
{
int select=0; //创建用户选择输入的变量
struct Addressbooks abs;
abs.m_Size=0;
while(true)
{ //菜单调用
showMenu();
cin>>select;
switch(select)
{
case 1:
addperson(&abs) ; //1.添加联系人
break;
case 2:
showPerson(&abs); //2.显示联系人
break;
case 3: deletePerson(&abs); //3.删除联系人
break;
case 4: findPerson(&abs); //4.查找联系人
break;
case 5: modifyPerson(&abs); //5.修改联系人
break;
case 6: cleanPerson(&abs); //6.清空联系人
break;
case 0: //0.退出通讯录
cout<<"欢迎下次使用"<<endl;
system("pause");
return 0;
break;
default:
break;
}
}
system("pause");
return 0;
}
总结
主要是使用结构体创建通讯录成员和保存属性 ,利用分支结构进行函数调用来进行各个功能的实现。值得一提的是while(true){}这个循环,达到目的停止循环。情况考虑 和 指针的各种调用熟练掌握。
本文转载自: https://blog.csdn.net/m0_62636612/article/details/123805616
版权归原作者 Ferry_24 所有, 如有侵权,请联系我们删除。
版权归原作者 Ferry_24 所有, 如有侵权,请联系我们删除。