c语言 学生成绩管理系统

c语言 学生成绩管理系统1.分管理端、教师端、学生端2.具有打印、登记、添加、排序、查询、修改、删除学生信息等功能3.其中排序能按总成绩排序或分各科目成绩排序4.查询功能则能按照学号、姓名查询

c语言期末作业

学生成绩管理系统
本系统能够对学生成绩管理功能,包括:
1.对多个学生成绩进行管理,至少10个学生。
2.每个学生至少3门课程。
3.对每个学生大学期间的成绩进行记录。
4.修改学生成绩。
5.不同用户的权限不同,管理员拥有所有权限(打印、登记、添加、排序、查询、修改、删除学生信息)、教师可以排序、查询、登记和修改成绩;学生可以查询成绩。 其中查询分姓名查询、学号查询;排序分总成绩排序及各科成绩排序.
6.成绩说明:0~100,整数。
7.成绩需要保存进文件,程序初始化时读取文件。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rGQeWF-,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rGQeWF-,size_20,color_FFFFFF,t_70,g_se,x_16

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
int g=3;                 //登陆密码时允许输入的次数
char prefix_a[8]="asdf"; //管理员密码
char prefix_t[8]="asdf"; //教师密码
char prefix_s[8]="asdf"; //学生密码
int number;              //全局变量学生人数

void menu();             //主界面函数
void administrator();    //管理端界面
void teachar();          //教师端界面
void student();          //学生端界面

void color(short x);     //改变字体颜色

void password_a();       //管理端密码登陆
void password_t();       //教师端密码登陆
void password_s();       //学生端密码登陆

void input();            //登记学生成绩
void delete_();          //删除学生信息
void search();           //查询学生成绩
void change();           //修改学生成绩
void show();             //打印学生信息
void add();              //添加学生信息

void print_table();       //列表头
void read();              //从文件中读取信息
void back_a();            //管理端返回上一界面
void back_t();            //教师端返回上一界面
void back_s();            //学生端返回上一界面
void save();              //保存学生信息函数

void back_sort_a();        //管理端排序功能 返回界面
void back_sort_t();        //教师端排序功能 返回界面
void sort_a();             //管理端排序学生成绩
void sort_t();             //教师端排序学生成绩
void sort_sum();           //按总成绩排序
void sort_grade1();        //按数学成绩排序
void sort_grade2();        //按英语成绩排序
void sort_grade3();        //按物理成绩排序

void search_a();           //管理端查询学生成绩
void search_t();           //教师端查询学生成绩
void search_s();           //学生端查询学生成绩
void search_id();          //按学号查询
void search_name();        //按学号查询
void back_search_a();      //管理端查询功能 返回界面
void back_search_t();      //教师端查询功能 返回界面
void back_search_s();      //学生端查询功能 返回界面

struct student{
 int   id;               //学号
 char  name[20];         //姓名
 char  sex[5];           //性别
 float grade1;           //高等数学
 float grade2;           //大学英语
 float grade3;           //大学物理
 float avg;              //平均分
 float sum;              //总分

 }stu[100];

int main()
{
    menu();
    return 0;
}

void menu()          //主界面
{
    int l;
            printf("\t欢迎使用学生信息系统\t\n");
            printf("\t     1.管理端 \t\n");
            printf("\t     2.教师端 \t\n");
            printf("\t     3.学生端 \t\n");
            printf("\t     4.退出   \n");
            printf("=================================\n");
            printf("请输入选择的登陆端: ");
            scanf("%d",&l);

    switch(l){
        case 1:
            system("cls");
            password_a();
            break;
        case 2:
            system("cls");
            password_t();
            break;
        case 3:
            system("cls");
            password_s();
            break;
        case 4:
            printf("感谢您的使用,已退出!\n");
            exit(0);
        default:
            color(772);
            printf("[输入错误]请3秒后重新输入有效数字!\n");
            Sleep(3000);
            color(7);
            system("cls");
            menu();
            break;
        }
}

