C语言写学生信息管理系统(文件版)

下面是我自己用写的学生信息管理系统,为了增加数据的利用率,分为学生端和教师端,同时实现账号密码登录,以文件的形式将其存入。

代码如下

#include <stdio.h>
#include <string.h> 
#include <string>
#include<Windows.h>
#define USER "TOM"     // 事先定义用户名,用于登录页面,验证身份。 
#define PW "123456789" // 事先定义密码 ,作用同上。
void Level_menu();//主菜单的声明--选择学生端还是老师端。
void Level_2_menu(); //二级菜单——具体功能分化 
void Student_add_Level_3_menu();// 增添学生信息菜单功能分化 
void Student_Insert(); //添加单个学生信息 
void Student_Insert1(); /*为上面批量输入设置的函数,其代码与上面的
                                   单个输入相似,删减了一部分*/

void Student_Tongji_menu();//统计菜单部分
void Student_Tongji_menu2();//统计二级菜单  
void Student_Tongji_menu3();//统计 
void IO_ReadInfo();/*将学生信息从文件(student database.txt)中读出*/ 
void IO_WriteInfo();/*将学生信息写入文件(Database.txt)*/ 
void student_Delete_menu();  /*删除学生信息菜单*/
void student_menu1();/*学生查询课程信息菜单*/
void student_Kecheng_menu2();
void Student_From_high_to_low1(); /*按综合测评从高到低排序*/  
void jiangxue_menu();/*奖学金评定办法*/   
void Student_Display2();/*显示学生信息2在奖学金评定时使用*/


 
 
/*定义学生结构体*/  
struct Student 
{
     char ID[20];        //学号
     char Name[20];      //姓名 
     char sushe[6];     //宿舍房间号 
	 float mathA1;       //高等数学成绩 
	 float EnglishA1;    //大学英语成绩 
	 float software;     //软件技术导论
	 float china_history;//中国近代史纲要
	 float junshi;       //军事教育
	 float xinli;        //心理健康辅导
	 float sports;       //体育*/  
     float C_Mark;       //C语言程学设计成绩
     float pingjun;      //总学分
	 float Banzhuren;    //班主任评分
	 float Cepingfen;    //测评分 
};

/*声明学生数组及学生数量*/  
struct Student students[1000];  
int num=0;
int Num;  

/*通过学号返回数组下标*/   
int Student_SearchByIndex(char id[])  
{
    int i; 
    for (i=0;i<num;i++)  
    {
        if (strcmp(students[i].ID,id)==0)  
        {
            return i;  
        }  
    }  
    return -1;   
}

/*通过姓名返回数组下标*/
int Student_SearchByName(char name[])  
{
    int i;  
    for (i=0;i<num;i++)  
    { 
        if (strcmp(students[i].Name,name)==0)
        { 
            return i;
        }  
    }  
    return -1;  
}  

/*通过宿舍成员返回数组下标*/
void Student_SearchBySushe()

{
	system("cls");
	system("color f0");
	int i;
	char Sushe[6] ;
	printf("请输入你想要查询的宿舍房间号: ");
    scanf("%s",&Sushe);	
    printf("%10s%10s%8s%8s%8s%8s%8s%8s%8s%8s%8s%8s%8s%8s\n","学号","姓名","宿舍号","高等数学","大学英语","软件技术导论","中国近代史","军事教育","心理健康教育","大学体育","C语言成绩","总学分","班主任评分","测评分");  
    printf("------------------------------------------------------------------------------------------------------------------------\n");  
    
    
     
	for (i=0;i<num;i++)  
    { 
        if (strcmp(students[i].sushe,Sushe)==0)
        { 
           printf("%10s%10s%5s %8.2f %8.2f %8.2f %8.2f %8.2f %8.2f %8.2f %8.2f %8.2f %8.2f %8.2f\n",students[i].ID,students[i].Name,students[i].sushe,students[i].mathA1,students[i].EnglishA1,students[i].software,students[i].china_history,students[i].junshi,students[i].xinli,students[i].sports,students[i].C_Mark,students[i].pingjun,students[i].Banzhuren,students[i].Cepingfen);  
        }
				  
    } 
	
	  printf("数据加载完毕!"); 
	  Student_Tongji_menu2();
	
}   

/*显示单条学生记录*/  
void Student_DisplaySingle(int index)   
{
    printf("%10s%10s%8s%8s%8s%8s%8s%8s%8s%8s%8s%8s\n","学号","姓名","宿舍号","高等数学","大学英语","软件技术导论","中国近代史","军事教育","心理健康教育","大学体育","C语言成绩","品行分");  
    printf("------------------------------------------------------------------------------------------------------------------------\n");  
    printf("%10s%10s%5s %8.2f %8.2f %8.2f %8.2f %8.2f %8.2f %8.2f %8.2f %8.2f\n",students[index].ID,students[index].Name,students[index].sushe,students[index].mathA1,students[index].EnglishA1,students[index].software,students[index].china_history,students[index].junshi,students[index].xinli,students[index].sports,students[index].C_Mark,students[index].pingjun);  
}  

