c语言学生管理系统(初步完成)

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h> 
#include<math.h>
#include <conio.h>
#include<ctype.h> 

#define  SIZE  20 
#define bool int
#define TRUE  1
#define FALSE 0
bool judge=TRUE;
FILE *fp;

struct student_infor {
    int num;//学号 
    char name[20];//姓名 
    char sex[10];//性别 
    int age;//年龄 
    char major[20];//专业
	int math;//高数成绩
	int English;//英语成绩
	int Clanguage;//C语言成绩 
	int sum;//总分
	double average;//平均分 
    struct student_infor *next;
}stu[SIZE];


//管理员密码结构体
typedef struct leader{
    char name[100];
    char mima[100];
}lead; 

//学生登录密码结构体 
typedef struct 
{
    char user[100];
    char code[100]; 
}users;
users k;


typedef struct Node{
    struct student_infor data;
    struct Node *next;
}Node;



void Window(char *);//初始窗口和界面 
void initleader(lead* );
void studentdenglu();
void write(); 
void login();//登录
void menu();//管理员菜单 
void menue(); //学生菜单
void judgement1();
void judgement2();
int infor_input(void);//录入 
int infor_show(void);//显示 
int infor_search(void);//查询 
int infor_add(void);//添加 
void infor_change();//修改 

int infor_paixu(void);//排序
int infor_tongji1(void);//统计
int infor_tongji2(void); 
int out(void);//退出 







//一、初始窗口和界面
void Window(char *title){
	//设置窗口大小
	system("mode con:cols=90 lines=200");
	//设置窗口字体的颜色
	system("color 4E");
	//循环输出标题(条件:)
	while(*title!=0)
	{
		//输出字符指针所指向的内容
		printf("%c",*title);
		//将指针指向下一个字符
		title++;
		//休眠 
		Sleep(50);
	}
}


//管理员登录 
void initleader(lead* lea){
    printf("\n\n\n\t\t\t初次登录,请设置管理员信息:");
    printf("\n\t\t\t账号:");
    scanf("%s",lea->name);
    printf("\n\t\t\t密码:");
    scanf("%s",lea->mima);
    printf("\n\t\t\t设置完成,按任意键进入系统...");
	getch(); 
}


void initdata(Node* head,lead* lea){
	Node *temp;
	//打开文件 
    FILE *fp = fopen("guanliyuan.txt","rt");
   //读取上次的管理员信息 
	fread(lea,sizeof(lead),1,fp );
    temp = head;
    //下面这个循环读取学生信息到链表 
    Node *p = (Node*)malloc(sizeof(Node));
    while(fread(&p->data,sizeof(p->data),1,fp) == 1){
        temp->next = p;
        p->next = NULL;
        temp = temp->next;
        p = (Node*)malloc(sizeof(Node));
    }
    free(p);
    fclose(fp);
}


void readdata(Node *head,lead* lea){
    FILE *fp = fopen("guanliyuan.txt","rt");
    if(fp == NULL){
    	//如果打不开,则证明是第一次使用,提示初始化管理员信息 
        initleader(lea);
        return;
    }
	else{
        fclose(fp);
        //如果打开了,就不是第一次使用,就把文件中的东西读到链表中 
        initdata(head,lea);
    }
}


int yanzhengleader(lead* lea){
	char a[100],b[100];
    system("CLS");
    printf("\n\n\n\t\t\t需要进行管理员验证:");
    printf("\n\n\n\n\t\t\t请输入账号:");
    scanf("%s",a);
    printf("\n\n\n\n\t\t\t请输入密码:");
    scanf("%s",b);
    if((strcmp(a,lea->name ) == 0) && (strcmp(b,lea->mima) == 0) ){
            gets(a);return 1;
    }else gets(a); return 0;
}


void savedata(Node* head,lead* lea){
	//以只写的形式打开 
    FILE *fp = fopen("guanliyuan.txt","w");
	//写入管理员信息 
	fwrite(lea,sizeof(lead),1,fp);
    head = head->next;
    //写入链表上的学生信息 
    while(head){
        fwrite(&head->data,sizeof(head->data),1,fp);
        head = head->next;
    }
    fclose(fp);
}