void administrator() //管理端界面
{
    read();
    int l;
            printf("\t欢迎使用管理端系统\t\n");
            printf("\t   1.打印学生成绩 \t\n");
            printf("\t   2.登记学生成绩 \t\n");
            printf("\t   3.添加学生成绩 \t\n");
            printf("\t   4.排序学生成绩 \t\n");
            printf("\t   5.查询学生成绩\t\n");
            printf("\t   6.修改学生信息  \n");
            printf("\t   7.删除学生信息  \n");
            printf("\t   8.返回  \n");
            printf("\t   9.退出  \n");
            printf("=================================\n");
            printf("请输入要执行的操作: ");
            scanf("%d",&l);

    switch(l){
         case 1:
            system("cls");
            show();
            back_a();
            break;
        case 2:
            system("cls");
            input();
            back_a();
            break;
       case 3:
            system("cls");
            add();//添加学生信息();
            back_a();
            break;
        case 4:
            system("cls");
            sort_a();
            back_a();
            break;
        case 5:
            system("cls");
            search_a();
            back_a();
            break;
        case 6:
            system("cls");
            change();
            back_a();
            break;
        case 7:
            system("cls");
            delete_();
            back_a();
            break;
        case 8:
            system("cls");
            menu();
            break;
        case 9:
            printf("感谢您的使用,已退出!\n");
            exit(0);
        default:
            color(772);
            printf("[输入错误]请3秒后重新输入有效数字!\n");
            Sleep(3000);
            color(7);
            system("cls");
            administrator();
            break;
        }
}
void teachar()       //教师端界面
{
     read();
    int l;
            printf("\t欢迎使用教师端系统\t\n");
            printf("\t   1.打印学生成绩 \t\n");
            printf("\t   2.登记学生成绩 \t\n");
            printf("\t   3.排序学生成绩 \t\n");
            printf("\t   4.查询学生成绩\t\n");
            printf("\t   5.修改学生信息  \n");
            printf("\t   6.返回  \n");
            printf("\t   7.退出  \n");
            printf("=================================\n");
            printf("请输入要执行的操作: ");
            scanf("%d",&l);
    switch(l){
        case 1:
            system("cls");
            show();
            back_t();
            break;

        case 2:
            system("cls");
            input();
            back_t();
            break;
        case 3:
            system("cls");
            sort_t();
            back_t();
            break;
        case 4:
            system("cls");
            search_t();
            back_t();
            break;
        case 5:
            system("cls");
            change();
            back_t();
            break;
        case 6:
            system("cls");
            menu();
            break;
        case 7:
            printf("感谢您的使用,已退出!");
            exit(0);
        default:
            color(772);
            printf("[输入错误]请3秒后重新输入有效数字!\n");
            Sleep(3000);
            color(7);
            system("cls");
            teachar();
            break;
        }
}
void student()       //学生端界面
{
    read();
    int l;
            printf("\t欢迎使用学生端系统\t\n");
            printf("\t   1.打印学生成绩 \t\n");
            printf("\t   2.查询学生成绩\t\n");
            printf("\t   3.返回  \n");
            printf("\t   4.退出  \n");
            printf("=================================\n");
            printf("请输入要执行的操作: ");
            scanf("%d",&l);
    switch(l){
         case 1:
            system("cls");
            show();
            back_s();
            break;
        case 2:
            system("cls");
            search_s();
            back_s();
            break;
        case 3:
            system("cls");
            menu();
            break;
        case 4:
            printf("感谢您的使用,已退出!\n");
            exit(0);
        default:
            color(772);
            printf("[输入错误]请3秒后重新输入有效数字!\n");
            Sleep(3000);
            color(7);
            system("cls");
            student();
            break;
        }
}
void color(short x) //改变字体颜色
{
  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x);
}
void password_a()   //管理端密码登陆
{
    char username[20];
    char password[20];
    int flag;
    while(g--){
    printf("\t管理员您好,欢迎使用登陆界面!\n");
    printf("请输入账户: ");
    scanf("%s",username);
    printf("请输入密码: ");
    scanf("%s",password);
    flag=strcmp(prefix_a,password);
    if(flag == 0)
        {
            color(2);
            printf("[输入正确]请等待3秒!\n");
            Sleep(3000);
            system("cls");
            color(7);
            administrator();
            break;
            }
    else
        {
            color(772);
            if(g==0){
                printf("[警告]您已输错三次,将自动退出系统!\n");
                color(7);
                exit(1);
            }
            printf("[输入错误]请3秒后重新输入正确密码!\n");
            Sleep(3000);
            system("cls");
            color(7);
            continue;
            }
     }
}
void password_t()   //教师端密码登陆
{
    char username[20];
    char password[20];
    int flag;
    while(g--){
    printf("\t老师您好,欢迎使用登陆界面!\n");
    printf("请输入账户: ");
    scanf("%s",username);
    printf("请输入密码: ");
    scanf("%s",password);
    flag=strcmp(prefix_t,password);
    if(flag == 0)
        {
            color(2);
            printf("[输入正确]请等待3秒!\n");
            Sleep(3000);
            system("cls");
            color(7);
            teachar();
            break;
            }
    else
        {
            color(772);
            if(g==0){
                printf("[警告]您已输错三次,将自动退出系统!\n");
                color(7);
                exit(1);
            }
            printf("[输入错误]请3秒后重新输入正确密码!\n");
            Sleep(3000);
            system("cls");
            color(7);
            continue;
            }
     }
}
void password_s()   //学生端密码登陆
{
    char username[20];
    char password[20];
    int flag;
    while(g--){
    printf("\t同学你好,欢迎使用登陆界面!\n");
    printf("请输入账户: ");
    scanf("%s",username);
    printf("请输入密码: ");
    scanf("%s",password);
    flag=strcmp(prefix_s,password);
    if(flag == 0)
        {
            color(2);
            printf("[输入正确]请等待3秒!\n");
            Sleep(3000);
            system("cls");
            student();
            break;
            }
    else
        {
            color(772);
            if(g==0){
                printf("[警告]您已输错三次,将自动退出系统!\n");
                color(7);
                exit(1);
            }
            printf("[输入错误]请3秒后重新输入正确密码!\n");
            Sleep(3000);
            system("cls");
            color(7);
            continue;
            }
     }
}

