学生成绩管理系统(C语言课设 ),C语言课设下的学生成绩管理系统

马肤

温馨提示:这篇文章已超过410天没有更新,请注意相关的内容是否还可用!

摘要:本设计是一个基于C语言的学生成绩管理系统。该系统可实现对学生成绩的高效管理,包括录入学生信息、成绩录入、查询、修改和删除等功能。该系统采用模块化设计,界面友好,操作简便,可方便地对学生的成绩数据进行管理,提高管理效率,适用于学校或教育机构对学生成绩的管理需求。

这个学生成绩管理系统使用C语言编写,具有多项功能以方便管理学生信息和成绩。首先从文件中读取数据到系统中,并提供了多种功能(增删改查等)选项以满足不同的需求。

学生成绩管理系统功能:

  1. 显示学生信息
  2. 增加学生信息
  3. 删除学生信息
  4. 修改学生信息
  5. 查询学生信息
  6. 总分降序排序学生成绩
  7. 统计学生平均成绩
  8. 统计每科平均成绩
  9. 统计信息录入系统中人数
  10. 输出总成绩最高的学生信息
  11. 退出

运行示例:

学生成绩管理系统(C语言课设 ),C语言课设下的学生成绩管理系统 第1张运行之后要自己先往系统里面增加学生数据哦

学生成绩管理系统(C语言课设 ),C语言课设下的学生成绩管理系统 第2张

注意:因为设涉及到文件操作,需要把下面文件读取和保存函数中的文件位置修改为自己所要保存的文件位置或者按照如下操作建立文件:

  1. 打开D盘新建一个文件夹名字叫 学生成绩管理系统 (名字要一模一样哦)

    学生成绩管理系统(C语言课设 ),C语言课设下的学生成绩管理系统 第3张

  2. 在该文件夹中新建文本文档命名为 xscjglxt (如下图:)

    学生成绩管理系统(C语言课设 ),C语言课设下的学生成绩管理系统 第4张