/*增加单条学生记录*/  
void Student_Insert()  
{  
    system("cls");
	system("color f0");
	float a1,a2,a3,a4,a5,a6,a7,a8;
	float j=0; 
    while(1)  
    {  
        printf("请输入学号:");
        scanf("%s",&students[num].ID);  
        getchar();
        printf("请输入姓名:");  
        scanf("%s",&students[num].Name);  
        getchar();
		printf("请输入宿舍号:");  
        scanf("%s",&students[num].sushe);  
        getchar();
		printf("请输入高等数学成绩:");  
        scanf("%f",&students[num].mathA1);  
        getchar();
        if (59<students[num].mathA1 && students[num].mathA1<100) 
        
            a8= 1.5;      
        
        else
        
        	a8=0;
		

		printf("请输入大学英语成绩:");  
        scanf("%f",&students[num].EnglishA1);  
        getchar();
        if (59<students[num].EnglishA1 && students[num].EnglishA1<100) 
        
            a1= 2;      
        
         else
        
        	a1=0;
		

		printf("请输入软件技术导论成绩:");  
        scanf("%f",&students[num].software);  
        getchar();
        if (59<students[num].software && students[num].software<100) 
        
            a2= 1.5;      
        
         else
        
        	a2=0;
		

		printf("请输入中国近代史纲要成绩:");  
        scanf("%f",&students[num].china_history);  
        getchar();
        if (59<students[num].china_history && students[num].china_history<100) 
        
            a3= 2.5;      
        
         else
        
        	a3=0;
		

		printf("请输入军事教育:");  
        scanf("%f",&students[num].junshi);  
        getchar();
        if (59<students[num].junshi && students[num].junshi<100) 
        
            a4= 2;      
        
         else
        {
        	a4=0;
		}

		printf("请输入心理健康教育成绩:");  
        scanf("%f",&students[num].xinli);  
        getchar();
        if (59<students[num].xinli && students[num].xinli<100) 
        
            a5= 1.5;      
        
         else
        
        	a5=0;
		
		printf("请输入体育成绩:");  
        scanf("%f",&students[num].sports);  
        getchar();
        if (59<students[num].sports && students[num].sports<100) 
        
            a6= 2;      
        
         else
        
        	a6=0;
		

		printf("请输入C语言成绩:");  
        scanf("%f",&students[num].C_Mark);  
        getchar();
        if (59<students[num].C_Mark && students[num].C_Mark<100) 
        
            a7= 3.5;      
        
         else
        
        	a7=0;
		
        
        printf("请输入班主任评分:");  
        scanf("%f",&students[num].Banzhuren);  
        getchar();
        students[num].pingjun=a1+a2+a3+a4+a5+a6+a7+a8;  //总学分 
        
        j=(students[num].pingjun*0.4)+(students[num].Banzhuren*0.6);
        students[num].Cepingfen=j;
        num++;

        printf("是否继续?(Y/N),继续请按任意键,否则输入N:"); 
        if (getchar()=='N')  
        {  
            Num=num;
            break;
        }  
     }  
}     

 
 /*批量添加学生记录*/ 
void Student_many1()
{
	{   
	    system("cls");
	    system("color f0");
	    int i,j;
	    printf("请输入你将要添加的人员数: ");
	    scanf("%d",&j); 
		for(i=0;i<j;i++)
		{
			Student_Insert1();
		}
		printf("成员添加完毕,是否跳转至上一级菜单?\n");
		printf("是?,请按任意键,确认输入: \n"); 
        if (getchar()=='Y')  
        {  
            Student_add_Level_3_menu(); 
        }  
       
	}
 } 
/*为上面批量输入设置的函数,其代码与上面的
单个输入相似,删减了一部分*/ 
void Student_Insert1()  
{  
  
    {
        printf("请输入学号:");  
        scanf("%s",&students[num].ID);  
        getchar();  
        printf("请输入姓名:");  
        scanf("%s",&students[num].Name);  
        getchar();
		printf("请输入宿舍号:");  
        scanf("%s",&students[num].sushe);  
        getchar();
		printf("请输入高等数学成绩:");  
        scanf("%f",&students[num].mathA1);  
        getchar();
		printf("请输入大学英语成绩:");  
        scanf("%f",&students[num].EnglishA1);  
        getchar();
		printf("请输入软件技术导论成绩:");  
        scanf("%f",&students[num].software);  
        getchar();
		printf("请输入中国近代史纲要成绩:");  
        scanf("%f",&students[num].china_history);  
        getchar();
		printf("请输入军事教育:");  
        scanf("%f",&students[num].junshi);  
        getchar();
		printf("请输入心理健康教育成绩:");  
        scanf("%f",&students[num].xinli);  
        getchar();
		printf("请输入体育成绩:");  
        scanf("%f",&students[num].sports);  
        getchar();
		printf("请输入C语言成绩:");  
        scanf("%f",&students[num].C_Mark);  
        getchar();
        printf("请输入班主任评分:");  
        scanf("%f",&students[num].Banzhuren);  
        getchar();
        if (54<students[num].C_Mark && students[num].C_Mark< 60)    //把55~59分之间的成绩都加上5分
        {
            students[num].C_Mark += 5;      
        }

        num++;
     }  
} 
/*修改学生信息*/  
void Student_Modify()  
{  
    system("cls");
	system("color f0");
	float a1,a2,a3,a4,a5,a6,a7,a8;
	float j=0; 
    while(1) 
    {  
        char id[20]; 
        int index; 
        printf("请输入要修改的学生的学号:"); 
        scanf("%s",&id);  
        getchar();  
        index=Student_SearchByIndex(id);  
        if (index==-1)  
        {  
            printf("该学生不存在!\n"); 
         }
        else  
        {  
            printf("你要修改的学生信息为:\n"); 
            Student_DisplaySingle(index);  
            printf("-- 请输入新值--\n"); 
            /*printf("请输入学号:");  
            scanf("%s",&students[index].ID);  
            getchar();  
            printf("请输入姓名:");  
            scanf("%s",&students[index].Name);  
            getchar(); 
			printf("请输入宿舍号:");  
            scanf("%s",&students[index].sushe);  
            getchar();
		    printf("请输入高等数学成绩:");  
            scanf("%f",&students[index].mathA1);  
            getchar();
		    printf("请输入大学英语成绩:");  
            scanf("%f",&students[index].EnglishA1);  
            getchar();
		    printf("请输入软件技术导论成绩:");  
            scanf("%f",&students[index].software);  
            getchar();
		    printf("请输入中国近代史纲要成绩:");  
            scanf("%f",&students[index].china_history);  
            getchar();
		    printf("请输入军事教育:");  
            scanf("%f",&students[index].junshi);  
            getchar();
		    printf("请输入心理健康教育成绩:");  
            scanf("%f",&students[index].xinli);  
            getchar();
		    printf("请输入体育成绩:");  
            scanf("%f",&students[index].sports);  
            getchar();
            printf("请输入C语言成绩:");  
            scanf("%f",&students[index].C_Mark);  
            getchar();
			printf("请输入班主任评分:");  
            scanf("%f",&students[num].Banzhuren);  
            getchar();*/
			printf("请输入学号:");
        scanf("%s",&students[index].ID);  
        getchar();
        printf("请输入姓名:");  
        scanf("%s",&students[index].Name);  
        getchar();
		printf("请输入宿舍号:");  
        scanf("%s",&students[index].sushe);  
        getchar();
		printf("请输入高等数学成绩:");  
        scanf("%f",&students[index].mathA1);  
        getchar();
        if (59<students[index].mathA1 && students[index].mathA1<100) 
        
            a8= 1.5;      
        
        else
        
        	a8=0;
		

		printf("请输入大学英语成绩:");  
        scanf("%f",&students[index].EnglishA1);  
        getchar();
        if (59<students[index].EnglishA1 && students[index].EnglishA1<100) 
        
            a1= 2;      
        
         else
        
        	a1=0;
		

		printf("请输入软件技术导论成绩:");  
        scanf("%f",&students[index].software);  
        getchar();
        if (59<students[index].software && students[index].software<100) 
        
            a2= 1.5;      
        
         else
        
        	a2=0;
		

		printf("请输入中国近代史纲要成绩:");  
        scanf("%f",&students[index].china_history);  
        getchar();
        if (59<students[index].china_history && students[index].china_history<100) 
        
            a3= 2.5;      
        
         else
        
        	a3=0;
		

		printf("请输入军事教育:");  
        scanf("%f",&students[index].junshi);  
        getchar();
        if (59<students[index].junshi && students[index].junshi<100) 
        
            a4= 2;      
        
         else
        {
        	a4=0;
		}

		printf("请输入心理健康教育成绩:");  
        scanf("%f",&students[index].xinli);  
        getchar();
        if (59<students[index].xinli && students[index].xinli<100) 
        
            a5= 1.5;      
        
         else
        
        	a5=0;
		
		printf("请输入体育成绩:");  
        scanf("%f",&students[index].sports);  
        getchar();
        if (59<students[index].sports && students[index].sports<100) 
        
            a6= 2;      
        
         else
        
        	a6=0;
		

		printf("请输入C语言成绩:");  
        scanf("%f",&students[index].C_Mark);  
        getchar();
        if (59<students[index].C_Mark && students[index].C_Mark<100) 
        
            a7= 3.5;      
        
         else
        
        	a7=0;
		
        
        printf("请输入班主任评分:");  
        scanf("%f",&students[index].Banzhuren);  
        getchar();
        students[index].pingjun=a1+a2+a3+a4+a5+a6+a7+a8;  //总学分 
        
        j=(students[index].pingjun*0.4)+(students[index].Banzhuren*0.6);
        students[index].Cepingfen=j;  

         }  

         printf("是否继续?(Y/N),继续请按任意键,否则输入N:"); 
         if (getchar()=='N')  
         {  
            break;
         }  

     }  

} 

