#include<iostream>
#include<string>
using namespace std;
#define MAX 1000
/*
通讯录管理系统(功能介绍):
*** 添加联系人 : 向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址),最多纪录1000人
*** 显示联系人 : 显示通讯录中所有联系人信息
*** 删除联系人 : 按照姓名进行删除指定联系人信息
*** 查找联系人 : 按照姓名查找指定联系人信息
*** 修改联系人 : 按照姓名更新修改指定联系人信息
*** 清空联系人 : 清空通讯录中所有联系人信息
*** 退出通讯录 : 退出当前使用的通讯录
*/
// 设计联系人结构体
struct person {
string m_name; // 姓名
int m_sex; // 性别 1-男; 2-女
int m_age; // 年龄
string m_phone; // 电话
string m_address; // 地址
};
// 设计通讯录结构体
struct address_books {
struct person personArr[MAX]; // 通讯录中联系人数组保存联系人数据
int m_num; // 通讯录中当前联系人个数
};
// 菜单显示界面封装函数
void show_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;
}
// 添加联系人函数
void addperson(address_books * abs) {
// 判断通讯录是否已满
if (abs->m_num >= MAX) {
cout << " 通讯录已满 , 无法添加联系人 !" << endl;
return;
}
else {
cout << " 请输入联系人姓名 : " << endl;
string name;
cin >> name;
abs->personArr[abs->m_num].m_name = name;
cout << " 请输入联系人性别 : " << endl;
cout << " # 1-男性 ; # 2-女性 " << endl;
int sex ;
while (true) {
cin >> sex;
if (sex == 1 || sex == 2) {
abs->personArr[abs->m_num].m_sex = sex;
break;
}
cout << " 输入有误 , 请重新输入 !" << endl;
}
cout << " 请输入联系人年龄 : " << endl;
int age;
cin >> age;
abs->personArr[abs->m_num].m_age = age;
cout << " 请输入联系人联系方式 : " << endl;
string phone;
cin >> phone;
abs->personArr[abs->m_num].m_phone = phone;
cout << " 请输入联系人家庭住址 : " << endl;
string address;
cin >> address;
abs->personArr[abs->m_num].m_address = address;
abs->m_num++; // 更新通讯录人数
cout << " 该联系人添加成功 !" << endl;
system("pause");
system("cls");
}
}
// 显示联系人函数
void showperson(address_books * abs) {
// 判断通讯录是否为空
if (abs->m_num == 0) {
cout << " 通讯录此时为空,不存在任何联系人 " << endl;
}
else {
for (int i = 0; i < abs->m_num; i++) {
cout << " 姓名 :" << abs->personArr[i].m_name << "\t";
cout << " 性别 :" << (abs->personArr[i].m_sex == 1 ? "男" : "女" )<< "\t";
cout << " 年龄 :" << abs->personArr[i].m_age << "\t";
cout << " 联系方式 :" << abs->personArr[i].m_phone << "\t";
cout << " 家庭住址 :" << abs->personArr[i].m_address << "\t" << endl;
}
}
system("pause");
system("cls");
}
// 检测联系人是否存在函数
int matchingperson(address_books * abs , string name) {
for (int i = 0; i < abs->m_num; i++) {
if (abs->personArr[i].m_name == name) {
return i; // 找到联系人,则返回联系人所在编号
}
}
return -1; // 遍历结束 未找到,返回-1
}
// 删除联系人功能函数
void deleteperson(address_books * abs) {
cout << " 请输入您要删除的联系人姓名 :" << "\t";
string name;
cin >> name;
int ret = matchingperson(abs, name);
if ( ret != -1) {
for (int i = ret; i < abs->m_num; i++) {
// 数据迁移操作
abs->personArr[i] = abs->personArr[i + 1];
}
abs->m_num--;
cout << " 删除成功 ! " << endl;
}
else {
cout << " 查无此人 !" << endl;
}
system("pause");
system("cls");
}
// 查找联系人函数
void findperson(address_books * abs) {
cout << " 请输入您要查找的联系人姓名 : " << endl;
string name;
cin >> name;
int ret = matchingperson(abs, name);
if (ret != -1) {
cout << " 姓名 :" << abs->personArr[ret].m_name << "\t";
cout << " 性别 :" << (abs->personArr[ret].m_sex == 1 ? "男" : "女") << "\t";
cout << " 年龄 :" << abs->personArr[ret].m_age << "\t";
cout << " 联系方式 :" << abs->personArr[ret].m_phone << "\t";
cout << " 家庭住址 :" << abs->personArr[ret].m_address << "\t" << endl;
}
else {
cout << " 查无此人 ! " << endl;
}
system("pause");
system("cls");
}
// 修改联系人函数
void changeperson(address_books * abs) {
cout << " 请输入您要修改的联系人姓名 : " << endl;
string name;
cin >> name;
int ret = matchingperson(abs, name);
if (ret != -1) {
cout << " 请输入修改后的姓名 :" << "\t";
string name;
cin >> name;
abs->personArr[ret].m_name = name;
cout << " 请输入修改后的性别 :" << "\t" << " # 1-男性 # 2-女性 " ;
int sex;
cin >> sex;
abs->personArr[ret].m_sex = sex;
cout << " 请输入修改后的年龄 :" << "\t";
int age;
cin >> age;
abs->personArr[ret].m_age = age;
cout << " 请输入修改后的联系方式 :" << "\t";
string phone;
cin >> phone;
abs->personArr[ret].m_phone = phone;
cout << " 请输入修改后的家庭住址 :" << "\t";
string address;
cin >> address;
abs->personArr[ret].m_address = address;
cout << " 修改后的联系人信息为 :" << endl;
cout << " 姓名 :" << abs->personArr[ret].m_name << "\t";
cout << " 性别 :" << (abs->personArr[ret].m_sex == 1 ? "男" : "女") << "\t";
cout << " 年龄 :" << abs->personArr[ret].m_age << "\t";
cout << " 联系方式 :" << abs->personArr[ret].m_phone << "\t";
cout << " 家庭住址 :" << abs->personArr[ret].m_address << "\t" << endl;
}
else {
cout << " 查无此人 ! " << endl;
}
system("pause");
system("cls");
}
// 清空联系人
void cleanperson(address_books * abs) {
abs->m_num = 0;
cout << " 通讯录已经清空 !" << endl; // 逻辑清空
system("pause");
system("cls");
}
int main(){
// 创建通讯录结构体变量
struct address_books abs;
abs.m_num = 0;
int select = 1;
while (select) {
// 调用功能菜单显示函数
show_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、 查找联系人
findperson(&abs);
break;
case 5: // 5、 修改联系人
changeperson(&abs);
break;
case 6: // 6、 清空联系人
cleanperson(&abs);
break;
case 0: // 0、 退出通讯录菜单
cout << " 欢迎下次使用 !" << endl;
cin.get();
break;
default:
cout << " 请选择正确的功能 !" << endl;
break;
}
}
cin.get();
return 0;
}
通讯录管理系统
最新推荐文章于 2022-10-22 21:35:28 发布