//学生登录
void zhuce(){
	system("CLS");
	FILE *fp;
	char temp[100];
	do
	{
		printf("\t\t\t\t用户注册\n\t\t用户名:");
		scanf("%s",k.user);
		fp=fopen(k.user,"r");
		//判断用户名是否重复
		if(fp!=NULL)
		{
			printf("\n\t该用户已存在");
			fclose(fp);
			printf("\n\t继续注册?(Y/N)");
			if(getch()=='Y') 
				return zhuce();
			else 
				return studentdenglu(); 
		 }
		//确认两次密码输入是否一致
		printf("\n\t\t密码:");
		scanf("%s",k.code); 
		printf("\n\t\t确认密码:");
		scanf("%s",temp);
		if(strcmp(k.code,temp)!=0)
			printf("\n\t\t两次密码输入不一致,请重新输入\n"); 
	}while(strcmp(k.code,temp)!=0);
	//用户名密码无误,写入文档储存用户信息
	fp=fopen(k.user,"w");
	if(fp==NULL)
	{
		printf("\n\t注册失败\n");
		exit(0);
	}
	else
	{
		system("CLS");
		printf("\n\t注册成功");
		write();
		judge = FALSE;
		studentdenglu();
	} 
}

void write()
{

	if(fwrite(&k,sizeof(k),1,fp)!=1)
	{
		printf("\n\t\t写入文件错误\n");
		
		
	}
}

//学生登录 
void studentdenglu(){
	
	char u[100],c[100],temp[100];
	printf("\n\t\t\t\t用户登录");
	printf("\n\t\t用户名:");
	scanf("%s",u);
	//判断用户名是否存在
	fp=fopen(u,"r+");
	temp[0]='0';
	if(fp==NULL)
	{
		printf("\n\t\t用户不存在,请注册");
		printf("\n\t\t1.注册	2.重新登录");
		temp[0]=getch();
		if(temp[0]=='1')
		{
			system("CLS");
			zhuce();
		}
		else
			return studentdenglu();
	} 
	//验证密码是否正确
	do{
	
		if(judge==TRUE)
			fread(&k,sizeof(users),1,fp);
			
			printf("\t\t密码:");
			scanf("%s",c);
			if(strcmp(k.code,c)!=0)
			{
				printf("\n\t\t密码错误(1.退出 2.重新输入)");
				temp[0]=getch();
				printf("\n");
				if(temp[0]=='1')
				{
					fclose(fp);
					return login();
				}
			}
			
		}while(temp[0]=='2');
		
			printf("登陆成功!");
			Sleep(2000);
			menue();
		 
}



//二、密码登录
void login(){
	
	system("CLS");
	system("color 37");
	printf("请选择登录方式:\n1.管理员登录\n2.学生登录\n\n");
	int n,j=0;
    char c,password[6];
	scanf("%d",&n);
	switch(n){
		case 1: system("CLS");
				lead* lea;
				Node *head;
			//申请一个管理员结点来保存管理员的信息 
    			lea = (lead*)malloc(sizeof(lead));
   			//初始化数据链
    			head = (Node*)malloc(sizeof(Node));
    			head->next = NULL;
    			//尝试从文件中读取数据,也就是初始化数据函数 
    			readdata(head,lea);
    			//验证管理员函数 
    			while(yanzhengleader(lea) == 0);
    			savedata(head,lea);
    			while(1){
    				menu();
    				
				}
				break;
      	case 2: zhuce();
      			break;
		   
		}
	
}

//管理员菜单 
void menu(){
	system("CLS");
	system("mode con:cols=250 lines=300");
	system("color 1F");
	printf("\t\t**********************\n\n");
	printf("\t\t学生管理系统\n\n");
	printf("1.录入学生成绩\n\n");
	printf("2.显示学生成绩\n\n");
	printf("3.查询学生成绩\n\n");
	printf("4.添加学生成绩\n\n");
	printf("5.修改学生成绩\n\n");
	
	printf("7.学生成绩排序\n\n");
	printf("8.学生成绩统计\n\n"); 
	printf("0.退出系统\n\n");
	printf("\n\n请选择(0~8):\n\n");
	printf("\t\t**********************\n\n");
	
	int choose;
	
	while(1)
	{
		scanf("%d",&choose);
		switch(choose)
        {
            case 1:	system("CLS");
					infor_input();
					judgement1();
					break;
 			case 2: system("CLS");
			 		infor_show();
			 		judgement1();
					break;
			case 3: system("CLS");
					infor_search();
					judgement1();
					break;
			case 4: system("CLS");
					infor_add();
					judgement1();
			case 5: system("CLS");
					infor_change();
					judgement1();
					break;
			
			case 7: system("CLS");
					infor_paixu();
					judgement1();
					break;
			case 8: system("CLS");
				    infor_tongji1();
				    break;
            case 0:	system("CLS");
                    system("color 0C");
    				out();
                    exit(0);   
                    break;
			default:printf("您输入了一个无效的选择,请重新输入(0-6):\n ");
        			continue;
            }
            system("PAUSE");
        }
	
        
    
	
	
}