/*按学号删除学生信息*/  
void Student_Delete()  
{ 
    system("cls");
	system("color f0");
	IO_ReadInfo();
    int i;  
    while(1)  
    {  
        char id[20];  
        int index;  
        printf("请输入要删除的学生的学号:");  
        scanf("%s",&id);  
        getchar();  
        index=Student_SearchByIndex(id);  
        if (index==-1)  
        {  
            printf("学生不存在!\n");  
        }  
        else  
        {  
            printf("你要删除的学生信息为:\n"); 
            Student_DisplaySingle(index);  
            printf("%d",index);
            printf("%d",num);
            {   
                for (i=index;i<num-1;i++)  
                {  
                    students[i]=students[i+1];       //把后边的对象都向前移动  
                }
				 
                num--;	  
             } 
            printf("已删除\n");
			 
             IO_WriteInfo(); 
         }  

         printf("是否继续删除?(Y/N),继续请按任意键,否则输入N:"); 
         if (getchar()=='N')  
         {  
            break;
         }  
     }  
}  

/*按姓名删除学生信息*/  
void Student_Delete_1()  
{ 
    system("cls");
	system("color f0");
	IO_ReadInfo();
    int i;  
    while(1)  
    {  
        char name[20];  
        int index;  
        printf("请输入要删除的学生的姓名: ");  
        scanf("%s",&name);  
        getchar();  
        index=Student_SearchByName(name);  
        if (index==-1)  
        {  
            printf("学生不存在!\n");  
        }  
        else  
        {  
            printf("你要删除的学生信息为:\n"); 
            Student_DisplaySingle(index);  
            {   
                for (i=index;i<num-1;i++)  
                {  
                    students[i]=students[i+1];       //把后边的对象都向前移动  
                }
				 
                num--;	  
             } 
            printf("已删除\n");
			 
             IO_WriteInfo(); 
         }  

         printf("是否继续删除?(Y/N),继续请按任意键,否则输入N:"); 
         if (getchar()=='N')  
         {  
            break;
         }  
     }  
} 


/*按姓名查询*/  
void Student_Select_1()  
{  
    while(1)  
    {  
        char name[20];  
        int index;  

        printf("请输入要查询的学生的姓名:");  
        scanf("%s",&name); 
        getchar();  
        index=Student_SearchByName(name);  

        if (index==-1) 
        {  
            printf("学生不存在!\n"); 
        } 
        else  
        {  
            printf("你要查询的学生信息为:\n"); 
            Student_DisplaySingle(index);  
        }  

        printf("是否继续?(Y/N),继续请按任意键,否则输入N:"); 
        if (getchar()=='N')  
        {  
            break;
        } 

     }
}  
/*按学号查找*/
void Student_Select_2() 
{
	while(1)
	{
	    char ID[20];
	    int index;
		
	    system("cls");
	    system("color f0"); 
	    printf("请输入要查询的学生的学号:");  
        scanf("%s",&ID);
		getchar();
		index=Student_SearchByIndex(ID);
		
        if (index==-1) 
        {  
            printf("学生不存在!\n"); 
        } 
        else  
        {  
            printf("你要查询的学生信息为:\n"); 
            Student_DisplaySingle(index);  
        }  

        printf("是否继续?(Y/N),继续请按任意键,否则输入N:"); 
        if (getchar()=='N')  
        {  
            break;
        } 

     }
	
}

