疫情学生管理系统


功能1: 学籍信息

#include <stdio.h>
#include <stdlib.h>

// 1.学生学籍信息 (完成) 
void record_student(){
    // 模式选择 和参数设置 
    int mode;  
    int num=0, b=0, s=0, j, i;
    int key;
    // student结构体 
    struct student{
        char number[8];
        char name[10];
        char sex[4];
        char grade[4];
        char phone[11];
    
        char major[14];
        char dormitory[10];
        char room[3];
    }stu[1000];
    
    // 清屏, 并弹出提示 
    
    while (num>=0){
        system("cls");
        printf("\n");
        printf("  --学籍信息查看\n");
        printf("  -------------------------");
        printf("\n");
        printf("\n  --退出程序请按Esc:");
        key = getch();
        printf("\n");
        if (key==27) break;
        else{ 
            printf("\n\t添加学籍信息: 1\n");
            printf("\t查看学籍信息: 2\n\n");
            printf("  --请输入你的选择: ");
            scanf("%d", &mode);
    
            // 学籍信息查看功能 
            if (mode==2){
                int i,j, key; 
                char data[1000][8][30];
                // 打开文件, 并使用二维数组读取 
                FILE *fp;
                fp = fopen("学生学籍信息表.xls", "a+");
                for (i=0;i<1000;i++){
                        for(j=0;j<8;j++){
                        fscanf(fp,"%s",&data[i][j]);
                        fseek(fp, 1L, SEEK_CUR);   /*fp指针从当前位置向后移动*/
                    }
                }
                fclose(fp);
             
                int sum=0, require_num, head;
                // 清点文件中的学籍信息数 
                for (i=0,sum=0;i<10000;i++, sum++){
                    if (data[i][0][0] == '\0') break;
                }
                // 清屏 
                system("cls");
                printf("\n");
                // 弹出信息查看提示 
                printf("  --总计有%d条数据\n  --请输入你要查询的数量: ", sum);
                scanf("%d", &require_num);
                printf("  --请输入起始查询位置: ");
                scanf("%d", &head);
                system("cls");
                printf("\n");
                printf("  --查看学籍信息\n");
                printf("  -------------------------");
                printf("\n\n\t-------------------------");
                printf("-----------------------------"); 
                printf("-----------------------------");
                // 根据起始位置进行查询 
                for (i=head;i<require_num+head;i++){
                    // 当信息不存在时, 打破循环, 用于判断输入查询条数是否大于总信息数 
                    if (data[i][0][0] == '\0') {
                        break;
                    }
                    // 内层循环 
                    for (j=0;j<8;j++){
                        // 输出每行中的所有信息 
                        switch (j){
                            case 0:{
                                printf("\n\n\t姓名:   %s\t", data[i][0]); 
                                break;
                            }
                            case 1:{
                                printf("\t学号: %s\t", data[i][1]);                             
                                break;
                            }
                            case 2:{
                                printf("\t年级:   %s\t", data[i][2]); 
                                break;
                            }                        
                            case 3:{
                                printf("\t性别:   %s\t", data[i][3]); 
                                break;
                            }
                            case 4:{
                                printf("\n\t电话号: %s\t", data[i][4]); 
                                break;
                            }
                            case 5:{
                                printf("专业: %s\t", data[i][5]); 
                                break;
                            }
                            case 6:{
                                printf("\t寝室楼: %s\t", data[i][6]); 
                                break;
                            }
                            case 7:{
                                printf("\t寝室号: %s\t", data[i][7]); 
                                break;
                            }
                        }
                    }
                    printf("\n\n\t-------------------------");
                    printf("-----------------------------"); 
                    printf("-----------------------------");
                }
                // 判断信息条数 
                if (require_num-head>sum) printf("\n\n  --共计查询 %d 条数据\n", sum);
                else printf("\n\n  --共计查询 %d 条数据\n", require_num-head);
                printf("\n  -------------------------\n");
            
                printf("\n  按任意键以继续程序...");
                key = getch();

            }
            // 学籍信息录入功能 
            else if (mode==1){
                //  清除文字 
                system("cls");
                printf("\n");
                printf("  --学籍信息录入\n"); 
                printf("  -------------------------");
                printf("\n");
                while (num>=0){
                    printf("\n  --退出程序请按Esc:");
                    key = getch();
                    printf("\n");
                    // 退出外层循环 
                    if (key==27) break;
                    // 信息导入 
                    else {
                        FILE *fp;
                        fp = fopen("学生学籍信息表.xls", "a+");
                        printf("\n\t姓名: ");
                        scanf("%s", &stu[num].name);
                        fprintf(fp, "%s\t", stu[num].name);
                        printf("\t学号: ");
                        scanf("%s", &stu[num].number);    
                        fprintf(fp, "%s\t", stu[num].number); 
                        printf("\t年级: ");
                        scanf("%s", &stu[num].grade);
                        fprintf(fp, "%s\t", stu[num].grade);
                        printf("\t性别: ");
                        scanf("%s", &stu[num].sex);
                        fprintf(fp, "%s\t", stu[num].sex);
                        printf("\t联系方式: ");
                        scanf("%s", &stu[num].phone);
                        fprintf(fp, "%s\t", stu[num].phone);
                        printf("\n\t专业: ");
                        scanf("%s", &stu[num].major);
                        fprintf(fp, "%s\t", stu[num].major);
                        printf("\t寝室楼: ");
                        scanf("%s", &stu[num].dormitory);
                        fprintf(fp, "%s\t", stu[num].dormitory);
                        printf("\t寝室号: "); 
                        scanf("%s", &stu[num].room);
                        fprintf(fp, "%s\t\n", stu[num].room);
        
                        num ++;
                        printf("\n");
                        printf("  -------------------------");
                        printf("\n");
                        fclose(fp);
                    }
                }
            }
        }
      } 
}    

