话不多说,直接拷代码:
#include <iostream>
#include <string>
using namespace std;
#define MAX 100
//联系人结构体
struct Person {
string Name;
char Sex; //m表示男,f表示女
int Age;
string Tele_num;
string Address;
};
//通讯录结构体
struct AddressBooks {
//联系人数组
struct Person p_arr[MAX];
int 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;
}
//1、添加联系人
void addPerson(AddressBooks *abs) {
//判断通讯录容量
if (abs->Size >= MAX) {
cout << "空间不足!!!" << endl;
return;
}
//添加联系人
//姓名
string name;
cout << "请输入姓名:" << endl;
cin >> name;
abs->p_arr[abs->Size].Name = name;
//性别
char ch;
cout << "请输入性别(m/f)" << endl;
cin >> ch;
abs->p_arr[abs->Size].Sex = ch;
//年龄
int age;
cout << "请输入年龄" << endl;
cin >> age;
abs->p_arr[abs->Size].Age = age;
//电话
string telep_num;
cout << "请输入电话号码:" << endl;
cin >> telep_num;
abs->p_arr[abs->Size].Tele_num = telep_num;
//地址
string address;
cout << "请输入地址:" << endl;
cin >> address;
abs->p_arr[abs->Size].Address = address;
abs->Size++;
//提示信息
cout << "添加成功" << endl;
//更新界面
system("pause");//请按任意键继续
system("cls");//清屏操作
}
//2、显示联系人
void showPerson(AddressBooks *abs) {
//判断
if (abs->Size == 0) {
cout << "通讯录为空!!!" << endl;
return;
}
//主题框架
cout << "姓名\t" << "性别\t" << "年龄\t" << "电话\t\t" << "地址" << endl;
for (int i = 0; i < abs->Size; ++i) {
cout << abs->p_arr[i].Name << "\t";
cout << abs->p_arr[i].Sex << "\t";
cout << abs->p_arr[i].Age << "\t";
cout << abs->p_arr[i].Tele_num << "\t";
cout << abs->p_arr[i].Address << endl;
}
}
//删除联系人
void deletePerson(AddressBooks *abs) {
//检测是否能删除
if (abs->Size == 0) {
cout << "通讯录为空!!!" << endl;
return;
}
//输入待删除姓名
cout << "请输入待删除姓名" << endl;
string strName;
cin >> strName;
for (int i = 0; i < abs->Size; ++i) {
if (abs->p_arr[i].Name == strName) {
for (int j = i; j < abs->Size; ++j) {
abs->p_arr[j] = abs->p_arr[j + 1];
}
cout << "删除成功!!!" << endl;
break;
}
}
//更新数据
abs->Size--;
}
//查找联系人
void findPerson(AddressBooks *abs) {
if (abs->Size == 0) {
cout << "通讯录为空" << endl;
return;
}
cout << "输入要查找的人" << endl;
string findName;
cin >> findName;
for (int i = 0; i < abs->Size; i++) {
if (abs->p_arr[i].Name == findName) {
cout << "姓名:" << findName << " ";
cout << "性别:" << abs->p_arr[i].Sex << " ";
cout << "年龄:" << abs->p_arr[i].Age << " ";
cout << "电话:" << abs->p_arr[i].Tele_num << " ";
cout << "地址:" << abs->p_arr[i].Address << endl;
break;
}
}
cout << "此人不存在!!!" << endl;
}
//修改联系人
void modifyPerson(AddressBooks *abs) {
if (abs->Size == 0) {
cout << "通讯录为空!!!" << endl;
return;
}
cout << "请输入要修改的姓名:" << endl;
string modifyName;
cin >> modifyName;
for (int i = 0; i < abs->Size; ++i) {
if (abs->p_arr[i].Name == modifyName) {
cout << "new name:" << endl;
string newName;
cin >> newName;
abs->p_arr[i].Name = newName;
cout << "new sex:" << endl;
char newSex;
cin >> newSex;
abs->p_arr[i].Sex = newSex;
cout << "new age:" << endl;
int newAge;
cin >> newAge;
abs->p_arr[i].Age = newAge;
cout << "new telenum:" << endl;
string newTelenum;
cin >> newTelenum;
abs->p_arr[i].Tele_num = newTelenum;
cout << "new address:" << endl;
string newAddress;
cin >> newAddress;
abs->p_arr[i].Address = newAddress;
cout << "修改成功:" << endl;
return;
}
}
cout << "修改错误!!!" << endl;
}
//清空联系人
void cleanPerson(AddressBooks *abs) {
cout << "请确定是否清空联系人!!!" << endl;
int flag;
cout << "1、确认 0、取消" << endl;
cin >> flag;
while (true) {
if (flag == 1) {
abs->Size = 0;
cout << "通讯录已清空!!!" << endl;
break;
} else if (flag == 0) {
cout << "已取消操作" << endl;
break;
} else {
cout << "请重写输入" << endl;
cin >> flag;
}
}
}
int main() {
//创建通讯录的结构体变量
AddressBooks A_book;
A_book.Size = 0;
int num;
while (true) {
showMenu();
cin >> num;
switch (num) {
case 1:
addPerson(&A_book);
break;
case 2:
showPerson(&A_book);
break;
case 3:
deletePerson(&A_book);
break;
case 4:
findPerson(&A_book);
break;
case 5:
modifyPerson(&A_book);
break;
case 6:
cleanPerson(&A_book);
break;
case 0:
cout << "欢迎下次使用!!!" << endl;
system("pause");
return 0;
default:
break;
}
}
return 0;
}