班级成绩管理系统(C语言)

这篇具有很好参考价值的文章主要介绍了班级成绩管理系统(C语言)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。



一、设计任务与目标

对一个有N个学生的班级,每个学生有M门课程。该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。

二、实现功能

(1)本系统采用一个结构体数组,每个数据的结构应当包括:学号、姓名、M门课程名称。
(2)本系统显示这样的菜单:
请选择系统功能项:
a、成绩录入
b、成绩显示
c、成绩保存
d、成绩排序
e、成绩修改(要求先输入密码)
f、成绩统计
1)显示每门课程成绩最高的学生的基本信息
2)显示每门课程的平均成绩
3)显示超过某门课程平均成绩的学生人数
g、退出系统
(3)执行一个具体的功能之后,程序将重新显示菜单。
(4)将学生成绩保存到文件中。

三、程序源码

菜单

void menu()          //菜单 
{
    printf("========================================\n");
    printf("|    欢迎来到班级成绩管理系统!          \n");
    printf("|   a:成绩录入\n");
    printf("|   b:成绩显示\n");
    printf("|   c:成绩保存\n");
    printf("|   d:成绩排序\n");
    printf("|   e:成绩修改\n");
    printf("|   f:成绩统计\n");
    printf("|   g:退出系统\n");
    printf("========================================\n");
    printf("请输入你的选择: ");
}

录入学生成绩

void inputScores()          //成绩录入 
{
    if (courseCount == 0)
	{
        printf("请输入课程数量:");
        scanf("%d", &courseCount);          //输入课程数量 
        for (int i = 0; i < courseCount; i++)          //输入课程名字 
		{
            Course course;
            printf("请输入第 %d 门课程名字:", i+1);
            scanf("%s", course.name);
            courses[i] = course;
        }
    }

    Student stu;
    printf("请输入学生学号:");
    scanf("%s", stu.id);          //输入学生学号 
    printf("请输入学生名字:");
    scanf("%s", stu.name);          //输入学生姓名 
    for (int j = 0; j < courseCount; j++)          //输入课程成绩 
	{
        printf("请输入 %s 课程成绩:", courses[j].name);
        scanf("%d", &stu.scores[j]);
    }
    students[studentCount++] = stu;
}

显示所录入的学生成绩

void displayScores()          //成绩显示 
{
    if (studentCount == 0)
	{
        printf("No student\n");
        return;
    }
    printf(" 学号    姓名 ");
    for (int i = 0; i < courseCount; i++)          //输出课程名字 
	{
        printf(" %s", courses[i].name);
    }
    printf("\n");
    for (int i = 0; i < studentCount; i++)          //输出学生信息 
	{
        printf("%s %s", students[i].id, students[i].name);          //输出学生学号,姓名 
        for (int j = 0; j < courseCount; j++)          //输出学生成绩 
		{
            printf(" %d", students[i].scores[j]);
        }
        printf("\n");
    }
}

保存录入的学生成绩

void saveScores()          //成绩保存 
{
    FILE* fp;
    fp = fopen("scores.txt", "w");          //打开文件 
    if (fp == NULL)
	{
        printf("open scores.txt failed!\n");
        return;
    }
    fprintf(fp, "%d\n", courseCount);          //输出文件信息 
    for (int i = 0; i < courseCount; i++)          //输出课程名字 
	{
        fprintf(fp, "%s\n", courses[i].name);
    }

    fprintf(fp, "%d\n", studentCount);          //输出学生信息 
    for (int i = 0; i < studentCount; i++) 
	{
        fprintf(fp, "%s\n%s\n", students[i].id, students[i].name);          //输出学生学号,姓名 
        for (int j = 0; j < courseCount; j++)          //输出学生成绩 
		{
            fprintf(fp, "%d ", students[i].scores[j]);
        }
        fprintf(fp, "\n");
    }
    fclose(fp);          //关闭文件 
}

对录入的课程成绩进行排序

void sort(int l,int r, int pos)          //对课程的成绩进行排序 
{
    if (r <= l)	return;
    int i = l, j = r;
    int key = students[l].scores[pos];
    while (i <= j)
	{
        while (students[i].scores[pos] > key)	i++;
        while (students[j].scores[pos] < key)	j--;
        if (i <= j)
		{
            Student temp = students[i];
            students[i] = students[j];
            students[j] = temp;
            i++;
            j--;
        }
    }
    sort(l, j, pos);
    sort(i, r, pos);
}