void back_a()       //管理端返回上一界面
{
    int l;
    printf("\n\t1.返回主界面");
    printf("\n\t2.返回上一级");
    printf("\n\t=========================");
    printf("\n\t请输入要执行的操作: ");
    scanf("%d",&l);
    switch(l){
         case 1:
            system("cls");
            menu();
            break;
        case 2:
            system("cls");
            administrator();
            break;
        default:
            color(772);
            printf("\t[输入错误]请3秒后重新输入有效数字!\n");
            Sleep(3000);
            color(7);
            back_a();
            break;
        }
}

void back_t()       //教师端返回上一界面
{
    int l;
    printf("\n\t1.返回主界面");
    printf("\n\t2.返回上一级");
    printf("\n\t=========================");
    printf("\n\t请输入要执行的操作: ");
    scanf("%d",&l);
    switch(l){
         case 1:
            system("cls");
            menu();
            break;
        case 2:
            system("cls");
            teachar();
            break;
        default:
            color(772);
            printf("\t[输入错误]请3秒后重新输入有效数字!\n");
            Sleep(3000);
            color(7);
            back_t();
            break;
        }
}

void back_s()       //学生端返回上一界面
{
    int l;
    printf("\n\t1.返回主界面");
    printf("\n\t2.返回上一级");
    printf("\n\t=========================");
    printf("\n\t请输入要执行的操作: ");
    scanf("%d",&l);
    switch(l){
         case 1:
            system("cls");
            menu();
            break;
        case 2:
            system("cls");
            student();
            break;
        default:
            color(772);
            printf("\t[输入错误]请3秒后重新输入有效数字!\n");
            Sleep(3000);
            color(7);
            back_s();
            break;
        }
}

void read()         //从文件中读取信息
{
    FILE *fp;
    int i;
    fp=fopen("学生信息.txt","r");
    if(fp==NULL)
        {
            color(772);
            printf("[警告]文件打开失败\n");
            color(7);
    }
        else {
            color(2);
            printf("[tip]文件读取成功\n");
            color(7);
             fscanf(fp,"%d\n",&number);
             for(i=0;i<number;i++)
            {
            	fscanf(fp,"%d\t%s\t%s\t%f\t%f\t%f\t%f\t%f\n",&stu[i].id,stu[i].name,stu[i].sex,&stu[i].grade1,&stu[i].grade2,&stu[i].grade3,&stu[i].avg,&stu[i].sum);
			}
        }
    fclose(fp);
}

void print_table()  //列表头
{
    printf("\t\t\t学号      姓名      性别      高等数学  大学英语  大学物理  平均分    总分\n");
    printf("\t\t\t---------------------------------------------------------------------------\n");
}
void input()        //登记学生成绩
{
	int i;
    struct student stu[100];
    FILE *fp;
    fp=fopen("学生信息.txt","w");
    if(fp==NULL)
        {
            color(772);
            printf("[警告]文件打开失败\n");
    }
    system("cls");
    color(7);
    printf("\t欢迎进入学生信息录入系统");
    printf("\n学生总人数: ");
    scanf("%d",&number);
if(number>0){
    fprintf(fp,"%d\n",number);
   for(i=0;i<number;i++)
    {
        printf("\n请输入第%d个学生的信息:\n",i+1);
        printf("学号: ");
        scanf("%d",&stu[i].id);
        getchar();

        printf("姓名: ");
        scanf("%s",stu[i].name);
        getchar();

        printf("性别: ");
        scanf("%s",stu[i].sex);
        getchar();

        printf("高等数学: ");
        scanf("%f",&stu[i].grade1);
        getchar();

        printf("大学英语: ");
        scanf("%f",&stu[i].grade2);
        getchar();

        printf("大学物理: ");
        scanf("%f",&stu[i].grade3);

        stu[i].sum= stu[i].grade1 +stu[i].grade2 + stu[i].grade3 ;
        stu[i].avg = (stu[i].sum)/3;
       fprintf(fp,"\t\t\t%d\t%s\t%s\t%.0f\t%.0f\t%.0f\t%.1f\t%.0f\n",
               stu[i].id,stu[i].name,stu[i].sex,stu[i].grade1,stu[i].grade2,stu[i].grade3,stu[i].avg,stu[i].sum);
      }
     fclose(fp);
    }
    else{
            color(772);
            printf("\t[输入错误]请3秒后重新输入有效数字!\n");
            Sleep(3000);
            color(7);
            system("cls");
            input();

    }
}

