ps:承接上一篇通讯录管理系统的设计,模仿代码设计全国地区新冠感染人数统计系统
该系统主要包含的功能有:1、添加统计数据 2、显示统计数据 3、查找特定数据 4、修改统计数据 5、清空统计数据
查找功能分为三种方式:1、按地区查找;2、按日期查找;3、按地区+日期查找
1、程序主界面
2、添加统计数据
添加地区,时间,新增确诊人数,累计确诊人数,累计治愈人数,累计死亡人数。
#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;
}