通讯录管理系统
1、人员
struct People {
//姓名
string m_name;
//性别
int m_sex=0;
//电话
string m_phone;
//地址
string m_address;
//邮政编码
string m_postcode;
//邮箱
string m_email;
//QQ号
string m_QQ_number;
//类别
string m_group;
};
2、通讯录结构体
//定义通讯录结构体
struct AddressBook {
struct People P[MAXSIZE];
int m_size=0;
};
3、基础功能实现
主函数
int main() {
AddressBook abs;
abs.m_size = 0;
int select = 0;//创建用户选择输入的变量
while (true) {
//菜单调用
menu();
cin >> select;
switch (select)
{
case 1://1.添加联系人
AddPerson(&abs);
break;
case 2://2.显示联系人
ShowPerson(&abs);
break;
case 3://3.删除联系人
DeletePerson(&abs);
break;
case 4://4.修改联系人
ModifyPerson(&abs);
break;
case 5://5.查找联系人
FindPerson(&abs);
break;
case 6://6.清空联系人
ClearPerson(&abs);
break;
case 0://0.退出通讯录
cout << "欢迎下次使用" << endl;
system("pause");
return 0;
break;
default:
break;
}
}
system("pause");
return 0;
}
添加联系人
//1、添加联系人
void AddPerson(AddressBook* abs) {//使用传地址的方式,不能传值
//进行联系人的添加
if (abs->m_size >= MAXSIZE) {
cout << "通讯录已满" << endl;
return;
}
else
{
//1、姓名
string name;
cout << "请输入姓名:" << endl;
cin >> name;
abs->P[abs->m_size].m_name = name;
//2、性别
cout << "请输入性别:" << endl;
cout << "1-男" << endl;
cout << "2-女" << endl;
int sex = 0;
while (true) {
cin >> sex;
if (sex == 1 || sex == 2) {
abs->P[abs->m_size].m_sex = sex;
break;
}
else {
cout << "输入有误请重新输入" << endl;
}
}
//3、电话
cout << "请输入电话:" << endl;
string phone;
cin >> phone;
abs->P[abs->m_size].m_phone = phone;
//4、地址
cout << "请输入地址:" << endl;
string address;
cin >> address;
abs->P[abs->m_size].m_address = address;
//5、邮政编码
cout << "请输入邮政编码:" << endl;
string postcode;
cin >> postcode;
abs->P[abs->m_size].m_postcode = postcode;
//6、邮箱
cout << "请输入邮箱" << endl;
string email;
cin >> email;
abs->P[abs->m_size].m_email = email;
//7、QQ号码
cout << "请输入QQ号码:" << endl;
string QQnum;
cin >> QQnum;
abs->P[abs->m_size].m_QQ_number = QQnum;
//8、人员类别
cout << "请输入人员类别" << endl;
string group;
cin >> group;
abs->P[abs->m_size].m_group = group;
//执行完了所有的操作
(abs->m_size)++;
cout << "添加成功" << endl;
}
system("pause");
system("cls");//清屏
}
显示联系人
//2、显示联系人
void ShowPerson(AddressBook* abs) {
if (abs->m_size == 0) {
cout << "通讯录记录为空" << endl;
return;
}
else {
for (int i = 0; i < abs->m_size; i++) {
cout << "姓名:" << abs->P[i].m_name << "\t";
if (abs->P[i].m_sex == 1) {
cout << "性别:" << "男" << "\t";
}
else {
cout << "性别:" << "女" << "\t";
}
cout << "电话:" << abs->P[i].m_phone << "\t";
cout << "地址:" << abs->P[i].m_address << "\t";
cout << "邮政编码:" << abs->P[i].m_postcode << "\t";
cout << "邮箱:" << abs->P[i].m_email << "\t";
cout << "QQ号:" << abs->P[i].m_QQ_number << "\t";
cout << "人员类别:" << abs->P[i].m_group << endl;
}
}
system("pause");
system("cls");//清屏
}
删除联系人
//3、删除联系人
void DeletePerson(AddressBook* abs) {
cout << "请输入你要删除的联系人的姓名和电话" << endl;
string name;
string phone;
cin >> name >> phone;
int result = is_exist_by_name_and_phone(abs, name, phone);//用一个result接收下标
//首先判断是否存在,存在才能够删除联系人
if (result != -1) {
//查找到人要进行具体的删除操作
//删除某一个人,可以将后面的人都往前移动一个,同时人数减1
for (int i = result; i < abs->m_size; i++) {
//数据迁移
abs->P[i] = abs->P[i + 1];
}
abs->m_size--;//更新通讯录中人员数
cout << "删除成功" << endl;
}
else {
cout << "该联系人不存在!" << endl;
}
system("pause");
system("cls");//清屏
}
修改联系人
//4、修改联系人
void ModifyPerson(AddressBook* abs) {
cout << "请输入你要修改的联系人的姓名和电话" << endl;
string name;
string phone;
cin >> name >> phone;
//用result接收判读该联系人是否存在
int result = is_exist_by_name_and_phone(abs, name, phone);
if (result != -1) {
//通讯录人员存在那么修改
//1、姓名
string name;
cout << "请输入姓名:" << endl;
cin >> name;
abs->P[abs->m_size].m_name = name;
//2、性别
cout << "请输入性别:" << endl;
cout << "1-男" << endl << "2-女" << endl;
int sex = 0;
while (true) {
cin >> sex;
if (sex == 1 || sex == 2) {
abs->P[abs->m_size].m_sex = sex;
break;
}
else {
cout << "输入有误请重新输入" << endl;
}
}
//3、电话
cout << "请输入电话:" << endl;
string phone;
cin >> phone;
abs->P[abs->m_size].m_phone = phone;
//4、地址
cout << "请输入地址:" << endl;
string address;
cin >> address;
abs->P[abs->m_size].m_address = address;
//5、邮政编码
cout << "请输入邮政编码:" << endl;
string postcode;
cin >> postcode;
abs->P[abs->m_size].m_postcode = postcode;
//6、邮箱
cout << "请输入邮箱" << endl;
string email;
cin >> email;
abs->P[abs->m_size].m_email = email;
//7、QQ号码
cout << "请输入QQ号码:" << endl;
string QQnum;
cin >> QQnum;
abs->P[abs->m_size].m_QQ_number = QQnum;
//8、人员类别
cout << "请输入人员类别" << endl;
string group;
cin >> group;
abs->P[abs->m_size].m_group = group;
//提示语
cout << "人员信息修改成功" << endl;
}
else {
cout << "该联系人不存在!" << endl;
}
system("pause");
system("cls");//清屏
}
查询联系人
//5|查询联系人
void FindPerson(AddressBook* abs) {
cout << "#########请输入你要进行的查找操作:#########" << endl;
cout << "1、精确查找,请输入待查找的联系人姓名和电话" << endl;
cout << "2、模糊查找,请输入待查找的联系人地址" << endl;
cout << "3、模糊查找,请输入待查找的人员类别" << endl;
int opreation = 0;
//输入你要进行的操作
cin >> opreation;
if (opreation == 1) {//精确查找操作
cout << "请输入查找的姓名和电话" << endl;
string name;
string phone;
cin >> name >> phone;
int result = is_exist_by_name_and_phone(abs, name, phone);
//首先判断查找的人是否存在
if (result != -1) {
//因为result接受的返回值是该联系人的下标,依次输出该联系人所有信息
cout << "姓名:" << abs->P[result].m_name << "\t";
if (abs->P[result].m_sex == 1) {
cout << "性别:" << "男" << "\t";
}
else {
cout << "性别:" << "女" << "\t";
}
cout << "电话:" << abs->P[result].m_phone << "\t";
cout << "地址:" << abs->P[result].m_address << "\t";
cout << "邮政编码:" << abs->P[result].m_postcode << "\t";
cout << "邮箱:" << abs->P[result].m_email << "\t";
cout << "QQ号:" << abs->P[result].m_QQ_number << "\t";
cout << "人员类别:" << abs->P[result].m_group << endl;
}
else {
cout << "该联系人不存在!" << endl;
}
}
//模糊查找操作
else if (opreation == 2) {
//输入联系人的地址
cout << "请输入待查找的地址" << endl;
string address;
cin >> address;
//判断这个地址是否存在
//通过一个result接收
int result = is_exist_by_address(abs, address);
if (result != -1) {
for (int i = 0; i < abs->m_size; i++) {
if (abs->P[i].m_address == address) {
//倘若存在输出联系人所有信息
cout << "姓名:" << abs->P[i].m_name << "\t";
if (abs->P[i].m_sex == 1) {
cout << "性别:" << "男" << "\t";
}
else {
cout << "性别:" << "女" << "\t";
}
cout << "电话:" << abs->P[result].m_phone << "\t";
cout << "地址:" << abs->P[result].m_address << "\t";
cout << "邮政编码:" << abs->P[result].m_postcode << "\t";
cout << "邮箱:" << abs->P[result].m_email << "\t";
cout << "QQ号:" << abs->P[result].m_QQ_number << "\t";
cout << "人员类别:" << abs->P[result].m_group << endl;
}
}
}
else {
cout << "没有人员是这个地址哦" << endl;
}
}
else if (opreation == 3) {//人员类别查找操作
//输入联系人的类别
cout << "请输入待查找的类别" << endl;
string group;
cin >> group;
//判断这个类别是否存在
int result = is_exist_by_group(abs, group);
if (result != -1) {
for (int i = 0; i < abs->m_size; i++) {
if (abs->P[i].m_group == group) {
//倘若存在输出联系人所有信息
cout << "姓名:" << abs->P[i].m_name << "\t";
if (abs->P[i].m_sex == 1) {
cout << "性别:" << "男" << "\t";
}
else {
cout << "性别:" << "女" << "\t";
}
cout << "电话:" << abs->P[result].m_phone << "\t";
cout << "地址:" << abs->P[result].m_address << "\t";
cout << "邮政编码:" << abs->P[result].m_postcode << "\t";
cout << "邮箱:" << abs->P[result].m_email << "\t";
cout << "QQ号:" << abs->P[result].m_QQ_number << "\t";
cout << "人员类别:" << abs->P[result].m_group << endl;
}
}
}
else {
cout << "没有人员是这个类别哦" << endl;
}
}
system("pause");
system("cls");//清屏
}
相关查询函数
//判断联系人是否存在函数——通过地址
int is_exist_by_address(AddressBook* abs, string address) {
for (int i = 0; i < abs->m_size; i++) {
if (abs->P[i].m_name == address) {
return i;//存在返回下标
}
}
return -1;//不存在返回-1
}
//判断联系人是否存在——通过人员类别
int is_exist_by_group(AddressBook* abs, string group) {
for (int i = 0; i < abs->m_size; i++) {
if (abs->P[i].m_group == group) {
return i;//存在返回下标
}
}
return -1;//不存在返回-1
}
//判断联系人是否存在函数——通过姓名和电话
int is_exist_by_name_and_phone(AddressBook* abs, string name, string phone) {
for (int i = 0; i < abs->m_size; i++) {
if (abs->P[i].m_name == name && abs->P[i].m_phone == phone) {
return i;//存在返回下标
}
}
return -1;//不存在返回-1
}
清空联系人
//6、清空联系人
void ClearPerson(AddressBook* abs) {
abs->m_size = 0;
cout << "联系人列表已经清空" << endl;
system("pause");
system("cls");//清屏
}
菜单界面
//设置菜单界面
void menu() {
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;
}
代码展示
#include<string>
#include<iostream>
using namespace std;
//定义最大可存的人数
#define MAXSIZE 10000
//人员
struct People {
//姓名
string m_name;
//性别
int m_sex=0;
//电话
string m_phone;
//地址
string m_address;
//邮政编码
string m_postcode;
//邮箱
string m_email;
//QQ号
string m_QQ_number;
//类别
string m_group;
};
//定义通讯录结构体
struct AddressBook {
struct People P[MAXSIZE];
int m_size=0;
};
//1、添加联系人
void AddPerson(AddressBook* abs) {//使用传地址的方式,不能传值
//进行联系人的添加
if (abs->m_size >= MAXSIZE) {
cout << "通讯录已满" << endl;
return;
}
else
{
//1、姓名
string name;
cout << "请输入姓名:" << endl;
cin >> name;
abs->P[abs->m_size].m_name = name;
//2、性别
cout << "请输入性别:" << endl;
cout << "1-男" << endl;
cout << "2-女" << endl;
int sex = 0;
while (true) {
cin >> sex;
if (sex == 1 || sex == 2) {
abs->P[abs->m_size].m_sex = sex;
break;
}
else {
cout << "输入有误请重新输入" << endl;
}
}
//3、电话
cout << "请输入电话:" << endl;
string phone;
cin >> phone;
abs->P[abs->m_size].m_phone = phone;
//4、地址
cout << "请输入地址:" << endl;
string address;
cin >> address;
abs->P[abs->m_size].m_address = address;
//5、邮政编码
cout << "请输入邮政编码:" << endl;
string postcode;
cin >> postcode;
abs->P[abs->m_size].m_postcode = postcode;
//6、邮箱
cout << "请输入邮箱" << endl;
string email;
cin >> email;
abs->P[abs->m_size].m_email = email;
//7、QQ号码
cout << "请输入QQ号码:" << endl;
string QQnum;
cin >> QQnum;
abs->P[abs->m_size].m_QQ_number = QQnum;
//8、人员类别
cout << "请输入人员类别" << endl;
string group;
cin >> group;
abs->P[abs->m_size].m_group = group;
//执行完了所有的操作
(abs->m_size)++;
cout << "添加成功" << endl;
}
system("pause");
system("cls");//清屏
}
//2、显示联系人
void ShowPerson(AddressBook* abs) {
if (abs->m_size == 0) {
cout << "通讯录记录为空" << endl;
return;
}
else {
for (int i = 0; i < abs->m_size; i++) {
cout << "姓名:" << abs->P[i].m_name << "\t";
if (abs->P[i].m_sex == 1) {
cout << "性别:" << "男" << "\t";
}
else {
cout << "性别:" << "女" << "\t";
}
cout << "电话:" << abs->P[i].m_phone << "\t";
cout << "地址:" << abs->P[i].m_address << "\t";
cout << "邮政编码:" << abs->P[i].m_postcode << "\t";
cout << "邮箱:" << abs->P[i].m_email << "\t";
cout << "QQ号:" << abs->P[i].m_QQ_number << "\t";
cout << "人员类别:" << abs->P[i].m_group << endl;
}
}
system("pause");
system("cls");//清屏
}
//判断联系人存在函数声明
int is_exist_by_name_and_phone(AddressBook* abs, string name, string phone);
int is_exist_by_address(AddressBook* abs, string address);
int is_exist_by_group(AddressBook* abs, string group);
//3、删除联系人
void DeletePerson(AddressBook* abs) {
cout << "请输入你要删除的联系人的姓名和电话" << endl;
string name;
string phone;
cin >> name >> phone;
int result = is_exist_by_name_and_phone(abs, name, phone);//用一个result接收下标
//首先判断是否存在,存在才能够删除联系人
if (result != -1) {
//查找到人要进行具体的删除操作
//删除某一个人,可以将后面的人都往前移动一个,同时人数减1
for (int i = result; i < abs->m_size; i++) {
//数据迁移
abs->P[i] = abs->P[i + 1];
}
abs->m_size--;//更新通讯录中人员数
cout << "删除成功" << endl;
}
else {
cout << "该联系人不存在!" << endl;
}
system("pause");
system("cls");//清屏
}
//4、修改联系人
void ModifyPerson(AddressBook* abs) {
cout << "请输入你要修改的联系人的姓名和电话" << endl;
string name;
string phone;
cin >> name >> phone;
//用result接收判读该联系人是否存在
int result = is_exist_by_name_and_phone(abs, name, phone);
if (result != -1) {
//通讯录人员存在那么修改
//1、姓名
string name;
cout << "请输入姓名:" << endl;
cin >> name;
abs->P[abs->m_size].m_name = name;
//2、性别
cout << "请输入性别:" << endl;
cout << "1-男" << endl << "2-女" << endl;
int sex = 0;
while (true) {
cin >> sex;
if (sex == 1 || sex == 2) {
abs->P[abs->m_size].m_sex = sex;
break;
}
else {
cout << "输入有误请重新输入" << endl;
}
}
//3、电话
cout << "请输入电话:" << endl;
string phone;
cin >> phone;
abs->P[abs->m_size].m_phone = phone;
//4、地址
cout << "请输入地址:" << endl;
string address;
cin >> address;
abs->P[abs->m_size].m_address = address;
//5、邮政编码
cout << "请输入邮政编码:" << endl;
string postcode;
cin >> postcode;
abs->P[abs->m_size].m_postcode = postcode;
//6、邮箱
cout << "请输入邮箱" << endl;
string email;
cin >> email;
abs->P[abs->m_size].m_email = email;
//7、QQ号码
cout << "请输入QQ号码:" << endl;
string QQnum;
cin >> QQnum;
abs->P[abs->m_size].m_QQ_number = QQnum;
//8、人员类别
cout << "请输入人员类别" << endl;
string group;
cin >> group;
abs->P[abs->m_size].m_group = group;
//提示语
cout << "人员信息修改成功" << endl;
}
else {
cout << "该联系人不存在!" << endl;
}
system("pause");
system("cls");//清屏
}
//5|查询联系人
void FindPerson(AddressBook* abs) {
cout << "#########请输入你要进行的查找操作:#########" << endl;
cout << "1、精确查找,请输入待查找的联系人姓名和电话" << endl;
cout << "2、模糊查找,请输入待查找的联系人地址" << endl;
cout << "3、模糊查找,请输入待查找的人员类别" << endl;
int opreation = 0;
//输入你要进行的操作
cin >> opreation;
if (opreation == 1) {//精确查找操作
cout << "请输入查找的姓名和电话" << endl;
string name;
string phone;
cin >> name >> phone;
int result = is_exist_by_name_and_phone(abs, name, phone);
//首先判断查找的人是否存在
if (result != -1) {
//因为result接受的返回值是该联系人的下标,依次输出该联系人所有信息
cout << "姓名:" << abs->P[result].m_name << "\t";
if (abs->P[result].m_sex == 1) {
cout << "性别:" << "男" << "\t";
}
else {
cout << "性别:" << "女" << "\t";
}
cout << "电话:" << abs->P[result].m_phone << "\t";
cout << "地址:" << abs->P[result].m_address << "\t";
cout << "邮政编码:" << abs->P[result].m_postcode << "\t";
cout << "邮箱:" << abs->P[result].m_email << "\t";
cout << "QQ号:" << abs->P[result].m_QQ_number << "\t";
cout << "人员类别:" << abs->P[result].m_group << endl;
}
else {
cout << "该联系人不存在!" << endl;
}
}
//模糊查找操作
else if (opreation == 2) {
//输入联系人的地址
cout << "请输入待查找的地址" << endl;
string address;
cin >> address;
//判断这个地址是否存在
//通过一个result接收
int result = is_exist_by_address(abs, address);
if (result != -1) {
for (int i = 0; i < abs->m_size; i++) {
if (abs->P[i].m_address == address) {
//倘若存在输出联系人所有信息
cout << "姓名:" << abs->P[i].m_name << "\t";
if (abs->P[i].m_sex == 1) {
cout << "性别:" << "男" << "\t";
}
else {
cout << "性别:" << "女" << "\t";
}
cout << "电话:" << abs->P[result].m_phone << "\t";
cout << "地址:" << abs->P[result].m_address << "\t";
cout << "邮政编码:" << abs->P[result].m_postcode << "\t";
cout << "邮箱:" << abs->P[result].m_email << "\t";
cout << "QQ号:" << abs->P[result].m_QQ_number << "\t";
cout << "人员类别:" << abs->P[result].m_group << endl;
}
}
}
else {
cout << "没有人员是这个地址哦" << endl;
}
}
else if (opreation == 3) {//人员类别查找操作
//输入联系人的类别
cout << "请输入待查找的类别" << endl;
string group;
cin >> group;
//判断这个类别是否存在
int result = is_exist_by_group(abs, group);
if (result != -1) {
for (int i = 0; i < abs->m_size; i++) {
if (abs->P[i].m_group == group) {
//倘若存在输出联系人所有信息
cout << "姓名:" << abs->P[i].m_name << "\t";
if (abs->P[i].m_sex == 1) {
cout << "性别:" << "男" << "\t";
}
else {
cout << "性别:" << "女" << "\t";
}
cout << "电话:" << abs->P[result].m_phone << "\t";
cout << "地址:" << abs->P[result].m_address << "\t";
cout << "邮政编码:" << abs->P[result].m_postcode << "\t";
cout << "邮箱:" << abs->P[result].m_email << "\t";
cout << "QQ号:" << abs->P[result].m_QQ_number << "\t";
cout << "人员类别:" << abs->P[result].m_group << endl;
}
}
}
else {
cout << "没有人员是这个类别哦" << endl;
}
}
system("pause");
system("cls");//清屏
}
//6、清空联系人
void ClearPerson(AddressBook* abs) {
abs->m_size = 0;
cout << "联系人列表已经清空" << endl;
system("pause");
system("cls");//清屏
}
//判断联系人是否存在函数——通过地址
int is_exist_by_address(AddressBook* abs, string address) {
for (int i = 0; i < abs->m_size; i++) {
if (abs->P[i].m_name == address) {
return i;//存在返回下标
}
}
return -1;//不存在返回-1
}
//判断联系人是否存在——通过人员类别
int is_exist_by_group(AddressBook* abs, string group) {
for (int i = 0; i < abs->m_size; i++) {
if (abs->P[i].m_group == group) {
return i;//存在返回下标
}
}
return -1;//不存在返回-1
}
//判断联系人是否存在函数——通过姓名和电话
int is_exist_by_name_and_phone(AddressBook* abs, string name, string phone) {
for (int i = 0; i < abs->m_size; i++) {
if (abs->P[i].m_name == name && abs->P[i].m_phone == phone) {
return i;//存在返回下标
}
}
return -1;//不存在返回-1
}
//设置菜单界面
void menu() {
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;
}
int main() {
AddressBook abs;
abs.m_size = 0;
int select = 0;//创建用户选择输入的变量
while (true) {
//菜单调用
menu();
cin >> select;
switch (select)
{
case 1://1.添加联系人
AddPerson(&abs);
break;
case 2://2.显示联系人
ShowPerson(&abs);
break;
case 3://3.删除联系人
DeletePerson(&abs);
break;
case 4://4.修改联系人
ModifyPerson(&abs);
break;
case 5://5.查找联系人
FindPerson(&abs);
break;
case 6://6.清空联系人
ClearPerson(&abs);
break;
case 0://0.退出通讯录
cout << "欢迎下次使用" << endl;
system("pause");
return 0;
break;
default:
break;
}
}
system("pause");
return 0;
}