广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言实现简单学生成绩管理系统项目
  • 557
分享到

C语言实现简单学生成绩管理系统项目

2024-04-02 19:04:59 557人浏览 独家记忆
摘要

本文实例为大家分享了C语言实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 系统界面及相关要求 1)系统运行,打开如下界面。列出系统帮助菜单(即命令菜单),提示输入命令。

本文实例为大家分享了C语言实现学生成绩管理系统的具体代码,供大家参考,具体内容如下

系统界面及相关要求

1)系统运行,打开如下界面。列出系统帮助菜单(即命令菜单),提示输入命令。

2)开始时还没有录入成绩,所以输入命令 L 也无法列出成绩。应提示“成绩表为空!请先使用命令 T 录入学生成绩。”

同理,当输入其他的成绩处理命令时也作相应的处理。

3)输入命令 T,调用Type子函数录入成绩。

界面提示输入学生人数

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

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

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

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

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

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

6)输入命令 P ,调用Sort子函数将各学生记录按平均分由高到低排序,提示“完成排序。请使用命令L查看。” Sort子函数调用结束,返回。提示输入命令。

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

7)输入命令 S ,调用Search子函数查询学生成绩,提示“输入要查询的学生学号”。

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

8)输入命令C 执行清屏函数语句system(“clear”);

清除屏幕的所有内容。提示输入命令。

9)输入命令H 调用Help子函数显示帮助菜单。Help子函数调用结束,返回。提示输入命令。

10)输入命令Q ,则退出系统。

注意:

1)输出数组元素时,要将学号单独处理,输出为整数(即保留0位小数)。同理,在计算成绩时也要将第1列的学号撇开,只计算第2列之后的。成绩保留1位小数。
2)学生人数n贯穿始终,通过n的值判断当前命令的子函数是否能够调用执行。例如:当n=0时,说明还没有录入成绩。而一旦输入命令T,也即调用Type子函数录入了成绩,则n的值就不再是0。当n!=0时,就可以进行其他的成绩操作,但不能再执行录用成绩的操作。所以当用户输入的命令无法执行时,应当给出提示。

代码

#include <stdio.h>
#include <stdlib.h>
//#include "hs.h"
struct student
{
    int id;
    float yw;
    float sx;
    float wy;
    float pj;
};
void help(void);
int type(struct student *p);
void list(struct student *p,int n);
void average(struct student *p,int n);
void search (struct student *p);
void sort(struct student *p,int n);
int main(int arGC, const char *argv[])
{
    char ch;
    struct student stu[32];
    int n=0;
    while(1)
    {
        printf("请输入命令 = ");
        //getchar();
        scanf("%c",&ch);
        putchar(10);
        if(ch=='T')
        {
            n=type(stu);
        }
        else if(ch=='L')
        {
            if(n==0)
            {
                printf("成绩表为空!请先使用T录入成绩!\n");
                putchar(10);
            }
            else
                list(stu,n);
        }
        else if(ch=='A')
        {
            if(n==0)
            {
                printf("成绩表为空!请先使用T录入成绩!\n");
                putchar(10);
            }
            else
            {
                average(stu,n);
                printf("平均分已计算,请使用命令L查看!\n");
                putchar(10);
            }
        }
        else if(ch=='H')
            help();
        else if(ch=='C')
            system("clear");
        else if(ch=='S')
        {
            if(n==0)
            {
                printf("成绩表为空!请先使用T录入成绩!\n");
                putchar(10);
            }
            else
            {
                search(stu);
                putchar(10);
            }
        }
        else if(ch=='P')
        {
            if(n==0)
            {
                printf("成绩表为空!请先使用T录入成绩!\n");
                putchar(10);
            }
            else
            {
                sort(stu,n);
                putchar(10);
            }
        }
        else if(ch=='Q')
        {
            printf("Press any key to continue!\n");
            return -1;
        }
        getchar();
    }
    return 0;
}
int type(struct student *p)
{
    int n=0;
    printf("请输入学生人数:");
    scanf("%d",&n);
    printf("请输入学生三门课的成绩:\n");
    printf("学号 语文 数学 外语\n");
    for(int i=0;i<n;i++)
    {
        printf("%d    ",i+1);
        struct student stu[i];
        scanf("%f %f %f",&(p+i)->yw,&(p+i)->sx,&(p+i)->wy);
    }
    return n;
}
void list(struct student *p,int n)
{
    printf("学生成绩如下:\n");
    printf("学号 语文 数学 外语 平均分\n");
    for(int i=0;i<n;i++)
    {
        printf("%d    ",i+1);
        printf("%.1f %.1f %.1f %.1f",p->yw,p->sx,p->wy,p->pj);
        p++;
        putchar(10);
    }
}
void average(struct student *p,int n)
{
    for(int i=0;i<n;i++)
    {
        (p->pj)=((p->yw)+(p->sx)+(p->wy))/3;
        p++;
    }
}
void help(void)
{
    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) 2022.3.15 By liq* \n");
    printf("**********************************\n");
}
void search(struct student *p)
{
    int s=0;
    printf("请输入要查询的学生号:");
    scanf("%d",&s);
    printf("学号 语文 数学 外语 平均分\n");
    printf("%d   %.1f  %.1f  %.1f  %.1f",s,(p+s-1)->yw,(p+s-1)->sx,(p+s-1)->wy,(p+s-1)->pj);
    putchar(10);
}
void sort(struct student *p,int n)
{
    struct student temp;
    int i,j;
    for(i=0;i<n;i++)
    {
        for(j=0;j<n-i-1;j++)
        {
            if(p[j].pj<p[j+1].pj)
            {
                temp=p[j];
                p[j]=p[j+1];
                p[j+1]=temp;
            }
        }
    }
    printf("排序完成,请使用命令L查看!\n");
}

