#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;
#define MAX 1000
//聯系人結構體
struct Person {
string M_name; //姓名
int M_sex; //性別:1男 2女
int M_age; //年齡
string M_phone; //電話
string M_address; //地址
};
//通訊錄結構體
struct Addressbooks {
struct Person personArray[MAX]; //通訊錄中保持的聯系人數組
int M_size; //通訊錄中人員個數
};
// 展示菜單功能
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;
}
//0. 退出通訊錄
void exitMenu() {
cout << "歡迎下次使用" << endl;
system("pause");
return;
}
//1. 添加聯系人
void writePerson(Addressbooks *abs, int pos) {
//姓名
string name;
cout << "請輸入姓名:" << endl;
cin >> name;
abs->personArray[pos].M_name = name;
cout << "請輸入性別" << endl;
cout << "1 -- 男" << endl;
cout << "2 -- 女" << endl;
//性別
int sex = 0;
while(true) {
cin >> sex;
if(sex == 1 || sex == 2) {
abs->personArray[pos].M_sex = sex;
break;
}
cout << "輸入有誤,請重新輸入";
}
//年齡
cout << "請輸入年齡:" << endl;
int age = 0;
cin >> age;
abs->personArray[pos].M_age = age;
//聯系電話
cout << "請輸入聯系電話:" << endl;
string phone = "";
cin >> phone;
abs->personArray[pos].M_phone = phone;
//家庭住址
cout << "請輸入家庭地址: " << endl;
string address = "";
cin >> address;
abs->personArray[pos].M_address = address;
if(!name.empty() && sex && age && !phone.empty() && !address.empty()) {
cout << "添加成功" << endl;
system("pause");
system("cls");
}
}
void addPerson(Addressbooks *abs) {
//判斷電話本是否滿了
int pos = abs ->M_size;
if(pos == MAX) {
cout << "通訊錄已滿,無法添加" << endl;
return;
} else {
cout << pos << endl;
writePerson(abs, pos);
abs->M_size++; //更新通訊錄人數
//cout << abs->M_size << endl;
}
}
//2. 顯示聯系人
void printPerson(Addressbooks *abs, int pos) {
cout << "姓名:" << abs->personArray[pos].M_name << "\t";
cout << "性別: " << (abs->personArray[pos].M_sex == 1 ? "男" : "女") << "\t";
cout << "年齡: " << abs->personArray[pos].M_age << "\t";
cout << "電話:" << abs->personArray[pos].M_phone << "\t";
cout << "住址:" << abs->personArray[pos].M_address << endl;
}
void showPerson(Addressbooks *abs) {
if(abs->M_size == 0) {
cout << " 當前記錄為空" << endl;
} else {
for(int i = 0; i < abs->M_size; i++) {
printPerson(abs, i);
}
}
system("pause");
system("cls");
}
//3. 刪除聯系人
int isExist(Addressbooks *abs, string name) {
for(int i = 0; i < i; 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);
if(ret != -1) {
for(int i = ret; i <abs->M_size; i++) {
abs->personArray[i] = abs->personArray[i + 1];
}
abs->M_size--;
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);
if(ret != -1) {
printPerson(abs, ret);
} 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) {
writePerson(abs, ret);
cout << "修改成功" << endl;
} else {
cout << "查無此人" << endl;
}
system("pause");
system("cls");
}
//6. 清空聯系人
void cleanPerson(Addressbooks *abs) {
abs->M_size = 0;
cout << "通訊錄已清空" << endl;
system("pause");
system("cls");
}
int main() {
Addressbooks abs; //創建通訊錄
abs.M_size = 0; //初始化通訊錄中人數
int select = 0; //選擇的序號
while(true) {
showMenu();
cin >> select;
switch(select) {
case 1: //添加聯系人
addPerson(&abs);
break;
case 2: //顯示聯系人
showPerson(&abs);
break;
case 3: //刪除聯系人
deletePerson(&abs);
break;
case 4: //查找聯系人
findPerson(&abs);
break;
case 5: //修改聯系人
modifyPerson(&abs);
break;
case 6: //清空聯系人
cleanPerson(&abs);
break;
case 0: //退出通訊錄
exitMenu();
break;
default:
exitMenu();
break;
}
}
system("pause");
return 0;
}