功能2: 学生动向

// 2.添加学生动向 (完成) 
void record_trend(){
    int num=0, b=0, s=0, j, i;
    int key; 
    struct trend{
        char name[10];
        char number[8];
        char grade[4];
        char leave[20];
        char back[20];
        struct block{
            char name[10];
        }block[10];
    }trend[1000];
    
    system("cls");
    printf("\n");
    printf("  --学生动向录入\n");
    printf("  -------------------------");
    printf("\n");
    while (num>=0){
        printf("\n  --退出程序请按Esc:");
        key = getch();
        printf("\n");
        if (key==27) break;
        else {
            FILE *fp;
            fp = fopen("学生动向信息表.xls", "a+");
            printf("\n\t姓名: ");
            scanf("%s", &trend[num].name);
            fprintf(fp, "%s\t", trend[num].name);
            printf("\t学号: ");
            scanf("%s", &trend[num].number);
            fprintf(fp, "%s\t", trend[num].number); 
            printf("\t年级: ");
            scanf("%s", &trend[num].grade);
            fprintf(fp, "%s\t", trend[num].grade);
            printf("\n\t离校时间: ");
            scanf("%s", &trend[num].leave);
            fprintf(fp, "%s\t", trend[num].leave);
            printf("\t返校时间: ");
            scanf("%s", &trend[num].back);
            fprintf(fp, "%s\t", trend[num].back);
            printf("\n\t经过的片区数: ");
            scanf("%d", &s);
            for (j=0;j<s;j++){
                printf("\t  片区街道名称:");
                scanf("%s", &trend[num].block[j].name);
                fprintf(fp, "%s\t", trend[num].block[j].name);
            }
            fprintf(fp, "\n");
            num ++;
            printf("\n");
            printf("  -------------------------");
            printf("\n");
            fclose(fp);
        } 
    }
}

功能3: 核酸情况

// 3.学生核酸情况 (完成) 
void condition(){
    int num, key;
    int i,j; 
    struct con{
        char name[10];
        char number[10];
        char date[10];
        char result[10];
    }con[1000];

        system("cls");
        printf("\n");
        printf("  --核酸情况录入\n"); 
        printf("  -------------------------");
        printf("\n");
        while (num>=0){
            printf("\n  --退出程序请按Esc:");
            key = getch();
            printf("\n");
            if (key==27){
                printf("\n\n\n\n\n  --录入结束...\n\n");
                printf("  -------------------------\n");
                break;
            }
            else{
                FILE *fp;
                fp = fopen("学生核酸情况表.xls", "a+");
                printf("\n\t姓名: ");
                scanf("%s", &con[num].name);
                fprintf(fp, "%s\t", con[num].name);
                printf("\t学号: ");
                scanf("%s", &con[num].number);    
                fprintf(fp, "%s\t", con[num].number); 
                printf("\t日期: ");
                scanf("%s", &con[num].date);
                fprintf(fp, "%s\t", con[num].date);
                printf("\t结果: ");
                scanf("%s", &con[num].result);
                fprintf(fp, "%s\t\n", con[num].result);


                num ++;
                printf("\n");
                printf("  -------------------------");
                printf("\n");
                fclose(fp);
            }
        }
        
}