注意

如需要分文件编写。
只需要将上述代码的函数部分拿出来,新建两个个文件:fun.c、fun.h。其中fun.c文件用来存放上述代码的结构体声明以及函数部分(加上相应的头文件)。fun.h用来存放结构体声明以及函数声明(加上相应的头文件)。
在主函数中要加上对应的头文件:#include “fun.h”(双引号,不是<>)。
编译的时候需要将主函数以及新建的fun.c文件一起编译,运行还是同之前一样,用./a.out运行即可。

具体如下图所示:

1.新建两个文件(同名,不同后缀),编译并运行(需要多文件同时编译)。

2.hs.c存放结构体声明及对应的函数(这里面的函数还可以拆分成其他的文件,这里我就不拆分了)。

#include <stdio.h>
#include <stdlib.h>
struct student
{
    int id;
    float yw;
    float sx;
    float wy;
    float pj;
};
int type(struct student *p)
{
    int n=0;
    printf("请输入学生人数:");
    scanf("%d",&n);
    putchar(10);
    printf("请输入学生三门课的成绩:\n");
    putchar(10);
    printf("学号 语文 数学 外语\n");
    for(int i=0;i<n;i++)
    {
        printf("%d    ",i+1);
        struct student stu[i];
        scanf("%f %f %f",&(p+i)->yw,&(p+i)->sx,&(p+i)->wy);
    }
    putchar(10);
    return n;
}
void list(struct student *p,int n)
{
    printf("学生成绩如下:\n");
    printf("学号 语文 数学 外语 平均分\n");
    for(int i=0;i<n;i++)
    {
        printf("%d    ",i+1);
        printf("%.1f %.1f %.1f %.1f",p->yw,p->sx,p->wy,p->pj);
        p++;
        putchar(10);
    }
    putchar(10);
}
void average(struct student *p,int n)
{
    for(int i=0;i<n;i++)
    {
        (p->pj)=((p->yw)+(p->sx)+(p->wy))/3;
        p++;
    }
}
void help(void)
{
    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) 2022.3.15 By liq* \n");
    printf("**********************************\n");
}
void search(struct student *p)
{
    int s=0;
    printf("请输入要查询的学生号:");
    scanf("%d",&s);
    putchar(10);
    printf("学号 语文 数学 外语 平均分\n");
    printf("%d   %.1f  %.1f  %.1f  %.1f",s,(p+s-1)->yw,(p+s-1)->sx,(p+s-1)->wy,(p+s-1)->pj);
    putchar(10);
}
void sort(struct student *p,int n)
{
    struct student temp;
    int i,j;
    for(i=0;i<n;i++)
    {
        for(j=0;j<n-i-1;j++)
        {
            if(p[j].pj<p[j+1].pj)
            {
                temp=p[j];
                p[j]=p[j+1];
                p[j+1]=temp;
            }
        }
    }
    printf("排序完成,请使用命令L查看!\n");
}