void show()         //打印学生信息
{
    system("cls");
    int i;
    print_table();
    for(i=0;i<number;i++){
        printf("\t\t\t%-10d%-10s%-10s%-10.0f%-10.0f%-10.0f%-10.1f%-10.0f\n",
               stu[i].id,stu[i].name,stu[i].sex,stu[i].grade1,stu[i].grade2,stu[i].grade3,stu[i].avg,stu[i].sum);
    }
    printf("\t\t\t---------------------------------------------------------------------------\n");

}

void delete_()      //删除学生信息
{
	int num,a,v;
	printf("\t请输入学生学号:");
	scanf("%d",&num);
	int i, j;
	for (i = 0;i<number; i++)
   {
		if (stu[i].id==num)
		{
			printf("\t你将要删除该学生信息\n\n");
			print_table();
			printf("\t\t\t%-10d%-10s%-10s%-10.0f%-10.0f%-10.0f%-10.1f%-10.0f\n",
               stu[i].id,stu[i].name,stu[i].sex,stu[i].grade1,stu[i].grade2,stu[i].grade3,stu[i].avg,stu[i].sum);
			printf("\n\t1.确认删除");
			printf("\n\t2.取消删除");
			printf("\n\t=========================");
			printf("\n\t请输入:");
			scanf("%d", &a);
			if (a == 1)
			{
			    for(j=i;j<number-1;j++){
                        stu[j]=stu[j+1];
			    }
				color(2);
				printf("\n\t[tip]删除成功!");
				color(7);
				number--;
				save(); //保存学生信息
				break;
			}
			else
			{
			    color(2);
				printf("\n\t[tip]已取消操作!");
				color(7);
				break;
			}
		}

   }
	   if(i==number)		//该学号不存在
	   {
	       color(772);
	       printf("\n\t[错误]未找到该学号学生");
	       color(7);
	       }

	printf("\n\t1.继续删除 2.返回上一级\n");
	printf("\t请输入:");
	scanf("%d", &v);
	if (v == 1)
	{
	    system("cls");
		delete_();
	}
	else
	{
	    system("cls");
		administrator();
	}
}

void save()         //保存学生信息函数
{
	FILE* fp;
	int i,ret;
	fp=fopen("学生信息.txt", "w");
	if (fp == NULL)
	{
		color(772);
        printf("\n\t[警告]文件打开失败\n");
        color(7);
	}
    fprintf(fp,"%d\n",number);

	for (i = 0; i <number; i++)
	{
	    ret=fprintf(fp,"\t\t\t%d\t%s\t%s\t%.0f\t%.0f\t%.0f\t%.1f\t%.0f\n",
               stu[i].id,stu[i].name,stu[i].sex,stu[i].grade1,stu[i].grade2,stu[i].grade3,stu[i].avg,stu[i].sum);
		}
		if (ret<0)
		{
		    color(772);
            printf("\n\t[错误]文件写入失败\n");
            color(7);
		}
		else
		{
		    color(2);
            printf("\n\t[tip]文件写入成功\n");
            color(7);
	}
	fclose(fp);		//关闭文件指针
}


