#include <iostream>
#include <string>
using namespace std;
const int MAX = 1000;
struct SinglePerson
{
string name;
string PhoneNumber;
string sex;
int age;
};
struct PhoneBook
{
SinglePerson Member[MAX];
int Sequence;
};
// 1. 显示菜单选项
void MenuShow()
{
cout << "******************************" << endl;
cout << "***** 0 - 清空整个通讯录 *****" << endl;
cout << "***** 1 - 添加新联系人 *****" << endl;
cout << "***** 2 - 显示所有联系人 *****" << endl;
cout << "***** 3 - 查找指定联系人 *****" << endl;
cout << "***** 4 - 删除指定联系人 *****" << endl;
cout << "***** 5 - 退出通讯录 *****" << endl;
cout << "***** 6 - 修改联系人信息 *****" << endl;
cout << "******************************" << endl;
}
// 2. 添加新联系人
void AddPerson(struct PhoneBook* Book)
{
// <1> 姓名
string NewName;
cout << "请输入姓名:";
cin >> NewName;
Book->Member[Book->Sequence].name = NewName;
// <2> 电话号码
string NewPhoneNumber;
cout << "请输入电话号码:";
cin >> NewPhoneNumber;
Book->Member[Book->Sequence].PhoneNumber = NewPhoneNumber;
// <3> 性别
string NewSex;
cout << "请输入性别:";
cin >> NewSex;
while (1)
{
if (NewSex == "男" || NewSex == "女")
{
Book->Member[Book->Sequence].sex = NewSex;
break;
}
else
{
cout << "输入无效请重新输入" << endl;
}
}
// <4> 年龄
int NewAge;
cout << "请输入年龄:";
cin >> NewAge;
Book->Member[Book->Sequence].age = NewAge;
// <5> 更新通讯录人员个数
Book->Sequence++;
cout << "录入成功" << endl;
}
// 3. 显示所有联系人
void ShowAllMember(struct PhoneBook* Book)
{
if (Book->Sequence == 0)
{
cout << "通讯录为空" << endl;
}
else
{
for (int i = 0; i < Book->Sequence; i++)
{
cout << "姓名:" << Book->Member[i].name << '\t';
cout << "性别:" << Book->Member[i].sex << '\t';
cout << "年龄:" << Book->Member[i].age << '\t';
cout << "电话:" << Book->Member[i].PhoneNumber << endl;
}
}
}
// 4. 修改指定联系人的信息
void ChangeMumberInfor(struct PhoneBook* Book, string name)
{
for (int i = 0; i < Book->Sequence; i++)
{
if (Book->Member[i].name == name)
{
cout << "姓名:" << '\t';
cin >> Book->Member[i].name;
cout << "性别:" << '\t';
cin >> Book->Member[i].sex;
cout << "年龄:" << '\t';
cin >> Book->Member[i].age;
cout << "电话:" << '\t';
cin >> Book->Member[i].PhoneNumber;
cout << endl;
}
else
{
cout << "查找失败" << endl;
}
}
}
// 5_1. 查找指定联系人的位置
int SearchMumber(struct PhoneBook* Book, string name)
{
int i = 0;
for (; i < Book->Sequence; i++)
{
if (Book->Member[i].name == name)
{
return i;
}
}
if (i >= Book->Sequence)
{
return -1;
}
}
// 5_2. 删除指定联系人
void DeleteMumber(struct PhoneBook* Book, string name)
{
int temp = 0;
if (int i = SearchMumber(Book, name); i == -1)
{
cout << "查无此人" << endl;
return;
}
for (int i = SearchMumber(Book, name); i < Book->Sequence; i++)
{
Book->Member[i] = Book->Member[i + 1]; // 数据前移
}
Book->Sequence--;
cout << "删除成功" << endl;
}
// 6. 清空联系人
void ClearPerson(struct PhoneBook* Book)
{
Book->Sequence = 0; // 进行逻辑清空
cout << "清空成功" << endl;
}
void main()
{
PhoneBook abs;
abs.Sequence = 0;
int ret = 0;
int work = 0;
string name;
while (1)
{
MenuShow();
cin >> work;
switch (work)
{
case 0: // 清空所有联系人
ClearPerson(&abs);
break;
case 1: // 添加新联系人
AddPerson(&abs);
break;
case 2: // 显示所有联系人
ShowAllMember(&abs);
break;
case 3: // 查找指定联系人
{
cout << "请输入想要查找的指定联系人:";
cin >> name;
ret = SearchMumber(&abs, name);
cout << (ret == -1 ? "查无此人" : "找到该联系人") << endl;
break;
}
case 4: // 删除指定联系人
{
cout << "请输入想要删除的指定联系人:";
cin >> name;
DeleteMumber(&abs, name);
break;
}
case 5: // 退出通讯录
{
return;
}
case 6: // 修改联系人信息
{
cout << "请输入想要修改的指定联系人:";
cin >> name;
ChangeMumberInfor(&abs, name);
break;
}
default:
break;
}
system("pause"); // 输入任意键结束本次循环
system("cls"); // 清空屏幕从头再来
}
}