#include
#include
using namespace std;
#define MAX_SIZE 1000
typedef struct {
string m_Name;//姓名
string m_Sex;//性别
int m_Age;//年龄
string m_Num;//电话号码
string m_Addr;//地址
}Person;
typedef struct {
Person b[MAX_SIZE];//结构数组
int m_Siz;//当前人数
} Sqlist;
//封装一个函数,显示 *** 作菜单
void showMenu()
{
cout << "1、添加联系人" << endl;
cout << "2、显示联系人" << endl;
cout << "3、删除联系人" << endl;
cout << "4、查找联系人" << endl;
cout << "5、修改联系人" << endl;
cout << "6、清空联系人" << endl;
cout << "0、退出通讯录" << endl;
}
//封装一个函数,实现联系人的添加
void addperson(Sqlist* a)//写法的含义是,创建一个指针变量a来接受传递的地址
{
if (a->m_Siz == MAX_SIZE)
{
cout << "超出上限,请清空不必要的联系人或联系管理员人员进行修改" << endl;
return ;
}
else
{
//添加名字
string name;
cout << "请输入联系人的姓名" << endl;
cin >> name;
a->b[a->m_Siz].m_Name = name;
//添加性别
string sex;
cout << "请输入联系人的性别" << endl;
cin >> sex;
a->b[a->m_Siz].m_Sex = sex;
//添加年龄
int age;
cout << "请输入联系人的年龄" << endl;
cin >> age;
a->b[a->m_Siz].m_Age = age;
//添加电话号码
string num;
cout << "请输入联系人的电话号码" << endl;
cin >> num;
a->b[a->m_Siz].m_Num = num;
//添加家庭住址
string address;
cout << "请输入联系人的家庭住址" << endl;
cin >> address;
a->b[a->m_Siz].m_Addr = address;
//更新此刻通讯录的人数
(a->m_Siz)++;
//提示用户添加已成功
cout << "添加成功" << endl;
//实现清屏
system("pause");//请按任意键继续
system("cls");
}
}
//封装一个函数,显示所有的联系人
void showperson(Sqlist* a)
{
if (a->m_Siz == 0)
{
cout << "当前的记录为空,请添加联系人!" << endl;
}
else
{
for (int i = 0;i < a->m_Siz;i++)
{
cout << "姓名:" << a->b[i].m_Name << "/t";
cout << "性别:" << a->b[i].m_Sex << "/t";
cout << "年龄:" << a->b[i].m_Age<< "/t";
cout << "电话号码:" << a->b[i].m_Num<< "/t";
cout << "家庭住址:" << a->b[i].m_Addr << endl;
}
}
system("pause");
system("cls");
}
//封装函数,判断该联系人是否存在
int ifexit(Sqlist* a,string name)
{
for (int i = 0;i < a->m_Siz;i++)
{
if (a->b[a->m_Siz].m_Name == name)
{
return i;
}
else
{
return -1;
}
}
}
//封装一个函数,实现用户输入联系人名字而后删除的功能
void deleteperson(Sqlist* a)
{
string name;
cout << "请输入想要删除联系人的姓名" << endl;
cin >> name;
int ret = ifexit(a, name);
if (ret == -1) {
cout << "查无此人" << endl;
}
else {
for (int i = ret;i < a->m_Siz;i++)
{
a->b[i] = a->b[i + 1];
}
a->m_Siz--;
cout << "删除成功" << endl;
}
system("pause");
system("cls");
}
//封装一个函数,查找某个联系人的信息
void search(Sqlist *a)
{
string name;
cout << "请输入想要删除联系人的姓名" << endl;
cin >> name;
int ret = ifexit(a, name);
if (ret == -1) {
cout << "查无此人" << endl;
}
else {
cout << "已找到此人" << endl;
cout << "姓名:" << a->b[ret].m_Name << "/t";
cout << "性别:" << a->b[ret].m_Sex << "/t";
cout << "年龄:" << a->b[ret].m_Age << "/t";
cout << "电话号码:" << a->b[ret].m_Num << "/t";
cout << "家庭住址:" << a->b[ret].m_Addr << endl;
}
system("pause");
system("cls");
}
//封装一个函数,修改某个联系人的信息
void change(Sqlist* abs)
{
cout << "请输入联系人的姓名" << endl;
string name;
cin >> name;
int ret = ifexit(abs, name);
if (ret == -1)
{
cout << "查无此人!" << endl;
return;
}
else
{
//姓名
cout << "请修改姓名" << endl;
string Cname;
cin >> Cname;
abs->b[ret].m_Name = Cname;
//性别
cout << "请修改性别" << endl;
string Csex;
cin >> Csex;
abs->b[ret].m_Sex = Csex;
//年龄
cout << "请修改年龄" << endl;
int Cage = 0;
cin >> Cage;
abs->b[ret].m_Age = Cage;
//电话号码
cout << "请修改电话号码" << endl;
string Cnum;
cin >> Cnum;
abs->b[ret].m_Num;
//家庭住址
cout << "请修改家庭住址" << endl;
string Cadd;
cin >> Cadd;
abs->b[ret].m_Addr;
//提示修改成功
cout << "您已修改成功!" << endl;
}
system("pause");
system("cls");
}
//封装一个函数,实现清空联系人的操作
void clean(Sqlist* abs)
{
abs->m_Siz = 0;
cout << "已实现清空!" << endl;
system("pause");
system("cls");
}
int main()
{
//创建一个通讯录结构变量
Sqlist a;
//初始化结构体变量
a.m_Siz = 0;
while (true)
{
showMenu();
int select = 0;//定义一个用户输入的变量
cin >> select;
//考虑的方案是,在case里面调用函数
switch (select)
{
case 1: //添加联系人
addperson(&a);//采用传地址的方式,实现修改实参的目的
break;
case 2: //显示联系人
showperson(&a);
break;
case 3: //删除联系人
deleteperson(&a);
break;
case 4: //查找联系人
search(&a);
break;
case 5: //修改联系人
change(&a);
break;
case 6: //清空联系人
clean(&a);
break;
case 0: //退出通讯录
cout << "欢迎您的下次使用!" << endl;
system("pause");
return 0;
break;
default:
break;
}
}
system("pause");
return 0;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)