void change()       //修改学生成绩
{
   char name2[20],sex2[5];
   float grade1_1,grade2_1,grade3_1;
   int id2,avg2,sum2,i,b;
	printf("\t请输入要修改的学生的学号:");
	scanf("%d",&id2);
	for (i =0;i<number;i++)
	{
		if (stu[i].id ==id2 )
		{
			printf("\t修改前:\n");
		    print_table();
            printf("\t\t\t%-10d%-10s%-10s%-10.0f%-10.0f%-10.0f%-10.1f%-10.0f\n",
               stu[i].id,stu[i].name,stu[i].sex,stu[i].grade1,stu[i].grade2,stu[i].grade3,stu[i].avg,stu[i].sum);

			printf("\n\t请输入修改后信息\n");
			printf("\t学生姓名:");
			scanf("%s",name2);
			getchar();

			printf("\t学生性别:");
			scanf("%s", sex2);
			getchar();

			printf("\t高等数学:");
			scanf("%f", &grade1_1);
			getchar();

			printf("\t大学英语:");
			scanf("%f", &grade2_1);
			getchar();

			printf("\t大学物理:");
			scanf("%f", &grade3_1);
			getchar();

			sum2=grade1_1+grade2_1+grade3_1;
			avg2=sum2/3;

			printf("\n\t1.确认修改");
			printf("\n\t2.取消修改");
			printf("\n\t=========================");
			printf("\n\t请输入:");

			scanf("%d", &b);
			if (b== 1)
			{
				strcpy(stu[i].name, name2);
				strcpy(stu[i].sex, sex2);
				stu[i].grade1 = grade1_1;
				stu[i].grade2 = grade2_1;
				stu[i].grade3 = grade3_1;
				stu[i].avg = avg2;
				stu[i].sum=sum2;
				printf("\n\t修改后:\n");

				printf("\t\t\t%-10d%-10s%-10s%-10.0f%-10.0f%-10.0f%-10.1f%-10.0f\n",
               stu[i].id,stu[i].name,stu[i].sex,stu[i].grade1,stu[i].grade2,stu[i].grade3,stu[i].avg,stu[i].sum);
               save();		//保存学生信息到文件中
			}
			break;
		}
	}
	if (i == number)
	{
		color(772);
        printf("\n\t[错误]未找到该学号学生\n");
        color(7);
	}
	printf("\t是否继续修改,请选择(y/n):");
	getchar();
	if (getchar() == 'y')
	{
	    system("cls");
		change();
	}

}
void sort_a()       //管理员排序学生成绩
{
    int l;
            printf("\t欢迎使用排序系统\t\n");
            printf("\t   1.按总成绩排序 \t\n");
            printf("\t   2.按数学成绩排序 \t\n");
            printf("\t   3.按英语成绩排序\t\n");
            printf("\t   4.按物理成绩排序  \n");
            printf("\t   5.返回  \n");
            printf("\t   6.退出  \n");
            printf("\t=================================\n");
            printf("\t请输入要执行的操作: ");
            scanf("%d",&l);
    switch(l){
         case 1:
            system("cls");
            sort_sum();
            back_sort_a();
            break;
        case 2:
            system("cls");
            sort_grade1();
            back_sort_a();
            break;
        case 3:
            system("cls");
            sort_grade2();
            back_sort_a();
            break;
        case 4:
            system("cls");
            sort_grade3();
            back_sort_a();
            break;
        case 5:
            system("cls");
            administrator();
           break;
        case 6:
            printf("感谢您的使用,已退出!\n");
            exit(0);
        default:
            color(772);
            printf("[输入错误]请3秒后重新输入有效数字!\n");
            Sleep(3000);
            color(7);
            system("cls");
            sort_a();
            break;
        }
}

void sort_t()       //教师排序学生成绩
{
    int l;
            printf("\t欢迎使用排序系统\t\n");
            printf("\t   1.按总成绩排序 \t\n");
            printf("\t   2.按数学成绩排序 \t\n");
            printf("\t   3.按英语成绩排序\t\n");
            printf("\t   4.按物理成绩排序  \n");
            printf("\t   5.返回  \n");
            printf("\t   6.退出  \n");
            printf("\t=================================\n");
            printf("\t请输入要执行的操作: ");
            scanf("%d",&l);

    switch(l){
         case 1:
            system("cls");
            sort_sum();
            back_sort_t();
            break;
        case 2:
            system("cls");
            sort_grade1();
            back_sort_t();
            break;
        case 3:
            system("cls");
            sort_grade2();
            back_sort_t();
            break;
        case 4:
            system("cls");
            sort_grade3();
            back_sort_t();
            break;
        case 5:
            system("cls");
            teachar();
           break;
        case 6:
            printf("感谢您的使用,已退出!\n");
            exit(0);
        default:
            color(772);
            printf("[输入错误]请3秒后重新输入有效数字!\n");
            Sleep(3000);
            color(7);
            system("cls");
            sort_t();
            break;
        }
}

void sort_sum()     //按总成绩排序
{
     int k,j,min=0,max=0;
    struct student temp;
    for (k = 0; k< number ; k++)
        {
            for (j = 0; j < number - 1 - k; j++)
            {
                if (stu[j].sum < stu[j + 1].sum)
                {
                    temp=stu[j];
                    stu[j]=stu[j+1];
                    stu[j+1]=temp;
                    }
                    }
                    }
    for(int i=0;i<number;i++){
        if(stu[i].sum<stu[min].sum)
            min=i;
         if(stu[i].sum>stu[max].sum)
            max=i;
    }
    save();
    print_table();
    show();
    printf("\t总分最高分: ");
    printf("\t%-10d%-10s%-10s%-10.0f%-10.0f%-10.0f%-9.1f(%.0f)\n",
    stu[max].id,stu[max].name,stu[max].sex,stu[max].grade1,stu[max].grade2,stu[max].grade3,stu[max].avg,stu[max].sum);
    printf("\t总分最低分: ");
    printf("\t%-10d%-10s%-10s%-10.0f%-10.0f%-10.0f%-9.1f(%.0f)\n",
    stu[min].id,stu[min].name,stu[min].sex,stu[min].grade1,stu[min].grade2,stu[min].grade3,stu[min].avg,stu[min].sum);
    printf("\t-------------------------------------------------------------------------------------------");
}

