学生成绩管理系统——C语言版(含源码)

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

一、开发环境

操作系统:Ununtu 16 开发环境工具:vscode 开发语言:C语言

二、功能需求

制作学生管理系统
在系统中能够实现 录入学生信息、帮助菜单、列出学生信息、计算总成绩平均值、根据总成绩平均值完成排序、根据学号查询学生信息、清屏、退出等功能。

三、功能说明

系统运行:列出系统帮助菜单(即命令菜单),提示输入命令。
( 开始时还没有录入成绩,所以输入命令 L 也无法列出成绩。应提示“成绩表为空!请先使用命 令 T 录入学生成绩。”)
录入成绩:输入命令 T,录入成绩,界面提示输入学生人数。
列出成绩表:输入命令 L,输出成绩表。
计算平均分:输入命令 A,计算平均分,用命令L查看。
按平均分排序:输入命令 P,完成排序,使用命令L查看。
查询学生成绩:根据学号查询该学生信息。
清屏:输入指令C,清屏。
帮助菜单:输入指令H,调出帮助菜单。
退出系统:输入指令Q,退出系统。

四、构造算法架构

1.构造功能框架

主函数

#include <stdio.h>
#include <stdlib.h>
struct student
{
    int id;  //学号
    float b; //语文                                
    float c; //数学
    float d; //外语
    float e; //平均成绩
}stu[32];

//函数声明
int  Type(struct student *p); 
void List(struct student *p, int n);
void Average(struct student *p, int n);
void Sort(struct student *p, int n);
void Search(struct student *p, int n);
void Help();

int main(int argc, char const *argv[])
{
    Help ();
    char ch;
    int n = 0; //学生人数
    //struct student stu[32];

    while (1)
    {
        printf("请输入命令=");                                                                                                                                                                                                                                                                                                                                                                                                              
        scanf("%c", &ch);
        //getchar();

        if (ch == 'T')
            n = Type(stu);
        else if (ch == 'L')
        {
            if (n == 0)
                printf("成绩列表为空!请先使用命令T录入学生系统\n");
            else
                List(stu, n);
        }
        else if (ch == 'A')
        {
            if (n == 0)
                printf("成绩列表为空!请先使用命令T录入学生系统\n");
            else            
                Average(stu, n);            
        }
        else if (ch == 'P')
        {
            if (n == 0)
                printf("成绩列表为空!请先使用命令T录入学生系统\n");
            else
                Sort(stu, n);
            
        }
        else if (ch == 'S')
        {
            if (n == 0)
                printf("成绩列表为空!请先使用命令T录入学生系统\n");
            else            
                Search(stu, n);            
        }
        else if (ch == 'C')
            system("clear");

        else if (ch == 'H')
            Help();

        else if (ch == 'Q')
            break;

        getchar();
    }
    return 0;
}

2.设计系统菜单

void Help()    //帮助菜单
{
    printf("*********************************************\n");
    printf("*    学生成绩管理系统—— ——帮助菜单        *\n");
    printf("*********************************************\n");
    printf("*      H = 显示帮助菜单                   *\n");
    printf("*      T = 成绩录入                       *\n");
    printf("*      A = 计算学生平均分                 *\n");
    printf("*      L = 列出成绩表                     *\n");
    printf("*      P = 按平均成绩由高到低排序         *\n");
    printf("*      S =  按学号查询学生成绩            *\n");
    printf("*      C =  清屏                          *\n");
    printf("*      Q =  退出系统                      *\n");
    printf("*********************************************\n");
    printf("*   Copyright <C> 2023.02.03 By xushaowei *\n");
    printf("*********************************************\n");
}

运行结果

学生成绩管理系统——C语言版(含源码)

五、在框架的基础上实现各个功能

  1. 调用Type子函数 录入成绩

1)代码如下

int Type(struct student *p)    //输入成绩
{

    int i, n = 0;
    printf("请输入学生人数\n");
    scanf("%d", &n);
    printf("请输入%d个学生3门课的成绩\n", n);
    printf("学号 语文 数学 外语\n");

    for (i = 0; i < n; i++)
    {
        printf(" %d   ", i + 1);
        (p + i)->id = i + 1;
        scanf("%f %f %f", &(p + i)->b, &(p + i)->c, &(p + i)->d);
    }
    return n;
}

(2)运行结果

成绩输入 输入命令T,界面提示输入学生人数。

学生成绩管理系统——C语言版(含源码)

输入3 提示输入3名学生的3门课成绩,列出成绩单的表头“学号 语文 数学 英语”,提示学号:1 。