void Student_Search_menu()
{
 	    int choice;
         while(1) 	
	{
		  system("cls");
	      system("color f0");
		  printf("\t\t\t\t\t\t1. 按姓名查询学生记录\n");  
          printf("\t\t\t\t\t\t2. 按学号查询学生记录\n");
          printf("\t\t\t\t\t\t3. 返回上一级菜单\n");
		  printf("\t\t\t\t\t\t4. 返回主菜单\n");
		  printf("\t\t\t\t\t\t请选择(1-4):");
		  scanf("%d",&choice);  
          getchar();
		  switch(choice)
		{
		  	case 1:Student_Select_1();
		  	       break;
					  
		  	case 2:Student_Select_2();
		  	       break;
		  	       
		  	case 3:Level_2_menu();
			       break;
			       
			case 4:Level_menu();  
                   break;
                   
		} 
	}  
            
           	
}

/*按C语言成绩从高到低排序*/  
void Student_From_high_to_low()  
{  
    int i,j;  
    struct Student tmp;  

    for (i=0;i<num;i++)  
    {  
        for (j=1;j<num-i;j++) 
        {  
            if (students[j-1].C_Mark<students[j].C_Mark) 
            {  
                tmp=students[j-1]; 
                students[j-1]=students[j];  
                students[j]=tmp;  
            }  
        }  
    }  
}  

/*按C语言成绩从低到高排序*/ 
void Student_From_low_to_high()
{
	    int i,j;  
    struct Student tmp;  

    for (i=0;i<num;i++)  
    {  
        for (j=1;j<num-i;j++) 
        {  
            if (students[j-1].C_Mark>students[j].C_Mark) 
            {  
                tmp=students[j-1]; 
                students[j-1]=students[j];  
                students[j]=tmp;  
            }  
        }  
    } 
	
} 


/*按综合测评从高到低排序*/  
void Student_From_high_to_low1()  
{  
    int i,j,k;  
    struct Student tmp;  

    for (i=0;i<num;i++)  
    {  
        for (j=1;j<num-i;j++) 
        {  
            if (students[j-1].Cepingfen<students[j].Cepingfen) 
            {  
                tmp=students[j-1]; 
                students[j-1]=students[j];  
                students[j]=tmp;  
            }  
        }  
    }
    
	/*system("cls");
    system("color f0");
    while(1) 
   { 
	int k;  
    printf("%10s%10s  %8s%8s%8s%8s%8s%8s%8s%8s%8s%8s%8s%8s\n","学号","姓名","宿舍号","    高等数学","大学英语","软件技术导论","中国近代史","军事教育","心理健康教育","大学体育","C语言成绩","品行分","班主任评分","测评分");  
    printf("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n");  
    for (k=0;k<num;k++)  
    { 
	if(59<students[k].mathA1&&students[k].mathA1<101&&59<students[k].EnglishA1&&students[k].EnglishA1<101&&59<students[k].software&&students[k].software<101&&59<students[k].china_history&&students[k].china_history<101&&59<students[k].junshi&&students[k].junshi<101&&59<students[k].xinli&&students[k].xinli<101&&59<students[k].sports&&students[k].sports<101&&59<students[k].C_Mark&&students[k].C_Mark<101);  
      {
	   printf("%10s%10s   %8s %8.2f %8.2f %8.2f   %8.2f %8.2f %8.2f   %8.2f %8.2f %8.2f %8.2f %8.2f\n",students[k].ID,students[k].Name,students[k].sushe,students[k].mathA1,students[k].EnglishA1,students[k].software,students[k].china_history,students[k].junshi,students[k].xinli,students[k].sports,students[k].C_Mark,students[k].pingjun,students[k].Banzhuren,students[k].Cepingfen);  
      }
	}
	     printf("数据加载完毕!");
		 jiangxue_menu(); 
	     Student_Tongji_menu3();
        
  } */
}


/*奖学金评定办法*/
void jiangxue_menu()
{
	float i=0,j=0,k=0;
	int a,b,c;
	i=num*0.1;
	j=num*0.15;
	k=num*0.2;
	a=(int)i;
	b=(int)j;
	c=(int)k;
	printf("一等奖获得人数为:%d\n",a);
	printf("二等奖获奖人数为:%d\n",b);
	printf("三等奖获奖人数为:%d\n",c);
	
	
	
	
}
//对奖学金及格的人员筛选出来 
void jiangxue()
{
	system("cls");
    system("color f0");
    while(1) 
   { 
	int k;  
    printf("%10s%10s  %8s%8s%8s%8s%8s%8s%8s%8s%8s%8s%8s%8s\n","学号","姓名","宿舍号","    高等数学","大学英语","软件技术导论","中国近代史","军事教育","心理健康教育","大学体育","C语言成绩","品行分","班主任评分","测评分");  
    printf("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n");  
    for (k=0;k<num;k++)  
    { 
	if(59<students[k].mathA1&&students[k].mathA1<101&&59<students[k].EnglishA1&&students[k].EnglishA1<101&&59<students[k].software&&students[k].software<101&&59<students[k].china_history&&students[k].china_history<101&&59<students[k].junshi&&students[k].junshi<101&&59<students[k].xinli&&students[k].xinli<101&&59<students[k].sports&&students[k].sports<101&&59<students[k].C_Mark&&students[k].C_Mark<101);  
      {
	   printf("%10s%10s   %8s %8.2f %8.2f %8.2f   %8.2f %8.2f %8.2f   %8.2f %8.2f %8.2f %8.2f %8.2f\n",students[k].ID,students[k].Name,students[k].sushe,students[k].mathA1,students[k].EnglishA1,students[k].software,students[k].china_history,students[k].junshi,students[k].xinli,students[k].sports,students[k].C_Mark,students[k].pingjun,students[k].Banzhuren,students[k].Cepingfen);  
      }
	}
	     printf("数据加载完毕!");
		 jiangxue_menu(); 
	     Student_Tongji_menu3();
        
  }
}

