c++设计全国地区新冠感染人数统计系统

ps:承接上一篇通讯录管理系统的设计,模仿代码设计全国地区新冠感染人数统计系统

该系统主要包含的功能有:1、添加统计数据 2、显示统计数据 3、查找特定数据 4、修改统计数据 5、清空统计数据

查找功能分为三种方式:1、按地区查找;2、按日期查找;3、按地区+日期查找

1、程序主界面
c++设计全国地区新冠感染人数统计系统_第1张图片
2、添加统计数据
添加地区,时间,新增确诊人数,累计确诊人数,累计治愈人数,累计死亡人数。
c++设计全国地区新冠感染人数统计系统_第2张图片

3、显示统计数据
c++设计全国地区新冠感染人数统计系统_第3张图片

4、查找统计数据
c++设计全国地区新冠感染人数统计系统_第4张图片
c++设计全国地区新冠感染人数统计系统_第5张图片
c++设计全国地区新冠感染人数统计系统_第6张图片
c++设计全国地区新冠感染人数统计系统_第7张图片
5、修改统计数据

c++设计全国地区新冠感染人数统计系统_第8张图片
c++设计全国地区新冠感染人数统计系统_第9张图片
6、清空统计数据
c++设计全国地区新冠感染人数统计系统_第10张图片

#include 
#include 

#include 

#define MAX 1000
#define number 20
using namespace std;

//设计统计类别结构体
struct Person
{
	//地区
	string m_regional;
	//日期
	string m_date;
	//新增确诊人数
	int m_raiseNumber;
	//累计确诊人数
	int m_totalNumber;
	//累计治愈人数
	int m_cureNumber;
	//累计死亡人数
	int m_deathNumber;
};
//设计全国地区+日期结构体

struct RegionalRecord
{
	//不同地区不同时间数组
	struct Person reg_day[MAX];  //地区,时间
	//记录统计地区和时间的数量
	int m_Number;
};

//1、添加统计信息
void addStatistics(RegionalRecord *re)
{
	//判断统计日期是否超过容量,如果超过将不再添加
	if (re->m_Number == MAX)
	{
		cout << "已满,容量无法添加" << endl;
		return;
	}
	else
	{
		//添加具体信息

		//地区
		string regional;
		cout << "请输入地区:" << endl;
		cin >> regional;
		re->reg_day[re->m_Number].m_regional = regional;

		//时间
		string date;
		cout << "请输入时间: " << endl;
		cin >> date;
		re->reg_day[re->m_Number].m_date = date;

		//新增确诊人数
		int raiseNumber;
		cout << "请输入新增确诊人数: " << endl;
		cin >> raiseNumber;
		re->reg_day[re->m_Number].m_raiseNumber = raiseNumber;

		//累计确诊人数
		int totalNumber;
		cout << "请输入累计确诊人数: " << endl;
		cin >> totalNumber;
		re->reg_day[re->m_Number].m_totalNumber = totalNumber;

		//治愈人数
		int cureNumber;
		cout << "请输入累计治愈人数: " << endl;
		cin >> cureNumber;
		re->reg_day[re->m_Number].m_cureNumber = cureNumber;

		//死亡人数
		int deathNumber;
		cout << "请输入累计死亡人数: " << endl;
		cin >> deathNumber;
		re->reg_day[re->m_Number].m_deathNumber = deathNumber;

		//更新数量
		re->m_Number++;
		cout << "添加成功" << endl;
		system("pause"); //请按任意键继续
		system("cls"); //清屏操作
	}
}

//2、显示统计信息
void showStatistics(RegionalRecord *re)
{
	//判断统计数量是否为0,如果为0,提示记录为空
	//如果不为0,显示记录的信息
	if (re->m_Number == 0)
	{
		cout << "当前记录为空" << endl;
	}
	else
	{
		for (int i = 0; i < re->m_Number; i++)
		{
			cout << left << "地区: " << left << re->reg_day[i].m_regional <<"\t" ;
			cout << left << "时间: " << left << re->reg_day[i].m_date << "\t";
			cout << left << "新增确诊: " << left << re->reg_day[i].m_raiseNumber << "\t";
			cout << left << "累计确诊: " << left << re->reg_day[i].m_totalNumber << "\t";
			cout << left << "累计治愈人数: " << left << re->reg_day[i].m_cureNumber << "\t";
			cout << left << "累计死亡人数: " << left << re->reg_day[i].m_deathNumber << endl;
			cout << endl;

		}
	}
	system("pause");
	system("cls");
}