学生成绩管理系统——C语言版(含源码)

输入1号学生的3门课成绩,用空格间隔,回车结束。提示学号:2 。

学生成绩管理系统——C语言版(含源码)

输入2号学生的3门课成绩,用空格间隔,回车结束。提示学号:3 。

学生成绩管理系统——C语言版(含源码)

输入3号学生的3门课成绩,用空格间隔,回车结束。Type子函数调用结束,返回。提示输入命令。

学生成绩管理系统——C语言版(含源码)
  1. 调用List 函数 输出成绩表

(1)代码如下

void List(struct student *p, int n)   //列出成绩
{
    printf("学生成绩如下\n");
    printf("学号 语文  数学   外语  平均分\n");
    for (int i = 0; i < n; i++)
    {
        printf("%d    %.1f  %.1f   %.1f  %.1f", (p + i)->id, (p + i)->b, (p + i)->c, (p + i)->d, (p + i)->e);
        putchar(10);
    }
    putchar(10);
}

(2)运行结果

输入命令 L ,调用List子函数输出成绩表。List子函数调用结束,返回。提示输入命令

学生成绩管理系统——C语言版(含源码)
  1. 调用Average子函数计算平均分

(1)代码如下

void Average(struct student *p, int n) //计算成绩平均值
{
    int i;
    for (i = 0; i < n; i++)
    {
        (p + i)->e = ((p + i)->b + (p + i)->c + (p + i)->d) / 3;
    }
    printf("平均成绩已计算请使用命令 L 查看\n");
}

(2)运行结果

输入命令 A,提示“平均分已计算。请使用命令L查看。” Average子函数调用结束,返回。提示输入命令。

学生成绩管理系统——C语言版(含源码)

输入命令 L ,调用List子函数输出成绩表。List子函数调用结束,返回。提示输入命令。

学生成绩管理系统——C语言版(含源码)

4. 调用Sort子函数将各学生记录按平均分由高到低排序

(1)代码如下

void Sort(struct student *p, int n)  //将学生成绩按高低排序  冒泡排序
{
    struct student t; //中间交换结构体变量

    int i, j;
    for (i = 0; i < n; i++)   //冒泡排序
    {
        for (j = 0; j < n - i - 1; j++)
        {
            if ((p + j)->e < (p + j + 1)->e)
            {
                t = p[j];
                p[j] = p[j + 1];
                p[j + 1] = t;
            }
        }
    }

    printf("完成排序,请使用命令L查看\n");
}

(2)运行结果

输入命令 P,提示“完成排序。请使用命令L查看。” Sort子函数调用结束,返回。提示输入命令。

学生成绩管理系统——C语言版(含源码)

输入命令 L ,调用List子函数输出成绩表。List子函数调用结束,返回。提示输入命令。

学生成绩管理系统——C语言版(含源码)

5.调用Search子函数查询学生成绩

(1)代码如下

void Search(struct student *p, int n)  //根据学号查询学生信息
{
    int a = 0;
    printf("请输入要查询的学号\n");
    scanf("%d", &a);
    printf("学号 语文  数学   外语  平均分\n");
    for (int i = 0; i < n; i++)
    {
        if ((p + i)->id == a)
        {
            printf("%d    %.1f  %.1f   %.1f  %.1f", (p + i)->id, (p + i)->b, (p + i)->c, (p + i)->d, (p + i)->e);
        }
    }

    putchar(10);
}

(2)运行结果

输入命令 S,提示“输入要查询的学生学号”。

学生成绩管理系统——C语言版(含源码)

输入2找到2号学生的成绩并输出。Search子函数调用结束,返回。提示输入命令。

学生成绩管理系统——C语言版(含源码)

6.调用Help子函数显示帮助菜单

(1)代码如下

void Help()    //帮助菜单
{
    printf("*********************************************\n");
    printf("*    学生成绩管理系统—— ——帮助菜单        *\n");
    printf("*********************************************\n");
    printf("*      H = 显示帮助菜单                   *\n");
    printf("*      T = 成绩录入                       *\n");
    printf("*      A = 计算学生平均分                 *\n");
    printf("*      L = 列出成绩表                     *\n");
    printf("*      P = 按平均成绩由高到低排序         *\n");
    printf("*      S =  按学号查询学生成绩            *\n");
    printf("*      C =  清屏                          *\n");
    printf("*      Q =  退出系统                      *\n");
    printf("*********************************************\n");
    printf("*   Copyright <C> 2023.02.03 By    xsw    *\n");
    printf("*********************************************\n");
}