/*显示学生信息*/  
void Student_Display()  
{  

   system("cls");
   system("color f0");
   while(1) 
  { 
	int i;  
    printf("%10s%10s  %8s%8s%8s%8s%8s%8s%8s%8s%8s%8s\n","学号","姓名","宿舍号","    高等数学","大学英语","软件技术导论","中国近代史","军事教育","心理健康教育","大学体育","C语言成绩","品行分");  
    printf("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n");  
    for (i=0;i<num;i++)  
    {  
    printf("%10s%10s   %8s %8.2f %8.2f %8.2f   %8.2f %8.2f %8.2f   %8.2f %8.2f %8.2f\n",students[i].ID,students[i].Name,students[i].sushe,students[i].mathA1,students[i].EnglishA1,students[i].software,students[i].china_history,students[i].junshi,students[i].xinli,students[i].sports,students[i].C_Mark,students[i].pingjun);  
    }
	    printf("是否继续?(Y/N),继续请按任意键,否则输入N:"); 
        if (getchar()=='N')  
        {  
            break;
        } 
  }
       
} 

/*显示学生信息1*/  
void Student_Display1()  
{  

   system("cls");
   system("color f0");
   while(1) 
  { 
	int i;  
    printf("%10s%10s  %8s%8s%8s%8s%8s%8s%8s%8s%8s%8s%8s%8s\n","学号","姓名","宿舍号","    高等数学","大学英语","软件技术导论","中国近代史","军事教育","心理健康教育","大学体育","C语言成绩","品行分","班主任评分","测评分");  
    printf("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n");  
    for (i=0;i<num;i++)  
    {  
    printf("%10s%10s   %8s %8.2f %8.2f %8.2f   %8.2f %8.2f %8.2f   %8.2f %8.2f %8.2f %8.2f %8.2f\n",students[i].ID,students[i].Name,students[i].sushe,students[i].mathA1,students[i].EnglishA1,students[i].software,students[i].china_history,students[i].junshi,students[i].xinli,students[i].sports,students[i].C_Mark,students[i].pingjun,students[i].Banzhuren,students[i].Cepingfen);  
    }
	     printf("数据加载完毕!"); 
	     Student_Tongji_menu3();
        
  }
       
} 

/*显示学生信息2在奖学金评定时使用*/  
void Student_Display2()  
{  

   system("cls");
   system("color f0");
   while(1) 
  { 
	int i;  
    printf("%10s%10s  %8s%8s%8s%8s%8s%8s%8s%8s%8s%8s%8s%8s\n","学号","姓名","宿舍号","    高等数学","大学英语","软件技术导论","中国近代史","军事教育","心理健康教育","大学体育","C语言成绩","品行分","班主任评分","测评分");  
    printf("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n");  
    for (i=0;i<num;i++)  
    {  
    printf("%10s%10s   %8s %8.2f %8.2f %8.2f   %8.2f %8.2f %8.2f   %8.2f %8.2f %8.2f %8.2f %8.2f\n",students[i].ID,students[i].Name,students[i].sushe,students[i].mathA1,students[i].EnglishA1,students[i].software,students[i].china_history,students[i].junshi,students[i].xinli,students[i].sports,students[i].C_Mark,students[i].pingjun,students[i].Banzhuren,students[i].Cepingfen);  
    }
	     printf("数据加载完毕!");
		 jiangxue_menu(); 
	     Student_Tongji_menu3();
        
  }
       
} 
/*将学生信息从文件(student database.txt)中读出*/  
void IO_ReadInfo()  
{ 
    FILE *fp;  
    int i;  

    if ((fp=fopen("student database.txt","rb"))==NULL)  
    {  
        printf("不能打开文件!\n");  
        return;  
    }

    if (fread(&num,sizeof(int),1,fp)!=1)  
    {  
        num=-1;  
    } 
    else  
    {  
        for(i=0;i<num;i++)  
        {  
            fread(&students[i],sizeof(struct Student),1,fp);  
        }  
    } 

    fclose(fp);  
} 

/*将学生信息写入文件(Database.txt)*/  
void IO_WriteInfo()
{  
    FILE *fp; 
    int i;  
    if ((fp=fopen("student database.txt","wb"))==NULL)  
    {  
        printf("不能打开文件!\n");  
        return;  
    }  
    if (fwrite(&num,sizeof(int),1,fp)!=1)  
    {  
        printf("写入文件错误!\n");  
    }  
    for (i=0;i<num;i++)  
    {  
        if (fwrite(&students[i],sizeof(struct Student),1,fp)!=1)  
        {  
            printf("写入文件错误!\n");  
        }  
    }  
    fclose(fp);  
}
 /*一级菜单*/ 
 /*账号密码登录*/
void Level_1_menu( )
{	char account[20];
	char password[30];
	int i = 0;
	int j = 3;
	for (; i < 3; i++){
	    printf("\n\n\n\n\t\t\t\t\t\t     *主菜单*\n");
		printf("\t\t\t\t\t\t******************\n");
		printf("\t\t\t\t\t\t*请输入您的账号:*\n");
		printf("\t\t\t\t\t\t******************\n");
		printf("                                                请输入:");		
		scanf ("%s", account);
		printf("\t\t\t\t\t\t******************\n");
		//scanf ("%s", account);
		printf("\t\t\t\t\t\t******************\n");
		printf("\t\t\t\t\t\t*请输入您的密码:*\n");	
		printf("\t\t\t\t\t\t******************\n");
		printf("                                                请输入:");			
		scanf ("%s", password);
		if (strcmp(USER, account) == 0 && strcmp(PW, password) == 0){
			printf("登录成功!\n");
			break;
		}
		else{
			j--;
			printf("登录失败您还有%d次机会!\n", j);
		}
	}
	if (i == 3){
		printf("登录失败,退出!");
	}
	//system("pause");
	system("cls");
	system("color f0"); 
}
/*增加学生信息三级菜单模块*/ 
 