功能4: 每日体温

// 4.学生每日体温录入 (完成) 
void temperature(){
    int num, key;
    int i,j; 
    struct tem{
        char name[10];
        char number[10];
        char date[10];
        char m_tem[4];
        char n_tem[4];
        char a_tem[4]; 
    }tem[1000];
        system("cls");
        printf("\n");
        printf("  --每日体温录入\n"); 
        printf("  -------------------------");
        printf("\n");
        while (num>=0){
            printf("\n  --退出程序请按Esc:");
            key = getch();
            printf("\n");
            if (key==27) break;
            else{
                FILE *fp;
                fp = fopen("学生每日体温表.xls", "a+");
                printf("\n\t姓名: ");
                scanf("%s", &tem[num].name);
                fprintf(fp, "%s\t", tem[num].name);
                printf("\t学号: ");
                scanf("%s", &tem[num].number);    
                fprintf(fp, "%s\t", tem[num].number); 
                printf("\t日期: ");
                scanf("%s", &tem[num].date);
                fprintf(fp, "%s\t", tem[num].date);
                printf("\t上午温度: ");
                scanf("%s", &tem[num].m_tem);
                fprintf(fp, "%s\t", tem[num].m_tem);
                printf("\t中午温度: ");
                scanf("%s", &tem[num].n_tem);
                fprintf(fp, "%s\t", tem[num].n_tem);
                printf("\t下午温度: ");
                scanf("%s", &tem[num].a_tem);
                fprintf(fp, "%s\t", tem[num].a_tem);


                num ++;
                printf("\n");
                printf("  -------------------------");
                printf("\n");
                fclose(fp);
            }
        }
}

功能5: 异常学生

// 5.异常学生 (半)
void list_abnormal(){
    int key; 
    system("cls");
    printf("\n");
    printf("\n  --正在添加此功能, 请以后再尝试...\n");
    printf("\n  --按任意键以继续程序...");
    key = getch();
    fflush(stdin);
}


功能6: 新增风险

// 6.新增风险地区 (完成) 
void record_risks(){
    
    int num, key;
    int i,j; 
    struct risk{
        char area[20];
        char level[20];
        char date[20]; 
    }risk[1000];
        system("cls");
        printf("\n");
        printf("  --新增风险地区录入\n"); 
        printf("  -------------------------");
        printf("\n");
        while (num>=0){
            printf("\n  --退出程序请按Esc:");
            key = getch();
            printf("\n");
            if (key==27) break;
            else{
                FILE *fp;
                fp = fopen("新增风险地区表.xls", "a+");
                printf("\n\t地区名称: ");
                scanf("%s", &risk[num].area);
                fprintf(fp, "%s\t", risk[num].area);
                printf("\t风险等级: ");
                scanf("%s", &risk[num].level);    
                fprintf(fp, "%s\t", risk[num].level);
                printf("\t发布日期: ");
                scanf("%s", &risk[num].date);    
                fprintf(fp, "%s\t\n", risk[num].date);
                
                num ++;
                printf("\n");
                printf("  -------------------------");
                printf("\n");
                fclose(fp);
            }
        }
}

功能7: 地区查询