目录

  • 1.函数声明
  • 2.结构体和全局变量定义
  • 3.主函数和主菜单函数
  • 4.显示学生信息
  • 5.增加学生信息
  • 6.删除学生信息
  • 7.修改学生信息
  • 8.查询学生信息
  • 9.总分降序排序学生成绩
  • 10.统计学生平均成绩
  • 11.统计每科平均成绩
  • 12.统计信息录入系统中人数
  • 13.输出总成绩最高的学生信息
  • 14.从文件中读取数据(*==注意这里的文件位置要改为自己的==)
  • 15.将数据保存至文件(*==注意这里的文件位置要改为自己的==)
  • 16.源代码

    1.函数声明

    void regist();//登录界面
    void findid();//按照学号索引查询
    void show();//查看所有的学生成绩信息
    void del();//删除学生信息
    void edit();//修改学生信息
    void add();//添加学生信息
    void mysort();//总分降序排序
    void avegxs();//查询学生成绩平均值大于90的学生成绩
    void avegkm();//查询学生成绩平均值小于60的学生成绩
    void save();//保存学生信息到文件
    void load();//从文件读取学生信息到内存
    void menu();//菜单总录入人数
    void maxn();//输出系统中总成绩最大的学生信息
    

    2.结构体和全局变量定义

    typedef struct student
    {
        char id[15];//学生学号
        char name[50];//学生姓名
        char sex[10];//学生性别
        char great[50];//学生班级
        int E,M,Y;//学生的英语、数学、语文成绩
        float ave;//学生的平均成绩
        int all;//学生的总成绩
    }student;
    student students[100];
    static int length;//保存当前系统中的人数
    

    3.主函数和主菜单函数

    主函数运行之后首先从文件中读取学生信息到系统当中,然后显示系统菜单提供多种功能让用户选择。

    //主函数
    int main()
    {
        printf("登陆成功!");
        load();//从文件中读取信息到内测
        menu();//菜单
    }
    
    void menu()//菜单
    {
    	while(1)
    	{
    	    regist();
    	    int n;
            scanf("%d",&n);
            switch(n)
            {
                case 1:
                    show();
                    break;
                case 2:
                    add();
                    break;
                case 3:
                    del();
                    break;
                case 4:
                    edit();
                    break;
                case 5:
                    findid();
                    break;
                case 6:
                    mysort();
                    break;
                case 7:
                    avegxs();
                    break;
                case 8:
                    avegkm();
                    break;
                case 9:
                    cens();
                    break;
                case 10:
                    maxn();
                    break;
                case 11:
                    exit(0);
            }
            save();
            printf("按任意键继续\n");
            getchar();
            getchar();
            system("cls");
    	}
    }
    
    void regist()//登录界面
    {
        printf("\n\n\t*****************************学生信息管理系统******************************\n");
    	printf("\t*                              1.显示学生信息                             *|\n");
    	printf("\t*                              2.增加学生信息                             *|\n");
    	printf("\t*                              3.删除学生信息                             *|\n");
    	printf("\t*                              4.修改学生信息                             *|\n");
    	printf("\t*                              5.查询学生信息                             *|\n");
    	printf("\t*                              6.总分降序排序学生成绩                     *|\n");
    	printf("\t*                              7.统计学生平均成绩                         *|\n");
    	printf("\t*                              8.统计每科平均成绩                         *|\n");
        printf("\t*                              9.统计信息录入系统中人数                   *|\n");
        printf("\t*                              10.输出总成绩最高的学生信息                *|\n");
    	printf("\t*                              11.退出                                    *|\n");
    	printf("\t***************************************************************************\n");
    	printf("请输入你要进行的操作:\n");
    }
    

    4.显示学生信息

    这里会将系统中所有的学生信息显示到屏幕上

    void show()//查看所有的学生成绩信息
    {
        printf("------------------------------------------------------------------------------------------------------------------------\n");
            printf("学生姓名|\t学号\t|\t班级\t| 性别 | 语文成绩 | 数学成绩 | 英语成绩 | 总成绩 \n");
            printf("------------------------------------------------------------------------------------------------------------------------\n");
        for(int i =0;i
            printf("\n%s\t|  %s\t|  %s\t|  %s  |    %d    |    %d    |    %d    |    %d    \n",students[i].name,students[i].id,students[i].great,students[i].sex,students[i].Y,students[i].M,students[i].E,students[i].all);
            printf("------------------------------------------------------------------------------------------------------------------------\n");
        }
    }
    
        int flag=0;
        if(length=100)
        {
            printf("该班级人数已满!!!");
        }
        else{
        printf("请输入学生信息:\n");
        printf("学生姓名:");
        char op[50];
        scanf("%s",op);
        printf("学生学号:");
        char opp[50];
        scanf("%s",opp);
        for(int i=0;i
            if(strcmp(opp,students[i].id)==0)flag=1;
        }
        if(flag==1)
        {
            printf("警告!!!该学号已存在!!!请返回修改!!!");
            return;
        }
        strcpy(students[length].name,op);
        strcpy(students[length].id,opp);
        printf("学生班级:");
        scanf("%s",students[length].great);
        printf("请输入学生性别:");
        scanf("%s",students[length].sex);
        printf("语文成绩:");
        scanf("%d",&students[length].Y);
        printf("数学成绩:");
        scanf("%d",&students[length].M);
        printf("英语成绩:");
        scanf("%d",&students[length].E);
        students[length].all=students[length].Y+students[length].M+students[length].E;
        students[length].ave=((float)(students[length].Y+students[length].M+students[length].E)/3);
        length++;
        }
    }
    
        printf("请输入该学生的学号:\n");
        char op[50];
        int flag=0;
        scanf("%s",op);
        for(int i=0;i
            if(strcmp(students[i].id,op)==0)
            {
                for(int j=i;j
        printf("请输入该学生学号:\n");
        char op[50];
        char opp[50];
        int flag=0;
        scanf("%s",op);
        for(int i=0;i
            if(strcmp(students[i].id,op)==0)
            {
                printf("请输入该学生新的信息:\n");
                printf("姓名:");
                scanf("%s",opp);
                strcpy(students[i].name,opp);
                printf("班级:");
                scanf("%s",students[i].great);
                printf("性别:");
                scanf("%s",students[i].sex);
                printf("语文成绩:");
                scanf("%d",&students[i].Y);
                printf("数学成绩:");
                scanf("%d",&students[i].M);
                printf("英语成绩:");
                scanf("%d",&students[i].E);
                students[i].ave=(students[i].Y+students[i].E+students[i].M)/3;
                students[i].all=students[i].Y+students[i].E+students[i].M;
                flag=1;
                break;
            }
        }
        if(flag==0)printf("该学生不存在\n");
    }
    
        printf("请输入学生学号:\n");
        char op[15];
        int flag=0;
        scanf("%s",op);
        for(int i=0;i
            if(strcmp(students[i].id,op)==0)
            {
                printf("------------------------------------------------------------------------------------------------------------------------\n");
                printf("学生姓名|\t学号\t|\t班级\t| 性别 | 语文成绩 | 数学成绩 | 英语成绩 | 总成绩 \n");
                printf("\n%s\t|  %s\t|  %s\t|  %s  |    %d    |    %d    |    %d    |    %d\n",students[i].name,students[i].id,students[i].great,students[i].sex,students[i].Y,students[i].M,students[i].E,students[i].all);
                printf("------------------------------------------------------------------------------------------------------------------------\n");
                flag=1;
            }
        }
        if(!flag)
        {
            printf("不存在该学号的学生\n");
        }
    }
    
        student vis;
        for(int i=0;i
            if(students[j].all
                vis=students[j];
                students[j]=students[j+1];
                students[j+1]=vis;
            }
        }
        show();
    }
    
        printf("------------------------------------------------------------------------------------------------------------------------\n");
            printf("学生姓名|\t学号\t|\t班级\t| 性别 | 语文成绩 | 数学成绩 | 英语成绩 | 平均成绩 \n");
            printf("------------------------------------------------------------------------------------------------------------------------\n");
        for(int i=0;i
            //if(students[i].ave90)
            //{
                printf("\n%s\t|  %s\t|  %s\t|  %s  |    %d    |    %d    |    %d    |    %.2lf    \n",students[i].name,students[i].id,students[i].great,students[i].sex,students[i].Y,students[i].M,students[i].E,students[i].all*1.0/length);
                printf("------------------------------------------------------------------------------------------------------------------------\n");
            //}
        }
    }
    
        printf("------------------------------------------------------------------------------------------------------------------------\n");
            printf("语文成绩 | 数学成绩 | 英语成绩 \n");
            printf("------------------------------------------------------------------------------------------------------------------------\n");
        double ans1=0,ans2=0,ans3=0;
        for(int i=0;i
            ans1+=students[i].Y;
            ans2+=students[i].M;
            ans3+=students[i].E;
        }
        ans1=ans1*1.0/length;
        ans2=ans2*1.0/length;
        ans3=ans3*1.0/length;
        printf("\n%.2lf    |    %.2lf    |    %.2lf    \n",ans1,ans2,ans3);
        printf("------------------------------------------------------------------------------------------------------------------------\n");
    }
    
        printf("系统中共有%d个人的信息\n",length);
    }
    
        int vis=students[0].all;
        for(int i=1;i
            if(students[i].allvis)vis=students[i].all;
        }
        for(int i=0;i
            if(students[i].all==vis)
            {
            printf("------------------------------------------------------------------------------------------------------------------------\n");
            printf("学生姓名|\t学号\t|\t班级\t| 性别 | 语文成绩 | 数学成绩 | 英语成绩 | 总成绩 \n");
            printf("------------------------------------------------------------------------------------------------------------------------\n");
            printf("\n%s\t|  %s\t|  %s\t|  %s  |    %d    |    %d    |    %d    |    %d    \n",students[i].name,students[i].id,students[i].great,students[i].sex,students[i].Y,students[i].M,students[i].E,students[i].all);
            printf("------------------------------------------------------------------------------------------------------------------------\n");
            }
        }
    }
    
        FILE *fp=fopen("D:\学生成绩管理系统\xscjglxt.txt","r");
        if(fp==NULL)
        {
            printf("文件打开失败\n");
        }
        int i=0;
        while(fscanf(fp,"%s %s %s %s %d %d %d %f %d\n",
                   students[i].id,
                   students[i].name,
                   students[i].great,
                   students[i].sex,
                   &students[i].Y,
                   &students[i].M,
                   &students[i].E,
                   &students[i].ave,
                   &students[i].all)==9)
        {
            i++;
        }
        length=i;
        fclose(fp);
    }
    
        FILE *fp=fopen("D:\学生成绩管理系统\xscjglxt.txt","w");
        for(int i=0;i
            fprintf(fp,"%s %s %s %s %d %d %d %f %d\n",
                   students[i].id,
                   students[i].name,
                   students[i].great,
                   students[i].sex,
                   students[i].Y,
                   students[i].M,
                   students[i].E,
                   students[i].ave,
                   students[i].all);
        }
        fclose(fp);
    }
    
        char id[15];
        char name[50];
        char sex[10];
        char great[50];
        int E,M,Y;
        float ave;
        int all;
    }student;
    student students[100];
    static int length;
    int main()
    {
        printf("登陆成功!");
        load();//从文件中读取信息到内侧
        menu();//菜单
    }
    void regist()//登录界面
    {
        printf("\n\n\t*****************************学生信息管理系统******************************\n");
    	printf("\t*                              1.显示学生信息                             *|\n");
    	printf("\t*                              2.增加学生信息                             *|\n");
    	printf("\t*                              3.删除学生信息                             *|\n");
    	printf("\t*                              4.修改学生信息                             *|\n");
    	printf("\t*                              5.查询学生信息                             *|\n");
    	printf("\t*                              6.总分降序排序学生成绩                     *|\n");
    	printf("\t*                              7.统计学生平均成绩                         *|\n");
    	printf("\t*                              8.统计每科平均成绩                         *|\n");
        printf("\t*                              9.统计信息录入系统中人数                   *|\n");
        printf("\t*                              10.输出总成绩最高的学生信息                *|\n");
    	printf("\t*                              11.退出                                    *|\n");
    	printf("\t***************************************************************************\n");
    	printf("请输入你要进行的操作:\n");
    }
    void findid()//按照学号索引查询
    {
        printf("请输入学生学号:\n");
        char op[15];
        int flag=0;
        scanf("%s",op);
        for(int i=0;i
            if(strcmp(students[i].id,op)==0)
            {
                printf("------------------------------------------------------------------------------------------------------------------------\n");
                printf("学生姓名|\t学号\t|\t班级\t| 性别 | 语文成绩 | 数学成绩 | 英语成绩 | 总成绩 \n");
                printf("\n%s\t|  %s\t|  %s\t|  %s  |    %d    |    %d    |    %d    |    %d\n",students[i].name,students[i].id,students[i].great,students[i].sex,students[i].Y,students[i].M,students[i].E,students[i].all);
                printf("------------------------------------------------------------------------------------------------------------------------\n");
                flag=1;
            }
        }
        if(!flag)
        {
            printf("不存在该学号的学生\n");
        }
    }
    void show()//查看所有的学生成绩信息
    {
        printf("------------------------------------------------------------------------------------------------------------------------\n");
            printf("学生姓名|\t学号\t|\t班级\t| 性别 | 语文成绩 | 数学成绩 | 英语成绩 | 总成绩 \n");
            printf("------------------------------------------------------------------------------------------------------------------------\n");
        for(int i =0;i
            printf("\n%s\t|  %s\t|  %s\t|  %s  |    %d    |    %d    |    %d    |    %d    \n",students[i].name,students[i].id,students[i].great,students[i].sex,students[i].Y,students[i].M,students[i].E,students[i].all);
            printf("------------------------------------------------------------------------------------------------------------------------\n");
        }
    }
    void del()//删除学生信息
    {
        printf("请输入该学生的学号:\n");
        char op[50];
        int flag=0;
        scanf("%s",op);
        for(int i=0;i
            if(strcmp(students[i].id,op)==0)
            {
                for(int j=i;j
        printf("请输入该学生学号:\n");
        char op[50];
        char opp[50];
        int flag=0;
        scanf("%s",op);
        for(int i=0;i
            if(strcmp(students[i].id,op)==0)
            {
                printf("请输入该学生新的信息:\n");
                printf("姓名:");
                scanf("%s",opp);
                strcpy(students[i].name,opp);
                printf("班级:");
                scanf("%s",students[i].great);
                printf("性别:");
                scanf("%s",students[i].sex);
                printf("语文成绩:");
                scanf("%d",&students[i].Y);
                printf("数学成绩:");
                scanf("%d",&students[i].M);
                printf("英语成绩:");
                scanf("%d",&students[i].E);
                students[i].ave=(students[i].Y+students[i].E+students[i].M)/3;
                students[i].all=students[i].Y+students[i].E+students[i].M;
                flag=1;
                break;
            }
        }
        if(flag==0)printf("该学生不存在\n");
    }
    void add()//添加学生信息
    {
        int flag=0;
        if(length=100)
        {
            printf("该班级人数已满!!!");
        }
        else{
        printf("请输入学生信息:\n");
        printf("学生姓名:");
        char op[50];
        scanf("%s",op);
        printf("学生学号:");
        char opp[50];
        scanf("%s",opp);
        for(int i=0;i
            if(strcmp(opp,students[i].id)==0)flag=1;
        }
        if(flag==1)
        {
            printf("警告!!!该学号已存在!!!请返回修改!!!");
            return;
        }
        strcpy(students[length].name,op);
        strcpy(students[length].id,opp);
        printf("学生班级:");
        scanf("%s",students[length].great);
        printf("请输入学生性别:");
        scanf("%s",students[length].sex);
        printf("语文成绩:");
        scanf("%d",&students[length].Y);
        printf("数学成绩:");
        scanf("%d",&students[length].M);
        printf("英语成绩:");
        scanf("%d",&students[length].E);
        students[length].all=students[length].Y+students[length].M+students[length].E;
        students[length].ave=((float)(students[length].Y+students[length].M+students[length].E)/3);
        length++;
        }
    }
    void mysort()//总分降序排序
    {
        student vis;
        for(int i=0;i
            if(students[j].all
                vis=students[j];
                students[j]=students[j+1];
                students[j+1]=vis;
            }
        }
        show();
    }
    void maxn()//查询学生成绩最高的学生信息
    {
        int vis=students[0].all;
        for(int i=1;i
            if(students[i].allvis)vis=students[i].all;
        }
        for(int i=0;i
            if(students[i].all==vis)
            {
            printf("------------------------------------------------------------------------------------------------------------------------\n");
            printf("学生姓名|\t学号\t|\t班级\t| 性别 | 语文成绩 | 数学成绩 | 英语成绩 | 总成绩 \n");
            printf("------------------------------------------------------------------------------------------------------------------------\n");
            printf("\n%s\t|  %s\t|  %s\t|  %s  |    %d    |    %d    |    %d    |    %d    \n",students[i].name,students[i].id,students[i].great,students[i].sex,students[i].Y,students[i].M,students[i].E,students[i].all);
            printf("------------------------------------------------------------------------------------------------------------------------\n");
            }
        }
    }
    void avegxs()//查询学生成绩平均值
    {
        printf("------------------------------------------------------------------------------------------------------------------------\n");
            printf("学生姓名|\t学号\t|\t班级\t| 性别 | 语文成绩 | 数学成绩 | 英语成绩 | 平均成绩 \n");
            printf("------------------------------------------------------------------------------------------------------------------------\n");
        for(int i=0;i
            //if(students[i].ave90)
            //{
                printf("\n%s\t|  %s\t|  %s\t|  %s  |    %d    |    %d    |    %d    |    %.2lf    \n",students[i].name,students[i].id,students[i].great,students[i].sex,students[i].Y,students[i].M,students[i].E,students[i].all*1.0/length);
                printf("------------------------------------------------------------------------------------------------------------------------\n");
            //}
        }
    }
    void avegkm()//查询各门平均值
    {
        printf("------------------------------------------------------------------------------------------------------------------------\n");
            printf("语文成绩 | 数学成绩 | 英语成绩 \n");
            printf("------------------------------------------------------------------------------------------------------------------------\n");
        double ans1=0,ans2=0,ans3=0;
        for(int i=0;i
            ans1+=students[i].Y;
            ans2+=students[i].M;
            ans3+=students[i].E;
        }
        ans1=ans1*1.0/length;
        ans2=ans2*1.0/length;
        ans3=ans3*1.0/length;
        printf("\n%.2lf    |    %.2lf    |    %.2lf    \n",ans1,ans2,ans3);
        printf("------------------------------------------------------------------------------------------------------------------------\n");
    }
    void save()//保存学生信息到文件
    {
        FILE *fp=fopen("D:\学生成绩管理系统\xscjglxt.txt","w");
        for(int i=0;i
            fprintf(fp,"%s %s %s %s %d %d %d %f %d\n",
                   students[i].id,
                   students[i].name,
                   students[i].great,
                   students[i].sex,
                   students[i].Y,
                   students[i].M,
                   students[i].E,
                   students[i].ave,
                   students[i].all);
        }
        fclose(fp);
    }
    void load()//从文件读取学生信息到内存
    {
        FILE *fp=fopen("D:\学生成绩管理系统\xscjglxt.txt","r");
        if(fp==NULL)
        {
            printf("文件打开失败\n");
        }
        int i=0;
        while(fscanf(fp,"%s %s %s %s %d %d %d %f %d\n",
                   students[i].id,
                   students[i].name,
                   students[i].great,
                   students[i].sex,
                   &students[i].Y,
                   &students[i].M,
                   &students[i].E,
                   &students[i].ave,
                   &students[i].all)==9)
        {
            i++;
        }
        length=i;
        fclose(fp);
    }
    void cens()
    {
        printf("系统中共有%d个人的信息\n",length);
    }
    void menu()//菜单
    {
    	while(1)
    	{
    	    regist();
    	    int n;
            scanf("%d",&n);
            switch(n)
            {
                case 1:
                    show();
                    break;
                case 2:
                    add();
                    break;
                case 3:
                    del();
                    break;
                case 4:
                    edit();
                    break;
                case 5:
                    findid();
                    break;
                case 6:
                    mysort();
                    break;
                case 7:
                    avegxs();
                    break;
                case 8:
                    avegkm();
                    break;
                case 9:
                    cens();
                    break;
                case 10:
                    maxn();
                    break;
                case 11:
                    exit(0);
            }
            save();
            printf("按任意键继续\n");
            getchar();
            getchar();
            system("cls");
    	}
    }
    
    

0
收藏0
文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。

相关阅读

  • 【研发日记】Matlab/Simulink自动生成代码(二)——五种选择结构实现方法,Matlab/Simulink自动生成代码的五种选择结构实现方法(二),Matlab/Simulink自动生成代码的五种选择结构实现方法详解(二)
  • 超级好用的C++实用库之跨平台实用方法,跨平台实用方法的C++实用库超好用指南,C++跨平台实用库使用指南,超好用实用方法集合,C++跨平台实用库超好用指南,方法与技巧集合
  • 【动态规划】斐波那契数列模型(C++),斐波那契数列模型(C++实现与动态规划解析),斐波那契数列模型解析与C++实现(动态规划)
  • 【C++】,string类底层的模拟实现,C++中string类的模拟底层实现探究
  • uniapp 小程序实现微信授权登录(前端和后端),Uniapp小程序实现微信授权登录全流程(前端后端全攻略),Uniapp小程序微信授权登录全流程攻略,前端后端全指南
  • Vue脚手架的安装(保姆级教程),Vue脚手架保姆级安装教程,Vue脚手架保姆级安装指南,Vue脚手架保姆级安装指南,从零开始教你如何安装Vue脚手架
  • 如何在树莓派 Raspberry Pi中本地部署一个web站点并实现无公网IP远程访问,树莓派上本地部署Web站点及无公网IP远程访问指南,树莓派部署Web站点及无公网IP远程访问指南,本地部署与远程访问实践,树莓派部署Web站点及无公网IP远程访问实践指南,树莓派部署Web站点及无公网IP远程访问实践指南,本地部署与远程访问详解,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南。
  • vue2技术栈实现AI问答机器人功能(流式与非流式两种接口方法),Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法探究,Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法详解
  • 发表评论

    快捷回复:表情:
    评论列表 (暂无评论,0人围观)

    还没有评论,来说两句吧...

    目录[+]

    取消
    微信二维码
    微信二维码
    支付宝二维码