比较学生成绩

int compare(char a[], char b[])          //比较学生的成绩 
{
    int la = strlen(a);
    int lb = strlen(b);
    if (la < lb) return -1;
    if (la > lb) return 1;
    int len = 0;
    while (len < la)
	{
        if (a[len] < b[len]) return -1;
        if (a[len] > b[len]) return 1;
        len++;
    }
    return 0;
}

对程序进行排序

void orderScores()          //成绩排序 
{
    printf("Enter course name:");          //输入需要进行成绩排序的课程名字 
    char name[PROFILE_LENGTH];
    scanf("%s", name);
    int i = courseCount;
    for (i = 0; i < courseCount; i++)
	{
        if (compare(courses[i].name, name) == 0)
            break;
    }
    if (i == courseCount)
	{
        printf("No course %s\n", name);
        return;
    }
    sort(0, studentCount - 1, i);
}

修改已经录入但录入出错的学生成绩

void changeScores()          //成绩修改 
{
    printf("Enter password:");          //输入密码 
    char pwd[PROFILE_LENGTH];
    scanf("%s", pwd);          //输入密码 
    if (compare(password, pwd) != 0)
	{
        printf("密码错误!\n");
        return;
    }

    printf("Enter student id:"); 
    char id[PROFILE_LENGTH];
    scanf("%s", id);          //输入学生学号 
    int i = studentCount;
    for (i = 0; i < studentCount; i++)
	{
        if (compare(students[i].id, id) == 0)
            break;
    }
    if (i == studentCount)
	{
        printf("No student %s\n", id);
        return;
    }
    printf("Courses: ");
    for (int j = 0; j < courseCount; j++)          //输出课程名字 
	{
        printf(" %s", courses[j].name);
    }
    printf("\nEnter the scores:"); 
    for (int j = 0; j < courseCount; j++)          //输入更改后的成绩 
	{
        scanf("%d", &students[i].scores[j]);
    }
}

统计已经录入的学生成绩

void statisticScores()          //成绩统计 
{
    for (int j = 0; j < courseCount; j++)
	{
        printf("%s:\n", courses[j].name);

        int max = 0;
        int pos = studentCount;
        double aver = 0.0;

        for (int i = 0; i < studentCount; i++)          //比较学生成绩,找出成绩最高的学生 
		{
            aver = aver + students[i].scores[j];
            if (students[i].scores[j] > max)
			{
                max = students[i].scores[j];
                pos = i;
            }
        }
        aver /= studentCount;          //计算平均成绩 
        int count = 0;
        for (int i = 0; i < studentCount; i++)          //计算超过平均成绩的人数 
		{
            if (students[i].scores[j] > aver)
			{
                count ++;
            }
        }

        if (pos == studentCount)
		{
            printf("No student\n");
            break;
        }
		else
		{
            printf("成绩最高学生:");
            printf("  %s  %s  %d\n", students[pos].id, students[pos].name, max);
            printf("平均成绩:");
            printf("  %.2lf\n", aver);
            printf("超过平均成绩的人数:");
            printf("  %d\n", count);
        }
    }
}

四、效果展示

菜单

班级成绩管理系统(C语言)

录入学生成绩(这里录入了6位学生的成绩,录入完毕后进行保存)

班级成绩管理系统(C语言)
班级成绩管理系统(C语言)
班级成绩管理系统(C语言)

显示已经录入的学生成绩

班级成绩管理系统(C语言)

保存已经录入的成绩,保存后的成绩存放在“scores.txt”文件中

班级成绩管理系统(C语言)
班级成绩管理系统(C语言)

按照课程将录入的成绩进行排序(分数从高到低)

班级成绩管理系统(C语言)
班级成绩管理系统(C语言)

修改已经录入的学生成绩

班级成绩管理系统(C语言)
班级成绩管理系统(C语言)

找出每个课程成绩最高的学生,统计出平均成绩和超过平均成绩的人数

班级成绩管理系统(C语言)文章来源地址https://www.toymoban.com/news/detail-489089.html

