#include<iostream> using namespace std; constexpr auto MAX = 1000; //聯系人結構體 struct Person { string m_name; int m_sex; int m_age; string m_phone; string m_address; }; //通訊錄結構體 struct AddressBooks { //聯系人數組 struct Person personArray[MAX]; //記錄聯系人個數 int m_size; }; //添加人員 void addPerson(AddressBooks* abs) { //判斷通訊錄是否已滿,已滿就不再添加 if (abs->m_size == MAX) { cout << "通訊錄已滿" << endl; } else{ string name; int sex; int age; string phone; string address; cout << "請輸入姓名:"; cin >> name; while (true) { cout << "請輸入性別(0代表男,1代表女):"; cin >> sex; if (sex == 0 || sex == 1) { break; }else{ cout << "您輸入有誤,請重新輸入!" << endl; } } cout << "請輸入年齡:"; cin >> age; cout << "請輸入電話:"; cin >> phone; cout << "請輸入地址:"; cin >> address; abs->personArray[abs->m_size].m_name = name; abs->personArray[abs->m_size].m_sex = sex; abs->personArray[abs->m_size].m_age = age; abs->personArray[abs->m_size].m_phone = phone; abs->personArray[abs->m_size].m_address = address; abs->m_size++; cout << "添加成功!" << endl; //請按任意鍵繼續 system("pause"); //清屏 system("cls"); } } //顯示聯系人 void showPerson(AddressBooks* abs) { if (abs->m_size == 0) { cout << "當前記錄為空" << endl; }else { for (int i = 0; i < abs->m_size; i++) { cout << "姓名:" << abs->personArray[i].m_name << "\t" << "性別:" << (abs->personArray[i].m_sex == 0 ? "男" : "女") << "\t" << "年齡:" << abs->personArray[i].m_age << "\t" << "電話:" << abs->personArray[i].m_phone << "\t" << "地址:" << abs->personArray[i].m_address << endl; } } system("pause"); system("cls"); } //判斷聯系人是否存在,若存在,則返回所在下標,否則返回-1 int isExist(AddressBooks* abs,string name) { for (int i = 0; i < abs->m_size; i++) { if (abs->personArray[i].m_name == name) { return i; } } return -1; } //真正的刪除操作 void del(AddressBooks* abs, int id) { for (int i = id; i < abs->m_size; i++) { abs->personArray[i] = abs->personArray[i + 1]; } abs->m_size--; } //查找並刪除 void deletePerson(AddressBooks* abs) { string name; cout << "請輸入要刪除的名字:"; cin >> name; int tmp; tmp = isExist(abs, name); if (tmp != -1){ del(abs, tmp); cout << "刪除成功"<<endl; }else{ cout << "查無此人"<<endl; } system("pause"); system("cls"); } //顯示單個人信息 void showPerson(AddressBooks* abs,int i) { cout << "姓名:" << abs->personArray[i].m_name << "\t" << "性別:" << (abs->personArray[i].m_sex == 0 ? "男" : "女") << "\t" << "年齡:" << abs->personArray[i].m_age << "\t" << "電話:" << abs->personArray[i].m_phone << "\t" << "地址:" << abs->personArray[i].m_address << endl; } //查找並返回相應信息 void findPerson(AddressBooks* abs) { string name; cout << "請輸入要查找的名字:"; cin >> name; int tmp; tmp = isExist(abs, name); if (tmp != -1) { cout << "找到該人" << endl; showPerson(abs, tmp); } else { cout << "查無此人" << endl; } system("pause"); system("cls"); } //菜單界面 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; } int main() { //創建通訊錄結構體變量 AddressBooks abs; abs.m_size = 0; int select = 0; while(true){ showMenu(); cout << "請輸入相應的選項:" << endl; cin >> select; switch (select){ case 1://添加 addPerson(&abs); break; case 2://顯示 showPerson(&abs); break; case 3://刪除 deletePerson(&abs); break; case 4://修改 break; case 5://查找 findPerson(&abs); break; case 6://清空 break; case 0://退出 cout << "歡迎下次使用" << endl; system("pause"); return 0; break; } } }