# include<iostream> # include<string> using namespace std; # define MAX 1000 // 人员结构体 struct Person { string m_Name; // 姓名 int m_Sex; // 性别(1男,0女) int m_Age; // 年龄 string m_Phone; // 手机号 string m_Addr; // 住址 }; // 通讯录结构体 struct Addressbooks { struct Person personArrays[MAX]; // 通讯录中保存的联系人数组 int n_size; // 通讯录中人员个数 }; // 根据名字查找该人员是否在通讯录中(是返回其再目录中位置,否返回-1) int isExit(Addressbooks* abs, string name) { for (int i = 0; i < abs->n_size; i++) { if (abs->personArrays[i].m_Name == name) { return i; } } return -1; } // 显示菜单 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->n_size == MAX) { cout << "通讯录已满,无法添加联系人" << endl; return; } else { // 添加具体的联系人 string name; // 姓名 cout << "姓名:"; cin >> name; abs->personArrays[abs->n_size].m_Name = name; int sex; //性别() while (true) { cout << "【1男,0女】性别:"; cin >> sex; if (sex==1||sex==0) { abs->personArrays[abs->n_size].m_Sex = sex; break; } cout << "输入有误,请重新输入。" <<endl; } int age; // 年龄 cout << "年龄:"; cin >> age; abs->personArrays[abs->n_size].m_Age = age; string phone; // 手机号 cout << "手机号:"; cin >> phone; abs->personArrays[abs->n_size].m_Phone = phone; string address; // 住址 cout << "住址:"; cin >> address; abs->personArrays[abs->n_size].m_Addr = address; abs->n_size++; cout << "添加成功" <<endl; system("pause"); system("cls"); // 清空cmd窗口 } } // 2.显示所有成员 void showPerson(Addressbooks *abs) { if (abs->n_size==0) { cout<<"通讯录为空,无成员"<<endl; return; } for (int i = 0; i < abs->n_size; i++) { cout << "姓名:"<<abs->personArrays[i].m_Name <<"\t"; cout << "性别:" << (abs->personArrays[i].m_Sex==1? "男" : "女" ) << "\t"; cout << "年龄:" << abs->personArrays[i].m_Age << "\t"; cout << "手机号:" << abs->personArrays[i].m_Phone << "\t"; cout << "地址:" << abs->personArrays[i].m_Addr << endl; } system("pause"); system("cls"); } // 3.删除通讯录中人员 void delPerson(Addressbooks *abs) { cout << "请输入你要删除的人员" <<endl; string name; cin >> name; int ret = isExit(abs, name); if ( ret != -1) { for (int i = ret; i < abs->n_size; i++) { abs->personArrays[i] = abs->personArrays[i+1]; } abs->n_size--; cout << "删除【"<< name <<"】成功!" << endl; } else { cout << "查无此人" << endl; } } // 4.查找联系人 void findPerson(Addressbooks *abs) { cout<<"请输入要查找的联系人:"<<endl; string name; cin >> name; int ret = isExit(abs, name); if (ret!=-1) { cout << "姓名:" << abs->personArrays[ret].m_Name << "\t"; cout << "性别:" << (abs->personArrays[ret].m_Sex == 1 ? "男" : "女") << "\t"; cout << "年龄:" << abs->personArrays[ret].m_Age << "\t"; cout << "手机号:" << abs->personArrays[ret].m_Phone << "\t"; cout << "地址:" << abs->personArrays[ret].m_Addr << endl; } else { cout << "查无此人!!!" <<endl; } } // 5.修改联系人 void changePerson(Addressbooks* abs) { cout << "请输入要修改的联系人:" << endl; string name; cin >> name; int ret = isExit(abs, name); if (ret != -1) { string name; // 姓名 cout << "姓名:"; cin >> name; abs->personArrays[abs->n_size].m_Name = name; int sex; //性别() while (true) { cout << "【1男,0女】性别:"; cin >> sex; if (sex == 1 || sex == 0) { abs->personArrays[abs->n_size].m_Sex = sex; break; } cout << "输入有误,请重新输入。" << endl; } int age; // 年龄 cout << "年龄:"; cin >> age; abs->personArrays[abs->n_size].m_Age = age; string phone; // 手机号 cout << "手机号:"; cin >> phone; abs->personArrays[abs->n_size].m_Phone = phone; string address; // 住址 cout << "住址:"; cin >> address; abs->personArrays[abs->n_size].m_Addr = address; abs->n_size++; cout << "修改成功" << endl; system("pause"); system("cls"); // 清空cmd窗口 } else { cout << "查无此人!!!" << endl; } } // 6.清空通讯录 void cleanPerson(Addressbooks *abs) { abs->n_size = 0; cout<<"通讯录已清空"<<endl; system("pause"); system("cls"); } int main() { Addressbooks abs; abs.n_size = 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.删除联系人 delPerson(&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; system("pause"); return 0; break; default: break; } } system("pause"); return 0; }
通讯录管理系统(黑马程序员看的)
最新推荐文章于 2025-02-16 23:24:11 发布