(2)运行结果

输入命令H,调用Help子函数,调用结束返回。提示输入命令。

学生成绩管理系统——C语言版(含源码)

7.清屏功能

由于系统库自带清屏功能,直接调用#include <stdlib.h>库即可

(1)代码在main中

else if (ch == 'C')
            system("clear");

(2)运行结果

输入命令C,执行清屏函数语句system("clear");清除屏幕的所有内容。提示输入命令。

学生成绩管理系统——C语言版(含源码)

8退出系统

利用break退出整个程序

(1)代码如下

        else if (ch == 'Q')
            break;

(2)运行结果

输入命令Q,则退出系统

学生成绩管理系统——C语言版(含源码)

六、源代码

#include <stdio.h>
#include <stdlib.h>
struct student
{
    int id;  //学号
    float b; //语文                                
    float c; //数学
    float d; //外语
    float e; //平均成绩
}stu[32];

int  Type(struct student *p);
void List(struct student *p, int n);
void Average(struct student *p, int n);
void Sort(struct student *p, int n);
void Search(struct student *p, int n);
void Help();

int main(int argc, char const *argv[])
{
    Help ();
    char ch;
    int n = 0; //学生人数
    //struct student stu[32];

    while (1)
    {
        printf("请输入命令=");                                                                                                                                                                                                                                                                                                                                                                                                              
        scanf("%c", &ch);
        //getchar();

        if (ch == 'T')
            n = Type(stu);
        else if (ch == 'L')
        {
            if (n == 0)
                printf("成绩列表为空!请先使用命令T录入学生系统\n");
            else
                List(stu, n);
        }
        else if (ch == 'A')
        {
            if (n == 0)
                printf("成绩列表为空!请先使用命令T录入学生系统\n");
            else            
                Average(stu, n);            
        }
        else if (ch == 'P')
        {
            if (n == 0)
                printf("成绩列表为空!请先使用命令T录入学生系统\n");
            else
                Sort(stu, n);
            
        }
        else if (ch == 'S')
        {
            if (n == 0)
                printf("成绩列表为空!请先使用命令T录入学生系统\n");
            else            
                Search(stu, n);            
        }
        else if (ch == 'C')
            system("clear");

        else if (ch == 'H')
            Help();

        else if (ch == 'Q')
            break;

        getchar();
    }
    return 0;
}

int Type(struct student *p)    //输入成绩
{

    int i, n = 0;
    printf("请输入学生人数\n");
    scanf("%d", &n);
    printf("请输入%d个学生3门课的成绩\n", n);
    printf("学号 语文 数学 外语\n");

    for (i = 0; i < n; i++)
    {
        printf(" %d   ", i + 1);
        (p + i)->id = i + 1;
        scanf("%f %f %f", &(p + i)->b, &(p + i)->c, &(p + i)->d);
    }
    return n;
}

void List(struct student *p, int n) //列出成绩
{
    printf("学生成绩如下\n");
    printf("学号 语文  数学   外语  平均分\n");
    for (int i = 0; i < n; i++)
    {
        printf("%d    %.1f  %.1f   %.1f  %.1f", (p + i)->id, (p + i)->b, (p + i)->c, (p + i)->d, (p + i)->e);
        putchar(10);
    }
    putchar(10);
}
void Average(struct student *p, int n) //计算成绩平均值
{
    int i;
    for (i = 0; i < n; i++)
    {
        (p + i)->e = ((p + i)->b + (p + i)->c + (p + i)->d) / 3;
    }
    printf("平均成绩已计算请使用命令 L 查看\n");
}
void Sort(struct student *p, int n)  //将学生成绩按高低排序  冒泡排序
{
    struct student t; //中间交换结构体变量

    int i, j;
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < n - i - 1; j++)
        {
            if ((p + j)->e < (p + j + 1)->e)
            {
                t = p[j];
                p[j] = p[j + 1];
                p[j + 1] = t;
            }
        }
    }

    printf("完成排序,请使用命令L查看\n");
}
void Search(struct student *p, int n)  //根据学号查询学生信息
{
    int a = 0;
    printf("请输入要查询的学号\n");
    scanf("%d", &a);
    printf("学号 语文  数学   外语  平均分\n");
    for (int i = 0; i < n; i++)
    {
        if ((p + i)->id == a)
        {
            printf("%d    %.1f  %.1f   %.1f  %.1f", (p + i)->id, (p + i)->b, (p + i)->c, (p + i)->d, (p + i)->e);
        }
    }

    putchar(10);
}
void Help()    //帮助菜单
{
    printf("*********************************************\n");
    printf("*    学生成绩管理系统—— ——帮助菜单        *\n");
    printf("*********************************************\n");
    printf("*      H = 显示帮助菜单                   *\n");
    printf("*      T = 成绩录入                       *\n");
    printf("*      A = 计算学生平均分                 *\n");
    printf("*      L = 列出成绩表                     *\n");
    printf("*      P = 按平均成绩由高到低排序         *\n");
    printf("*      S =  按学号查询学生成绩            *\n");
    printf("*      C =  清屏                          *\n");
    printf("*      Q =  退出系统                      *\n");
    printf("*********************************************\n");
    printf("*   Copyright <C> 2023.02.03 By    xsw    *\n");
    printf("*********************************************\n");
}