void Student_add_Level_3_menu()
 {
 	    int choice;
         while(1) 	
	{
		  system("cls");
	      system("color f0");
	      IO_ReadInfo();       //读取文件 
		  printf("\t\t\t\t\t\t1. 单个添加学生信息\n");  
          printf("\t\t\t\t\t\t2. 批量添加学生信息\n");
          printf("\t\t\t\t\t\t3. 返回上一级菜单\n");
		  printf("\t\t\t\t\t\t4. 返回主菜单\n");
		  printf("\t\t\t\t\t\t请选择(1-4):");
		  scanf("%d",&choice);  
          getchar();
		  switch(choice)
		{
		  	case 1:Student_Insert();
		  	       IO_WriteInfo();     //写入文件 
		  	       break;
					  
		  	case 2:Student_many1();
		  	       IO_WriteInfo();     //写入文件
		  	       break;
		  	       
		  	case 3:Level_2_menu();
			       break;
			       
			case 4:Level_menu();  
                   break;
                   
		}
		IO_WriteInfo();     //写入文件 
	}  
            //Student_Insert();  
           
 }

        /*二级菜单*/ 
        /*主菜单*/
void Level_2_menu( )
{
int choice;
    while(1)  
    {  
	     /*二级菜单*/ 
        /*主菜单*/
		system("cls");
	    system("color f0");
		IO_ReadInfo();       //读取文件  
        printf("\n\t\t\t\t\t\t------ 学生成绩管理系统------\n");  
        printf("\t\t\t\t\t\t1. 增加学生记录\n");  
        printf("\t\t\t\t\t\t2. 修改学生记录\n");  
        printf("\t\t\t\t\t\t3. 删除学生记录\n");
		printf("\t\t\t\t\t\t4. 查询学生记录\n");  
        printf("\t\t\t\t\t\t5. 统计学生记录\n");  
        printf("\t\t\t\t\t\t6. 退出\n");	  
        printf("\t\t\t\t\t\t请选择(1-6):");  

        scanf("%d",&choice);  
        getchar();  

        switch(choice)  
        { 
        case 1:
        	Student_add_Level_3_menu();
            break; 

        case 2: 
            Student_Modify(); 
            break;  

        case 3:  
            student_Delete_menu(); 
            break;  

        case 4:  
            Student_Search_menu();
            break;  

        case 5:
		    Student_Tongji_menu();
			break; 
		  
        case 6: 
            Level_menu();  
            break;

        }
		IO_WriteInfo(); 
   } 
}

/*学生端成绩查询模块*/
void student_Delete_menu()
{
   int choice; 
    while(1)
	{
		system("cls");
	    system("color f0");
	    IO_ReadInfo();       //读取文件
		printf("\n\n\n\n\t\t\t\t\t\t************************\n");	    
	    printf("\t\t\t\t\t\t* 删除学生信息菜单******\n");
		printf("\t\t\t\t\t\t************************\n");
	    printf("\t\t\t\t\t\t*1、按姓名删除信息     *\n");
		printf("\t\t\t\t\t\t*2、按学号删除信息     *\n");
		printf("\t\t\t\t\t\t*3、返回上一级功能菜单 *\n");
		printf("\t\t\t\t\t\t*4、返回主菜单         *\n");
		printf("\t\t\t\t\t\t************************\n");
		printf("\t\t\t\t\t\t************************\n");		
		printf("                                                请选择(1-4):");		
		scanf("%d",&choice);
 
	switch(choice)  
        { 
        case 1:
			   system("cls");
	           system("color f0");
               Student_Delete_1();
               break;
        case 2:
        	   system("cls");
	           system("color f0");
        	   Student_Delete(); 
        	   break;
        case 3:
               Level_2_menu(); 
               break;
               
        case 4:
               Level_menu();  
               break;       
	    }
	    
	   IO_WriteInfo(); 
	}	
 }
 

/*学生端成绩查询模块*/
void student_menu()
{
   int choice; 
    while(1)
	{
		system("cls");
	    system("color f0");
	    IO_ReadInfo();       //读取文件
		printf("\n\n\n\n\t\t\t\t\t\t*******************\n");	    
	    printf("\t\t\t\t\t\t*     学生菜单    *\n");
		printf("\t\t\t\t\t\t*******************\n");
	    printf("\t\t\t\t\t\t*1、按姓名查询成绩*\n");
		printf("\t\t\t\t\t\t*2、按学号查询成绩*\n");
		printf("\t\t\t\t\t\t*3、查询课程信息  *\n");
		printf("\t\t\t\t\t\t*4、退出          *\n");
		printf("\t\t\t\t\t\t*******************\n");
		printf("\t\t\t\t\t\t*******************\n");		
		printf("                                                请选择(1-3):");		
		scanf("%d",&choice);
 
	switch(choice)  
        { 
        case 1:
			   system("cls");
	           system("color f0");
               Student_Select_1();
               break;
        case 2:
        	   Student_Select_2();
        	   break;
        	   
        case 3:
              student_menu1();
			  break;    
        	   
        case 4:
               Level_menu();  
               break;
	    }
	    
	   IO_WriteInfo(); 
	}	
 }



