录入信息需要先后顺序,不然可能有BUG
#include
#include
#include
#include
#include
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;
int math[10];
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)
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 广东工业大学19级计科3班");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++)
{
color(11);
for(j='0';j=='0';)
{
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++)
{
for(j='0',t=1;j=='0';)
{
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();
}