小结啦~做一个综合练习,希望我能快点熟练地使用一门语言呜呜
#define MAX 100//这里不能加分号嗷
//菜单界面
void showmenu()
{
cout << " 1.添加联系人" << endl;
cout << " 2.显示联系人" << endl;
cout << " 3.删除联系人" << endl;
cout << " 4.查找联系人" << endl;
cout << " 5.修改联系人" << endl;
cout << " 6.清空联系人" << endl;
cout << " 0.退出通讯录" << endl;
}
//设置联系人信息结构体
struct person
{
string name;
int sex;
int age;
string tel;
string adr;
};
struct addressbook
{
//通讯录中的联系人数组
struct person personArray[MAX];
//已有联系人个数
int size;
};
void addPerson(addressbook*abs)
{
//判断通讯录是否已满
if (abs->size == MAX)
{
cout << "通讯录已满" << endl;
return;
}
else
{
//姓名
string name;
cout << "请输入姓名" << endl;
cin >> name;
abs->personArray[abs->size].name = name;
//性别
int sex = 0;
cout << "请输入性别" << endl;
cout << "1.男 2.女" << endl;
while (1)
{
cin >> sex;
if (sex == 1 || sex == 2)
{
abs->personArray[abs->size].sex = sex;
break;
}
cout << "输入有误" << endl;
}
//年龄
int age;
cout << "请输入年龄" << endl;
cin >> age;
abs->personArray[abs->size].age = age;
string tel;
cout << "请输入电话" << endl;
cin >> tel;
abs->personArray[abs->size].tel = tel;
string adr;
cout << "请输入地址" << endl;
cin >> adr;
abs->personArray[abs->size].adr = adr;
abs->size++;
cout << "添加成功" << endl;
system("pause");//请按任意键继续
system("cls");//清屏清屏清屏清屏
}
}
void showPerson(addressbook*abs)
{
//判断有没有可以显示的联系人
if (abs->size == 0)
{
cout << "记录为空!" << endl;
}
else
{
for (int i = 0; i < abs->size; i++)
{
cout << "姓名:" << abs->personArray[i].name << "\t";
cout << "性别:" << (abs->personArray[i].sex==1?"男":"女") << "\t";
cout << "年龄:" << abs->personArray[i].age << "\t";
cout << "电话:" << abs->personArray[i].tel << "\t";
cout << "地址:" << abs->personArray[i].adr << endl;
}
}
system("pause");
system("cls");
}
int isExist(addressbook*abs, string name)
{
for (int i = 0; i < abs->size; i++)
{
if (abs->personArray[i].name == name)
{
return i;
}
}
return -1;//遍历后没有找到就返回-1
}
void deletePerson(addressbook*abs)//删除本质上是后面的数据前移,并长度减一
{
cout << "请输入你要删除的联系人" << endl;
string name;
cin >> name;
int ret = isExist(abs, name);
if (ret == -1)
{
cout << "查无此人!" << endl;
}
else
{
for (int i = ret; i < abs->size; i++)
{
abs->personArray[i] = abs->personArray[i + 1];//数据前移
}
abs->size--;//删除一个后减一个
cout << "删除成功!" << endl;
}
system("pause");
system("cls");
}
void findPerson(addressbook*abs)
{
cout << "请输入您要查找的联系人" << endl;
string name;
cin >> name;
//判断查找的联系人是否在通讯录中
int ret = isExist(abs, name);
if (ret != -1)
{
cout << "姓名:" << abs->personArray[ret].name << "\t";
cout << "性别:" << (abs->personArray[ret].sex == 1 ? "男" : "女") << "\t";
cout << "年龄:" << abs->personArray[ret].age << "\t";
cout << "电话:" << abs->personArray[ret].tel << "\t";
cout << "地址:" << abs->personArray[ret].adr << endl;
}
else
{
cout << "查无此人!" << endl;
}
system("pause");
system("cls");
}
void modifyPerson(addressbook*abs)
{
cout << "请输入您要修改的联系人姓名" << endl;
string name;
cin >> name;
//判断查找的联系人是否在通讯录中
int ret = isExist(abs, name);
if (ret != -1)
{
cout << "请输入联系人姓名" << endl;
string name;
cin >> name;
abs->personArray[ret].name = name;
cout << "请输入联系人性别" << endl;
cout << "1--男 2--女" << endl;
int sex = 0;
cin >> sex;
while (1)
{
if (sex == 1 || sex == 2)
{
abs->personArray[ret].sex = sex;
break;
}
else
{
cout << "输入有误!" << endl;
}
}
cout << "请输入联系人年龄" << endl;
int age;
cin >> age;
abs->personArray[ret].age = age;
cout << "请输入联系电话" << endl;
string tel;
cin >> tel;
abs->personArray[ret].tel = tel;
cout << "请输入地址" << endl;
string adr;
cin >> adr;
abs->personArray[ret].adr = adr;
}
else
{
cout << "查无此人" << endl;
}
system("pause");
system("cls");
}
void cleanPerson(addressbook*abs)
{
cout << "是否清空全部联系人?" << endl;
cout << "1--是 2--否" << endl;
int a = 0;
cin >> a;
if (a == 1)
{
abs->size = 0;
cout << "通讯录已清空" << endl;
system("pause");
system("cls");
}
else
{
system("pause");
system("cls");
}
}
int main()
{
struct addressbook abs;
abs.size = 0;
int select = 0;
while (1)
{
showmenu();
cin >> select;
switch (select)
{
case 1://添加
addPerson(&abs);//地址传递可以后续改
break;
case 2://显示
showPerson(&abs);
break;
case 3://删除
{
deletePerson(&abs);
}//一大段代码要括号括起来
break;
case 4://查找
findPerson(&abs);
break;
case 5://修改
modifyPerson(&abs);
break;
case 6:
cleanPerson(&abs);
break;
case 0:
cout << "欢迎下次使用" << endl;
system("pause");//结束并退出这个程序,不会再循环了
return 0;
break;
}
}
system("pause");
return 0;
}