用最简单的方法实现“通信录管理系统”

#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"); // 清空屏幕从头再来
	}
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肥肥胖胖是太阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值