#include"stdio.h" #include"string.h" #define N 100 #define NULL 0 int n,m=0;//n为记录学生的个数;m为统计函数1中记录符合统计条件的个数 struct kuangke {//有关旷课统计函数1的信息记录 char name[40]; int kuangke_num; }kuangke[N]; struct kuangke2 {//有关旷课统计函数2的信息记录 char name[40]; int num; }kuangke2[N]; struct kuangke temp;//旷课信息交换 struct kuangke2 temp2;//旷课信息交换 struct Student {// int num; char name[40]; char lesson_name[40]; char lesson_time[40]; float time; int chidao_num; int zaotui_num; int qingjia_num; int kuangke_num; }stu[N]; void creat(void) {//创建学生缺课记录 int i; printf("\n请输入需要创建缺课信息的总学生数:\n"); scanf("%d",&n); printf("\n请输入缺课学生信息 包括:\n"); printf("学号 姓名 课程名称 上课时间 缺课日期 迟到次数 早退次数 请假次数 旷课次数 \n"); printf("例如:\n08 张三丰 C语言课程设计 三、四节 6.10 \t1 \t0 \t0 \t0\n\n"); for(i=0;i=50) break; printf("\n请输入修改信息:"); switch(k) { case 1:scanf("%s",stu[i].name);break; case 2:scanf("%s",stu[i].lesson_name);break; case 3:scanf("%s",stu[i].lesson_time);break; case 4:scanf("%f",&stu[i].time);break; case 5:scanf("%d",&stu[i].chidao_num);break; case 6:scanf("%d",&stu[i].zaotui_num);break; case 7:scanf("%d",&stu[i].qingjia_num);break; case 8:scanf("%d",&stu[i].kuangke_num);break; case 9:break; default:printf("无该菜单选项,请重新输入\n\n"); } printf("\n修改后的信息为:\n"); printf("\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n"); printf("%d号学生的信息为:\n\n",num); printf("\t学号\t姓名\t课程名称\n"); printf("\t%d\t%s\t%s\n\n",stu[i].num,stu[i].name,stu[i].lesson_name); printf("\t上课时间\t缺课日期\n"); printf("\t%s\t%0.2f\n\n",stu[i].lesson_time,stu[i].time); printf("\t迟到次数 早退次数 请假次数 旷课次数\n"); printf("\t%d\t\t%d\t%d\t\t%d\n",stu[i].chidao_num,stu[i].zaotui_num,stu[i].qingjia_num,stu[i].kuangke_num); printf("\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n"); } } else//未检测到信息时记录并提示错误信息; flag++; if(flag==n) printf("\n输入信息有误\n\n"); } } void intfac(void) {//整型类数据查询 int num,i,flag=0; scanf("%d",&num); for(i=0;i旷课少 { if(kuangke[i].kuangke_num=time1&&stu[i].time<=time2) { if(stu[i].kuangke_num>0) { strcpy(kuangke[k].name,stu[i].name); kuangke[k].kuangke_num=stu[i].kuangke_num; m=k; k++; } else flag++; } } if(flag==n) printf("\n输入信息有误\n\n"); else tongji1printf(); } void tongjifac2(void) {//信息检索 float time1,time2; int i,flag=0,k; printf("请输入起始时间和终止时间\n"); scanf("%f%f",&time1,&time2); for(i=0,k=0;i=time1&&stu[i].time<=time2) { if(stu[i].kuangke_num>0) { strcpy(kuangke[k].name,stu[i].lesson_name); kuangke[k].kuangke_num=stu[i].kuangke_num; m=k; k++; } else flag++; } } if(flag==n) printf("\n输入信息有误\n\n"); else tongji2printf(); } void tongji(void) {//统计缺课情况 int k; do { printf("\n*******************************************************************\n"); printf("请选择统计项目\n\n"); printf("\n\t1.统计某段时间内,旷课学生姓名及旷课次数。\n"); printf("\n\t2.统计某段时间内,有学生旷课的课程及旷课人次。\n"); printf("\n\t3.退出统计菜单\n"); printf("\n*******************************************************************\n"); scanf("%d",&k); switch(k) { case 1:tongjifac1();break; case 2:tongjifac2();break; case 3:break; default:printf("\n\n无此菜单选项,请重新选择\n"); } }while(k!=3); } int main(void) { struct Student *head; int n; printf("\t\t\t欢迎使用学生考勤管理系统\n\n"); printf("\t\t\t请统计好要输入的学生的个数\n\n"); printf("\t\t\t并一次性输入所有的数据\n\n"); printf("\t\t\t注意;本系统只能暂时保存数据\n\n"); printf("\t\t\t所有数据不写入文档,请做好备份\n\n"); do { printf("********************************************************************************\n\n"); printf("\t\t\t1.创建学生缺课记录\n\n"); printf("\t\t\t2.修改学生缺课记录\n\n"); printf("\t\t\t3.查询学生缺课记录\n\n"); printf("\t\t\t4.统计学生缺课记录\n\n"); printf("\t\t\t5.退出统一考勤管理系统\n\n"); printf("********************************************************************************\n"); scanf("%d",&n); switch(n) { case 1:creat();break; case 2:xiugai();break; case 3:chaxun();break; case 4:tongji();break; case 5:break; default:printf("无该菜单选项,请重新选择。\n\n"); } }while(n!=5); }