**
【C++项目实践】_通讯录管理系统
**
#include<iostream>
#include<string>
using namespace std;
/*
通讯录管理系统
步骤:
1、界面显示
2、退出功能
3、添加联系人
4、显示联系人
5、查找联系人
*/
//定义通讯录最大储存量
#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 name;
int sex;
int age;
string phone;
string address;
};
//通讯录结构体
struct AddressBook
{
struct Person personArray[MAX];
int size;
};
void add_person(AddressBook* p)
{
//先判断是否满
if (p->size == MAX)
{
cout << "通讯录已满,无法添加" << endl;
return;
}
else
{
string name;
cout << "请输入姓名:" << endl;
cin >> name;
p->personArray[p->size].name = name;
char sex = 0;
cout << "请输入性别 1-男 2-女:" << endl;
while (sex != '1' || sex != '2')
{
cin >> sex;
if (sex == '1' || sex == '2')
{
p->personArray[p->size].sex = sex;
break;
}
else
{
cout << "性别输入错误,请重新输入 1-男 2-女 :" << endl;
}
}
int age = 0;
cout << "请输入年龄:" << endl;
cin >> age;
p->personArray[p->size].age = age;
string phone;
cout << "请输入电话:" << endl;
cin >> phone;
p->personArray[p->size].phone = phone;
string address;
cout << "请输入地址:" << endl;
cin >> address;
p->personArray[p->size].address = address;
//更新通讯录人数
p->size++;
cout << "添加成功" << endl;
system("pause");//按任意键继续
system("cls");//清屏
}
}
void display_person(AddressBook* p)
{
for (int i = 0; i < p->size; i++)
{
cout << p->personArray[i].name << "\t";
cout << (p->personArray[i].sex == '1' ? "男" : "女") << "\t";
cout << p->personArray[i].age << "\t";
cout << p->personArray[i].phone << "\t";
cout << p->personArray[i].address << endl;
}
system("pause");//按任意键继续
system("cls");//清屏
}
void lookup_person(AddressBook* p)
{
string name;
int flag = 0;//判断是否查询到信息标志位
cout << "请输入您要查找的联系人姓名:" << endl;
cin >> name;
for (int i = 0; i < p->size; i++)
{
if (name == p->personArray[i].name)
{
flag = 1;
cout << "查询到此人信息:" << endl;
cout << p->personArray[i].name << "\t";
cout << (p->personArray[i].sex == '1' ? "男" : "女") << "\t";
cout << p->personArray[i].age << "\t";
cout << p->personArray[i].phone << "\t";
cout << p->personArray[i].address << endl;
system("pause");//按任意键继续
system("cls");//清屏
}
else
{
continue;
}
}
if (!flag)
{
cout << "查无此人" << endl;
system("pause");//按任意键继续
system("cls");//清屏
}
}
void del_person(AddressBook* p)
{
string name;
int flag = 0;//判断是否查询到信息标志位
cout << "请输入您要删除的联系人姓名:" << endl;
cin >> name;
for (int i = 0; i < p->size; i++)
{
if (name == p->personArray[i].name)
{
flag = 1;
cout << "查询到此人信息:" << endl;
cout << p->personArray[i].name << "\t";
cout << (p->personArray[i].sex == '1' ? "男" : "女") << "\t";
cout << p->personArray[i].age << "\t";
cout << p->personArray[i].phone << "\t";
cout << p->personArray[i].address << endl;
cout << "请再次确认是否要删除此人信息:y/n" << endl;
string del_falg;
cin >> del_falg;
if (del_falg == "y")
{
for (int j = i; j < p->size - 1; j++)
{
p->personArray[j].name = p->personArray[j + 1].name;
p->personArray[j].sex = p->personArray[j + 1].sex;
p->personArray[j].age = p->personArray[j + 1].age;
p->personArray[j].phone = p->personArray[j + 1].phone;
p->personArray[j].address = p->personArray[j + 1].address;
}
p->size--;
cout << "已删除" << endl;//这种删除方法并没有删除掉结构体数组的内存,只是整体向前覆盖,调整size值
break;//跳出循环,无论删除与否,都结束运行
}
else
{
break;//跳出循环
}
}
else
{
continue;
}
}
if (!flag)
{
cout << "查无此人" << endl;
}
system("pause");//按任意键继续
system("cls");//清屏
}
void modify_person(AddressBook* p)
{
string name;
int flag = 0;//判断是否查询到信息标志位
cout << "请输入您要修改的联系人姓名:" << endl;
cin >> name;
for (int i = 0; i < p->size; i++)
{
if (name == p->personArray[i].name)
{
flag = 1;
cout << "查询到此人信息:" << endl;
cout << p->personArray[i].name << "\t";
cout << (p->personArray[i].sex == '1' ? "男" : "女") << "\t";
cout << p->personArray[i].age << "\t";
cout << p->personArray[i].phone << "\t";
cout << p->personArray[i].address << endl;
string name;
cout << "请重新输入姓名:" << endl;
cin >> name;
p->personArray[i].name = name;
char sex = 0;
cout << "请重新输入性别 1-男 2-女:" << endl;
while (sex != '1' || sex != '2')
{
cin >> sex;
if (sex == '1' || sex == '2')
{
p->personArray[i].sex = sex;
break;
}
else
{
cout << "性别输入错误,请重新输入 1-男 2-女 :" << endl;
}
}
int age = 0;
cout << "请重新输入年龄:" << endl;
cin >> age;
p->personArray[i].age = age;
string phone;
cout << "请重新输入电话:" << endl;
cin >> phone;
p->personArray[i].phone = phone;
string address;
cout << "请重新输入地址:" << endl;
cin >> address;
p->personArray[i].address = address;
cout << "修改成功" << endl;
break;
}
}
system("pause");//按任意键继续
system("cls");//清屏
}
void clean_person(AddressBook* p)
{
p->size = 0;
cout << "已清空联系人" << endl;
system("pause");//按任意键继续
system("cls");//清屏
}
int main()
{
int select = 0;
AddressBook abs;
abs.size = 0;
while (true)
{
showMenu();
cin >> select;
switch (select)
{
case 1://添加联系人
add_person(&abs);
break;
case 2://显示联系人
display_person(&abs);
break;
case 3://查找联系人
lookup_person(&abs);
break;
case 4://删除联系人
del_person(&abs);
break;
case 5://修改联系人
modify_person(&abs);
break;
case 6://清空联系人
clean_person(&abs);
break;
case 0:
{
cout << "欢迎下次使用" << endl;
system("pause");//按任意键继续
return 0;
}
break;
default:
break;
}
//system("pause");//按任意键继续
}
system("pause");//按任意键继续
return 0;
}