七、总结

在制作学生管理系统时,学生人数n贯穿始终,通过n的值判断当前命令的子函数是否能够调用执行。输出数组元素时,要将学号单独处理,输出为整数(即保留0位小数)。同理,在计算成绩时也要将第1列的学号撇开,只计算第2列之后的。成绩保留1位小数。各项功能的实现一定要在心中有一个大概的流程,然后再使用C语言进行编译,要理解各种函数的作用和意义,这样帮助我们更好的制作出想要的系统。文章来源地址https://www.toymoban.com/news/detail-481278.html

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

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

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

相关文章

  • C语言编程学生成绩管理系统

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

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

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

    2024年02月11日
    浏览(43)
  • C语言课程设计_学生成绩管理系统

    设计一个学生成绩排名系统。 1)  具备对成绩的管理功能(添加、删除、排序) 2)  具备对成绩的统计功能(最高分,最低分,平均分,及格率等) 3)  具备按学号、姓名、或课程名查询成绩的功能。 4)学生成绩应该保存在文件中。 备注:成绩记录以下信息:班级,学号,

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

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

    2024年02月09日
    浏览(45)
  • (附源码)python学生成绩管理系统 毕业设计 061011

    python学生成绩管理系统的设计与实现 摘 要 随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理。在现实运用中,应用软件的工作规则和开发步骤,采用python技术建设学生成绩管理系统。 本设计

    2024年02月04日
    浏览(44)
  • C语言学生成绩信息管理系统(超详细版)

    主题:一个简易成绩管理系统 功能介绍: 1.以文本形式存储学生信息 2.对以存信息进行   1. 插入 2. 修改3. 删除  4.查询  5.成绩数字特征 目录 一:分析 二:查询  三:菜单 四:初始化函数 五:插入函数 六:修改函数 七:删除函数 八:数字特征 九:显示函数 要进行 插入

    2024年02月12日
    浏览(45)
  • 学生成绩管理系统(C语言有结构体实现)

    本文章介绍了一个通过C语言实现的一个简单的学生管理系统,该系统要是使用结构体数组来管理学生成绩数据的,通过该系统的练习能够对结构体的相关知识有更好的理解,提高逻辑思维能力。 系统运行,打开如下界面。列出系统帮助菜单(即命令菜单),提示输入命令 开

    2024年02月06日
    浏览(82)
  • 学生成绩管理系统的设计与实现(论文+源码)_kaic

     摘要 该系统在开发过程中,要注意使其与业务流程的运作相一致,力争使该系统全面,通用,以便该系统不仅适用于教育机构。在开发方法的选择上,选择生命周期方法和原型方法,并按照四个主要阶段的系统研究,系统分析,系统设计和系统实施进行设计,并在具体设计

    2024年02月12日
    浏览(43)
  • (附源码)基于python的学生成绩管理系统 毕业设计071143

    Django学生成绩管理 摘 要 在国家重视教育影响下,教育部门的密确配合下,对教育进行改革、多样性、质量等等的要求,使教育系统的管理和运营比过去十年前更加理性化。依照这一现实为基础,设计一个快捷而又方便的线上学生成绩管理系统是一项十分重要并且有价值的事

    2024年02月05日
    浏览(60)
  • ChatGPT实现用C语言写一个学生成绩管理系统

    随着ChatGPT爆火,大家都在使用ChatGPT来帮助自己提高效率,对于程序员来说使用它来写代码怎么样呢?今天尝试让ChatGPT,写了一个学生成绩管理系统。 问题是:使用C语言写一个学生成绩管理系统,要求使用链表,实现增删改查功能。 下面是ChatGPT写的代码,用时不到30秒,速

    2023年04月13日
    浏览(55)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包