精华内容
下载资源
问答
  • 基于安卓Android学生考勤信息管理系统源码+开题报告文档 选题的背景、意义及研究现状: 一、选题背景 目前,在多数高校的日常学生考勤中,任课教师或学生干部往往是在考勤结束后利用课下时间进行人工统计出勤结果...
  • jsp写的学生考勤信息系统,可用于毕业设计,平时上课完成作业。(SP(全称JavaServer Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据...
  • 基于安卓Android学生考勤信息管理系统.zip
  • 基于安卓Android学生考勤信息管理系统客户端+服务器端+数据库源码+论文开题报告 研究内容、研究方法与思路: 一、研究内容: 本系统以目前在网上已经出现的“基于Web学生考勤管理系统”为基础,运用Android平台进行...
  • C++实现学生考勤信息管理系统
  • 基于安卓Android学生考勤信息管理系统
  • c++学生考勤信息管理系统 有代码 图 很全
  • 本系统以目前在网上已经出现的“基于Web学生考勤管理系统”为基础,运用Android平台进行相关设计使得教师或者考勤人员只需在Android手机上就可以很方便地并且及时完成每日的考勤,另外领导、教师和学生都可以随时...
  • 学生考勤信息管理系统记录了学生的缺课情况,它包括:缺课日期、第几节课、课程名称、学生姓名、学生学号、缺课类型(迟到、请假及旷课)。系统具有以下功能:1)、录入学生的缺课记录;2)、修改某个学生的缺课记录;3)...

    学生考勤信息管理系统记录了学生的缺课情况,它包括:

    缺课日期、第几节课、课程名称、学生姓名、学生学号、缺课类型(迟到、请假及旷课)。系统具有以下功能:

    1)、录入学生的缺课记录;

    2)、修改某个学生的缺课记录;

    3)、查询某个学生的缺课情况;

    4)、统计 旷课学生姓名及旷课次数,按旷课次数由多到少排序;

    5)、统计 有学生旷课的课程及旷课人次(每次课时累加),按旷课人次由多到少排序;

    重新修改了下,之前的4,5功能未实现。

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    using namespace std;

    #define N 999

    int n;

    class STU

    {

    public:

    STU() {}

    void input(char d[],int X,string n,string sn,int sd,int cl)

    {

    strcpy(date,d);

    ClassX=X;

    ClassN=n;

    stuN=sn;

    stuID=sd;

    ClassL=cl;

    }

    void print()

    {

    cout<

    cout<

    }

    friend void Change(STU stu[]);

    friend void Find(STU stu[]);

    friend void chaxun1(STU stu[]);

    friend void chaxun2(STU stu[]);

    private:

    string stuN;

    int stuID;

    char date[15];

    int ClassX;

    string ClassN;

    int ClassL;

    };

    //主菜单

    void meau()

    {

    cout<

    cout<

    cout<

    cout<

    cout<

    cout<

    cout<

    cout<

    cout<

    cout<

    }

    //输入学生的缺课记录

    void Input(STU stu[])

    {

    char date[15];

    string stuN, ClassN;

    int stuID,ClassX,ClassL;

    while(1)

    {

    cout<

    cin>>n;

    for(int i=0; i

    {

    cout<

    cout<

    cin>>date;

    cout<

    cin>>ClassX;

    cout<

    cin>>ClassN;

    cout<

    cin>>stuN;

    cout<

    cin>>stuID;

    cout<

    cin>>ClassL;

    stu[i].input(date,ClassX,ClassN,stuN,stuID,ClassL);

    }

    cout<

    char cc;

    getchar();

    cin>>cc;

    if(cc=='n')

    return ;

    }

    }

    //修改某个学生的缺课记录

    void Change(STU stu[])

    {

    cout<

    int x;

    cin>>x;

    if(x==1)

    {

    cout<

    string name;

    cin>>name;

    for(int i=0; i

    {

    if(stu[i].stuN==name)

    {

    stu[i].print();

    cout<

    getchar();

    char cc;

    cin>>cc;

    if(cc=='n')

    continue;

    else if(cc='y')

    {

    cout<

    cout<

    cin>>x;

    switch(x)

    {

    case 1:

    {

    char date[20];

    cout<

    cin>>date;

    strcpy(stu[i].date,date);

    }

    break;

    case 2:

    {

    cout<

    cin>>x;

    stu[i].ClassX=x;

    }

    break;

    case 3:

    {

    cout<

    cin>>name;

    stu[i].ClassN=name;

    }

    break;

    case 4:

    {

    cout<

    cin>>x;

    stu[i].ClassL=x;

    }

    break;

    default :

    cout<

    }

    break;

    cout<

    stu[i].print();

    }

    else cout<

    }

    }

    }

    else if(x==2)

    {

    cout<

    cin>>x;

    for(int i=0; i

    {

    if(stu[i].stuID==x)

    {

    cout<

    stu[i].print();

    getchar();

    char cc;

    cin>>cc;

    if(cc=='n')

    continue;

    else if(cc='y')

    {

    cout<

    cout<

    cin>>x;

    switch(x)

    {

    case 1:

    {

    cout<

    char name[20];

    cin>>name;

    strcpy(stu[i].date,name);

    }

    break;

    case 2:

    {

    cout<

    cin>>x;

    stu[i].ClassX=x;

    }

    break;

    case 3:

    {

    cout<

    string name;

    cin>>name;

    stu[i].ClassN=name;

    }

    break;

    case 4:

    {

    cout<

    cin>>x;

    stu[i].ClassL=x;

    }

    break;

    default :

    cout<

    }

    break;

    cout<

    stu[i].print();

    }

    else

    cout<

    }

    }

    }

    else

    cout<

    }

    //查询某个学生的缺课情况

    void Find(STU stu[])

    {

    cout<

    int x;

    cin>>x;

    if(x==1)

    {

    cout<

    string name;

    cin>>name;

    for(int i=0; i

    {

    if(stu[i].stuN==name)

    stu[i].print();

    }

    }

    else if(x==2)

    {

    cout<

    cin>>x;

    for(int i=0; i

    {

    if(stu[i].stuID==x)

    stu[i].print();

    }

    }

    else cout<

    }

    //统计旷课学生信息

    void chaxun1(STU stu[])

    {

    map A;

    A.clear();

    for(int s=0; s

    {

    if(stu[s].ClassL==2)

    {

    A[stu[s].stuN]++;

    }

    }

    map::iterator it;

    int k=0,ant[N];

    string sn[N];

    for(it=A.begin(); it!=A.end(); it++)

    {

    sn[k]=(*it).first;

    ant[k]=(*it).second;

    k++;

    }

    for(int i=0; i

    for(int j=i+1; j

    {

    if(ant[i]

    {

    int temp;

    string ss;

    temp=ant[i];

    ant[i]=ant[j];

    ant[j]=temp;

    ss=sn[i];

    sn[i]=sn[j];

    sn[j]=ss;

    }

    }

    for(int m=0; m

    {

    cout<

    cout<

    }

    }

    //统计旷课课程信息

    void chaxun2(STU stu[])

    {

    map A;

    A.clear();

    for(int i=0; i

    {

    if(stu[i].ClassL==2)

    {

    A[stu[i].ClassN]++;

    }

    }

    map::iterator it;

    for(it=A.begin(); it!=A.end(); it++)

    {

    cout<

    cout<

    }

    }

    int main()

    {

    STU stu[N];

    while(1)

    {

    meau();

    cout<

    int x;

    cin>>x;

    switch(x)

    {

    case 1:

    Input(stu);

    break;

    case 2:

    {

    if(n==0)

    cout<

    else

    Change(stu);

    }

    break;

    case 3:

    {

    if(n==0)

    cout<

    else

    Find(stu);

    }

    break;

    case 4:

    {

    if(n==0)

    cout<

    else

    {

    cout<

    cout<

    cin>>x;

    if(x==1)

    chaxun1(stu);

    else if(x==2)

    chaxun2(stu);

    else

    cout<

    }

    }

    break;

    case 5:

    {

    cout<

    return 0;

    break;

    }

    default:

    cout<

    }

    }

    return 0;

    }

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    展开全文
  • 教师管理学生管理、院系管理、课程管理、课程安排、考勤管理
  • 最近做了C#的GUi编程 所以就勉勉强强的做了一个学生考勤管理系统了 里面实现了许多的功能! 可供初学者参考! 多多支持!
  • 学生考勤管理系统的设计与实现,包含数据库,Java代码,文档以及PPT。本项目就是从实际的理论以及实践基础的角度着眼,阐释了设计并实现了一个基于面向对象结构的考勤系统,项目主要是针对当前阶段我国高效考勤存在...
  • C语言编写的学生考勤信息管理系统

    千次阅读 多人点赞 2020-03-18 12:27:57
    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);...
    						录入信息需要先后顺序,不然可能有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++语言写的,控制台模式的,本人亲写,可用来略作借鉴,保证完整可运行
  • 学生考勤管理系统javaGUI,结合mybatis,spring技术开发
  • java学生考勤管理系统

    2019-06-27 09:08:17
    学生考勤管理系统设计一个基于java与RFID的考勤系统。 应用背景:单位员工考勤等。 业务流程与需求分析: 考勤主体需求:记录员工何时到达,何时离开(甚至可以包括何处)。并可以按照要求,提供考勤的统计情况。 ...
  • 信 阳 师 范 学 院 课 程 设 计 课 程 C++程序设计 题 目 学生考勤信息管理系统 院 系 计算机与信息技术学院 专业班级 2013 级软件工程 学生姓名 学生学号 指导教师 20 16 年 1 月2 日 课程设计成绩评价表 课程名称 ...
  • 信 阳 师 范 学 院 课 程 设 计 课 题 院 程 目 系 C++程序设计 学生考勤信息管理系统 计算机与信息技术学院 专业班级 学生姓名 学生学号 指导教师 2013级软件工程 2016年 1月2 日 课程设计成绩评价表 课程名称 C++...
  • 本系统以目前在网上已经出现的“基于Web学生考勤管理系统”为基础,运用Android平台进行相关设计使得教师或者考勤人员只需在Android手机上就可以很方便地并且及时完成每日的考勤,另外领导、教师和学生都可以随时...

    一、研究内容:
    本系统以目前在网上已经出现的“基于Web学生考勤管理系统”为基础,运用Android平台进行相关设计使得教师或者考勤人员只需在Android手机上就可以很方便地并且及时完成每日的考勤,另外领导、教师和学生都可以随时查询自己所需要的相关出勤情况。
    系统拟分为五大功能模块,分别是学生基础数据管理模块、考勤数据上传模块、考勤数据统计模块、考勤信息查询模块和用户管理模块。系统的使用者有系统管理员、领导、辅导员、任课教师和学生。
    二、研究方法:
    本学生考勤管理系统采用MVC开发模式,利用MySQl来存储数据,并通过Hibernate进行数据管理。使用android布局技术完成UI的设计,并在不同型号的设备模拟器上进行测试。
    研究思路:
    采用软件工程的思想对系统进行整体的分析和建模,得出需求分析和该总体设计文档。采用用例图、序列图和E-R图进行系统功能分析、模块划分和数据库的设计,紧接着设计数据字典,并根据数据字典创建系统数据库,得出详细设计文档。根据总体设计和详细设计文档,进行功能模块的设计与实现,进入编码阶段,并对每个功能和模块进行单元测试,对代码进行优化和重构,提高运行效率。最后对已开发出的功能和模块进行整合,并对系统进行集成测试,确保整个系统的稳定运行。
    基于Android的学生考勤管理系统功能模块图

    在这里插入图片描述

    在这里插入图片描述

    全部资料点击:下载地址》》》

    展开全文
  • 学生考勤信息管理系统C++.doc
  • 学生考勤信息管理系统C.doc
  • 毕业设计-基于安卓Android学生考勤信息管理系统
  • 学生考勤管理系统(javaee包含数据库和文档)
  • WORD格式 专业资料整理 学生考勤管理系统 可行性分析 科 目信息系统分析与设计 专 业信息与计算科学 姓 名XXX 班 级XXX 学 号2012314222 指导老师 XXX 二零一五年七月 学生考勤管理系统开发者杜雅笛 目录 1 引言 ...
  • JSP学生考勤信息管理系统

    热门讨论 2012-03-24 00:52:01
    JSP学生考勤信息管理系统
  • 学生考勤管理系统,实现学生的考勤情况,包括记录学生缺课以及作业提交情况,查询、修改、删除学生缺课记录以及统计某时间段内旷课情况
  • 这是我上学期期末的实验报告,获得了优秀,希望能够对你们有所帮助
  • 用SQL server创建学生考勤管理系统,这只是一个基础代码。
  • 这是一个基于Java Web的学生信息系统开发的源码,适合于接触过Java、HTML、和Java web的新手学习和参考。里面的源码经过多次验证和运行,确定可以很好的运行。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,088
精华内容 1,235
关键字:

学生考勤信息管理系统

友情链接: linxCProgramGuide.rar