/* 封装函数显示界面 void showMenu() */ #include<iostream> using namespace std; #include<string> #define MAX 1000 // 设计联系人结构体 struct Person { // name string m_Name; // sex 1 man 2 woman int m_Sex; int m_Age; string m_Phone; string m_Addr; }; // 设计通讯录结构体 struct Addressbooks { // 通讯录中保存的联系人数组 struct Person personArray[MAX]; // 通讯录中当前记录联系人个数 int num; }; //菜单界面 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; } // 1、添加联系人 void addPerson(Addressbooks * abs) { // 判断通讯录是否已满,已满就不添加 if(abs->num == MAX) { cout << "通讯录已满,不能添加!" << endl; return ; } else { // 添加具体联系人 // 姓名 string name; cout << "请输入姓名:" << endl; cin >> name; abs->personArray[abs->num].m_Name = name; // 性别 int sex = 0; cout << "请输入性别: 1 --- 男 2 --- 女" << endl; while(true) { cin >> sex; if(sex == 1 || sex == 2) { abs->personArray[abs->num].m_Sex = sex; break; } cout << "输入有误,请重新输入" << endl; } // 年龄 int age = 0; cout << "请输入年龄:" << endl; cin >> age; abs->personArray[abs->num].m_Age = age; // 电话 string phone; cout << "请输入联系电话:" << endl; cin >> phone; abs->personArray[abs->num].m_Phone = phone; // 住址 string address; cout << "请输入家庭住址:" << endl; cin >> address; abs->personArray[abs->num].m_Addr = address; abs->num++; cout << "添加成功" << endl; system("pause"); // 请按任意键继续 system("cls"); // 清屏操作 } } // 2、显示联系人 void showPerson(Addressbooks * abs) { // 判断通讯录中人数是否为0,如果为0,提示记录为空 if(abs->num == 0) { cout << "当前记录为空" << endl; } else { for(int i = 0; i < abs->num; i++) { cout << "姓名: " << abs->personArray[i].m_Name << " "; cout << "性别: " << (abs->personArray[i].m_Sex == 1 ? "男" : "女") << " "; cout << "年龄: " << abs->personArray[i].m_Age << " "; cout << "电话: " << abs->personArray[i].m_Phone << " "; cout << "住址: " << abs->personArray[i].m_Addr << endl; } } system("pause"); system("cls"); } // 3、删除联系人 // 检测联系人是否存在,若存在,返回联系人所在数组中的具体位置,不存在返回-1 int isExist(Addressbooks * abs, string name) { for(int i = 0; i < abs->num; i++) if(abs->personArray[i].m_Name == name) return i; return -1; } // 封装删除联系人函数 void deletePerson(Addressbooks * abs) { cout << "请输入要删除的联系人名字" << endl; string name; cin >> name; int ret = isExist(abs, name); // ret == -1 不存在 // ret != -1 存在,得删 if(ret != -1) { for(int i = ret; i < abs->num; i++) abs->personArray[i] = abs->personArray[i+1]; abs->num--; cout << "删除成功" << endl; } else cout << "查无此人" << endl; system("pause"); system("cls"); } // 4、查找联系人 void findPerson(Addressbooks * abs) { cout << "请输入要查找的联系人名字" << endl; string name; cin >> name; int ret = isExist(abs, name); // ret == -1 不存在 // ret != -1 存在,得删 if(ret != -1) { cout << "姓名: " << abs->personArray[ret].m_Name << " "; cout << "性别: " << (abs->personArray[ret].m_Sex == 1 ? "男" : "女") << " "; cout << "年龄: " << abs->personArray[ret].m_Age << " "; cout << "电话: " << abs->personArray[ret].m_Phone << " "; cout << "住址: " << abs->personArray[ret].m_Addr << endl; } else cout << "查无此人" << endl; system("pause"); system("cls"); } // 5、修改联系人 void modifyPerson(Addressbooks * abs) { cout << "请输入您要修改的联系人" << endl; string name; cin >> name; int ret = isExist(abs, name); if(ret != -1) { // name string name; cout << "请输入姓名:" << endl; cin >> name; abs->personArray[ret].m_Name = name; // sex cout << "请输入性别: 1 --- 男 2 --- 女" << endl; int sex = 0; while(true) { cin >> sex; if(sex == 1 || sex == 2) { abs->personArray[ret].m_Sex = sex; break; } cout << "输入有误,请重新输入" << endl; } // age cout << "请输入年龄:" << endl; int age = 0; cin >> age; abs->personArray[ret].m_Age = age; // phone cout << "请输入联系电话" << endl; string phone; cin >> phone; abs->personArray[ret].m_Phone = phone; // address cout << "请输入家庭住址" << endl; string address; cin >> address; abs->personArray[ret].m_Addr = address; cout << "修改成功" << endl; } else cout << "查无此人" << endl; system("pause"); system("cls"); } //6、清空联系人 void cleanPerson(Addressbooks * abs) { cout << "是否确定要清空? 1 是 0 否" << endl; int res; cin >> res; if(res == 1){ abs->num = 0; // 将当前记录联系人数量置为0,做逻辑清空 cout << "通讯录已清空" << endl; } else cout << "没有清空通讯录" << endl; system("pause"); system("cls"); } int main() { // 创建通讯录结构体变量 Addressbooks abs; // 初始化通讯录中当前人员个数 abs.num = 0; int select = 0; // 创建用户选择输入的变量 while(true) { showMenu(); 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、修改联系人 modifyPerson(&abs); break; case 6: //6、清空联系人 cleanPerson(&abs); break; case 0: //0、退出通讯录 cout << "欢迎下次使用" << endl; system("pause"); return 0; break; default: break; } } //菜单的调用 system("pause"); return 0; }
C++基础--通讯录管理系统