作业——通讯录管理系统

#include<iostream>
using namespace std;
int n = 0;    //联系人数量
struct person {
	string name;
	string gender;
	int age;
	string tel;
	string add;
};

void main_init()
{
	cout << "------------------------" << endl;
	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;
}

void add_person(person a[])
{
	char j = 0;    //性别校验的参数
	while (a[n].name != "")
		n++;
	cout << "请输入联系人的姓名" << endl;
	cin >> a[n].name;

	while (j == 0)
	{
		cout << "请选择联系人的性别" << endl << "M——男   F——女" << endl;
		cin >> j;
		if (j == 'M'||j=='m')
			a[n].gender = "男";
		else if (j == 'F'||j=='f')
			a[n].gender = "女";
		else
		{
			cout << "输入非法,请重新输入" << endl;
			j = 0;
		}
	}
	cout << a[n].gender << endl;
	cout << "请输入联系人的年龄" << endl;
	cin >> a[n].age;
	cout << "请输入联系人的电话" << endl;
	cin >> a[n].tel;
	cout << "请输入联系人的家庭住址" << endl;
	cin >> a[n].add;
	n++;
	cout << "联系人添加完毕!" << endl;
}

void show_person(person a[])
{
	if (n != 0)
	{
		int i, j = 1;  //判断联系人数量的参数
		i = n;
		while (i != 0)
		{
			cout << j << "   " << a[j - 1].name << "    " << a[j - 1].gender << "    " << a[j - 1].age << "    " << a[j - 1].tel << "    " << a[j - 1].add << endl;
			j++;
			i--;
		}
		cout << "联系人显示完毕!" << endl;
	}
	else
		cout << "通讯录为空!" << endl;
}

void del_person(person a[])
{
	bool flag=0;   //是否查找到   
	int i;      //遍历联系人的参数
	string del_name;
	cout << "请输入要删除的联系人" << endl;
	cin >> del_name;
	for (i = 0; i < n; i++)
	{
		if (del_name == a[i].name)
		{
			flag = 1;
			cout << "查到联系人信息如下" << endl;
			cout << a[i].name << "    " << a[i].gender << "    " << a[i].age << "    " << a[i].tel << "    " << a[i].add << endl;
			cout << "是否确认删除?" << endl;
			char ch1 = 0;                          //判断是否确认删除
			while (ch1 == 0) 
			{
				cout << "Y——是    N——否" << endl;
				cin >> ch1;
				if (ch1 == 'Y' || ch1 == 'y')
				{
					for (int j = i; j < n; j++)     //从当前联系人开始,后继联系人前移一位
						a[j] = a[j + 1];
					n--;                           //刷新联系人列表
					cout << "删除成功,是否继续查找?" << endl;
					char ch2 = 0;                  //判断是否继续查找
					while (ch2 == 0)
					{
						cout << "Y——是    N——否" << endl;
						cin >> ch2;
						if (ch2 == 'Y' || ch2 == 'y')
							i--;                  //因为后继联系人已经前移一位,所以需要在这一位上继续搜索
						else if (ch2 == 'N' || ch2 == 'n')
							i = n-1;             //方便直接退出查找
						else
						{
							cout << "输入非法,请重新输入" << endl;
							ch2 = 0;
						}
					}
				}
				else if (ch1 == 'N' || ch1 == 'n')
				{
					cout << "删除取消,是否继续查找?" << endl;
					char ch2 = 0;                  //判断是否继续查找
					while (ch2 == 0)
					{
						cout << "Y——是    N——否" << endl;
						cin >> ch2;
						if (ch2 == 'Y' || ch2 == 'y')
							;                      //因为没有执行删除操作,所以i不变
						else if (ch2 == 'N' || ch2 == 'n')
							i = n - 1;             //方便直接退出查找
						else
						{
							cout << "输入非法,请重新输入" << endl;
							ch2 = 0;
						}
					}
				}
				else
				{
					cout << "输入非法,请重新输入" << endl;
					ch1 = 0;
				}
			}
		}
	}
	if (flag == 0)
		cout << "查无此人!" << endl;
	else
		cout << "操作结束!" << endl;
}

void find_person(person a[])
{
	int i;              //遍历联系人的参数
	string find_name;
	person b[1000];     //临时存放查找到的联系人的结构体数组
	int j = 0;          //查找到的联系人数量
	cout << "请输入要查找的联系人" << endl;
	cin >> find_name;
	for (i = 0; i < n; i++)
	{
		if (find_name == a[i].name)
		{
			b[j] = a[i];
			j++;
		}
	}
	if (j != 0)        //说明有查找到
	{
		cout << "查找到的联系人信息如下" << endl;
		for (j; j > 0; j--)
			cout << b[j - 1].name << "    " << b[j - 1].gender << "    " << b[j - 1].age << "    " << b[j - 1].tel << "    " << b[j - 1].add << endl;
	}
	else
		cout << "查无此人!" << endl;
}

