实验四:健康打卡
创始人
2024-04-10 03:35:20
0

编写程序模拟实现防疫每日“健康打卡”。

健康打卡需要每天填报以下信息:

  1. 日期:年(4位整数)、月(2位整数)、日(2位整数),打卡时可自动取PC机、手机上的当天日期和时间。
  2. 姓名(3个汉字)
  3. 专业/部门(20个汉字)
  4. 学号(12位数字,如202200000011,注意不能定义成int整型数)
  5. 打卡位置:省、市、区(30个汉字)。(手机打卡时可自动取手机上的定位位置)
  6. 证件号码(18位数字,注意不能定义成int整型数)
  7. 手机号(11位数字,注意不能定义成int整型数)
  8. 性别(1:男,2:女)
  9. 家族住址(30个汉字)
  10. 您一日内是否到过学校(1:是,2:否)
  11. 您现在处于以下哪类地区(1:省外,2:省内其它地市,3:郑州市)
  12. 本人及共同居住人近14天以来,是否从中高风险地区返回郑州?(1:是,2:否)
  13. 如有请描述何时、何地返郑等具体情况(30个汉字):该项在第(12)项为“1”时填写
  14. 您当前的身体健康状况(1:无异常症状,2:有发热-大于等于37.3、咳嗽等症状)
  15. 您是否已经接种新冠疫苗加强针?(疫苗接种记录可在支付宝健康码页面查询)(1:已接种加强针,2:完成接种,待接种加强针,3:接种部分剂次,4:未接种)
  16. 本人及共同居住人现在是否有确诊、无症状感染、密接、次密接人员?(1:确诊人员,2:无症状感染者,3:密切接触人员,4:次密接人员,5:无上述情况)
  17. 您现在是否在被隔离(1:否,2:居家隔离(执行七天居家隔离),3:居家隔离(执行三天两检),4:集中隔离)
  18. 您一日内是否接到过流行病学调查电话或信息?(1:是,2:否)
  19. 您是否有其他需要说明的异常情况(30个汉字)【如果是,请务必详细填写】

以上填报信息中的第(2)~(9)项是个人基本信息;第(13)项是当其前一项为特定情况时才需要填报的信息。

要求实现以下四个功能的设计:

    1. 录入个人基本信息
    2. 每日健康打卡。能够实现一人多日连续打卡、一日多人连续打卡,但是每人每日只能打卡一次。
    3. 重复健康打卡。能够对一人某日重新打卡。
    4. 查询打卡信息。能够按照学号、日期查询其打卡信息。

输入样例:

       健康打卡

-----------------------------------

  1. 录入个人基本信息
  2. 每日健康打卡
  3. 重复健康打卡
  4. 查询打卡信息
  1. 退出系统

-----------------------------------

请选择(0~4):1

请输入职工基本信息:

*姓名(3个汉字):

*专业/部门(20个汉字):

*学号(12位数字):

*打卡位置(省、市、区,30个汉字):

*证件号码(18位数字):

*手机号(11位数字):

*性别(1:男,2:女):

*家族住址(30个汉字):

继续输入下一位职工基本信息吗(Y:是,N:否)?

代码实现