// 7.风险地区查询  (完成)
void require_risks(){
    char data[1000][3][30], needed[1000][3][30];
    int i,j, actual_num, num, key, flag[2];
    char date[20],city[20],level[20];
    
    FILE *fp;
    fp = fopen("新增风险地区表.xls", "a+");
    
    for (i=0,num=0;i<10000;i++,num++){
        for(j=0;j<3;j++){
            fscanf(fp,"%s",&data[i][j]);
            fseek(fp, 1L, SEEK_CUR);   /*fp指针从当前位置向后移动*/
        }
        if (data[i][0][0] == '\0') break;
    }
    
    system("cls");
    printf("\n");
    printf("  --总计有%d条数据\n", num);
    printf("\n  --请输入你想查询的城市: ");
    scanf("%s", &city);
    printf("  --请输入你想查询的日期: ");
    scanf("%s", &date);
    
    system("cls");
    printf("\n");
    printf("  --查看学籍信息\n");
    printf("  -------------------------\n\n");

    
    if (strcmp(city,"all")==0 && strcmp(date,"all")==0){
        for (i=num;i>0;i--){
            printf("\n\t疫情城市: %s\t", data[num-i][0]);
            printf("风险等级: %s\t", data[num-i][1]);
            printf("发布日期: %s\n", data[num-i][2]);
            actual_num++;
        }    
    }
     
    else if (strcmp(city,"all")==0){ 
        for (i=num;i>0;i--){
            if (strcmp(date,data[num-i][2])==1) {
                printf("\n\t疫情城市: %s\t", data[num-i][0]);
                printf("风险等级: %s\t", data[num-i][1]);
                printf("发布日期: %s\n", data[num-i][2]);
                actual_num++;
            }
            else continue;
        }
    }


    else if (strcmp(date,"all")==0){
        for (i=num;i>0;i--){
            if (strcmp(city,data[num-i][0])==0) {
                printf("\n\t疫情城市: %s\t", data[num-i][0]);
                printf("风险等级: %s\t", data[num-i][1]);
                printf("发布日期: %s\n", data[num-i][2]);
                actual_num++; 
            }
            else continue;
        }
    }
    
    else{
        for (i=num;i>0;i--){
            if (strcmp(date,data[num-i][2])==0 && strcmp(city,data[num-i][0])==0){
                printf("\n\t疫情城市: %s\t", data[num-i][0]);
                printf("风险等级: %s\t", data[num-i][1]);
                printf("发布日期: %s\n", data[num-i][2]);
                actual_num++;
            }
        }
    }
    
    printf("\n\n  --查询到 %d 条消息\n", actual_num);
    printf("  -------------------------");
    printf("\n  按任意键以继续程序...");
    key = getch();
     
}

功能8: 学生查询

// 8.学生情况查询 (半)
void require_student(){
    int key; 
    system("cls");
        printf("\n");
        printf("\n  --正在添加此功能, 请以后再尝试...\n");
        printf("\n  --按任意键以继续程序...");
        key = getch();
        fflush(stdin);
}

功能9: 退出系统

// 9.退出系统  (完成)
void system_out(){
    system("cls");
    printf("\n");
    printf("\n  \t--System out...\n\n");
    printf("  \t--祝愿疫情早日结束...\n"); 
}

功能10: 主程序

 // 主程序 
int main(){
    int key=0, mode; 
    while (key>=0){
        system("cls");
        printf("\n");
        printf("  --疫情学生管理系统\n"); 
        printf("  -------------------------");
        printf("\n");
        printf("\n\t学生学籍信息: 1\t\t动向信息添加: 2\t\t核酸情况录入: 3\n\n");
        printf("\t每日体温录入: 4\t\t异常学生查询: 5\t\t新增风险地区: 6\n\n");            
        printf("\t风险地区查询: 7\t\t学生情况查询: 8\t\t退出管理系统: 9\n\n");
        printf("\n  --请输入你要使用的功能: ");
        if (scanf("%ld", &mode)==1){
            if (mode==9){
                system_out();
                break;
            }
            switch(mode){
                case 1:{
                    record_student();
                    break;
                }
                case 2:{
                    record_trend(); 
                    break;
                }
                case 3:{
                    condition();
                    break;
                }
                case 4:{
                    temperature();
                    break;
                }
                case 5:{
                    list_abnormal();
                    break;
                }
                case 6:{
                    record_risks();
                    break;
                }
                case 7:{
                    require_risks();
                    break;
                }
                case 8:{
                    require_student();
                    break;
                }
            }
        }
        else {
            system("cls");
            printf("\n");
            printf("  --开发者信息\n"); 
            printf("  -------------------------");
            printf("\n\n  --开发者: 盛杰(檸檬派)");
            printf("\n  --个人博客: https://blog.csdn.net/weixin_61897641?type=blog");
            printf("\n\n  --按任意键以继续程序...");
            key = getch();
            fflush(stdin);
            
            system("cls");
            printf("\n");
            printf("\n  --在功能界面请输入 1-9 的数字 !\n");
            printf("\n  --按任意键以继续程序...");
            key = getch();
            fflush(stdin);
        }    
    }
} 

将代码拼接之后, 就是疫情学生管理系统的整份代码

开发者: 盛杰

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值