void sort_grade1()  //按数学成绩排序
{
    int k,j,min=0,max=0;
    struct student temp;
    for (k = 0; k< number ; k++)
        {
            for (j = 0; j < number - 1 - k; j++)
            {
                if (stu[j].grade1 < stu[j + 1].grade1)
                {
                    temp=stu[j];
                    stu[j]=stu[j+1];
                    stu[j+1]=temp;
                    }
                    }
                    }
    for(int i=0;i<number;i++){
        if(stu[i].grade1<stu[min].grade1)
            min=i;
         if(stu[i].grade1>stu[max].grade1)
            max=i;
    }
    save();
    print_table();
    show();
    printf("\t数学最高分: ");
    printf("\t%-10d%-10s%-9s(%-3.0f)\t%-10.0f%-10.0f%-10.1f%-10.0f\n",
    stu[max].id,stu[max].name,stu[max].sex,stu[max].grade1,stu[max].grade2,stu[max].grade3,stu[max].avg,stu[max].sum);
    printf("\t数学最低分: ");
    printf("\t%-10d%-10s%-9s(%-3.0f)\t%-10.0f%-10.0f%-10.1f%-10.0f\n",
    stu[min].id,stu[min].name,stu[min].sex,stu[min].grade1,stu[min].grade2,stu[min].grade3,stu[min].avg,stu[min].sum);
    printf("\t-------------------------------------------------------------------------------------------");
}

void sort_grade2()  //按英语成绩排序
{
     int k,j,min=0,max=0;
    struct student temp;
    for (k = 0; k< number ; k++)
        {
            for (j = 0; j < number - 1 - k; j++)
            {
                if (stu[j].grade2 < stu[j + 1].grade2)
                {
                    temp=stu[j];
                    stu[j]=stu[j+1];
                    stu[j+1]=temp;
                    }
                    }
                    }
    for(int i=0;i<number;i++){
        if(stu[i].grade2<stu[min].grade2)
            min=i;
         if(stu[i].grade2>stu[max].grade2)
            max=i;
    }
    save();
    print_table();
    show();
    printf("\t英语最高分: ");
    printf("\t%-10d%-10s%-10s%-9.0f(%-3.0f)\t  %-10.0f%-10.1f%-10.0f\n",
    stu[max].id,stu[max].name,stu[max].sex,stu[max].grade1,stu[max].grade2,stu[max].grade3,stu[max].avg,stu[max].sum);
    printf("\t英语最低分: ");
    printf("\t%-10d%-10s%-10s%-9.0f(%-3.0f)\t  %-10.0f%-10.1f%-10.0f\n",
    stu[min].id,stu[min].name,stu[min].sex,stu[min].grade1,stu[min].grade2,stu[min].grade3,stu[min].avg,stu[min].sum);
    printf("\t-------------------------------------------------------------------------------------------");
}

void sort_grade3()  //按物理成绩排序
{
     int k,j,min=0,max=0;
    struct student temp;
    for (k = 0; k< number ; k++)
        {
            for (j = 0; j < number - 1 - k; j++)
            {
                if (stu[j].grade3 < stu[j + 1].grade3)
                {
                    temp=stu[j];
                    stu[j]=stu[j+1];
                    stu[j+1]=temp;
                    }
                    }
                    }
    for(int i=0;i<number;i++){
        if(stu[i].grade3<stu[min].grade3)
            min=i;
         if(stu[i].grade3>stu[max].grade3)
            max=i;
    }
    save();
    print_table();
    show();
    printf("\t物理最高分: ");
    printf("\t%-10d%-10s%-10s%-10.0f%-9.0f(%-3.0f)\t    %-10.1f%-10.0f\n",
    stu[max].id,stu[max].name,stu[max].sex,stu[max].grade1,stu[max].grade2,stu[max].grade3,stu[max].avg,stu[max].sum);
    printf("\t物理最低分: ");
    printf("\t%-10d%-10s%-10s%-10.0f%-9.0f(%-3.0f)\t    %-10.1f%-10.0f\n",
    stu[min].id,stu[min].name,stu[min].sex,stu[min].grade1,stu[min].grade2,stu[min].grade3,stu[min].avg,stu[min].sum);
    printf("\t-------------------------------------------------------------------------------------------");
}

