#include<iostream>
using namespace std;
#include<string>
#define MAX 1000
struct Person
{
	string m_Name;
	int m_Sex;
	int m_Age;
	string m_Phone;
	string m_Adder;

};
struct Addressbooks
{
	struct Person personArray[MAX];
	int m_Size;//通讯录中当前记录人员个数
};
//1.添加联系人
void addPerson(Addressbooks *abs)
{
	if (abs->m_Size == MAX)
	{
		cout << "通讯录已满,不能再添加联系人!" << endl;
		return;
	}
	else
	{
		//输入姓名:
		string name;
		cout << "请输入联系人姓名:" << endl;
		cin >> name;
		abs->personArray[abs->m_Size].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[abs->m_Size].m_Sex = sex;
				break;
			}
			cout << "输入有误,请重新输入。" << endl;
		}
		//输入年龄:
		cout << "请输入联系人年龄:" << endl;
		int age = 0;
		cin >> age;
		abs->personArray[abs->m_Size].m_Age = age;
		//输入电话号:
		cout << "请输入联系人电话:" << endl;
		string phone;
		cin >> phone;
		abs->personArray[abs->m_Size].m_Phone = phone;
		//输入地址:
		cout << "请输入地址:" << endl;
		string address;
		cin >> address;
		abs->personArray[abs->m_Size].m_Adder = address;
		//更新人数
		abs->m_Size++;
		cout << "添加联系人成功!" << endl;
		system("pause");//请按任意键继续
		system("cls");//清屏操作
	}
}
//2.显示联系人
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";
			cout << "年龄:" << abs->personArray[i].m_Age<< "\t";
			cout << "电话:" << abs->personArray[i].m_Phone << "\t";
			cout << "性别:" << (abs->personArray[i].m_Sex == 1 ? "男" : "女" )<< "\t";
			cout << "地址:" << abs->personArray[i].m_Adder << endl;
		}
		system("pause");
		system("cls");
	}
}
//3.删除联系人(检测联系人是否存在,若存在则返回联系人所在数组中的位置,若不存在则返回-1)
int isExist(Addressbooks *abs,string name)
{
	for (int i = 0; i < abs->m_Size; i++)
	{
		if (name == abs->personArray[i].m_Name)
		{
			return i;
		}
	}
	return -1;
}
//3.1删除联系人
void deletePerson(Addressbooks *abs)
{
	cout << "请输入需要删除的联系人:" << endl;
	string name;
	cin >> name;
	int result = isExist(abs, name);
	if (result == -1)
	{
		cout << "查无此人" << endl;
	}
	else
	{
		for (int i = result; i < abs->m_Size; i++)
		{
			//数据前移
			abs->personArray[i] = abs->personArray[i + 1];
		}
		abs->m_Size--;//更新通讯录中的人员数
		cout << "删除成功" << endl;
	}
	system("pause");
	system("cls");
}
//4.查找联系人信息
void findPerson(Addressbooks* abs)
{
	cout << "请输入您要查找的联系人:" << endl;
	string name;
	cin >> name;
	int result = isExist(abs, name);
	if (result == -1)
	{
		cout << "查无此人" << endl;
	}
	else
	{
		cout <<"姓名"<< abs->personArray[result].m_Name << "\t";
		cout << "年龄:" << abs->personArray[result].m_Age << "\t";
		cout << "电话:" << abs->personArray[result].m_Phone << "\t";
		cout << "性别:" << (abs->personArray[result].m_Sex == 1 ? "男" : "女") << "\t";
		cout << "地址:" << abs->personArray[result].m_Adder << endl;
	}
	system("pause");
	system("cls");
}
//5.修改联系人信息
void modifyPerson(Addressbooks* abs)
{
	cout << "请输入需要修改的联系人姓名:" << endl;
	string name;
	cin >> name;
	int result = isExist(abs, name);
	if (result!=-1)
	{
		//修改联系人信息
		cout << "请输入联系人姓名:" << endl;
		string name;
		cin >> name;
		abs->personArray[result].m_Name = name;
		cout << "请输入联系人年龄:" << endl;
		int age;
		cin >> age;
		abs->personArray[result].m_Age = age;
		cout << "请输入联系人性别:" << endl;
		cout << "1---男" << endl;
		cout << "2---女" << endl;
		int sex = 0;
		cin >> sex;
		while (true)
		{
			if (sex == 1 || sex == 2)
			{
				abs->personArray[result].m_Sex = sex;
				break;
			}
			cout << "输入有误,请重新输入。" << endl;
		}
		cout << "请输入联系人电话:" << endl;
		string phone;
		cin >> phone;
		abs->personArray[result].m_Phone = phone;
		cout << "请输入联系人地址:" << endl;
		string address;
		cin >> address;
		abs->personArray[result].m_Adder = address;
		cout << "成功修改联系人!" << endl;
		system("pause");
		system("cls");
	}
	else
	{
		cout << "查无此人" << endl;
	}
}
//6.清空联系人
void cleanPerson(Addressbooks* abs)
{
	abs->m_Size = 0;
	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;
	//string name;
	while (true)
	{
		showMenu();
		cin >> select;
		switch (select)
		{
		case 1://1、添加联系人
			addPerson(&abs);//使用地址传递可以修改实参
			break;
		case 2://2、显示联系人
			showPerson(&abs);
			break;
		case 3://3、删除联系人
			deletePerson(&abs);
		case 4://4、查找联系人
			findPerson(&abs);
			break;
		case 5://5、修改联系人
			modifyPerson(&abs);
			break;
		case 6:	//6、清空联系人
			cleanPerson(&abs);
			break;
		case 0://0、退出联系人
			cout << "欢迎下次使用!" << endl;
			system("pause");
			return 0;
			break;
		default:
			break;
		}
		//system("pause");
	}
	
}