//学生菜单
void menue(){
	system("CLS");
	system("mode con:cols=250 lines=300");
	system("color 1F");
	printf("\t\t**********************\n\n");
	printf("\t\t欢迎进入学生管理系统\n\n");
	printf("1.显示学生成绩\n\n");
	printf("2.查询学生成绩\n\n");
	printf("3.学生成绩排序\n\n");
	printf("4.学生成绩统计\n\n"); 
	printf("0.退出系统\n\n");
	printf("\n\n请选择(0~4):\n\n");
	printf("\t\t**********************\n\n");
	
	int choose;
	
	while(1)
	{
		scanf("%d",&choose);
		switch(choose)
        {
 			case 1: system("CLS");
			 		infor_show();
			 		judgement2();
					break;
			case 2: system("CLS");
					infor_search();
					judgement2();
					break;
			case 3: system("CLS");
					infor_paixu();
					judgement2();
					break;
			case 4: system("CLS");
				    infor_tongji2();
				    
				    break;
            case 0:	system("CLS");
                    system("color 0C");
    				out();
                    exit(0);   
                    break;
			default:printf("您输入了一个无效的选择,请重新输入(0-4):\n ");
        			continue;
            }
            system("PAUSE");
        }
	
        
    
	
	
} 



//判断
void judgement1(){
	int m;
	printf("返回上一级菜单请按1,退出请按0: ");
    scanf("%d", &m);

    if (m == 0) 
	{
        system("CLS");
        system("color 0C");
    	out();
    	Sleep(1000);
		exit(0);
    }


    if (m == 1) 
	{
        	menu();
            
    } 
} 


void judgement2(){
	int m;
	printf("返回上一级菜单请按1,退出请按0: ");
    scanf("%d", &m);

    if (m == 0) 
	{
        system("CLS");
        system("color 0C");
    	out();
    	Sleep(1000);
		exit(0);
    }


    if (m == 1) 
	{
        menue();
            
    } 
}




//结尾3D心形 
float f(float x, float y, float z) {  
    float a = x * x + 9.0f / 4.0f * y * y + z * z - 1;  
    return a * a * a - x * x * z * z * z - 9.0f / 80.0f * y * y * z * z * z;  
}  
  
  
float h(float x, float z) {  
    for (float y = 1.0f; y >= 0.0f; y -= 0.001f)  
        if (f(x, y, z) <= 0.0f)  
            return y;  
    return 0.0f;  
}  


int out(void)
{
	for (float z = 1.5f; z > -1.5f; z -= 0.05f) {  
        for (float x = -1.5f; x < 1.5f; x += 0.025f) {  
            float v = f(x, 0.0f, z);  
            if (v <= 0.0f) {  
                float y0 = h(x, z);  
                float ny = 0.01f;  
                float nx = h(x + ny, z) - y0;  
                float nz = h(x, z + ny) - y0;  
                float nd = 1.0f / sqrtf(nx * nx + ny * ny + nz * nz);  
                float d = (nx + ny - nz) * nd * 0.5f + 0.5f;  
                putchar(".:-=+*#%@"[(int)(d * 5.0f)]);  
            }  
            else  
                putchar(' ');  
        }  
        putchar('\n');  
    }
	printf("See you\n");   
                  
}



// 1. 学生信息录入
int infor_input(void)
{
	system("color 80");
	FILE *fp;  
    fp=fopen("studentinfor.txt","wb");  
    if(fp==NULL)  
    {  
        printf(" cannot open file studentinfor.txt\n");  
        exit(0);  
    }  
    printf("输入要录入的学生数目:\n");  
    int n;  
    scanf("%d", &n);   
    for (int i = 0; i < n; i++)  
    { 
		printf("学号  	姓名  	性别 年龄 专业  高数  英语   C语言\n");  
        scanf("%d%s%s%d%s%d%d%d",&stu[i].num,&stu[i].name,&stu[i].sex,&stu[i].age,&stu[i].major,&stu[i].math,&stu[i].English,&stu[i].Clanguage);  
        stu[i].sum = stu[i].math + stu[i].English + stu[i].Clanguage;  
        stu[i].average = stu[i].sum / 3.0;  
    }  
    for (int i = 0; i < n; i++)  
        if (fwrite(&stu[i], sizeof(struct student_infor),1,fp)!=1)  
            printf("file write error!\n");        
    fclose(fp);
	
}




