录入信息需要先后顺序,不然可能有BUG
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include<conio.h>
#include <windows.h>
struct  student
{char name[16];            //姓名char ID[10];              //学号int classes;              //班级 char speciality[16];      //专业 char phone[16];           //电话int age;                  //年龄 int year;                 //出生日期--年int month;                //出生日期--月int day;                  //出生日期--日char dormitory[10];       //宿舍int QQ;                   //QQ int math[10];           //下标决定第几次考勤,数组内容是考勤情况(1-正常 2-迟到 3-早退 4-旷课)int english[10];int c[10];
}stu[100];
struct subject
{char course_number[10];   //课程编号  char course_name[10];     //课程名称int course_score;         //课程学分char teacher_name[10];    //任课教师 char time[16];           //上课时间 int class_times;          //上课次数char class_place[10];     //上课地点 struct student Student;
}sub[100];
int e=0;
int main();
void backup();
void student();
void student_information();
void student_information_enter();
void student_information_search();
void student_information_delete();
void student_information_enter_1();
void student_information_enter_2();
void student_information_search_all();
void student_information_search_ID();
void student_information_search_name();
void student_information_delete_ID();
void student_information_delete_name();
void student_attendance();
void student_attendance_enter();
void student_attendance_search();
void student_attendance_search_name();
void student_attendance_search_ID();
void course();
void course_enter();
void course_search();
void course_search_all();
void course_search_coursename();
void course_search_teachername();
void color(short x);
void color(short x) //自定义函根据参数改变颜色
{  if(x>=0 && x<=15)//参数在0-15的范围颜色  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x);    //只有一个参数,改变字体颜色   else//默认的颜色白色  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
}
int main()
{if(e==0){e++;printf("\n\n\n\n\n\t\t         ※欢迎进入学生考勤系统             \n");
color(10);printf("\n\n\n\t\t\t\t\t\t\t\tby xxxx大学xx级计科x班");color(16);Sleep(2000);}system("cls");char i;while(1){color(15);printf("\n\n\n\n\n");printf("\t\t丨                            丨\n");printf("\t\t丨           1.学生           丨\n");printf("\t\t丨                            丨\n");printf("\t\t丨           2.课程           丨\n");printf("\t\t丨                            丨\n");printf("\t\t丨           3.备份           丨\n");printf("\t\t丨                            丨\n");printf("\t\t丨           4.退出           丨\n");printf("\t\t丨                            丨\n");
color(16);i=getch();switch (i){case '1': student();                                      break;case '2': course();                                         break;case '3': backup();                                         break;case '4':                                                   break;      default: printf("\t\t你输入的数字错误, 请重新输入!\n");   break;}       if (i=='4'){system("cls");color(7);printf("\n\n\n\n\n\n\n\n\t\t\t即将退出退出系统,欢迎下次使用!\n");break;}}Sleep(1500);system("pause");exit(0);return 0;
}
void student()
{system("cls");char i;while(1){color(15);      printf("\n\n\n\n\n");printf("\t\t丨                            丨\n");printf("\t\t丨         1.学生信息         丨\n");printf("\t\t丨                            丨\n");printf("\t\t丨         2.学生考勤         丨\n");printf("\t\t丨                            丨\n");printf("\t\t丨         3.主菜单           丨\n");printf("\t\t丨                            丨\n");
color(16);i=getch();switch(i){case '1':student_information();                      break;//学生信息操作 case '2':student_attendance();                         break;//学生考勤操作case '3':                                               break;//返回主菜单default:printf("\t\t您输入的数字错误,请重新输入!\n");      break; //出错提示}if(i=='3')  break;}main();
}
void student_information()
{system("cls");char i;while(1){color(15);printf("\n\n\n\n\n");printf("\t\t丨                            丨\n");printf("\t\t丨        1.学生信息录入      丨\n");printf("\t\t丨                            丨\n");printf("\t\t丨        2.学生信息查询      丨\n");printf("\t\t丨                            丨\n");printf("\t\t丨        3.学生信息删除      丨\n");printf("\t\t丨                            丨\n");printf("\t\t丨        4.上一级菜单        丨\n");printf("\t\t丨                            丨\n");
color(16);i=getch();switch(i){case '1':student_information_enter();                 break;//学生信息录入 case '2':student_information_search();             break;//学生信息查询 case '3':student_information_delete();               break;//学生信息删除case '4':                                         break;//返回上一级菜单 default:printf("\t\t您输入的数字错误,请重新输入!\n"); break;//出错提示 }if(i=='4')   break;}student();
}
void student_information_enter()
{char i;system("cls");while(1){color(15);printf("\n\n\n\n\n");printf("\t\t丨                            丨\n");printf("\t\t丨  1.学生信息全部清零再录入  丨\n");printf("\t\t丨                            丨\n");printf("\t\t丨  2.学生信息追加录入        丨\n");printf("\t\t丨                            丨\n");printf("\t\t丨  3.上一级菜单              丨\n");printf("\t\t丨                            丨\n");
color(16);i=getch();switch(i){case '1':student_information_enter_1();                  break;//生信息全部清零再录入 case '2':student_information_enter_2();                    break;//学生信息追加录入case '3':                                                     break;//回上一级菜单 default:printf("\t\t您输入的数字错误,请重新输入!\n");        break;//出错提示}if(i=='3')   break;}student_information();
}
void student_information_enter_1()
{int i;char k,j;FILE *fp;system("cls");printf("\n\n\n\n\n");if((fp=fopen("ARecord.txt","w"))==NULL){printf("\t\t文件打开失败!\n");system("pause");student_information_enter();}for(i=0,k='1';k=='1';i++)//k来判断是否继续录入学生信息 {color(11);      for(j='0';j=='0';)//j来判断是否确定学生信息 {   printf("\t\t请输入第%d个学生的姓名:",i+1);scanf("%s",&stu[i].name);printf("\t\t请输入第%d个学生的学号:",i+1);scanf("%s",&stu[i].ID);printf("\t\t请输入第%d个学生的班级:",i+1);scanf("%d",&stu[i].classes);printf("\t\t请输入第%d个学生的专业:",i+1);scanf("%s",&stu[i].speciality);printf("\t\t请输入第%d个学生的电话:",i+1);scanf("%s",&stu[i].phone);printf("\t\t请输入第%d个学生的年龄:",i+1);scanf("%d",&stu[i].age);printf("\t\t请输入第%d个学生的出生日期(格式:年-月-日例如:2020 2 2):", i + 1);scanf("%d%d%d", &stu[i].year, &stu[i].month, &stu[i].day);printf("\t\t请输入第%d个学生的宿舍:",i+1);scanf("%s",&stu[i].dormitory);printf("\t\t请输入第%d个学生的QQ:",i+1);scanf("%d",&stu[i].QQ);
color(14);printf("\t\t请确定信息 (重输-0 确定-1):\n");
color(16);j=getch();}if(fwrite(&stu[i], sizeof(struct student),1,fp)!=1){printf("文件写入错误\n");system("pause");student_information_enter();}
color(14);printf("\t\t是否继续输入下一个学生的信息  终止-0 继续-1:\n\n");
color(16);k=getch();}
color(16);fclose(fp);
color(4);printf("\n\t\t保存成功\n");
color(16);Sleep(1000);student_information_enter();
}
void student_information_enter_2()
{int i,t,x,m,f;char j,k;char student_name[16];FILE *fp;system("cls");printf("\n\n\n\n\n");if((fp=fopen("ARecord.txt","r"))==NULL){printf("\t\t文件打开失败!\n");system("pause");student_information_enter();}for (m=0;feof(fp)==0;m++){fread(&stu[m], sizeof(struct student), 1, fp);  //读取文件内容}
color(11);for(i=m-1,k='1';k=='1';i++)//k来判断是否继续输入学生信息,i是读取数据之后数组的最后一个+1 {for(j='0',t=1;j=='0';)//j来判断是否确定学生信息 {   printf("\t\t请输入第%d个学生的姓名:",i+1);scanf("%s",&student_name);for(x=0;x<m;x++){t=strcmp(stu[x].name,student_name);//对输入的学生姓名进行比较,得到下标 if(t==0){printf("该生已存在!\n");//该学生已存在,返回 break;}            }strcpy(stu[i].name,student_name);printf("\t\t请输入第%d个学生的学号:",i+1);scanf("%s",&stu[i].ID);printf("\t\t请输入第%d个学生的班级:",i+1);scanf("%d",&stu[i].classes);printf("\t\t请输入第%d个学生的专业:",i+1);scanf("%s",&stu[i].speciality);printf("\t\t请输入第%d个学生的电话:",i+1);scanf("%s",&stu[i].phone);printf("\t\t请输入第%d个学生的年龄:",i+1);scanf("%d",&stu[i].age);printf("\t\t请输入第%d个学生的出生日期(格式:年-月-日例如:2020 2 2):", i + 1);scanf("%d%d%d", &stu[i].year, &stu[i].month, &stu[i].day);printf("\t\t请输入第%d个学生的宿舍:",i+1);scanf("%s",&stu[i].dormitory);printf("\t\t请输入第%d个学生的QQ:",i+1);scanf("%d",&stu[i].QQ);
color(14);printf("\t\t请确定信息 (重输-0 确定-1):\n");
color(16);j=getch();}if(t!=0){if((fp=fopen("ARecord.txt","w"))==NULL){printf("\t\t文件打开失败!\n");system("pause");         student_information_enter();}for(f=0;f<i;f++){if(fwrite(&stu[f], sizeof(struct student),1,fp)!=1){printf("\t\t文件写入错误\n");system("pause");student_information_enter();}}}
color(14);printf("\t\t是否继续输入下一个学生的信息  终止-0 继续-1:\n\n");k=getch();
color(16);}
color(16);fclose(fp);
color(4);printf("\n\t\t保存成功\n");
color(16);Sleep(1000);student_information_enter();
}
void student_information_search()
{char i;system("cls");while(1){color(15);printf("\n\n\n\n\n");printf("\t\t丨                            丨\n");printf("\t\t丨       1.按学号查询         丨\n");printf("\t\t丨                            丨\n");printf("\t\t丨       2.按姓名查询         丨\n");printf("\t\t丨                            丨\n");printf("\t\t丨       3.查询所有人         丨\n");printf("\t\t丨                            丨\n");printf("\t\t丨       4.上一级菜单         丨\n");printf("\t\t丨                            丨\n");
color(16);i=getch();switch(i)  {case '1':student_information_search_ID();           break;//按学号查询 case '2':student_information_search_name();             break;//按姓名查询 case '3':student_information_search_all();             break;//查询所有人case '4':                                             break;//返回上一级菜单 default:printf("\t\t您输入的数字错误,请重新输入!\n");     break;//出错提示 }if(i=='4')   break;}student_information();
}
void student_information_search_name()
{system("cls");printf("\n\n\n\n\n");int i=0,j=0,t=1,k;char x='1';FILE *fp;char student_name[16] = { 0 };if ((fp = fopen("ARecord.txt", "r")) == NULL)   //将文件内容读入内存{printf("\t\t文件打开失败!\n");system("pause");student_information_search();}for (i=0;feof(fp)==0;i++){fread(&stu[i], sizeof(struct student), 1, fp);  //读取文件内容}while(x!='0'){color(6);printf("\t\t请输入需要查询学生的姓名:");scanf("%s", &student_name);for (j=0,t=1;j<i;j++){t=strcmp(stu[j].name,student_name);if(t==0){break;  }   }if (t==0)   //查询成功{printf("姓名\t\t学号\t\t班级\t\t专业\t\t电话\t\t年龄\t\t生日\t\t宿舍\t\tQQ\n");printf("%s     \t%s \t%d \t\t%s \t\t%s \t%d \t\t%d.%d.%d \t%s \t%d\n",stu[j].name,stu[j].ID,stu[j].classes,stu[j].speciality,stu[j].phone,stu[j].age,stu[j].year,stu[j].month,stu[j].day,stu[j].dormitory,stu[j].QQ);}else{color(12);printf("\t\t未找到该学生信息!\n");
color(16);}
color(14);printf("\t\t继续-1,退出-0\n");
color(16);x=getch(); }
color(16);fclose(fp);student_information_search();
}
void student_information_search_ID()
{system("cls");printf("\n\n\n\n\n");int i=0,j=0,t=1;char x='1';FILE *fp;char student_ID[10] = { 0 };if ((fp = fopen("ARecord.txt", "r")) == NULL)   //将文件内容读入内存{printf("\t\t文件打开失败!\n");system("pause");student_information_search();}for (i=0;feof(fp)==0;i++){fread(&stu[i], sizeof(struct student), 1, fp);  //读取文件内容}while(x!='0'){color(6);printf("\t\t请输入需要查询学生的学号:");scanf("%s", &student_ID);for (j=0,t=1;j<i;j++){t=strcmp(stu[j].ID,student_ID); if(t==0){break;   }   }if (t==0)   //查询成功{printf("姓名\t\t学号\t\t班级\t\t专业\t\t电话\t\t年龄\t\t生日\t\t宿舍\t\tQQ\n");printf("%s     \t%s \t%d \t\t%s \t\t%s \t%d \t\t%d.%d.%d \t%s \t%d\n",stu[j].name,stu[j].ID,stu[j].classes,stu[j].speciality,stu[j].phone,stu[j].age,stu[j].year,stu[j].month,stu[j].day,stu[j].dormitory,stu[j].QQ);}else{color(12);printf("\t\t未找到该学生信息!\n");
color(16);}
color(14);printf("\t\t继续-1,退出-0\n");
color(16);x=getch();}
color(16);fclose(fp);student_information_search();
}
void student_information_search_all()
{system("cls");printf("\n\n\n\n\n");int i,j;FILE *fp;if ((fp = fopen("ARecord.txt", "r")) == NULL)   //将文件内容读入内存{printf("\t\t文件打开失败!\n");system("pause");student_information_search();}for (i=0;feof(fp)==0;i++){fread(&stu[i], sizeof(struct student), 1, fp);  //读取文件内容}
color(6);printf("姓名\t\t学号\t\t班级\t\t专业\t\t电话\t\t年龄\t\t生日\t\t宿舍\t\tQQ\n");for(j=0;j<i;j++)printf("%s     \t%s \t%d \t\t%s \t\t%s \t%d \t\t%d.%d.%d \t%s \t%d\n",stu[j].name,stu[j].ID,stu[j].classes,stu[j].speciality,stu[j].phone,stu[j].age,stu[j].year,stu[j].month,stu[j].day,stu[j].dormitory,stu[j].QQ);
color(16);system("pause");student_information_search();
}void student_information_delete()
{system("cls");char i;while(1){color(15);printf("\n\n\n\n\n");printf("\t\t丨                            丨\n");printf("\t\t丨        1.按姓名删除        丨\n");printf("\t\t丨                            丨\n");printf("\t\t丨        2.按学号删除        丨\n");printf("\t\t丨                            丨\n");printf("\t\t丨        3.上一级菜单        丨\n");printf("\t\t丨                            丨\n");
color(16);i=getch();switch(i){case '1':student_information_delete_name();                break;//按姓名删除case '2':student_information_delete_ID();                    break;//按学号删除  case '3':                                                  break;//返回上一级菜单 default:printf("\t\t您输入的数字错误,请重新输入!\n");           break; //出错提示}if(i=='3')    break;}student_information();
}
void student_information_delete_name()
{system("cls");printf("\n\n\n\n\n");FILE *fp;int i,j,t,f;char p,x;char student_name[16];while(1){if((fp=fopen("ARecord.txt","r"))==NULL){printf("\t\t文件打开失败!\n");system("pause");student_information_delete();}for(i=0;feof(fp)==0;i++){fread(&stu[i],sizeof(struct student),1,fp);}color(11);printf("\t\t请输入要删除信息的学生姓名:");
color(16);scanf("%s",&student_name);for(j=0,t=1;j<i;j++){t=strcmp(stu[j].name,student_name);if(t==0){break;}}if(t==0){color(12);printf("\t\t请确认你是否要删除信息 确定-1 取消-0\n");
color(16);p=getch();if(p=='1'){for(;j<i-1;j++){stu[j]=stu[j+1];  }if((fp=fopen("ARecord.txt","w"))==NULL){printf("\t\t文件打开失败!\n");system("pause");student_information();}for(f=0;f<i-2;f++){if(fwrite(&stu[f], sizeof(struct student),1,fp)!=1){printf("\t\t文件写入错误\n");system("pause");student_information_delete();}}
color(12);printf("\t\t信息删除成功\n");}else{printf("\t\t你取消了删除操作\n");
color(16);} }else{color(11);printf("\t\t该生不存在\n");
color(16);}
color(14);printf("\t\t是否继续删除信息 继续-1 退出-0\n");
color(16);x=getch();if(x=='0')break;}fclose(fp);student_information_delete();
}
void student_information_delete_ID()
{system("cls");printf("\n\n\n\n\n");FILE *fp;int i,j,t,f;char x,p;char student_ID[16];while(1){if((fp=fopen("ARecord.txt","r"))==NULL){printf("\t\t文件打开失败!\n");system("pause");student_information_delete();}for(i=0;feof(fp)==0;i++){fread(&stu[i],sizeof(struct student),1,fp);}
color(11);printf("\t\t请输入要删除信息的学生学号:");
color(16);scanf("%s",&student_ID);for(j=0,t=1;j<i;j++){t=strcmp(stu[j].ID,student_ID);if(t==0){break;}}if(t==0){color(12);printf("\t\t请确认你是否要删除信息 确定-1 取消-0\n");
color(26);p=getch();if(p=='1'){for(;j<i-1;j++)stu[j]=stu[j+1];    if((fp=fopen("ARecord.txt","w"))==NULL){printf("\t\t文件打开失败!\n");system("pause");student_information_delete();}for(f=0;f<i-2;f++){if(fwrite(&stu[f], sizeof(struct student),1,fp)!=1){printf("\t\t文件写入错误\n");system("pause");student_information_delete();}}
color(12);printf("\t\t信息删除成功\n");}else{printf("\t\t你取消了删除操作\n");
color(16);} }else{color(11);printf("\t\t该生不存在\n");
color(16);}
color(14);printf("\t\t是否继续删除信息 继续-1 退出-0\n");
color(16);x=getch();if(x=='0')break;}fclose(fp);student_information_delete();
}
void student_attendance()
{system("cls");char i;while(1){color(15);printf("\n\n\n\n\n");printf("\t\t丨                            丨\n");printf("\t\t丨         1.考勤录入         丨\n");printf("\t\t丨                            丨\n");printf("\t\t丨         2.考勤查询         丨\n");printf("\t\t丨                            丨\n");printf("\t\t丨         3.上一级菜单       丨\n");printf("\t\t丨                            丨\n");
color(16);i=getch();switch(i){case '1':student_attendance_enter();                             break;//考勤录入 case '2':student_attendance_search();                        break;//考勤查询case '3':                                                     break;//上一级菜单default:printf("\t\t您输入的数字错误,请重新输入!\n");          break;//出错提示}if(i=='3')   break;}student();
}
void student_attendance_enter()
{int i,j,k,l,t,f,s;char h,g,n,x='1';FILE *fp;char student_name[16]; if((fp=fopen("ARecord.txt","r"))==NULL){printf("\t\t文件打开失败!\n");system("pause");student_attendance();}for (i=0;feof(fp)==0;i++){fread(&stu[i], sizeof(struct student), 1, fp);  //读取文件内容}while(1){system("cls");
color(15);printf("\n\n\n\n\n");printf("\t\t丨                            丨\n");printf("\t\t丨          1.高数            丨\n");printf("\t\t丨                            丨\n");printf("\t\t丨          2.英语            丨\n");printf("\t\t丨                            丨\n");printf("\t\t丨          3.c程序           丨\n");printf("\t\t丨                            丨\n");printf("\t\t丨          4.上一级菜单      丨\n");printf("\t\t丨                            丨\n");
color(16);n=getch();switch(n){case '1':
color(11);printf("\t\t请输入学生姓名:");
color(16);scanf("%s",&student_name);for (j=0,t=1;j<i;j++){t=strcmp(stu[j].name,student_name);if(t==0){break;    }   }if (t==0)   //查询成功{for(h='1';h=='1';){for(g='0';g=='0';){color(11);printf("\t\t请输入这是第几次考勤:");scanf("%d",&l);printf("\t\t请输入考勤情况(1-正常 2-迟到 3-早退 4-旷课):");
color(16);scanf("%d",&stu[j].math[l-1]);
color(14);printf("\t\t重输-0 确定-1\n");g=getch();}printf("\t\t是否继续该生的考勤记录(继续-1 退出-0)\n");
color(16);h=getch();}}else{color(11);printf("\t\t未找到该学生信息!\n");
color(16);}if(t==0){if((fp=fopen("ARecord.txt","w"))==NULL){printf("\t\t文件打开失败!\n");system("pause");student_attendance();}for(f=0;f<i;f++){if(fwrite(&stu[f], sizeof(struct student),1,fp)!=1){printf("\t\t文件写入错误\n");system("pause");student_attendance();}}}break;case '2':
color(11);printf("\t\t请输入学生姓名:");
color(16);scanf("%s",&student_name);for (j=0,t=1;j<i;j++){t=strcmp(stu[j].name,student_name);if(t==0){break;    }   }if (t==0)   //查询成功{for(h='1';h=='1';){for(g='0';g=='0';){color(11);printf("\t\t请输入这是第几次考勤:");scanf("%d",&l);printf("\t\t请输入考勤情况(1-正常 2-迟到 3-早退 4-旷课):");
color(16);scanf("%d",&stu[j].english[l-1]);
color(14);printf("\t\t重输-0 确定-1\n");g=getch();}printf("\t\t是否继续该生的考勤记录(继续-1 退出-0)\n");
color(16);h=getch();}}else{color(11);printf("\t\t未找到该学生信息!\n");
color(16);}if(t==0){if((fp=fopen("ARecord.txt","w"))==NULL){printf("\t\t文件打开失败!\n");system("pause");student_attendance();}for(f=0;f<i;f++){if(fwrite(&stu[f], sizeof(struct student),1,fp)!=1){printf("\t\t文件写入错误\n");system("pause");student_attendance();}}}break;case '3':
color(11);printf("\t\t请输入学生姓名:");
color(16);scanf("%s",&student_name);for (j=0,t=1;j<i;j++){t=strcmp(stu[j].name,student_name);if(t==0){break;    }   }if (t==0)   //查询成功{for(h='1';h=='1';){for(g='0';g=='0';){color(11);printf("\t\t请输入这是第几次考勤:");scanf("%d",&l);printf("\t\t请输入考勤情况(1-正常 2-迟到 3-早退 4-旷课):");
color(16);scanf("%d",&stu[j].c[l-1]);
color(14);printf("\t\t重输-0 确定-1\n");g=getch();}printf("\t\t是否继续该生的考勤记录(继续-1 退出-0)\n");
color(16);h=getch();}}else{color(11);printf("\t\t未找到该学生信息!\n");
color(16);}if(t==0){if((fp=fopen("ARecord.txt","w"))==NULL){printf("\t\t文件打开失败!\n");system("pause");student_attendance();}for(f=0;f<i;f++){if(fwrite(&stu[f], sizeof(struct student),1,fp)!=1){printf("\t\t文件写入错误\n");system("pause");student_attendance();}}}break;case '4':break;   default:printf("\t\t你输入的数字错误,请重新输入!\n");}if(n=='4')break;}fclose(fp);student_attendance();
}
void student_attendance_search()
{char i;system("cls");while(1){color(15);printf("\n\n\n\n\n");printf("\t\t丨                            丨\n");printf("\t\t丨        1.按姓名查询        丨\n");printf("\t\t丨                            丨\n");printf("\t\t丨        2.按学号查询        丨\n");printf("\t\t丨                            丨\n");printf("\t\t丨        3.上一级菜单        丨\n");printf("\t\t丨                            丨\n");
color(16);i=getch();switch(i){case '1':student_attendance_search_name();                       break;//学生信息操作 case '2':student_attendance_search_ID();                       break;//学生考勤操作case '3':                                                       break;//返回上一级菜单default:printf("\t\t您输入的数字错误,请重新输入!\n");                break; //出错提示}if(i=='3')  break;}student_attendance();
}
void student_attendance_search_name()
{int i,j,m,t;char l,n,x='1';int a,b,c,d;FILE *fp;char student_name[16]; int classes;if((fp=fopen("course.txt","r"))==NULL){printf("\t\t文件打开失败!\n");system("pause");student_attendance_search();}for (i=0;feof(fp)==0;i++){fread(&sub[i], sizeof(struct subject), 1, fp);  //读取文件内容}if((fp=fopen("ARecord.txt","r"))==NULL){printf("\t\t文件打开失败!\n");system("pause");student_attendance_search();;}for (i=0;feof(fp)==0;i++){fread(&stu[i], sizeof(struct student), 1, fp);  //读取文件内容} while(x!=0){system("cls");
color(15);printf("\n\n\n\n\n");printf("\t\t丨                            丨\n"); printf("\t\t丨 1.显示某人某门考勤信息     丨\n"); printf("\t\t丨                            丨\n"); printf("\t\t丨 2.显示某人所有课程考勤信息 丨\n"); printf("\t\t丨                            丨\n"); printf("\t\t丨 3.显示某班所有人考勤情况   丨\n"); printf("\t\t丨                            丨\n");   printf("\t\t丨 0.返回上一级菜单           丨\n");printf("\t\t丨                            丨\n");
color(16);n=getch();switch(n)  {case '1':
color(15);system("cls");loop:printf("\n\n\n\n\n");printf("\t\t丨                            丨\n"); printf("\t\t丨           1.高数           丨\n"); printf("\t\t丨                            丨\n"); printf("\t\t丨           2.英语           丨\n"); printf("\t\t丨                            丨\n"); printf("\t\t丨           3.c程序          丨\n"); printf("\t\t丨                            丨\n");   printf("\t\t丨      0.返回上一级菜单      丨\n");printf("\t\t丨                            丨\n");
color(16);l=getch();switch(l){case '1':a=0;b=0;c=0;d=0;
color(6);printf("\t\t请输入该生姓名:");scanf("%s",&student_name);for (j=0,t=1;j<i;j++){t=strcmp(stu[j].name,student_name);if(t==0){break;    }   }if (t==0)   //查询成功{getchar();if(stu[j].math[0]=='\0'){printf("\t\t该生暂无考勤记录\n");break;}printf("姓名\t学号\t\t课程编号\t课程名称\t考勤违纪\t第几次课 \n");for(m=0;stu[j].math[m]!='\0';m++){if(stu[j].math[m]==1)printf("%s\t%s\t%s\t\t%s\t\t正常\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[0].course_number,sub[0].course_name,m+1);if(stu[j].math[m]==2)printf("%s\t%s\t%s\t\t%s\t\t迟到\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[0].course_number,sub[0].course_name,m+1);if(stu[j].math[m]==3)printf("%s\t%s\t%s\t\t%s\t\t早退\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[0].course_number,sub[0].course_name,m+1);if(stu[j].math[m]==4)printf("%s\t%s\t%s\t\t%s\t\t旷课\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[0].course_number,sub[0].course_name,m+1);}}else{printf("\t\t未找到该学生信息!\n");}break;case '2':a=0;b=0;c=0;d=0;printf("\t\t请输入该生姓名:");scanf("%s",&student_name);for (j=0,t=1;j<i;j++){t=strcmp(stu[j].name,student_name);if(t==0){break; }   }if (t==0)   //查询成功{getchar();if(stu[j].math[0]=='\0'){printf("\t\t该生暂无考勤记录\n");break;}printf("姓名\t学号\t\t课程编号\t课程名称\t考勤违纪\t第几次课 \n");for(m=0;stu[j].english[m]!='\0';m++){if(stu[j].english[m]==1){a++;printf("%s\t%s\t%s\t\t%s\t\t正常\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[1].course_number,sub[1].course_name,m+1);}if(stu[j].english[m]==2){b++;printf("%s\t%s\t%s\t\t%s\t\t迟到\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[1].course_number,sub[1].course_name,m+1);}if(stu[j].english[m]==3){c++;printf("%s\t%s\t%s\t\t%s\t\t早退\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[1].course_number,sub[1].course_name,m+1);}if(stu[j].english[m]==4){d++;printf("%s\t%s\t%s\t\t%s\t\t旷课\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[1].course_number,sub[1].course_name,m+1);}}printf("各类违规记录:总考勤次数:%d  正常:%d 迟到:%d 早退:%d 旷课:%d\n",a+b+c+d,a,b,c,d);}else{printf("\t\t未找到该学生信息!\n");}break;case '3':a=0;b=0;c=0;d=0;printf("\t\t请输入该生姓名:");scanf("%s",&student_name);for (j=0,t=1;j<i;j++){t=strcmp(stu[j].name,student_name);if(t==0){break;    }   }if (t==0)   //查询成功{getchar();if(stu[j].math[0]=='\0'){printf("\t\t该生暂无考勤记录\n");break;}printf("姓名\t学号\t\t课程编号\t课程名称\t考勤违纪\t第几次课 \n");for(m=0;stu[j].c[m]!='\0';m++){if(stu[j].c[m]==1){a++;printf("%s\t%s\t%s\t\t%s\t\t正常\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[2].course_number,sub[2].course_name,m+1);}if(stu[j].c[m]==2){b++;printf("%s\t%s\t%s\t\t%s\t\t迟到\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[2].course_number,sub[2].course_name,m+1);}if(stu[j].c[m]==3){c++;printf("%s\t%s\t%s\t\t%s\t\t早退\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[2].course_number,sub[2].course_name,m+1);}if(stu[j].c[m]==4){d++;printf("%s\t%s\t%s\t\t%s\t\t旷课\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[2].course_number,sub[2].course_name,m+1);}}printf("各类违规记录:总考勤次数:%d  正常:%d 迟到:%d 早退:%d 旷课:%d\n",a+b+c+d,a,b,c,d);}else{printf("\t\t未找到该学生信息!\n");}break;case '0':goto loop;break;default:printf("\t\t你输入的课程名称错误!\n");break;}break;case '2':printf("\t\t请输入该生姓名:");scanf("%s",&student_name);for (j=0,t=1;j<i;j++){t=strcmp(stu[j].name,student_name);if(t==0){break;    }   }if (t==0)   //查询成功{getchar();if(stu[j].math[0]=='\0'){printf("\t\t该生暂无考勤记录\n");break;}a=0;b=0;c=0;d=0;printf("姓名\t学号\t\t课程编号\t课程名称\t考勤违纪\t第几次课 \n");for(m=0;stu[j].math[m]!='\0';m++){if(stu[j].math[m]==1){a++;printf("%s\t%s\t%s\t\t%s\t\t正常\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[0].course_number,sub[0].course_name,m+1);}if(stu[j].math[m]==2){b++;printf("%s\t%s\t%s\t\t%s\t\t迟到\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[0].course_number,sub[0].course_name,m+1);}if(stu[j].math[m]==3){c++;printf("%s\t%s\t%s\t\t%s\t\t早退\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[0].course_number,sub[0].course_name,m+1);}if(stu[j].math[m]==4){d++;printf("%s\t%s\t%s\t\t%s\t\t旷课\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[0].course_number,sub[0].course_name,m+1);}}printf("各类违规记录:总考勤次数:%d  正常:%d 迟到:%d 早退:%d 旷课:%d\n\n",a+b+c+d,a,b,c,d);a=0;b=0;c=0;d=0;printf("姓名\t学号\t\t课程编号\t课程名称\t考勤违纪\t第几次课 \n");for(m=0;stu[j].english[m]!='\0';m++){if(stu[j].english[m]==1){a++;printf("%s\t%s\t%s\t\t%s\t\t正常\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[1].course_number,sub[1].course_name,m+1);}if(stu[j].english[m]==2){b++;printf("%s\t%s\t%s\t\t%s\t\t迟到\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[1].course_number,sub[1].course_name,m+1);}if(stu[j].english[m]==3){c++;printf("%s\t%s\t%s\t\t%s\t\t早退\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[1].course_number,sub[1].course_name,m+1);}if(stu[j].english[m]==4){d++;printf("%s\t%s\t%s\t\t%s\t\t旷课\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[1].course_number,sub[1].course_name,m+1);}}printf("各类违规记录:总考勤次数:%d  正常:%d 迟到:%d 早退:%d 旷课:%d\n\n",a+b+c+d,a,b,c,d);a=0;b=0;c=0;d=0;printf("姓名\t学号\t\t课程编号\t课程名称\t考勤违纪\t第几次课 \n");for(m=0;stu[j].c[m]!='\0';m++){if(stu[j].c[m]==1){a++;printf("%s\t%s\t%s\t\t%s\t\t正常\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[2].course_number,sub[2].course_name,m+1);}if(stu[j].c[m]==2){b++;printf("%s\t%s\t%s\t\t%s\t\t迟到\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[2].course_number,sub[2].course_name,m+1);}if(stu[j].c[m]==3){c++;printf("%s\t%s\t%s\t\t%s\t\t早退\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[2].course_number,sub[2].course_name,m+1);}if(stu[j].c[m]==4){d++;printf("%s\t%s\t%s\t\t%s\t\t旷课\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[2].course_number,sub[2].course_name,m+1);}}printf("各类违规记录:总考勤次数:%d  正常:%d 迟到:%d 早退:%d 旷课:%d\n",a+b+c+d,a,b,c,d);}else{printf("\t\t未找到该学生信息!\n");} break;case '3':printf("\t\t请输入查询班级:");scanf("%d",&classes);for (j=0,t=0;j<i;j++){if(stu[j].classes==classes){t++;a=0;b=0;c=0;d=0;printf("姓名\t学号\t\t课程编号\t课程名称\t考勤违纪\t第几次课 \n");for(m=0;stu[j].math[m]!='\0';m++){if(stu[j].math[m]==1){a++;printf("%s\t%s\t%s\t\t%s\t\t正常\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[0].course_number,sub[0].course_name,m+1);}if(stu[j].math[m]==2){b++;printf("%s\t%s\t%s\t\t%s\t\t迟到\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[0].course_number,sub[0].course_name,m+1);}if(stu[j].math[m]==3){c++;printf("%s\t%s\t%s\t\t%s\t\t早退\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[0].course_number,sub[0].course_name,m+1);}if(stu[j].math[m]==4){d++;printf("%s\t%s\t%s\t\t%s\t\t旷课\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[0].course_number,sub[0].course_name,m+1);}}printf("各类违规记录:总考勤次数:%d  正常:%d 迟到:%d 早退:%d 旷课:%d\n",a+b+c+d,a,b,c,d);a=0;b=0;c=0;d=0;printf("姓名\t学号\t\t课程编号\t课程名称\t考勤违纪\t第几次课 \n");for(m=0;stu[j].english[m]!='\0';m++){if(stu[j].english[m]==1){a++;printf("%s\t%s\t%s\t\t%s\t\t正常\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[1].course_number,sub[1].course_name,m+1);}if(stu[j].english[m]==2){b++;printf("%s\t%s\t%s\t\t%s\t\t迟到\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[1].course_number,sub[1].course_name,m+1);}if(stu[j].english[m]==3){c++;printf("%s\t%s\t%s\t\t%s\t\t早退\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[1].course_number,sub[1].course_name,m+1);}if(stu[j].english[m]==4){d++;printf("%s\t%s\t%s\t\t%s\t\t旷课\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[1].course_number,sub[1].course_name,m+1);}}printf("各类违规记录:总考勤次数:%d  正常:%d 迟到:%d 早退:%d 旷课:%d\n",a+b+c+d,a,b,c,d);a=0;b=0;c=0;d=0;printf("姓名\t学号\t\t课程编号\t课程名称\t考勤违纪\t第几次课 \n");for(m=0;stu[j].c[m]!='\0';m++){if(stu[j].c[m]==1){a++;printf("%s\t%s\t%s\t\t%s\t\t正常\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[2].course_number,sub[2].course_name,m+1);}if(stu[j].c[m]==2){b++;printf("%s\t%s\t%s\t\t%s\t\t迟到\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[2].course_number,sub[2].course_name,m+1);}if(stu[j].c[m]==3){c++;printf("%s\t%s\t%s\t\t%s\t\t早退\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[2].course_number,sub[2].course_name,m+1);}if(stu[j].c[m]==4){d++;printf("%s\t%s\t%s\t\t%s\t\t旷课\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[2].course_number,sub[2].course_name,m+1);}}printf("各类违规记录:总考勤次数:%d  正常:%d 迟到:%d 早退:%d 旷课:%d\n",a+b+c+d,a,b,c,d);}}if(t==0)printf("\t\t暂无该班级\n");break;case '0':break;default:printf("\t\t你输入的数字错误!\n");break;
color(16);}if(n=='0')break;
color(14);printf("\t\t继续-1  退出-0");
color(16);x=getch();}fclose(fp);student_attendance_search();
}
void student_attendance_search_ID()
{int i,j,m,t;char l,n,x='1';int a,b,c,d;FILE *fp;char student_number[16];int classes; if((fp=fopen("course.txt","r"))==NULL){printf("\t\t文件打开失败!\n");system("pause");student_attendance_search();}for (i=0;feof(fp)==0;i++){fread(&sub[i], sizeof(struct subject), 1, fp);  //读取文件内容}if((fp=fopen("ARecord.txt","r"))==NULL){printf("\t\t文件打开失败!\n");system("pause");student_attendance_search();}for (i=0;feof(fp)==0;i++){fread(&stu[i], sizeof(struct student), 1, fp);  //读取文件内容}while(x!='0'){a=0;b=0;c=0;d=0;system("cls");
color(15);printf("\n\n\n\n\n");printf("\t\t丨                            丨\n"); printf("\t\t丨 1.显示某人某门考勤信息     丨\n"); printf("\t\t丨                            丨\n"); printf("\t\t丨 2.显示某人所有课程考勤信息 丨\n"); printf("\t\t丨                            丨\n"); printf("\t\t丨 3.显示某班所有人考勤情况   丨\n"); printf("\t\t丨                            丨\n");   printf("\t\t丨 0.返回上一级菜单           丨\n");printf("\t\t丨                            丨\n");
color(16);n=getch();switch(n){case '1':
color(15);system("cls");loop:printf("\n\n\n\n\n");printf("\t\t丨                            丨\n"); printf("\t\t丨           1.高数           丨\n"); printf("\t\t丨                            丨\n"); printf("\t\t丨           2.英语           丨\n"); printf("\t\t丨                            丨\n"); printf("\t\t丨           3.c程序          丨\n"); printf("\t\t丨                            丨\n");   printf("\t\t丨      0.返回上一级菜单      丨\n");printf("\t\t丨                            丨\n");
color(16);l=getch();switch(l){case '1':a=0;b=0;c=0;d=0;
color(6);printf("\t\t请输入该生学号:");scanf("%s",&student_number);for (j=0,t=1;j<i;j++){t=strcmp(stu[j].ID,student_number);if(t==0){break;  }   }if (t==0)   //查询成功{getchar();if(stu[j].math[0]=='\0'){printf("\t\t该生暂无考勤记录\n");break;}printf("姓名\t学号\t\t课程编号\t课程名称\t考勤违纪\t第几次课 \n");for(m=0;stu[j].math[m]!='\0';m++){if(stu[j].math[m]==1){a++;printf("%s\t%s\t%s\t\t%s\t\t正常\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[0].course_number,sub[0].course_name,m+1);}if(stu[j].math[m]==2){b++;printf("%s\t%s\t%s\t\t%s\t\t迟到\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[0].course_number,sub[0].course_name,m+1);}if(stu[j].math[m]==3){c++;printf("%s\t%s\t%s\t\t%s\t\t早退\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[0].course_number,sub[0].course_name,m+1);}if(stu[j].math[m]==4){d++;printf("%s\t%s\t%s\t\t%s\t\t旷课\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[0].course_number,sub[0].course_name,m+1);}}printf("各类违规记录:总考勤次数:%d  正常:%d 迟到:%d 早退:%d 旷课:%d\n",a+b+c+d,a,b,c,d);}else{printf("\t\t未找到该学生信息!\n");}break;case '2':a=0;b=0;c=0;d=0;printf("\t\t请输入该生学号:");scanf("%s",&student_number);for (j=0,t=1;j<i;j++){t=strcmp(stu[j].ID,student_number);if(t==0){break; }   }if (t==0)   //查询成功{getchar();if(stu[j].math[0]=='\0'){printf("\t\t该生暂无考勤记录\n");break;}printf("姓名\t学号\t\t课程编号\t课程名称\t考勤违纪\t第几次课 \n");for(m=0;stu[j].english[m]!='\0';m++){if(stu[j].english[m]==1){a++;printf("%s\t%\t%s\t\t%s\t\t正常\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[1].course_number,sub[1].course_name,m+1);}if(stu[j].english[m]==2){b++;printf("%s\t%s\t%s\t\t%s\t\t迟到\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[1].course_number,sub[1].course_name,m+1);}if(stu[j].english[m]==3){c++;printf("%s\t%s\t%s\t\t%s\t\t早退\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[1].course_number,sub[1].course_name,m+1);}if(stu[j].english[m]==4){d++;printf("%s\t%s\t%s\t\t%s\t\t旷课\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[1].course_number,sub[1].course_name,m+1);}}printf("各类违规记录:总考勤次数:%d  正常:%d 迟到:%d 早退:%d 旷课:%d\n",a+b+c+d,a,b,c,d);}else{printf("\t\t未找到该学生信息!\n");}break;case '3':a=0;b=0;c=0;d=0;printf("\t\t请输入该生学号:");scanf("%s",&student_number);for (j=0,t=1;j<i;j++){t=strcmp(stu[j].ID,student_number);if(t==0){break;   }   }if (t==0)   //查询成功{getchar();if(stu[j].math[0]=='\0'){printf("\t\t该生暂无考勤记录\n");break;}printf("姓名\t学号\t\t课程编号\t课程名称\t考勤违纪\t第几次课 \n");for(m=0;stu[j].c[m]!='\0';m++){if(stu[j].c[m]==1){a++;printf("%s\t%s\t%s\t\t%s\t\t正常\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[2].course_number,sub[2].course_name,m+1);}if(stu[j].c[m]==2){b++;printf("%s\t%s\t%s\t\t%s\t\t迟到\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[2].course_number,sub[2].course_name,m+1);}if(stu[j].c[m]==3){c++;printf("%s\t%s\t%s\t\t%s\t\t早退\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[2].course_number,sub[2].course_name,m+1);}if(stu[j].c[m]==4){d++;printf("%s\t%s\t%s\t\t%s\t\t旷课\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[2].course_number,sub[2].course_name,m+1);}}printf("各类违规记录:总考勤次数:%d  正常:%d 迟到:%d 早退:%d 旷课:%d\n",a+b+c+d,a,b,c,d);}else{printf("\t\t未找到该学生信息!\n");}break;case 0:goto loop;break;default:printf("\t\t你输入的课程名称错误!\n");break;}break;case '2':   printf("\t\t请输入该生学号:");scanf("%s",&student_number);for (j=0,t=1;j<i;j++){t=strcmp(stu[j].ID,student_number);if(t==0){break;   }   }if (t==0)   //查询成功{getchar();if(stu[j].math[0]=='\0'){printf("\t\t该生暂无考勤记录\n");break;}a=0;b=0;c=0;d=0;printf("姓名\t学号\t\t课程编号\t课程名称\t考勤违纪\t第几次课 \n");for(m=0;stu[j].math[m]!='\0';m++){if(stu[j].math[m]==1){a++;printf("%s\t%s\t%s\t\t%s\t\t正常\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[0].course_number,sub[0].course_name,m+1);}if(stu[j].math[m]==2){b++;printf("%s\t%s\t%s\t\t%s\t\t迟到\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[0].course_number,sub[0].course_name,m+1);}if(stu[j].math[m]==3){c++;printf("%s\t%s\t%s\t\t%s\t\t早退\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[0].course_number,sub[0].course_name,m+1);}if(stu[j].math[m]==4){d++;printf("%s\t%s\t%s\t\t%s\t\t旷课\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[0].course_number,sub[0].course_name,m+1);}}printf("各类违规记录:总考勤次数:%d  正常:%d 迟到:%d 早退:%d 旷课:%d\n\n",a+b+c+d,a,b,c,d);a=0;b=0;c=0;d=0;printf("姓名\t学号\t\t课程编号\t课程名称\t考勤违纪\t第几次课 \n");for(m=0;stu[j].english[m]!='\0';m++){if(stu[j].english[m]==1){a++;printf("%s\t%s\t%s\t\t%s\t\t正常\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[1].course_number,sub[1].course_name,m+1);}if(stu[j].english[m]==2){b++;printf("%s\t%s\t%s\t\t%s\t\t迟到\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[1].course_number,sub[1].course_name,m+1);}if(stu[j].english[m]==3){c++;printf("%s\t%s\t%s\t\t%s\t\t早退\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[1].course_number,sub[1].course_name,m+1);}if(stu[j].english[m]==4){d++;printf("%s\t%s\t%s\t\t%s\t\t旷课\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[1].course_number,sub[1].course_name,m+1);}}printf("各类违规记录:总考勤次数:%d  正常:%d 迟到:%d 早退:%d 旷课:%d\n\n",a+b+c+d,a,b,c,d);a=0;b=0;c=0;d=0;printf("姓名\t学号\t\t课程编号\t课程名称\t考勤违纪\t第几次课 \n");for(m=0;stu[j].c[m]!='\0';m++){if(stu[j].c[m]==1){a++;printf("%s\t%s\t%s\t\t%s\t\t正常\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[2].course_number,sub[2].course_name,m+1);}if(stu[j].c[m]==2){b++;printf("%s\t%s\t%s\t\t%s\t\t迟到\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[2].course_number,sub[2].course_name,m+1);}if(stu[j].c[m]==3){c++;printf("%s\t%s\t%s\t\t%s\t\t早退\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[2].course_number,sub[2].course_name,m+1);}if(stu[j].c[m]==4){d++;printf("%s\t%s\t%s\t\t%s\t\t旷课\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[2].course_number,sub[2].course_name,m+1);}}printf("各类违规记录:总考勤次数:%d  正常:%d 迟到:%d 早退:%d 旷课:%d\n",a+b+c+d,a,b,c,d);}else{printf("\t\t未找到该学生信息!\n");} break;case '3':printf("\t\t请输入查询班级:");scanf("%d",&classes);for (j=0,t=0;j<i;j++){if(stu[j].classes==classes){t++;a=0;b=0;c=0;d=0;printf("姓名\t学号\t\t课程编号\t课程名称\t考勤违纪\t第几次课 \n");for(m=0;stu[j].math[m]!='\0';m++){if(stu[j].math[m]==1){a++;printf("%s\t%s\t%s\t\t%s\t\t正常\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[0].course_number,sub[0].course_name,m+1);}if(stu[j].math[m]==2){b++;printf("%s\t%s\t%s\t\t%s\t\t迟到\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[0].course_number,sub[0].course_name,m+1);}if(stu[j].math[m]==3){c++;printf("%s\t%s\t%s\t\t%s\t\t早退\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[0].course_number,sub[0].course_name,m+1);}if(stu[j].math[m]==4){d++;printf("%s\t%s\t%s\t\t%s\t\t旷课\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[0].course_number,sub[0].course_name,m+1);}}printf("各类违规记录:总考勤次数:%d  正常:%d 迟到:%d 早退:%d 旷课:%d\n\n",a+b+c+d,a,b,c,d);a=0;b=0;c=0;d=0;printf("姓名\t学号\t\t课程编号\t课程名称\t考勤违纪\t第几次课 \n");for(m=0;stu[j].english[m]!='\0';m++){if(stu[j].english[m]==1){a++;printf("%s\t%s\t%s\t\t%s\t\t正常\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[1].course_number,sub[1].course_name,m+1);}if(stu[j].english[m]==2){b++;printf("%s\t%s\t%s\t\t%s\t\t迟到\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[1].course_number,sub[1].course_name,m+1);}if(stu[j].english[m]==3){c++;printf("%s\t%s\t%s\t\t%s\t\t早退\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[1].course_number,sub[1].course_name,m+1);}if(stu[j].english[m]==4){d++;printf("%s\t%s\t%s\t\t%s\t\t旷课\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[1].course_number,sub[1].course_name,m+1);}}printf("各类违规记录:总考勤次数:%d  正常:%d 迟到:%d 早退:%d 旷课:%d\n\n",a+b+c+d,a,b,c,d);a=0;b=0;c=0;d=0;printf("姓名\t学号\t\t课程编号\t课程名称\t考勤违纪\t第几次课 \n");for(m=0;stu[j].c[m]!='\0';m++){if(stu[j].c[m]==1){a++;printf("%s\t%s\t%s\t\t%s\t\t正常\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[2].course_number,sub[2].course_name,m+1);}if(stu[j].c[m]==2){b++;printf("%s\t%s\t%s\t\t%s\t\t迟到\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[2].course_number,sub[2].course_name,m+1);}if(stu[j].c[m]==3){c++;printf("%s\t%s\t%s\t\t%s\t\t早退\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[2].course_number,sub[2].course_name,m+1);}if(stu[j].c[m]==4){d++;printf("%s\t%s\t%s\t\t%s\t\t旷课\t\t第%d次课\n",stu[j].name,stu[j].ID,sub[2].course_number,sub[2].course_name,m+1);}}printf("各类违规记录:总考勤次数:%d  正常:%d 迟到:%d 早退:%d 旷课:%d\n",a+b+c+d,a,b,c,d);}}if(t==0)printf("\t\t暂无该班级\n");break;   case '4':break;default:printf("\t\t你输入的数字错误!\n");break;
color(16);}if(n=='4')   break;
color(14);printf("\t\t继续-1  退出-0");
color(16);x=getch();}fclose(fp);student_attendance_search();
}
void course()
{char i;while(1){
color(15);system("cls");printf("\n\n\n\n\n");           printf("\t\t丨                            丨\n"); printf("\t\t丨          1.课程录入        丨\n"); printf("\t\t丨                            丨\n"); printf("\t\t丨          2.课程查询        丨\n"); printf("\t\t丨                            丨\n"); printf("\t\t丨          3.主菜单          丨\n"); printf("\t\t丨                            丨\n");
color(16);i=getch();switch(i){case '1':course_enter();                                     break;//课程录入 case '2':course_search();                                break;//课程查询case '3':                                                 break;//返回主菜单default:printf("\t\t您输入的数字错误,请重新输入!\n");      break;//出错提示}if(i=='3')   break;}main();
}
void course_enter()
{int i,f,x;char j,k;FILE *fp;system("cls");if((fp=fopen("course.txt","w"))==NULL){printf("\t\t文件打开失败!\n");system("pause");course();}printf("\n\n\n\n\n");for(j='1',x=0;j=='1';x++){color(11);for(k=0;k==0;){printf("\t\t请输入课程的编号:");scanf("%s",&sub[x].course_number);printf("\t\t请输入课程的名称:");scanf("%s",&sub[x].course_name);printf("\t\t请输入课程的学分:");scanf("%d",&sub[x].course_score);printf("\t\t请输入课程的任课教师:");scanf("%s",&sub[x].teacher_name);printf("\t\t请输入课程的上课时间(例如:周1上午10.00-12.00):");scanf("%s",&sub[x].time);printf("\t\t请输入课程的上课次数:");scanf("%d",&sub[x].class_times);printf("\t\t请输入课程的上课地点(例如:教1-101):");scanf("%s",&sub[x].class_place);printf("\t\t请确定信息(确定-1,重输-0):\n");k=getch();}if(fwrite(&sub[x], sizeof(struct subject),1,fp)!=1){printf("\t\t文件写入错误\n");system("pause");course();}
color(16);
color(14);printf("\t\t是否继续输入下一个课程 继续-1 终止-0:\n");
color(16);j=getch();}fclose(fp);course();
}
void course_search()
{char i;while(1){color(15);system("cls");printf("\n\n\n\n\n");           printf("\t\t丨                            丨\n"); printf("\t\t丨      1.按课程名称查询      丨\n"); printf("\t\t丨                            丨\n"); printf("\t\t丨      2.按任课教师查询      丨\n"); printf("\t\t丨                            丨\n"); printf("\t\t丨      3.显示所有课程        丨\n"); printf("\t\t丨                            丨\n"); printf("\t\t丨      4.上一级菜单          丨\n");  printf("\t\t丨                            丨\n");
color(16);i=getch();switch(i){case '1':course_search_coursename();                    break;//按课程名称查询 case '2':course_search_teachername();                     break;//按任课教师查询case '3':course_search_all();                          break;//显示所有课程case '4':                                          break;default:printf("\t\t您输入的数字错误,请重新输入!\n");  break; //出错提示}if(i=='4')   break;}course();
}
void course_search_coursename()
{system("cls");printf("\n\n\n\n\n");int i=0,j=0,t=1;char x='1';FILE *fp;char course_name[10]; if((fp=fopen("course.txt","r"))==NULL){printf("\t\t文件打开失败!\n");system("pause");course_search();}for (i=0;feof(fp)==0;i++){fread(&sub[i], sizeof(struct subject), 1, fp);  //读取文件内容}while(x!='0'){color(6);printf("\t\t请输入需要查询课程名称:");scanf("%s", &course_name);for (j=0,t=1;j<i;j++){t=strcmp(sub[j].course_name,course_name);if(t==0){break;  }   }if (t==0)   //查询成功{printf("课程编号\t课程名称\t课程学分\t任课教师\t     上课时间\t\t上课次数\t上课地点\n");printf("%s\t\t  %s\t\t   %d\t\t  %s\t\t%s\t   %d\t\t%s\n",sub[j].course_number,sub[j].course_name,sub[j].course_score,sub[j].teacher_name,sub[j].time,sub[j].class_times,sub[j].class_place);}else{printf("\t\t未找到该课程信息!\n");}
color(16);
color(14);printf("\t\t继续-1,退出-0\n");
color(16);x=getch(); }fclose(fp);course_search();
}
void course_search_teachername()
{system("cls");printf("\n\n\n\n\n");int i=0,j=0,t=1;char x='1';FILE *fp;char teacher_name[10]; if((fp=fopen("course.txt","r"))==NULL){printf("\t\t文件打开失败!\n");system("pause");course_search();}for (i=0;feof(fp)==0;i++){fread(&sub[i], sizeof(struct subject), 1, fp);  //读取文件内容}while(x!='0'){color(6);printf("\t\t请输入任课教师名称:");scanf("%s", &teacher_name);for (j=0,t=1;j<i;j++){t=strcmp(sub[j].teacher_name,teacher_name);if(t==0){break; }   }if (t==0)   //查询成功{printf("课程编号\t课程名称\t课程学分\t任课教师\t     上课时间\t\t上课次数\t上课地点\n");printf("%s\t\t  %s\t\t   %d\t\t  %s\t\t%s\t   %d\t\t%s\n",sub[j].course_number,sub[j].course_name,sub[j].course_score,sub[j].teacher_name,sub[j].time,sub[j].class_times,sub[j].class_place);}else{printf("\t\t未找到该课程信息!\n");}
color(16);
color(14);printf("\t\t继续-1,退出-0\n");
color(16);x=getch(); }fclose(fp);course_search();
}
void course_search_all()
{system("cls");printf("\n\n\n\n\n");int j;FILE *fp;if((fp=fopen("course.txt","r"))==NULL){printf("文件打开失败!\n");system("pause");course_search();}
color(6);printf("课程编号\t课程名称\t课程学分\t任课教师\t     上课时间\t\t上课次数\t上课地点\n");for (j=0;feof(fp)==0;j++){fread(&sub[j], sizeof(struct subject), 1, fp);  //读取文件内容printf("%s\t\t  %s\t\t   %d\t\t  %s\t\t%s\t   %d\t\t%s\n",sub[j].course_number,sub[j].course_name,sub[j].course_score,sub[j].teacher_name,sub[j].time,sub[j].class_times,sub[j].class_place);}fclose(fp);
color(16);system("pause");course_search();
}
void backup()
{system("cls");printf("\n\n\n\n\n");FILE *source,*end;char ch;if((source=fopen("ARecord.txt","r"))==NULL){printf("\t\t文件打开失败!\n");system("pause");main();}if((end=fopen("backup.txt","w"))==NULL){printf("\t\t文件打开失败!\n");system("pause");main();}
color(4);printf("\t\t文件备份中....!\n\n\n");
color(16);Sleep(1500);for ( ch=fgetc(source); ch != EOF; ch=fgetc(source) ){fputc(ch,end);}system("cls");
color(3);printf("\n\n\n\n\n\n\n\n\t\t文件备份成功!");
color(16);Sleep(1000);fclose(source);fclose(end);puts("ok");main();
}

C语言编写的学生考勤信息管理系统相关推荐

  1. 学生签到系统c代码_C++实现学生考勤信息管理系统

    学生考勤信息管理系统记录了学生的缺课情况,它包括: 缺课日期.第几节课.课程名称.学生姓名.学生学号.缺课类型(迟到.请假及旷课).系统具有以下功能: 1).录入学生的缺课记录: 2).修改某个学生的 ...

  2. 任务36 学生考勤信息管理系统

    系列文章 任务36 学生考勤信息管理系统 内容:学生考勤的信息包括:编号.学号.姓名.性别.班级.日期.节次.出勤情况.备注等.系统能够完成学生出勤信息的查询.更新.插入.删除.排序等功能. 功能分类 ...

  3. c语言程序报告学分信息管理,C语言程序报告学生学籍信息管理系统(总21页

    <C语言程序报告学生学籍信息管理系统(总21页>由会员分享,可在线阅读,更多相关<C语言程序报告学生学籍信息管理系统(总21页(21页珍藏版)>请在人人文库网上搜索. 1.C语 ...

  4. c语言程序报告学分信息管理,c语言程序报告学生学籍信息管理系统.docx

    文档编制序号:[KKIDT-LLE0828-LLETD298-POI08] 文档编制序号:[KKIDT-LLE0828-LLETD298-POI08] C语言程序报告学生学籍信息管理系统 C语言课程设 ...

  5. 《学生考勤信息管理系统》数据库课程设计

    目录 一.  需求分析 前台功能模块 后台功能模块 1.1 功能模块的划分及介绍 1.2 实体及重要属性 1.3 业务流程图 二. 概念结构设计 2.1. E-R图的设计 三 .逻辑结构设计 表设计 ...

  6. C语言编写学生成绩信息管理系统

    用C语言设计简单的学生成绩信息管理系统 介绍 代码 结构体数组的定义 home_page() 函数 add_infor() 函数 browse_infor() 函数 find_infor() 函数 m ...

  7. C语言课程设计——学生考勤管理系统

    C语言课程设计--学生考勤管理系统 题目要求: 学生考勤管理系统设计 (1)问题描述 考勤信息记录了学生的缺课情况,它包括:缺课日期.第几节课.课程名称.学生姓名.缺课类型(迟到.早退.请假及旷课). ...

  8. 登入学生账号的c语言编码,C语言学生账号信息管理系统.pdf

    河北工程 大学 <C语言程序设计> CDIO课程项目设计报告书 题 目: 学生账号信息管理系统 专 业: 电气工程及其自动化专业 班级及组号:电气1001班五组 组长姓名: 学号: 组员姓 ...

  9. 考勤管理系统c语言,C语言课程设计学生考勤系统最终版(范文1)

    <C语言课程设计学生考勤系统.doc>由会员分享,可免费在线阅读全文,更多与<C语言课程设计学生考勤系统(最终版)>相关文档资源请在帮帮文库(www.woc88.com)数亿文 ...

  10. 学生学分信息管理系统-C语言

    学生学分信息管理系统-C语言 程序设计要求 管理员: 1.对学生已修学分信息进行管理 2.对学生密码进行查看和修改 3.查询:按学号查询某学生的情况:按班级号查询所有同学:按某种课程,输出未达标要求的 ...

最新文章

  1. 北电ERS1600,8300,8600交换机的基本技术-第六章 二层冗余技术(MLT,SMLT,IST)
  2. matlab 数字识别_在MATLAB中利用神经网络进行分类
  3. linux 配置快速查看
  4. Solr 查询时候关键期 编码问题
  5. ML.NET 0.8特性简介
  6. MTK 驱动开发(39)--低功耗分析工具
  7. Caffe学习:使用pycaffe定义网络
  8. Training ICD Basics摘要
  9. python lmdb使用
  10. opengl双三次bezier曲面_OpenGL复杂物体建模
  11. 计算机安全审计技术工作总结,计算机安全审计技术研究
  12. 二分类最优阈值确定_结合mRMR选择和IFCM聚类的遥感影像分类算法
  13. 如何用电影摄影来破解大脑
  14. WannaCrypt(永恒之蓝) down.bddp.net
  15. 制作Linux内存镜像+制作对应的volatility profile
  16. 汉诺塔问题的递归和非递归算法
  17. 数据库应用 数据库连接技术 数据库应用开发
  18. 娱乐网站(博主自用,他人勿扰)
  19. 京东某被裁员工:虽然公司裁掉了我,但我不能裁掉我的未来!
  20. 面试必考之Java基础数据类型

热门文章

  1. word自动添加题注,带章节编号并根据章节重新开始编号
  2. Linux下修改MTU值
  3. 关于SIR模型性质的进一步摘录
  4. 19个免费的UI界面设计工具及资源
  5. Java 断点续传以及在线视频播放可选择任一时间播放原理
  6. C语言程序——小写字母转换成大写字母
  7. Bloodsucker ZOJ - 3551(期望DP)
  8. 腾达路由器显示远程服务器无响应,腾达路由器设置及可能出现的问题
  9. 开发一个安卓App-计算器-改色换肤(完结篇)
  10. 台风怎么看内存颗粒_C9BKV颗粒,英睿达铂胜Max RGB 4000超频测试