void search_a()     //管理端查询学生成绩
{
    int l;
            printf("\t欢迎使用成绩查询系统\t\n");
            printf("\t   1.按学号查询 \t\n");
            printf("\t   2.按姓名查询 \t\n");
            printf("\t   3.返回  \n");
            printf("\t   4.退出  \n");
            printf("\t=================================\n");
            printf("\t请输入要执行的操作: ");
            scanf("%d",&l);

    switch(l){
         case 1:
            system("cls");
            search_id();
            back_search_a();
            break;
        case 2:
            system("cls");
            search_name();
            back_search_a();
            break;
        case 3:
            system("cls");
            administrator();
           break;
        case 4:
            printf("感谢您的使用,已退出!\n");
            exit(0);
        default:
            color(772);
            printf("[输入错误]请3秒后重新输入有效数字!\n");
            Sleep(3000);
            color(7);
            system("cls");
            search_a();
            break;
        }
}

void search_t()     //教师端查询学生成绩
{
    int l;
            printf("\t欢迎使用成绩查询系统\t\n");
            printf("\t   1.按学号查询 \t\n");
            printf("\t   2.按姓名查询 \t\n");
            printf("\t   3.返回  \n");
            printf("\t   4.退出  \n");
            printf("\t=================================\n");
            printf("\t请输入要执行的操作: ");
            scanf("%d",&l);
    switch(l){
         case 1:
            system("cls");
            search_id();
            back_search_t();
            break;
        case 2:
            system("cls");
            search_name();
            back_search_t();
            break;
        case 3:
            system("cls");
            teachar();
           break;
        case 4:
            printf("感谢您的使用,已退出!\n");
            exit(0);
        default:
            color(772);
            printf("[输入错误]请3秒后重新输入有效数字!\n");
            Sleep(3000);
            color(7);
            system("cls");
            search_t();
            break;
        }
}

void search_s()     //学生端查询学生成绩
{
     int l;
           printf("\t欢迎使用成绩查询系统\t\n");
            printf("\t   1.按学号查询 \t\n");
            printf("\t   2.按姓名查询 \t\n");
            printf("\t   3.返回  \n");
            printf("\t   4.退出  \n");
            printf("\t=================================\n");
            printf("\t请输入要执行的操作: ");
            scanf("%d",&l);

    switch(l){
         case 1:
            system("cls");
            search_id();
            back_search_s();
            break;
        case 2:
            system("cls");
            search_name();
            back_search_s();
            break;
        case 3:
            system("cls");
            student();
           break;
        case 4:
            printf("感谢您的使用,已退出!\n");
            exit(0);
        default:
            color(772);
            printf("[输入错误]请3秒后重新输入有效数字!\n");
            Sleep(3000);
            color(7);
            system("cls");
            search_s();
            break;
        }
}

void search_id()    //按学号查询
{
    int id3,i;
    printf("\t学生的学号:");
	scanf("%d",&id3);
	for ( i =0;i<number;i++)
	{
		if (stu[i].id ==id3 )
		{
            printf("\t该学生信息如下:\n ");
		    print_table();
            printf("\t\t\t%-10d%-10s%-10s%-10.0f%-10.0f%-10.0f%-10.1f%-10.0f\n",
               stu[i].id,stu[i].name,stu[i].sex,stu[i].grade1,stu[i].grade2,stu[i].grade3,stu[i].avg,stu[i].sum);
               break;
               }
	}
	 if (i == number)
        {
            color(772);
            printf("\n\t[错误]未找到该学号学生\n");
            color(7);
            }
   printf("\n\t是否继续修改,请选择(y/n):");
   getchar();
   if (getchar() == 'y')
	{
	    system("cls");
		search_id();
	}
}

void search_name()  //按姓名查询
{
    char name1[20];
    int i;
    printf("\t学生的姓名:");
	scanf("%s",name1);
	for (i =0;i<number;i++)
	{
		if (strcmp(stu[i].name,name1)==0 )
		{
            printf("\t该学生信息如下:\n ");
		    print_table();
            printf("\t\t\t%-10d%-10s%-10s%-10.0f%-10.0f%-10.0f%-10.1f%-10.0f\n",
               stu[i].id,stu[i].name,stu[i].sex,stu[i].grade1,stu[i].grade2,stu[i].grade3,stu[i].avg,stu[i].sum);
               break;
               }
	}
	if (i == number)
        {
            color(772);
            printf("\n\t[错误]未找到该学生\n");
            color(7);
    }
   printf("\n\t是否继续修改,请选择(y/n):");
   getchar();
   if (getchar() == 'y')
	{
	    system("cls");
		search_name();
	}
}

void back_search_a() //管理端查询功能 返回界面
{
    int l;
    printf("\n\t1.返回主界面");
    printf("\n\t2.返回管理端");
    printf("\n\t3.返回上一级");
    printf("\n\t=========================");
    printf("\n\t请输入要执行的操作: ");
    scanf("%d",&l);
    switch(l){
         case 1:
            system("cls");
            menu();
            break;
        case 2:
            system("cls");
            administrator();
            break;
        case 3:
            system("cls");
            search_a();
            break;
        default:
            color(772);
            printf("\t[输入错误]请3秒后重新输入有效数字!\n");
            Sleep(3000);
            color(7);
            back_search_a();
            break;
        }
}