#include
#include
#include
#include
struct daka{char num1[20];//日期char num2[2];//是否到过学校char num3[2];//现在处于那类地区char num4[2];//是否为高风险地区返郑char num5[70];//何时何地返郑等具体情况char num6[2];//身体健康状况char num7[2];//是否接种新冠疫苗加强针char num8[2];//是否密接或患病char num9[2];//是否被隔离char num10[2];//是否接到过流行病学调查电话char num11[70];//其他需要说明的异常情况struct daka *next;
};
struct student{char num1[10];//姓名char num2[50];//专业/部门char num3[20];//学号char num4[70];//打卡位置char num5[20];//证件号码char num6[12];//手机号char num7[2];//性别char num8[70];//家族住址struct daka head;struct student *next;
};
void shuruxinxi(struct student *stu){while(1){strcpy(stu->head.num1,"");//将日期赋为空串等之后判定使用printf("请输入职工基本信息:\n");printf("*姓名(3个汉字):\n");gets(stu->num1);printf("*专业/部门(20个汉字):\n");gets(stu->num2);printf("*学号(12位数字):\n");gets(stu->num3);printf("*打卡位置(省、市、区,30个汉字):\n");gets(stu->num4);printf("*证件号码(18位数字):\n");gets(stu->num5);printf("*手机号(11位数字):\n");gets(stu->num6);printf("*性别(1:男,2:女):\n");gets(stu->num7);printf("*家族住址(30个汉字):\n");gets(stu->num8);printf("继续输入下一位职工基本信息吗(Y:是,N:否)?\n");char choice[2];//选择是否输入下一个人的信息gets(choice);		if(strcmp(choice,"Y")==0){//如果等于Y说明还需要输入下一个人的信息stu->next=(struct student*)malloc(sizeof(struct student));//为下一个节点分配空间stu=stu->next;//转向下一个节点}else{stu->next=NULL;//下一个节点赋值为NULLbreak;}}
}
int caidan(){system("cls");//清屏printf("\t   健康打卡\n");printf("-----------------------------------\n");printf("\t1.录入个人基本信息\n");printf("\t2.每日健康打卡\n");printf("\t3.重复健康打卡\n");printf("\t4.健康打卡查询\n");printf("\t0.退出系统\n");printf("-----------------------------------\n");printf("请选择(0~4):");int choice;scanf("%d",&choice);getchar();return choice;//以其返回值作为switch语句的条件值
}
void daka(struct student *stu){printf("请输入学号\n");char xuehao[20];gets(xuehao);while(stu!=NULL&&strcmp(stu->num3,xuehao)!=0){//找到学号与要打卡的人相同的结构体stu=stu->next;//遍历链表找到目标}if(stu==NULL){//如果stu==NULL说明已经遍历整个链表了但是未找到目标printf("没有该同学的信息,请按任意键返回主菜单进行个人信息录入\n");//进行提示system("pause");//暂停,因为重新打印菜单会刷屏,防止用户看不到提示信息}else{//进入此分支说明找到了目标char riqi[20];printf("请输入日期(日期格式为yyyy-mm-dd)\n");//输入打卡日期gets(riqi);struct daka *p=&stu->head;//定义一个指针指向打卡信息结构体,主要是用来实现一人多次打卡while(strcmp(p->num1,"")!=0&&strcmp(p->num1,riqi)!=0){//因为我们前面对日期进行赋值为空串所以空串是链表的结尾p=p->next;}if(strcmp(p->num1,riqi)!=0){//说明这是一个新日期对这一个新日期进行打卡strcpy(p->num1,riqi);printf("您一日之内是否到过学校(1:是,2:否)\n");gets(p->num2);printf("您现在处于以下哪类地区(1:省外,2:省内其他城市,3:郑州市)\n");gets(p->num3);printf("本人及共同居住人近十四天以来,是否从中高风险地区返回郑州?(1:是,2:否)\n");gets(p->num4);if(strcmp(p->num4,"1")==0){printf("如有请描述何时、何地返郑等具体情况(30个汉字)\n");gets(p->num5);}else{strcpy(p->num5,"");}printf("您当前的身体健康状况(1:无异常症状,2:有发热-大于等于37.3、咳嗽等症状)\n");gets(p->num6);printf("您是否已经接种新冠疫苗加强针?(疫苗接种记录可在支付宝健康码页面查询)(1:已接种加强针,2:完成接种,待接种加强针,3:接种部分剂次,4:未接种)\n");gets(p->num7);printf("本人及共同居住人现在是否有确诊、无症状感染、密接、次密接人员?(1:确诊人员,2:无症状感染者,3:密切接触人员,4:次密接人员,5:无上述情况)\n");gets(p->num8);printf("您现在是否在被隔离(1:否,2:居家隔离(执行七天居家隔离),3:居家隔离(执行三天两检),4:集中隔离)\n");gets(p->num9);printf("您一日内是否接到过流行病学调查电话或信息?(1:是,2:否)\n");gets(p->num10);printf("您是否有其他需要说明的异常情况(30个汉字)【如果是,请务必详细填写】\n");gets(p->num11);p->next=(struct daka*)malloc(sizeof(struct daka));p=p->next;strcpy(p->num1,"");p->next=NULL;printf("打卡成功,请按回车键返回菜单\n");system("pause");}else{//进入此分支说明这个日期已经打过卡了printf("今日已经打过卡了,请按任意键返回主菜单.\n");system("pause");}}
}
void chongfudaka(struct student *stu){printf("请输入学号\n");char xuehao[20];gets(xuehao);while(stu!=NULL&&strcmp(stu->num3,xuehao)!=0){//进行学号查找找到对应元素进行重新打卡stu=stu->next;}if(stu==NULL){//说明遍历链表也没有找到目标printf("没有该同学的信息,请按任意键返回主菜单进行个人信息录入\n");system("pause");}else{char riqi[20];printf("请输入日期(日期格式为yyyy-mm-dd)\n");gets(riqi);struct daka *p=&stu->head;while(strcmp(p->num1,"")!=0&&strcmp(p->num1,riqi)!=0){//寻找对应的那天p=p->next;}if(strcmp(p->num1,riqi)==0){//说明这是要重新打卡的日期strcpy(p->num1,riqi);printf("您一日之内是否到过学校(1:是,2:否)\n");gets(p->num2);printf("您现在处于以下哪类地区(1:省外,2:省内其他城市,3:郑州市)\n");gets(p->num3);printf("本人及共同居住人近十四天以来,是否从中高风险地区返回郑州?(1:是,2:否)\n");gets(p->num4);if(strcmp(p->num4,"1")==0){printf("如有请描述何时、何地返郑等具体情况(30个汉字)\n");gets(p->num5);}else{strcpy(p->num5,"");}printf("您当前的身体健康状况(1:无异常症状,2:有发热-大于等于37.3、咳嗽等症状)\n");gets(p->num6);printf("您是否已经接种新冠疫苗加强针?(疫苗接种记录可在支付宝健康码页面查询)(1:已接种加强针,2:完成接种,待接种加强针,3:接种部分剂次,4:未接种)\n");gets(p->num7);printf("本人及共同居住人现在是否有确诊、无症状感染、密接、次密接人员?(1:确诊人员,2:无症状感染者,3:密切接触人员,4:次密接人员,5:无上述情况)\n");gets(p->num8);printf("您现在是否在被隔离(1:否,2:居家隔离(执行七天居家隔离),3:居家隔离(执行三天两检),4:集中隔离)\n");gets(p->num9);printf("您一日内是否接到过流行病学调查电话或信息?(1:是,2:否)\n");gets(p->num10);printf("您是否有其他需要说明的异常情况(30个汉字)【如果是,请务必详细填写】\n");gets(p->num11);printf("打卡成功,请按回车键返回菜单\n");system("pause");}else{//进入此分支说明未找到日期;printf("未找到打卡记录,无法进行重新打卡,请按任意键返回主菜单进行打卡.\n");system("pause");}}
}void jilu(struct student *stu){printf("请输入学号\n");char xuehao[20];gets(xuehao);while(stu!=NULL&&strcmp(stu->num3,xuehao)!=0){//找到目标stu=stu->next;}if(stu==NULL){printf("没有该同学的信息,请按任意键返回主菜单进行信息录入\n");system("pause");}else{char riqi[20];printf("请输入日期(日期格式为yyyy-mm-dd)\n");gets(riqi);struct daka *p=&stu->head;while(strcmp(p->num1,"")!=0&&strcmp(p->num1,riqi)!=0){p=p->next;}if(strcmp(p->num1,riqi)==0){//说明这是要查询打卡的日期strcpy(p->num1,riqi);printf("您一日之内是否到过学校(1:是,2:否)\n");puts(p->num2);printf("您现在处于以下哪类地区(1:省外,2:省内其他城市,3:郑州市)\n");puts(p->num3);printf("本人及共同居住人近十四天以来,是否从中高风险地区返回郑州?(1:是,2:否)\n");puts(p->num4);if(strcmp(p->num4,"1")==0){printf("如有请描述何时、何地返郑等具体情况(30个汉字)\n");puts(p->num5);}printf("您当前的身体健康状况(1:无异常症状,2:有发热-大于等于37.3、咳嗽等症状)\n");puts(p->num6);printf("您是否已经接种新冠疫苗加强针?(疫苗接种记录可在支付宝健康码页面查询)(1:已接种加强针,2:完成接种,待接种加强针,3:接种部分剂次,4:未接种)\n");puts(p->num7);printf("本人及共同居住人现在是否有确诊、无症状感染、密接、次密接人员?(1:确诊人员,2:无症状感染者,3:密切接触人员,4:次密接人员,5:无上述情况)\n");puts(p->num8);printf("您现在是否在被隔离(1:否,2:居家隔离(执行七天居家隔离),3:居家隔离(执行三天两检),4:集中隔离)\n");puts(p->num9);printf("您一日内是否接到过流行病学调查电话或信息?(1:是,2:否)\n");puts(p->num10);printf("您是否有其他需要说明的异常情况(30个汉字)【如果是,请务必详细填写】\n");puts(p->num11);printf("请按回车键返回菜单\n");system("pause");}else{printf("未找到打卡记录,请按任意键返回主菜单.\n");system("pause");}}
}
void baocun(struct student *stu){char f[100]="C:\\Users\\34914\\Desktop\\13213\\1.txt";//此项根据自己电脑文件所在位置进行填写FILE *fp=fopen(f,"wb");if(fp==NULL){printf("保存信息失败\n");}else{while(stu!=NULL){fwrite(stu,sizeof(struct student),1,fp);stu=stu->next;}fclose(fp);}
}
int main(){struct student head;int flag=0;while(1){switch(caidan()){case 1:shuruxinxi(&head);break;case 2:daka(&head);break;	case 3:chongfudaka(&head);break;	case 4:jilu(&head);break;	case 0:flag=1;break;default:printf("输入不合法,请按任意键重新输入\n");system("pause");break;	}if(flag==1){break;}}baocun(&head);return 0;
}

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...