void student_Kecheng_menu1()
{   printf("\n\n\n\n\t\t\t\t\t\t************************************************\n");
	printf("\t\t\t\t\t\t* 课程代号       课程名称        学分   必修/选修*\n");
	printf("\t\t\t\t\t\t*B27020100    中国近现代史纲要   2.0      必修   *\n");
	printf("\t\t\t\t\t\t*B10060111    大学英语A1         4.0      必修   *\n");
	printf("\t\t\t\t\t\t*B14010101    大学体育1          2.0      必修   *\n");
	printf("\t\t\t\t\t\t*B06010111    高等数学A1         5.0      必修   *\n");
	printf("\t\t\t\t\t\t*B08050101    软件技术导论       2.0      必修   *\n");
	printf("\t\t\t\t\t\t*B08010100    C语言程序设计      5.0      必修   *\n");
	printf("\t\t\t\t\t\t*B08010201    C语言程序设计实训1 2.0      必修   *\n");
	printf("\t\t\t\t\t\t*B08056601    创新与指导实践1    1.0      必修   *\n");
	printf("\t\t\t\t\t\t*B21991100    军事教育           2.0      选修   *\n");
	printf("\t\t\t\t\t\t**************************************************\n");
	printf("\t\t\t\t\t\t**************************************************\n");
    printf("\t\t\t\t\t\t1. 返回上一级菜单\n");
	printf("\t\t\t\t\t\t2. 返回主菜单\n");
	printf("\t\t\t\t\t\t请选择(1-2):");
	      int choice;
		  scanf("%d",&choice);
		  while(1) 
          
		  switch(choice)
		  
		{
		  
		  	       
		  	case 1:student_menu1();
			       break;
			       
			case 2:Level_menu();  
                   break;
                   
		}
		     //写入文件
}

void student_Kecheng_menu2()
{   printf("\n\n\n\n\t\t\t\t\t\t************************************************\n");
	printf("\t\t\t\t\t\t* 课程代号       课程名称        学分   必修/选修*\n");
	printf("\t\t\t\t\t\t*B27010100    思想道德修养       3.0      必修   *\n");
	printf("\t\t\t\t\t\t*B10060112    大学英语A2         4.0      必修   *\n");
	printf("\t\t\t\t\t\t*B14010102    大学体育2          2.0      必修   *\n");
	printf("\t\t\t\t\t\t*B06010112    高等数学A2         5.0      必修   *\n");
	printf("\t\t\t\t\t\t*B08052200    数字逻辑设计       2.0      必修   *\n");
	printf("\t\t\t\t\t\t*B06050131    大学物理C1         2.5      必修   *\n");
	printf("\t\t\t\t\t\t*B06020100    离散数学           4.0      必修   *\n");
	printf("\t\t\t\t\t\t*B08056601    创新与指导实践2    1.0      必修   *\n");
	printf("\t\t\t\t\t\t*B21991100    C语言程序设计实践2 2.0      选修   *\n");
	printf("\t\t\t\t\t\t**************************************************\n");
	printf("\t\t\t\t\t\t**************************************************\n");
    printf("\t\t\t\t\t\t1. 返回上一级菜单\n");
	printf("\t\t\t\t\t\t2. 返回主菜单\n");
	printf("\t\t\t\t\t\t请选择(1-2):");
	      int choice;
		  scanf("%d",&choice);
		  while(1) 
          
		  switch(choice)
		  
		{
		  
		  	       
		  	case 1:student_menu1();
			       break;
			       
			case 2:Level_menu();  
                   break;
                   
		}
		     //写入文件
}
 
 
/*学生端学生课程查询模块*/
void student_menu1()
{
   int choice; 
    while(1)
	{
		system("cls");
	    system("color f0");
	    IO_ReadInfo();       //读取文件
		printf("\n\n\n\n\t\t\t\t\t\t*******************\n");	    
	    printf("\t\t\t\t\t\t*     课程信息    *\n");
		printf("\t\t\t\t\t\t*******************\n");
	    printf("\t\t\t\t\t\t*1、第一学期      *\n");
		printf("\t\t\t\t\t\t*2、第二学期      *\n");
		printf("\t\t\t\t\t\t*3、第三学期      *\n");
		printf("\t\t\t\t\t\t*4、第四学期      *\n");
		printf("\t\t\t\t\t\t*5、第五学期      *\n");
		printf("\t\t\t\t\t\t*6、第六学期      *\n");
		printf("\t\t\t\t\t\t*7、第七学期      *\n");
		printf("\t\t\t\t\t\t*8、退出          *\n");
		printf("\t\t\t\t\t\t*******************\n");
		printf("\t\t\t\t\t\t*******************\n");		
		printf("                                                请选择(1-3):");		
		scanf("%d",&choice);
 
	switch(choice)  
        { 
        case 1:
			   system("cls");
	           system("color f0");
               student_Kecheng_menu1();
               break;
        case 2:
        	   system("cls");
	           system("color f0");
        	   student_Kecheng_menu2();
        	   break;
        case 3:
               
               break;
        case 4:
                
               break;
        case 5:
                 
               break;
        case 6:
                 
               break;
        case 7:
                 
               break;
        case 8:
                Level_menu();  
                break;
            
	    }
	    
	   IO_WriteInfo(); 
	}	
 }
  
/*统计菜单模块*/
void Student_Tongji_menu()
{
	int choice; 
    while(1)
	{
		system("cls");
	    system("color f0");
	    IO_ReadInfo();       //读取文件
		printf("\n\n\n\n\t\t\t\t\t\t******************************\n");	    
	    printf("\t\t\t\t\t\t*        学生统计菜单        *\n");
		printf("\t\t\t\t\t\t******************************\n");
	    printf("\t\t\t\t\t\t*1、按C语言成绩从高到低排序  *\n");
		printf("\t\t\t\t\t\t*2、按C语言成绩从低到高排序  *\n");
		printf("\t\t\t\t\t\t*3、按宿舍成员进行统计       *\n");
		printf("\t\t\t\t\t\t*4、奖学金评定               *\n");	
		printf("\t\t\t\t\t\t*5、返回功能菜单             *\n");
		printf("\t\t\t\t\t\t*6、返回主菜单               *\n");
		printf("\t\t\t\t\t\t******************************\n");
		printf("\t\t\t\t\t\t******************************\n");		
		printf("                                                请选择(1-5):");		
		scanf("%d",&choice);
 
	switch(choice)  
        { 
        case 1:	
            Student_From_high_to_low();
            Student_Display1();
            break;
               
        case 2:
        	  Student_From_low_to_high();
			  Student_Display1();
			  break;
			  
		case 3:
		       Student_SearchBySushe();
			   break;
			   
		case 4:
			    
		       Student_From_high_to_low1();
			   Student_Display2(); 
               break;
               	   
        case 5:
		       Level_2_menu( );   
               break;
               
        case 6:
               Level_menu();  
               break;
               
	    }
	    
	   IO_WriteInfo(); 
	}	
 }
 