int finRegional(RegionalRecord *re, string regional)
{
	for (int i = 0; i < re->m_Number; i++)
	{
		if (re->reg_day[i].m_regional == regional)
		{
			return i;
		}
	}
	return -1; //如果遍历结束都没有找到,返回-1
}

//3.1、按地区查找
void findStatisticsRegional(RegionalRecord *re)
{
	cout << "请输入要查找的地区: " << endl;
	string regional;
	cin >> regional;

	//判断指定的地区是否存在

	for (int i = 0; i < re->m_Number; i++)
	{
		if (re->reg_day[i].m_regional == regional)
		{
			cout << left << "地区: " << left << re->reg_day[i].m_regional << "\t";
			cout << left << "时间: " << left << re->reg_day[i].m_date << "\t";
			cout << left << "新增确诊: " << left << re->reg_day[i].m_raiseNumber << "\t";
			cout << left << "累计确诊: " << left << re->reg_day[i].m_totalNumber << "\t";
			cout << left << "累计治愈人数: " << left << re->reg_day[i].m_cureNumber << "\t";
			cout << left << "累计死亡人数: " << left << re->reg_day[i].m_deathNumber << endl;
			cout << endl;
		}
		else
		{
			if (i == re->m_Number - 1)
			{
			cout << "查无此地区" << endl;
			}
			
		}
	}
	
	//任意键按下后 清屏
	system("pause");
	system("cls");
}


//3.2、按日期查找
void findStatisticsDate(RegionalRecord *re)
{
	cout << "请输入要查找的日期: " << endl;
	string date;
	cin >> date;

	//判断指定日期是否存在
	for (int i = 0; i < re->m_Number; i++)
	{
		if (re->reg_day[i].m_date == date)
		{
			cout << left << "地区: " << left << re->reg_day[i].m_regional << "\t";
			cout << left << "时间: " << left << re->reg_day[i].m_date << "\t";
			cout << left << "新增确诊: " << left << re->reg_day[i].m_raiseNumber << "\t";
			cout << left << "累计确诊: " << left << re->reg_day[i].m_totalNumber << "\t";
			cout << left << "累计治愈人数: " << left << re->reg_day[i].m_cureNumber << "\t";
			cout << left << "累计死亡人数: " << left << re->reg_day[i].m_deathNumber << endl;
			cout << endl;
		}
		else
		{
			if (i == re->m_Number - 1)
			{
				cout << "查无此日期" << endl;
			}
		}
	}
	//任意键按下后 清屏
	system("pause");
	system("cls");
}

//3.3、按地区+日期查找
void findStatisticsRegionalDate(RegionalRecord *re)
{
	cout << "请输入要查找的地区和日期: " << endl;
	string regional, date;
	cin >> regional >> date;

	//判断指定的日期和地区是否存在
	for (int i = 0; i < re->m_Number; i++)
	{
		if (re->reg_day[i].m_regional == regional && re->reg_day[i].m_date == date )
		{
			cout << left << "地区: " << left << re->reg_day[i].m_regional << "\t";
			cout << left << "时间: " << left << re->reg_day[i].m_date << "\t";
			cout << left << "新增确诊: " << left << re->reg_day[i].m_raiseNumber << "\t";
			cout << left << "累计确诊: " << left << re->reg_day[i].m_totalNumber << "\t";
			cout << left << "累计治愈人数: " << left << re->reg_day[i].m_cureNumber << "\t";
			cout << left << "累计死亡人数: " << left << re->reg_day[i].m_deathNumber << endl;
			cout << endl;
		}
		else
		{
			if (i == re->m_Number - 1)
			{
				cout << "查无此该地区该日期数据!" << endl;
			}
		}
	}
	//任意键按下后 清屏
	system("pause");
	system("cls");
}

