通讯录管理系统.cpp
#include<iostream>
using namespace std;
#include<string>
#define MAX 1000
// 联系人结构体
struct Person {
string name;
int gender;
int age;
string phoneNum;
string address;
};
// 通讯录结构体
struct ContactList {
struct Person personList[MAX];
int cSize;
};
// 封装函数显示菜单界面
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;
}
void addInfo(ContactList* cl, int index) {
cout << "请输入姓名:" << endl;
string name;
cin >> name;
cl->personList[index].name = name;
cout << "请输入性别:1_男,2_女" << endl;
int gender = 0;
while (true) {
cin >> gender;
if (gender == 1 || gender == 2) {
cl->personList[index].gender = gender;
break;
} else {
cout << "输入有误,请重新输入:" << endl;
}
}
cout << "请输入年龄:" << endl;
int age = 0;
cin >> age;
cl->personList[index].age = age;
cout << "请输入电话:" << endl;
string phoneNum;
cin >> phoneNum;
cl->personList[index].phoneNum = phoneNum;
cout << "请输入住址" << endl;
string address;
cin >> address;
cl->personList[index].address = address;
}
// 添加联系人
void addPerson(ContactList* cl) {
if (cl->cSize >= MAX) {
cout << "通讯录已满,无法添加!";
return;
} else {
addInfo(cl, cl->cSize);
cl->cSize++;
cout << "添加成功!" << endl;
system("pause"); // 请按任意键继续
system("cls"); // 清屏操作
}
}
void printList(ContactList* cl, int index) {
cout << "姓名:" << cl->personList[index].name << "\t";
cout << "性别:" << (cl->personList[index].gender == 1 ? "男" : "女") << "\t";
cout << "年龄:" << cl->personList[index].age << "\t";
cout << "电话:" << cl->personList[index].phoneNum << "\t";
cout << "住址:" << cl->personList[index].address << endl;
}
// 显示联系人
void showList(ContactList* cl) {
//判断通讯录中人数是否为0
cout << "***************************" << endl;
if (cl->cSize == 0) {
cout << "当前记录为空" << endl;
} else {
for (int i = 0; i < cl->cSize; i++) {
printList(cl, i);
}
}
cout << "***************************" << endl;
system("pause"); // 请按任意键继续
system("cls"); // 清屏操作
}
// 判断联系人是否存在
int isExit(ContactList* cl, string name) {
for (int i = 0; i < cl->cSize; i++) {
if (name == cl->personList[i].name) {
return i; // 找到
}
}
return -1; // 未找到
}
// 删除联系人
void deletePerson(ContactList* cl) {
cout << "请输入删除联系人姓名:" << endl;
string name;
cin >> name;
int result = isExit(cl, name);
if (result == -1) {
cout << "查无此人" << endl;
} else {
cl->personList[result] = cl->personList[cl->cSize - 1];
cl->cSize--;
cout << "删除成功!" << endl;
}
system("pause"); // 请按任意键继续
system("cls"); // 清屏操作
}
// 查找联系人
void findPerson(ContactList* cl) {
cout << "请输入需要查找的联系人:" << endl;
string name;
cin >> name;
int result = isExit(cl, name);
if (result == -1) {
cout << "查无此人!" << endl;
} else {
cout << "查询结果:" << endl;
printList(cl, result);
}
system("pause"); // 请按任意键继续
system("cls"); // 清屏操作
}
// 修改联系人
void updatePerson(ContactList* cl) {
cout << "请输入需要修改的联系人:" << endl;
string name;
cin >> name;
int result = isExit(cl, name);
if (result == -1) {
cout << "查无此人!" << endl;
} else {
addInfo(cl, result);
cout << "修改成功!" << endl;
}
system("pause"); // 请按任意键继续
system("cls"); // 清屏操作
}
// 清空联系人
void deleteAll(ContactList* cl) {
cl->cSize = 0;
cout << "清空成功!" << endl;
system("pause"); // 请按任意键继续
system("cls"); // 清屏操作
}
int main() {
ContactList cl;
// 初始化通讯录中当前人员个数
cl.cSize = 0;
// 用户选择输入变量
int select = 0;
// 菜单调用
while (true) {
showMenu();
cout << "请选择:" << endl;
cin >> select;
switch (select) {
case 1: // 添加
addPerson(&cl);
break;
case 2: // 显示
showList(&cl);
break;
case 3: // 删除
deletePerson(&cl);
break;
case 4: // 查找
findPerson(&cl);
break;
case 5: // 修改
updatePerson(&cl);
break;
case 6: // 清空
deleteAll(&cl);
break;
case 0: // 退出
cout << "欢迎下次使用" << endl;
system("pause"); // 请按任意键继续
return 0;
break;
default:
cout << "无此选项请重新选择:" << endl;
break;
}
}
}