//2.显示学生信息
int infor_show()
{ 
    FILE  *fp;  
    int  i;  
    fp=fopen("studentinfor.txt","rb");                                           
    printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");  
    printf("                                  成绩列表\n");  
    printf("-----------------------------------------------------------------------------------\n");  
    printf("学号   姓名    性别   年龄    专业		高数	英语    C语言成绩    总成绩    平均成绩\n");  
    printf("-----------------------------------------------------------------------------------\n");        
	for(i=0;fread(&stu[i],sizeof(struct  student_infor),1,fp)==1;i++)//for(i=0;fread(&stu[i],6,1,fp)==1;i++)  
    {  
    printf("%d%6s%3s%3d%6s%6d%6d%6d%6d    %.2lf\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].major,stu[i].math,stu[i].English,stu[i].Clanguage,stu[i].sum,stu[i].average);  
    }  
	printf("-----------------------------------------------------------------------------------\n\n");  
    printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");  
    fclose(fp);  
	
	
} 



//3.查询学生信息
int infor_search(){
	FILE  *fp;  
    int  num;  
    fp=fopen("studentinfor.txt","rb");          
    printf("请输入要查找的学号:");  
    scanf("%d",&num);  
    printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");  
    printf("                                            查询结果\n");  
    printf("-----------------------------------------------------------------------------------\n");  
    printf("学号      姓名        性别        专业    	高数	    英语      C语言     总成绩     平均成绩\n");  
    printf("-----------------------------------------------------------------------------------\n");  
    for(int i=0;fread(&stu[i],sizeof(struct  student_infor),1,fp)==1;i++)  
        if(stu[i].num==num)  
        {  
    	    printf("%d%6s%3s%3d%6s%6d%6d%6d%6d    %.2lf\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].major,stu[i].math,stu[i].English,stu[i].Clanguage,stu[i].sum,stu[i].average);
		}
	printf("-----------------------------------------------------------------------------------\n\n");  
    printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n\n\n");  
    fclose(fp);
	
} 






//4.添加学生成绩
int infor_add()
{
	FILE  *fp;  
    fp=fopen("studentinfor.txt","ab+");          
//        rewind(fp);  
    for(int i=0;fread(&stu[i],sizeof(struct  student_infor),1,fp)==1;i++);  
    int n;  
    printf("请输入要添加学生信息数目:");  
    scanf("%d", &n);   
    for(int i = 0; i < n; i++)  
    {                  
        printf("请输入要增加的学号,姓名,性别, 年龄,专业, 高数成绩,英语成绩, c语言成绩:\n");  
	    scanf("%d%s%s%d%s%d%d%d",&stu[i].num,&stu[i].name,&stu[i].sex,&stu[i].age,&stu[i].major,&stu[i].math,&stu[i].English,&stu[i].Clanguage);  
        stu[i].sum = stu[i].math + stu[i].English + stu[i].Clanguage;  
        stu[i].average = stu[i].sum / 3.0;  
        fwrite(&stu[i],sizeof(struct  student_infor),1,fp);  
    }  
    fclose(fp);  
   
} 


//5.修改学生成绩
void infor_change(){
	FILE  *fp;  
    fp=fopen("studentinfor.txt","rb");   
    int  i,num,n;  
    int  flag=0;          
    printf("请输入要修改学生的学号:");  
    scanf("%d",&num);  
    for(i=0;fread(&stu[i],sizeof(struct  student_infor),1,fp)==1;i++)  
        if(stu[i].num==num)  
    {  
        printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");  
        printf("                                              成绩列表\n");  
        printf("-----------------------------------------------------------------------------------\n");  
        printf("学号   姓名    性别   年龄    专业		高数	英语    C语言成绩    总成绩    平均成绩\n");   
        printf("-----------------------------------------------------------------------------------\n");  
        printf("%d%6s%3s%3d%6s%6d%6d%6d%6d    %.2lf\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].major,stu[i].math,stu[i].English,stu[i].Clanguage,stu[i].sum,stu[i].average);
        printf("-----------------------------------------------------------------------------------\n\n");  
        printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");  
        n=i;  
        flag=1;  
                
    }fclose(fp);   
        if(flag==0)  
    {  
        printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");  
        printf("                                                输入错误!\n");  
        printf("                                                  请返回!\n");  
        printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");  
        return;  
        }  
        printf("\n\n\n");    
            
        fp=fopen("studentinfor.txt","rb+");  
        fseek(fp,n*sizeof(struct  student_infor),0);  
        printf("请输入修改后的学号,姓名,性别, 年龄,专业, 高数成绩,英语成绩, c语言成绩:\n");  
	    scanf("%d%s%s%d%s%d%d%d",&stu[i].num,&stu[i].name,&stu[i].sex,&stu[i].age,&stu[i].major,&stu[i].math,&stu[i].English,&stu[i].Clanguage);  
        stu[i].sum = stu[i].math + stu[i].English + stu[i].Clanguage;  
        stu[i].average = stu[i].sum / 3.0;
        fwrite(&stu[i],sizeof(struct  student_infor),1,fp);  
        fclose(fp);  
          
        fp=fopen("studentinfor.txt","rb");  
        printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");  
        printf("                                              成绩列表\n");  
        printf("-----------------------------------------------------------------------------------\n");  
    printf("学号   姓名    性别   年龄    专业		高数	英语    C语言成绩    总成绩    平均成绩\n");  
        printf("-----------------------------------------------------------------------------------\n");  
        for(i=0;fread(&stu[i],sizeof(struct  student_infor),1,fp)==1;i++)  
    {  
     printf("%d%6s%3s%3d%6s%6d%6d%6d%6d    %.2lf\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].major,stu[i].math,stu[i].English,stu[i].Clanguage,stu[i].sum,stu[i].average);  
    }  
        printf("-----------------------------------------------------------------------------------\n\n");  
        printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");  
        fclose(fp);  
	
	
	
	
	
} 




//7.学生成绩排序
int infor_paixu(void) 
{
	int  i,j,n;  
    FILE  *fp;  
    struct  student_infor  t;  
    fp=fopen("studentinfor.txt","rb");  
    printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");  
    printf("                                              成绩列表\n");  
    printf("-----------------------------------------------------------------------------------\n");  
    printf("学号      	姓名 	       性别        年龄 	专业      高数	英语      C语言     总成绩     平均成绩\n");  
    printf("-----------------------------------------------------------\n");  
    for(i=0;fread(&stu[i],sizeof(struct  student_infor),1,fp)==1;i++)  
    {  
		printf("%d%6s%3s%3d%6s%6d%6d%6d%6d    %.2lf\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].major,stu[i].math,stu[i].English,stu[i].Clanguage,stu[i].sum,stu[i].average);  
    }  
    printf("-----------------------------------------------------------------------------------\n\n");  
    printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");  
    fclose(fp);  
    n=i;  
    for(i=0;i<n;i++)  
    	for(j=i+1;j<n;j++)  
       		if(stu[i].sum<stu[j].sum)  
          	{  
            	t=stu[i];  
                stu[i]=stu[j];  
                stu[j]=t;  
          	}  
        fp=fopen("studentinfor.txt","wb");  
        printf("\n\n\n");  
        printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");  
        printf("                                              成绩列表  \n");  
        printf("-----------------------------------------------------------------------------------\n");  
        printf("学号      	姓名	        性别     年龄   专业    高数    英语      C语言     总成绩     平均成绩\n");  
        printf("-----------------------------------------------------------------------------------\n");  
        for(i=0;i<n;i++)  
    {  
        fwrite(&stu[i],sizeof(struct  student_infor),1,fp);  
     printf("%d%6s%3s%3d%6s%6d%6d%6d%6d    %.2lf\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].major,stu[i].math,stu[i].English,stu[i].Clanguage,stu[i].sum,stu[i].average);  
    }  
        printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");  
        fclose(fp);

}


//8.学生成绩统计
int infor_tongji1(void)
{
	int x,k;  
  
    printf("********************输入统计选项**********************\n"); /*选择功能菜单*/  
    printf("统计高数成绩不及格率请按:1\n");  
    printf("统计英语成绩不及格率请按:2\n");  
    printf("统计C语言成绩不及格率请按:3\n");             
  
    scanf("%d",&x);//用户选择变量                          
    FILE  *fp;  
    fp=fopen("studentinfor.txt","rb");   
    if(x==1)  
  
    {  
        k=0;  
        for(int i=0;fread(&stu[i],sizeof(struct  student_infor),1,fp)==1;i++)/*统计高数成绩不及格率*/  
       {  
           if(stu[i].math<60)  
                k++,  
                printf("不及格的分数为%d\n",stu[i].math);  
       }  
        printf("共%d人高数未及格\n",k);  
  
        printf("************************************************************\n");  
    }  
  
    
    if(x==2)  
    {  
     k=0;  
        for(int i=0;fread(&stu[i],sizeof(struct  student_infor),1,fp)==1;i++)/*统计英语成绩不及格率*/  
       {  
           if(stu[i].English<60)  
                 k++,  
            printf("不及格的分数为%d\n",stu[i].English);       
       }  
        printf("共%d人英语不及格\n",k);  
        printf("  **********************************************************\n");  
    }  
    if(x==3)  
    {  
     k=0;  
        for(int i=0;fread(&stu[i],sizeof(struct  student_infor),1,fp)==1;i++)/*统计英语成绩不及格率*/  
       {  
           if(stu[i].Clanguage<60)  
                 k++,  
            printf("不及格的分数为%d\n",stu[i].Clanguage);       
       }  
        printf("共%d人C语言成绩不及格\n",k);  
        printf("  **********************************************************");  
    }
    int m;
	printf("返回上一级菜单请按1,返回主菜单请按2,退出请按0: ");
    scanf("%d", &m);

    if (m == 0) 
	{
        system("CLS");
        system("color 0C");
    	out();
    	Sleep(1000);
		exit(0);
    }
	
	if(m == 1){
		infor_tongji1();
	} 

    if (m == 2) 
	{
        	menu();
            
    }  
    
    
 } 


int infor_tongji2(void)
{
	int x,k;  
  
    printf("********************输入统计选项**********************\n"); /*选择功能菜单*/  
    printf("统计高数成绩不及格率请按:1\n");  
    printf("统计英语成绩不及格率请按:2\n");  
    printf("统计C语言成绩不及格率请按:3\n");             
  
    scanf("%d",&x);//用户选择变量                          
    FILE  *fp;  
    fp=fopen("studentinfor.txt","rb");   
    if(x==1)  
  
    {  
        k=0;  
        for(int i=0;fread(&stu[i],sizeof(struct  student_infor),1,fp)==1;i++)/*统计高数成绩不及格率*/  
       {  
           if(stu[i].math<60)  
                k++,  
                printf("不及格的分数为%d\n",stu[i].math);  
       }  
        printf("共%d人高数未及格\n",k);  
  
        printf("************************************************************\n");  
    }  
  
    
    if(x==2)  
    {  
     k=0;  
        for(int i=0;fread(&stu[i],sizeof(struct  student_infor),1,fp)==1;i++)/*统计英语成绩不及格率*/  
       {  
           if(stu[i].English<60)  
                 k++,  
            printf("不及格的分数为%d\n",stu[i].English);       
       }  
        printf("共%d人英语不及格\n",k);  
        printf("  **********************************************************");  
    }  
    if(x==3)  
    {  
     k=0;  
        for(int i=0;fread(&stu[i],sizeof(struct  student_infor),1,fp)==1;i++)/*统计英语成绩不及格率*/  
       {  
           if(stu[i].Clanguage<60)  
                 k++,  
            printf("不及格的分数为%d\n",stu[i].Clanguage);       
       }  
        printf("共%d人C语言成绩不及格\n",k);  
        printf("  **********************************************************");  
    }
    int m;
	printf("返回上一级菜单请按1,返回主菜单请按2,退出请按0: ");
    scanf("%d", &m);

    if (m == 0) 
	{
        system("CLS");
        system("color 0C");
    	out();
    	Sleep(1000);
		exit(0);
    }
	
	if(m == 1){
		infor_tongji2();
	} 

    if (m == 2) 
	{
        menue();
            
    }  
    
    
 } 




int main(int argc, char *argv[])
{
	
	char result=' ';
	char choice=' ';
	char title[]="\t\t\t*********欢迎进入学生信息管理系统!********\n\n\n\n\n\n\n\t\t\t\t    2018年5月30日\n\n\n\n\n\n\n\t\t\t\t      KangWenZhe\n";
	//1:初始化窗口和界面
	Window(title);
	
	
	Sleep(3000);
	lead *lea;
	Node *head;
	//申请一个管理员结点来保存管理员的信息 
    lea = (lead*)malloc(sizeof(lead));
    //初始化数据链
    head = (Node*)malloc(sizeof(Node));
    head->next = NULL;
    //尝试从文件中读取数据,也就是初始化数据函数 
    
	login();
	
	
	return 0;
	
} 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值