实验4(健康打卡小程序)

 已重新编写:实验4--重制版(健康打卡)-CSDN博客

实验要求:

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

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

  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. 查询打卡信息   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;
}
  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值