void back_search_t() //教师端查询功能 返回界面
{
    int l;
    printf("\n\t1.返回主界面");
    printf("\n\t2.返回教师端");
    printf("\n\t3.返回上一级");
    printf("\n\t=========================");
    printf("\n\t请输入要执行的操作: ");
    scanf("%d",&l);
    switch(l){
         case 1:
            system("cls");
            menu();
            break;
        case 2:
            system("cls");
            teachar();
            break;
        case 3:
            system("cls");
            search_t();
            break;
        default:
            color(772);
            printf("\t[输入错误]请3秒后重新输入有效数字!\n");
            Sleep(3000);
            color(7);
            back_search_t();
            break;
        }
}

void back_search_s() //学生端查询功能 返回界面
{
    int l;
    printf("\n\t1.返回主界面");
    printf("\n\t2.返回学生端");
    printf("\n\t3.返回上一级");
    printf("\n\t=========================");
    printf("\n\t请输入要执行的操作: ");
    scanf("%d",&l);
    switch(l){
         case 1:
            system("cls");
            menu();
            break;
        case 2:
            system("cls");
            student();
            break;
        case 3:
            system("cls");
            search_s();
            break;
        default:
            color(772);
            printf("\t[输入错误]请3秒后重新输入有效数字!\n");
            Sleep(3000);
            color(7);
            back_search_s();
            break;
        }
}


void back_sort_a()  //管理端排序功能 返回界面
{
    int l;
    printf("\n\t1.返回主界面");
    printf("\n\t2.返回管理端");
    printf("\n\t3.返回上一级");
    printf("\n\t=========================");
    printf("\n\t请输入要执行的操作: ");
    scanf("%d",&l);
    switch(l){
         case 1:
            system("cls");
            menu();
            break;
        case 2:
            system("cls");
            administrator();
            break;
        case 3:
            system("cls");
            sort_a();
            break;
        default:
            color(772);
            printf("\t[输入错误]请3秒后重新输入有效数字!\n");
            Sleep(3000);
            color(7);
            back_sort_a();
            break;
    }
}
void back_sort_t()  //教师端排序功能 返回界面
{
    int l;
    printf("\n\t1.返回主界面");
    printf("\n\t2.返回教师端");
    printf("\n\t3.返回上一级");
    printf("\n\t=========================");
    printf("\n\t请输入要执行的操作: ");
    scanf("%d",&l);
    switch(l){
         case 1:
            system("cls");
            menu();
            break;
        case 2:
            system("cls");
            teachar();
            break;
        case 3:
            system("cls");
            sort_t();
            break;
        default:
            color(772);
            printf("\t[输入错误]请3秒后重新输入有效数字!\n");
            Sleep(3000);
            color(7);
            back_sort_t();
            break;
        }
}

void add()          //添加学生信息
{


	int i = number, j, flag,m;
	printf("\t请输入待增加的学生数:");
	scanf("%d", &m);
	if (m > 0){
		do
		{
			flag = 1;
			printf("\n\t请输入第%d位学生的信息:\n", i + 1);
			while (flag)
			{
				flag = 0;

				printf("\t学号: ");
				scanf("%d", &stu[i].id);
				for (j = 0; j < i; j++){
					if (stu[i].id==stu[j].id){
						color(772);
                        printf("\t[错误]已存在该学号学生,请重新输入!\n");
                        color(7);
						flag = 1;
						break;
					}
				}
			}
			printf("\t姓名: ");
            scanf("%s",stu[i].name);
            getchar();

            printf("\t性别: ");
            scanf("%s",stu[i].sex);
            getchar();

            printf("\t高等数学: ");
            scanf("%f",&stu[i].grade1);
            getchar();

            printf("\t大学英语: ");
            scanf("%f",&stu[i].grade2);
            getchar();

            printf("\t大学物理: ");
            scanf("%f",&stu[i].grade3);

            stu[i].sum= stu[i].grade1 +stu[i].grade2 + stu[i].grade3 ;
            stu[i].avg = (stu[i].sum)/3;

            if (0 == flag){
				i++;
			}
		} while (i<number + m);
	}

	else
    {
           color(772);
            printf("\t[输入错误]请3秒后重新输入有效数字!\n");
            Sleep(3000);
            color(7);
            system("cls");
            add();
    }
		number += m;
		color(2);
        printf("\t[成功]学生信息添加完毕!!!");
        color(7);
        save();
}

文件素材:

5
            9    李五    男    76    76    100    84.0    252
            6    丝丝    女    9    100    98    69.0    207
            2    李四    男    89    79    67    78.3    235
            1    张三    男    35    43    67    48.3    145
            7    苏苏    女    98    12    53    54.3    163

            

今天的文章c语言 学生成绩管理系统分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/8362.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注