已重新编写:实验4--重制版(健康打卡)-CSDN博客
实验要求:
编写程序模拟实现防疫每日“健康打卡”。
健康打卡需要每天填报以下信息:
- 日期:年(4位整数)、月(2位整数)、日(2位整数),打卡时可自动取PC机或者手机上的当天日期和时间
- 姓名(3个汉字)
- 专业/部门(20个汉字)
- 学号(12位数字,如202200000011,注意不能定义成int整型数)
- 打卡位置:省、市、区(30个汉字,手机打卡时可自动取手机上的定位位置)
- 证件号码(18位数据,注意不能定义成int整型数)
- 手机号(11位数字,注意不能定义成int整型数)
- 性别(1:男,2:女)
- 家族住址(30个汉字)
- 您一日内是否到过学校(1:是,2:否)
- 您现在处于以下哪类地区(1:省外,2:省内其它地市,3:郑州市)
- 本人及共同居住人近14天以来,是否从中高风险地区返回郑州?(1:是,2:否)
- 如有请描述何时、何地返郑等具体情况(30个汉字):该项在第(12)项为“1”时填写
- 您当前的身体健康状况(1:无异常症状,2:有发热-大于等于37.3、咳嗽等症状)
- 您是否已经接种新冠疫苗加强针?(疫苗接种记录可在支付宝健康码页面查询)(1:已接种加强针,2:完成接种,待接种加强针,3:接种部分剂次,4:未接种)
- 本人及共同居住人现在是否有确诊、无症状感染、密接、次密接人员?(1:确诊人员,2:无症状感染者,3:密切接触人员,4:次密接人员,5:无上述情况)
- 您现在是否在被隔离(1:否,2:居家隔离(执行七天居家隔离),3:居家隔离(执行三天两检),4:集中隔离)
- 您一日内是否接到过流行病学调查电话或信息?(1:是,2:否)
- 您是否有其他需要说明的异常情况(30个汉字)【如果是,请务必详细填写】
以上填报信息中的第(2)~(9)项是个人基本信息;第(13)项是当其前一项为特定情况时才需要填报的信息。
要求实现以下四个功能的设计:
-
- 录入个人基本信息
- 每日健康打卡(能够实现一人多日连续打卡、一日多人连续打卡,但是每人每日只能打卡一次)
- 重复健康打卡(能够对一人某日重新打卡)
- 查询打卡信息(能够按照学号、日期查询个人打卡信息)
输入样例:
健康打卡
-----------------------------------
- 录入个人基本信息
- 每日健康打卡
- 重复健康打卡
- 查询打卡信息 0.退出系统
-----------------------------------
请选择(0~4):1
请输入职工基本信息:
姓名(3个汉字):
部门、专业(20个汉字):
学号(12位数字):
打卡位置(省、市、区,30个汉字):
证件号码(18位数据):
手机号(11位数字):
性别(1:男,2:女):
家族住址(30个汉字):
继续输入下一位职工基本信息吗(Y:是,N:否)?
下面的源代码只能实现30人,每人30次的统计,且程序仅限于一次性使用,极其不实用。
已重新编写:实验4--重制版(健康打卡)-CSDN博客
#include <stdio.h>
#include <string.h>
int n;
int t = 1;
int i = 0;
typedef struct
{
int a;
int b;
int c;
char d[60];
int e;
int f;
int g;
int h;
int i;
char j[60];
} NUMBER_LIST;
typedef struct
{
int year;
int month;
int day;
NUMBER_LIST number_list;
} TIME;
typedef struct
{
char name[20];
char major[40];
char stu_number[15];
char address[60];
char IDcard[30];
char tele_number[15];
int sex;
char home_address[60];
TIME time[30];
int count;
} INFORMATION;
INFORMATION stu[30];
void menu()
{
printf(" 健康打卡\n");
printf("------------------------------\n");
printf(" 1.录入个人基本信息\n");
printf(" 2.每日健康打卡\n");
printf(" 3.重复健康打卡\n");
printf(" 4.查询打卡信息\n");
printf(" 0.退出系统\n");
printf("-------------------------------\n");
printf("请选择(0~4):");
}
void enter1()
{
printf("请输入职工基本信息\n");
printf("姓名:\n");
scanf("%s", &stu[i].name[20]);
printf("部门、专业:\n");
scanf("%s", &stu[i].major[40]);
printf("学号:\n");
scanf("%s", &stu[i].stu_number[15]);
printf("打卡位置:\n");
scanf("%s", &stu[i].address[60]);
printf("证件号码:\n");
scanf("%s", &stu[i].IDcard[30]);
printf("手机号:\n");
scanf("%s", &stu[i].tele_number[15]);
printf("性别(1:男,2:女):\n");
scanf("%d", &stu[i].sex);
printf("家族地址:\n");
scanf("%s", &stu[i].home_address[60]);
i++;
}
void enter2()
{
printf("请输入学号:\n");
char number[15];
scanf("%s", &number);
int i = 0;
for (int c = 0; c < 30; c++)
{
if (stu[c].stu_number[15] == number)
{
i = c;
}
}
printf("请输入日期(依次输入年(4位)、月(2位)、日(2位),数字之间用‘,’隔开):\n");
scanf("%d,%d,%d", &stu[i].time[stu[i].count].year, &stu[i].time[stu[i].count].month, &stu[i].time[stu[i].count].day);
printf("您一日内是否到过学校(1:是,2:否)\n");
scanf("%d", &stu[i].time[stu[i].count].number_list.a);
printf("您现在处于以下哪类地区(1:省外,2:省内其它地市,3:郑州市)\n");
scanf("%d", &stu[i].time[stu[i].count].number_list.b);
printf("本人及共同居住人近14天以来,是否从中高风险地区返回郑州?(1:是,2:否)\n");
scanf("%d", &stu[i].time[stu[i].count].number_list.c);
if (stu[i].time[stu[i].count].number_list.c == 1)
{
printf("如有请描述何时、何地返郑等具体情况(30个汉字):\n");
scanf("%s", &stu[i].time[stu[i].count].number_list.d);
}
else
strcpy(stu[i].time[stu[i].count].number_list.d, "无");
printf("您当前的身体健康状况(1:无异常症状,2:有发热-大于等于37° 3、咳嗽等症状)\n");
scanf("%d", &stu[i].time[stu[i].count].number_list.e);
printf("您是否已经接种新冠疫苗加强针?(疫苗接种记录可在支付宝健康码页面查询)(1:已接种加强针,2:完成接种,待接种加强针,3:接种部分剂次,4:未接种)\n");
scanf("%d", &stu[i].time[stu[i].count].number_list.f);
printf("本人及共同居住人现在是否有确诊、无症状感染、密接、次密接人员?(1:确诊人员,2:无症状感染者,3:密切接触人员,4:次密接人员,5:无上述情况)\n");
scanf("%d", &stu[i].time[stu[i].count].number_list.g);
printf("您现在是否在被隔离(1:否,2:居家隔离(执行七天居家隔离),3:居家隔离(执行三天两检),4:集中隔离)\n");
scanf("%d", &stu[i].time[stu[i].count].number_list.h);
printf("您一日内是否接到过流行病学调查电话或信息?(1:是,2:否)\n");
scanf("%d", &stu[i].time[stu[i].count].number_list.i);
printf("您是否有其他需要说明的异常情况(30个汉字)【如果是,请务必详细填写】\n");
scanf("%s", &stu[i].time[stu[i].count].number_list.j);
stu[i].count++;
}
void enter3()
{
printf("请输入学号:\n");
char number[15];
scanf("%s", &number);
int i = 0;
for (int c = 0; c < 30; c++)
{
if (stu[c].stu_number[15] == number)
{
i = c;
}
}
printf("请输入日期(依次输入年(4位)、月(2位)、日(2位),年与月之间用‘.’链接,即输入一个整型数):\n");
double age1, age2;
scanf("%lf", &age1);
int b = 0;
for (int j = 0; j <= stu[i].count; j++)
{
age2 = stu[i].time[j].year + stu[i].time[j].month * 0.01 + stu[i].time[j].day * 0.0001;
if (age1 == age2)
{
b = j;
}
}
printf("您一日内是否到过学校(1:是,2:否)\n");
scanf("%d", &stu[i].time[b].number_list.a);
printf("您现在处于以下哪类地区(1:省外,2:省内其它地市,3:郑州市)\n");
scanf("%d", &stu[i].time[b].number_list.b);
printf("本人及共同居住人近14天以来,是否从中高风险地区返回郑州?(1:是,2:否)\n");
scanf("%d", &stu[i].time[b].number_list.c);
if (stu[i].time[b].number_list.c == 1)
{
printf("如有请描述何时、何地返郑等具体情况(30个汉字):\n");
scanf("%s", &stu[i].time[b].number_list.d);
}
else
strcpy(stu[i].time[b].number_list.d, "无");
printf("您当前的身体健康状况(1:无异常症状,2:有发热-大于等于37° 3、咳嗽等症状)\n");
scanf("%d", &stu[i].time[b].number_list.e);
printf("您是否已经接种新冠疫苗加强针?(疫苗接种记录可在支付宝健康码页面查询)(1:已接种加强针,2:完成接种,待接种加强针,3:接种部分剂次,4:未接种)\n");
scanf("%d", &stu[i].time[b].number_list.f);
printf("本人及共同居住人现在是否有确诊、无症状感染、密接、次密接人员?(1:确诊人员,2:无症状感染者,3:密切接触人员,4:次密接人员,5:无上述情况)\n");
scanf("%d", &stu[i].time[b].number_list.g);
printf("您现在是否在被隔离(1:否,2:居家隔离(执行七天居家隔离),3:居家隔离(执行三天两检),4:集中隔离)\n");
scanf("%d", &stu[i].time[b].number_list.h);
printf("您一日内是否接到过流行病学调查电话或信息?(1:是,2:否)\n");
scanf("%d", &stu[i].time[b].number_list.i);
printf("您是否有其他需要说明的异常情况(30个汉字)【如果是,请务必详细填写】\n");
scanf("%s", &stu[i].time[b].number_list.j);
}
void find()
{
printf("请输入学号:\n");
char number[15];
scanf("%s", &number);
printf("请输入日期(依次输入年(4位)、月(2位)、日(2位),年与月之间用‘.’链接,即输入一个整型数):\n");
double age1, age2;
scanf("%lf", &age1);
int b = 0;
int c = 0;
for (int i = 0; i < 30; i++)
{
if (stu[i].stu_number[15] == number)
{
c = i;
}
}
for (int j = 0; j <= stu[c].count; j++)
{
age2 = stu[c].time[j].year + stu[c].time[j].month * 0.01 + stu[c].time[j].day * 0.0001;
if (age1 == age2)
{
b = j;
break;
}
}
printf("打卡次数:%d\n", stu[c].count);
printf("日期:%.4f\n", age1);
printf("打卡信息表:\n");
printf("您一日内是否到过学校(1:是,2:否)\n");
printf("%d\n", &stu[c].time[b].number_list.a);
printf("您现在处于以下哪类地区(1:省外,2:省内其它地市,3:郑州市)\n");
printf("%d\n", &stu[c].time[b].number_list.b);
printf("本人及共同居住人近14天以来,是否从中高风险地区返回郑州?(1:是,2:否)\n");
printf("%d\n", &stu[c].time[b].number_list.c);
if (stu[c].time[b].number_list.c == 1)
{
printf("如有请描述何时、何地返郑等具体情况(30个汉字):\n");
printf("%s\n", &stu[c].time[b].number_list.d);
}
printf("您当前的身体健康状况(1:无异常症状,2:有发热-大于等于37° 3、咳嗽等症状)\n");
printf("%d\n", &stu[c].time[b].number_list.e);
printf("您是否已经接种新冠疫苗加强针?(疫苗接种记录可在支付宝健康码页面查询)(1:已接种加强针,2:完成接种,待接种加强针,3:接种部分剂次,4:未接种)\n");
printf("%d\n", &stu[c].time[b].number_list.f);
printf("本人及共同居住人现在是否有确诊、无症状感染、密接、次密接人员?(1:确诊人员,2:无症状感染者,3:密切接触人员,4:次密接人员,5:无上述情况)\n");
printf("%d\n", &stu[c].time[b].number_list.g);
printf("您现在是否在被隔离(1:否,2:居家隔离(执行七天居家隔离),3:居家隔离(执行三天两检),4:集中隔离)\n");
printf("%d\n", &stu[c].time[b].number_list.h);
printf("您一日内是否接到过流行病学调查电话或信息?(1:是,2:否)\n");
printf("%d\n", &stu[c].time[b].number_list.i);
printf("您是否有其他需要说明的异常情况(30个汉字)【如果是,请务必详细填写】\n");
printf("%s\n", &stu[c].time[b].number_list.j);
printf("返回菜单请输入'1'\n");
int a;
scanf("%d", &a);
}
int main()
{
for (int i = 0; i < 30; i++)
{
stu[i].count = 0;
}
while (t)
{
char ch = 'Y';
menu();
scanf("%d", &n);
switch (n)
{
case 1:
{
while (ch == 'Y')
{
enter1();
printf("继续输入下一个职工基本信息吗(Y:是,N:否)?\n");
scanf("\n");
scanf("%c", &ch);
}
system("cls");
break;
}
case 2:
{
enter2();
system("cls");
break;
}
case 3:
{
enter3();
system("cls");
break;
}
case 4:
{
find();
system("cls");
break;
}
case 0:
t = 0;
system("cls");
break;
}
}
return 0;
}