3.hs.h存放结构体声明以及hs.c里面函数对应的函数声明。

#include <stdio.h>
#include <stdlib.h>
struct student
{
    int id;
    float yw;
    float sx;
    float wy;
    float pj;
};
int type(struct student *p);
void list(struct student *p,int n);
void average(struct student *p,int n);
void help(void);
void search(struct student *p);
void sort(struct student *p,int n);

4.main函数

#include <stdio.h>
#include <stdlib.h>
#include "hs.h"
int main(int argc, const char *argv[])
{
    char ch;
    struct student stu[32];
    int n=0;
    while(1)
    {
        printf("请输入命令 = ");
        scanf("%c",&ch);
        putchar(10);
        if(ch=='T')
        {
            n=type(stu);
        }
        else if(ch=='L')
        {
            if(n==0)
            {
                printf("成绩表为空!请先使用T录入成绩!\n");
                putchar(10);
            }
            else
                list(stu,n);
        }
        else if(ch=='A')
        {
            if(n==0)
            {
                printf("成绩表为空!请先使用T录入成绩!\n");
                putchar(10);
            }
            else
            {
                average(stu,n);
                printf("平均分已计算,请使用命令L查看!\n");
                putchar(10);
            }
        }
        else if(ch=='H')
            help();
        else if(ch=='C')
            system("clear");
        else if(ch=='S')
        {
            if(n==0)
            {
                printf("成绩表为空!请先使用T录入成绩!\n");
                putchar(10);
            }
            else
            {
                search(stu);
                putchar(10);
            }
        }
        else if(ch=='P')
        {
            if(n==0)
            {
                printf("成绩表为空!请先使用T录入成绩!\n");
                putchar(10);
            }
            else
            {
                sort(stu,n);
                putchar(10);
            }
        }
        else if(ch=='Q')
        {
            printf("Press any key to continue!\n");
            return -1;
        }
        getchar();
    }
    return 0;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: C语言实现简单学生成绩管理系统项目

本文链接: https://www.lsjlt.com/news/165010.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言实现简单学生成绩管理系统项目
    本文实例为大家分享了C语言实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 系统界面及相关要求 1)系统运行,打开如下界面。列出系统帮助菜单(即命令菜单),提示输入命令。 ...
    99+
    2022-11-13
  • C语言实现学生成绩管理系统项目
    本文实例为大家分享了C语言实现学生成绩管理系统项目,供大家参考,具体内容如下 1、数据结构:学生信息:学号、姓名、年龄、性别、3课成绩 2、功能: (1)  增加学生记录(...
    99+
    2022-11-13
  • 基于C语言实现简单学生成绩管理系统
    本文实例为大家分享了C语言实现简单学生成绩管理系统的具体代码,供大家参考,具体内容如下 一、系统主要功能 1、密码登录2、输入数据3、查询成绩4、修改成绩5、输出所有学生成绩6、退出...
    99+
    2022-11-13
  • C++实现简单学生成绩管理系统
    本文实例为大家分享了C++实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 一、问题描述 设计一个学生成绩管理程序,实现按班级完成对学生成绩信息的录入和修改,并用文件保存。实...
    99+
    2022-11-13
  • C#实现简单学生成绩管理系统
    本文实例为大家分享了C#实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 C#作业 用循环结构/数组实现 进入启动页面 管理员身份登入 用户名:师晓峰密码:88481234...
    99+
    2022-11-13
    C#学生成绩管理系统 C#学生管理系统 C#成绩管理系统
  • C++实现简单的学生成绩管理系统
    本文实例为大家分享了C++实现简单学生成绩管理系统的具体代码,供大家参考,具体内容如下 manage.h #include <iostream> #include <...
    99+
    2022-11-13
  • C语言代码实现学生成绩管理系统
    某班有最多不超过 30 人(具体人数由键盘输人)参加期未考试,考试科目 最多不超过 6 门(具体门数由键盘输入,但不少于 3 门),学生成绩管理系统是一 个非常实用的程序,如果能够把...
    99+
    2022-11-13
  • C语言链表实现学生成绩管理系统
    目录一、课程设计题目及内容二、主要设计思路三、程序源码及具体注释(1)预处理指令(2)类型定义(3)函数原型(4)main函数定义(5)其他函数定义 四、运行示例五、注意事...
    99+
    2022-11-13
  • 使用C语言实现学生成绩管理系统
    最近正在学习C语言,搞了一个学生成绩管理系统的小程序,代码粗陋,大佬勿喷。 先上图: 整个程序采用链表来管理学生成绩,保存学生成绩用的是 文件处理函数,使用 fopen(FileP...
    99+
    2022-11-12
  • C语言实现简单班级成绩管理系统
    前言: 有朋友最近在做c语言课设,要求写一个班级成绩管理系统,便写份简单的代码来玩。代码原创,未参考任何其他人的代码 程序要求 说明 本程序主要采用结构体数组本文件采用多文件编写,...
    99+
    2022-11-13
  • java实现简单学生成绩管理系统
    本文实例为大家分享了java实现学生成绩管理系统的具体代码,供大家参考,具体内容如下   import java.util.Scanner; import java.lang.*;...
    99+
    2022-11-13
  • C++如何实现简单的学生成绩管理系统
    这篇文章主要介绍了C++如何实现简单的学生成绩管理系统的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++如何实现简单的学生成绩管理系统文章都会有所收获,下面我们一起来看看吧。manage.h#include&...
    99+
    2023-06-29
  • C语言学生成绩管理系统源码
    本文实例为大家分享了C语言学生成绩管理系统的具体代码,供大家参考,具体内容如下 效果如下: 代码如下: #include <stdio.h> #include <...
    99+
    2022-11-13
  • 怎么用C语言实现学生成绩管理系统
    这篇“怎么用C语言实现学生成绩管理系统”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用C语言实现学生成绩管理系统”文章吧...
    99+
    2023-06-29
  • python实现简单的学生成绩管理系统
    本文实例为大家分享了python实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 需求: 代码: import os filename = 'student.txt' d...
    99+
    2022-11-13
  • C#实现学生成绩管理系统
    本文实例为大家分享了C#实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 使用链表写学生成绩管理系统 链表可以灵活的展示增删改查 下面是结果演示 这是登录及部分添加 继续添...
    99+
    2022-11-13
    C#学生成绩管理系统 C#成绩管理系统 C#学生管理系统
  • C语言实现学生成绩管理系统课程设计
    目录设计要求完整代码运行结果本文实例为大家分享了C语言实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 设计要求 设计学生成绩管理系统 要求如下: 1.输入学生信息2.统计学...
    99+
    2022-11-13
  • C语言嵌套链表实现学生成绩管理系统
    C语言嵌套链表实现学生成绩管理系统,供大家参考,具体内容如下 链表A,每个节点存放一个新的链表B1,B2,B3,B4,B5的头结点。 场景: 一个年级,相当链表A 该年级5个班,每个...
    99+
    2022-11-13
  • C语言利用链表实现学生成绩管理系统
    链表是一种常见的基础数据结构,结构体指针在这里得到了充分的利用。 链表可以动态的进行存储分配,也就是说,链表是一个功能极为强大的数组,他可以在节点中定义多种数据类型,还可以根据需要随...
    99+
    2022-11-21
    C语言 链表 学生成绩管理系统 C语言 学生成绩管理系统 C语言 成绩管理系统
  • java实现简单学生成绩档案管理系统
    本文实例为大家分享了java学生成绩档案管理系统的具体代码,供大家参考,具体内容如下 学生成绩档案管理系统源代码: student public class students{   ...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作