/*统计菜单模块*/
void Student_Tongji_menu2()
{
	int choice; 
    while(1)
	{
		
	    IO_ReadInfo();       //读取文件
		printf("\n\n\n\n\t\t\t\t\t\t******************************\n");	    
	    printf("\t\t\t\t\t\t* 你目前在学生宿舍统计页面! *\n");
		printf("\t\t\t\t\t\t******************************\n");
	    printf("\t\t\t\t\t\t*1、返回上一级统计菜单       *\n");
		printf("\t\t\t\t\t\t*2、返回功能选择菜单         *\n");
		printf("\t\t\t\t\t\t*3、返回主菜单               *\n");
		printf("\t\t\t\t\t\t******************************\n");
		printf("\t\t\t\t\t\t******************************\n");		
		printf("                                                请选择(1-3):");		
		scanf("%d",&choice);
 
	switch(choice)  
        { 
        case 1:	
               system("cls");
	           system("color f0");
	           Student_Tongji_menu(); 
               
        case 2:
        	  system("cls");
	          system("color f0");
	          Level_2_menu( );
			  
		case 3:
		       system("cls");
	           system("color f0");
	           Level_menu();
	    }
	    
	}	
 }
 
/*统计菜单模块*/
void Student_Tongji_menu3()
{
	int choice; 
    while(1)
	{
		
	    IO_ReadInfo();       //读取文件
		printf("\n\n\n\n\t\t\t\t\t\t******************************\n");	    
	    printf("\t\t\t\t\t\t* 你目前按C语言成绩统计页面!*\n");
		printf("\t\t\t\t\t\t******************************\n");
	    printf("\t\t\t\t\t\t*1、返回上一级统计菜单       *\n");
		printf("\t\t\t\t\t\t*2、返回功能选择菜单         *\n");
		printf("\t\t\t\t\t\t*3、返回主菜单               *\n");
		printf("\t\t\t\t\t\t******************************\n");
		printf("\t\t\t\t\t\t******************************\n");		
		printf("                                                请选择(1-3):");		
		scanf("%d",&choice);
 
	switch(choice)  
        { 
        case 1:	
               system("cls");
	           system("color f0");
	           Student_Tongji_menu(); 
               
        case 2:
        	  system("cls");
	          system("color f0");
	          Level_2_menu( );
			  
		case 3:
		       system("cls");
	           system("color f0");
	           Level_menu();
	    }
	    
	}	
 }	
 
  
/*第一级主菜单学生or老师的判断*/ 
void Level_menu()
{       int choice;
        while(1)
		{ 
		system("cls");
	    system("color f0");
	    printf("\n\n\n\n\n\n\n\t\t\t\t\t\t******************\n");
		printf("\t\t\t\t\t\t*1、教师端       *\n");
		printf("\t\t\t\t\t\t*2、学生端       *\n");
		printf("\t\t\t\t\t\t*3、退出         *\n");
		printf("\t\t\t\t\t\t******************\n");
		printf("                                                请选择(1-3):");			
		scanf("%d",&choice);
		 switch(choice)
		 {
		   case 1:
		          system("cls");
		          system("color f0");		   
                  Level_1_menu();   //一级菜单,密码登录。    
                  IO_ReadInfo();          //读取文件
                  Level_2_menu();   //二级菜单-主菜单 
                  IO_WriteInfo();
				  break;
				  
			case 2:
				 student_menu();
				 break; 
			case 3:
				  exit(0);  
                  break;			  
		 } 
		} 
 } 


 
/***********主程序*********/  
main()  
{  
	Level_menu();
} 
  

  • 9
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言学生成绩管理系统(以包含文件的形式的),结构体,链表,数组,以下是main.c #include #include #include #define m 3/*宏定义m的值为3*/ struct node/*链表初始化*/ { char name[20]; int no; float score[m]; float sum; float avg; struct node *next; }; char ch[m+4][20]={{"学号"},{"姓名"},{"语文"},{"数学"},{"英语"},{"总分"},{"平均分"}};/*定义并初始化一个全局二维字符数组*/ #include "save.c"/*包含保存文件*/ #include "read.c"/*包含读取文件*/ #include "output.c"/*包含打印文件*/ #include "set.c"/*包含录入文件*/ #include "demand.c"/*包含查询文件*/ #include "sort.c"/*包含排序文件*/ #include "modified.c"/*包含修改文件*/ #include "add.c"/*包含添加文件*/ #include "del.c"/*包含删除文件*/ void main() { int n; printf("\n\t\t\t欢迎使用学生成绩管理系统\n\n"); printf("\t\t\t\t\t\t制 作: XIA XIA\n"); do { printf("\n\n1:学生成绩录入,并保存\n"); printf("2:学生成绩查询\n"); printf("3:学生成绩的排序\n"); printf("4:学生成绩的修改\n"); printf("5:学生成绩的打印\n"); printf("6:学生信息的添加\n"); printf("7:学生信息的删除\n"); printf("0:退出学生成绩管理系统\n\n\n"); printf("输入你要执行操作的相应序号\n"); scanf("%d",&n);/*输入相就的操作的序号*/ switch (n) { case 1: set();break;/*调用录入函数*/ case 2: demand();break;/*调用查询函数*/ case 3: sort();break;/*调用排序函数*/ case 4: modified();break;/*调用修改函数*/ case 5: output();break;/*调用打印函数*/ case 6: add();break;/*调用添加函数*/ case 7: del();break;/*调用删除函数*/ case 0: printf("正在退出学生成绩管理系统......\n");exit(0);/*直到输入“0”退出学生成绩管理系统*/ default:printf("输入错误码,请重新输入\n"); } }while(1); }

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值