到了这里,关于班级成绩管理系统(C语言)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 毕业设计3433基于微信小程序的班级管理系统【源代码+文档+调试+讲解】

    本文介绍了一个基于微信小程序的班级管理系统,该系统分为服务器端和客户端两部分,旨在为管理员和教师提供便捷的班级管理功能,同时为学生提供个性化的学习和管理服务。系统通过合理的功能需求分析、数据库设计、界面设计以及测试和优化工作,实现了班级信息的

    2024年04月10日
    浏览(46)
  • 【学生成绩管理系统----C语言】

    还在为期末程序设计而烦恼吗,不要担心,大师帮你安利一波完整的的管理系统代码,对你有帮助记得加关注噢! 文章目录 一、学生成绩管理系统是什么? 二、信息管理的七个模块 1.Step one 2.Step Two  3.Step Three 4.Step four 5.Step five 6.Step Six 7.Next 总结        学生信息管理系统

    2024年02月03日
    浏览(52)
  • 课设——C语言学生成绩管理系统

            相信许多同学在大学期间,学习计算机相关课程的时候,都有一个令人头疼的问题——课程设计。那么本片文章就详细的分享一个用C语言实现一个简单学生成绩管理系统,供同学们学习和参考(文章最后会附上源程序)。 1.建立一张学生成绩表,每个学生包含 学

    2024年02月11日
    浏览(80)
  • 学生成绩管理系统(C语言实现)

    设计并实现一个简单的学生成绩管理系统 学生成绩表信息包括学号、姓名、各科课程成绩(语文、数学、英语、政治)和总分。用带头结点的单链表管理学生成绩表,每个学生的信息依次从键盘输入,并根据需要进行插入、删除、排序、输出等操作。 一、 实训环境 信息工程

    2024年02月11日
    浏览(39)
  • C语言编程学生成绩管理系统

    目录 一、介绍 二、功能 1.录入学生 2.删除学生信息 3.修改学生信息 4.查询学生信息 5.所有学生信息 6.成绩排序  7.退出程序 三、代码 1.主函数 2.头文件 3.函数封装库         利用C语言,运用链表、指针、封装函数等基本知识实现一个学生管理系统。通过在终端对学生信息进

    2024年02月10日
    浏览(52)
  • C语言学生成绩管理系统(综合项目)

    1. 这个代码主要实现以下功能: 2. 用到的主要参数有:     1.整型变量int n;用于储存学生人数和之后的循环判断。     2.字符串char name[][];用于储存姓名。     3.浮点型变量float score[];用于储存成绩。     4.长整型变量long ID[Max];用于储存学号。 3.用到的子函数有: int  Menu(

    2024年02月11日
    浏览(43)
  • Java设计学生成绩管理系统

    1.1 题目与要求 设计一个学生成绩排名系统 实现以下功能: (1) 具备对成绩的管理功能(添加、删除、排序); (2) 具备对成绩的统计功能(最高分,最低分,平均分,及格率等); (3) 具备按学号、姓名查询成绩的功能; (4) 具备处理解决学号重复问题 ; 备注:成绩记录以下

    2024年02月09日
    浏览(51)
  • 【期末课程设计】学生成绩管理系统

    因其独特,因其始终如一 文章目录 一、学生成绩管理系统介绍 二、学生成绩管理系统设计思路 三、源代码 1. test.c  2. Student Management System.c 3.Stu_System.c 4.Teacher.c 5.Student Management System.h   前言: 学生成绩管理系统含教师登录入口和学生登录入口,可实现学生信息的添加,删

    2024年02月16日
    浏览(38)
  • 学生成绩管理系统——C语言版(含源码)

    一、开发环境 操作系统:Ununtu 16 开发环境工具:vscode 开发语言:C语言 二、功能需求 制作学生管理系统 在系统中能够实现 录入学生信息、帮助菜单、列出学生信息、计算总成绩平均值、根据总成绩平均值完成排序、根据学号查询学生信息、清屏、退出等功能。 三、功能说

    2024年02月08日
    浏览(49)
  • 学生成绩管理系统(C语言)(数组结构体)

    学生成绩管理系统 利用结构体、排序查找算法以及模块化程序设计实现如下菜单驱动的学生成绩管理系统: 1) 首次批量输入每个学生的学号、姓名、和各科考试成绩。 2) 增添一个新学生的信息。 3) 增添一门新的学科的信息。 4) 按学生姓名或学号查询、修改、删除学生信

    2024年02月09日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包