void chag_person(person a[])
{
	bool flag = 0;   //是否查找到   
	int i;      //遍历联系人的参数
	string chag_name;
	cout << "请输入要更改的联系人" << endl;
	cin >> chag_name;
	for (i = 0; i < n; i++)
	{
		if (chag_name == a[i].name)
		{
			flag = 1;
			cout << "查到联系人信息如下" << endl;
			cout << a[i].name << "    " << a[i].gender << "    " << a[i].age << "    " << a[i].tel << "    " << a[i].add << endl;
			cout << "是否确认更改?" << endl;
			char ch1 = 0;                          //判断是否确认更改
			while (ch1 == 0)
			{
				cout << "Y——是    N——否" << endl;
				cin >> ch1;
				if (ch1 == 'Y' || ch1 == 'y')
				{
					int j;
					do {
						cout << "请输入想要更改的内容" << endl;
						cout << "     1——姓名      " << endl;
						cout << "     2——性别      " << endl;
						cout << "     3——年龄      " << endl;
						cout << "     4——号码      " << endl;
						cout << "     5——地址      " << endl;
						cout << "     0——放弃更改  " << endl;
						cin >> j;
						switch (j)
						{
						case 1:
						{
							string new_name;
							cout << "请输入新的姓名" << endl;
							cin >> new_name;
							a[i].name = new_name;
							cout << "更改成功!" << endl;
						}break;

						case 2:
						{
							char ng=0;
							while (ng==0)
							{
								cout << "请输入新的性别" << endl << "M——男  F——女" << endl;
								cin >> ng;
								if (ng == 'M' || ng == 'm')
									a[i].gender = "男";
								else if (ng == 'F' || ng == 'f')
									a[i].gender = "女";
								else
								{
									cout << "输入非法,请重新输入" << endl;
									ng = 0;
								}
								cout << a[i].gender << endl;
							}
							cout << "更改成功!" << endl;
						}break;

						case 3:
						{
							int new_age;
							cout << "请输入新的年龄" << endl;
							cin >> new_age;
							a[i].age = new_age;
							cout << "更改成功!" << endl;
						}break;

						case 4:
						{
							string new_tel;
							cout << "请输入新的号码" << endl;
							cin >> new_tel;
							a[i].tel = new_tel;
							cout << "更改成功!" << endl;
						}break;

						case 5:
						{
							string new_add;
							cout << "请输入新的地址" << endl;
							cin >> new_add;
							a[i].add = new_add;
							cout << "更改成功!" << endl;
						}break;

						case 0:
						{
							cout << "取消更改" << endl;
						}break;

						default:
							cout << "输入非法,请重新输入!" << endl;
						}

					} while (j != 0);
				}
				else if (ch1 == 'N' || ch1 == 'n')
				{
					cout << "更改取消,是否继续查找?" << endl;
					char ch2 = 0;                  //判断是否继续查找
					while (ch2 == 0)
					{
						cout << "Y——是    N——否" << endl;
						cin >> ch2;
						if (ch2 == 'Y' || ch2 == 'y')
							;                      //因为没有执行更改操作,所以i不变
						else if (ch2 == 'N' || ch2 == 'n')
							i = n - 1;             //方便直接退出查找
						else
						{
							cout << "输入非法,请重新输入" << endl;
							ch2 = 0;
						}
					}
				}
				else
				{
					cout << "输入非法,请重新输入" << endl;
					ch1 = 0;
				}
			}
		}
	}
	if (flag == 0)
		cout << "查无此人!" << endl;
	else
		cout << "操作结束!" << endl;
}

void clr_person(person a[])
{
	char s1,s2;
	cout << "您正在进行清空通讯录操作,此举有可能造成重要信息丢失!是否继续?" << endl;
	cout << "Y——是  按其他任意键退出"<<endl;
	cin >> s1;
	if (s1 == 'Y' || s1 == 'y')
	{
		cout << "是否确定清空通讯录?" << endl<< "C——清空  按其他任意键退出" << endl;
		cin >> s2;
		if (s2 == 'C' || s2 == 'c')
		{
			for (int i = 0; i < n; i++)
			{
				a[i].name = "";
				a[i].gender = "";
				a[i].age = 0;
				a[i].tel = "";
				a[i].add = "";
				n = 0;
			}
			cout << "通讯录已清空!" << endl;
		}
	}

}

void main() 
{
	person my[1000];
	int choose;
	do{
		int i;
		main_init();
		cin >> i;
		choose = i;
		switch (choose)
		{
		case 1:
		{
			cout << "1——添加联系人" << endl;
			add_person(my);
		}break;

		case 2:
		{
			cout << "2——显示联系人" << endl;
			show_person(my);
		}break;

		case 3:
		{
			cout << "3——删除联系人" << endl;
			del_person(my);
		}break;

		case 4:
		{
			cout << "4——查找联系人" << endl;
			find_person(my);
		}break;

		case 5:
		{
			cout << "5——修改联系人" << endl;
			chag_person(my);
		}break;

		case 6:
		{
			cout << "6——清空联系人" << endl;
			clr_person(my);
		}break;

		case 0:
			cout << "0——退出通讯录" << endl;
			break;

		default:
			cout << "输入非法,请重新输入!" << endl;
		}

	} while (choose != 0);

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值