//5、修改指定信息
void modifyStatistics(RegionalRecord *re)
{
	cout << "请输入需要修改的地区和日期: " << endl;
	string regional,date;
	cin >> regional >>date;
	for (int i = 0; i < re->m_Number; i++)
	{
		if (re->reg_day[i].m_regional == regional && re->reg_day[i].m_date == date)
		{
			string regional;
			cout << "请输入地区:" << endl;
			cin >> regional;
			re->reg_day[i].m_regional = regional;
			//时间
			string date;
			cout << "请输入时间: " << endl;
			cin >> date;
			re->reg_day[i].m_date = date;
			//新增确诊人数
			int raiseNumber;
			cout << "请输入新增确诊人数: " << endl;
			cin >> raiseNumber;
			re->reg_day[i].m_raiseNumber = raiseNumber;

			//累计确诊人数
			int totalNumber;
			cout << "请输入累计确诊人数: " << endl;
			cin >> totalNumber;
			re->reg_day[i].m_totalNumber = totalNumber;

			//治愈人数
			int cureNumber;
			cout << "请输入累计治愈人数: " << endl;
			cin >> cureNumber;
			re->reg_day[i].m_cureNumber = cureNumber;

			//死亡人数
			int deathNumber;
			cout << "请输入累计死亡人数: " << endl;
			cin >> deathNumber;
			re->reg_day[i].m_deathNumber = deathNumber;
		}
		else
		{
			if (i == re->m_Number - 1)
			{
				cout << "查无此该地区该日期数据" << endl;
			}
			
		}
	}
	//任意键按下后 清屏
	system("pause");
	system("cls");
}

// 6、清空所有数据
void  cleanStatistics(RegionalRecord *re)
{
	re->m_Number = 0; //将当前记录的通讯录联系人数量置为0,做逻辑清空操作
	cout << "数据已清空" << endl;
	//任意键按下后 清屏
	system("pause");
	system("cls");

}

//菜单界面
void showMenu()
{
	cout << "  全国地区新冠感染人数统计   " << endl;
	cout << "*****************************" << endl;
	cout << "*****  1、添加统计数据  *****" << endl;
	cout << "*****  2、显示统计数据  *****" << endl;
	cout << "*****  3、查找特定数据  *****" << endl;
	cout << "*****  4、修改统计数据  *****" << endl;
	cout << "*****  5、清空统计数据  *****" << endl;
	cout << "*****  0、退出人数统计  *****" << endl;
	cout << "*****************************" << endl;
}

void findMenu()
{
	cout << "***************************" << endl;
	cout << "*****  1、按地区查找  *****" << endl;
	cout << "*****  2、按日期查找  *****" << endl;
	cout << "*****  3、按地区+日期查找 *" << endl;
	cout << "***************************" << endl;
}

int main()
{
	//创建地区人数统计结构体变量
	RegionalRecord re;
	//初始化记录个数
	re.m_Number = 0;

	int select = 0; //创建用户选择输入的变量
	while (true)
	{
		//菜单调用
		showMenu();
		cin >> select;
		switch (select)
		{
		case 1: //添加统计数据
			addStatistics(&re);
			break;
		case 2: //显示统计数据
			showStatistics(&re);
			break;
		case 3: //查找特定数据
		{
			findMenu();//查找菜单
			int choose = 0;
			cin >> choose;
			switch (choose)
			{
			case 1: //按地区查找
				findStatisticsRegional(&re);
				break;
			case 2: //按日期查找
				findStatisticsDate(&re);
				break;
			case 3: //按地区和日期查找
				findStatisticsRegionalDate(&re);
				break;
			}			
		}
		    break;
		case 4: //修改统计数据
			modifyStatistics(&re);
			break;
		case 5: //清空统计数据
			cleanStatistics(&re);
			break;
		case 0: //退出通讯录
			cout << "感谢使用" << endl;
			system("pause");
			return 0;
			break;
		default:
			break;
		}
	}
	system("pause"); //暂停,等待用户信号
	return 0;
}

你可能感兴趣的:(c++编程练习,c++)