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

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

目录

一、介绍

二、功能

1.录入学生

2.删除学生信息

3.修改学生信息

4.查询学生信息

5.所有学生信息

6.成绩排序

 7.退出程序

三、代码

1.主函数

2.头文件

3.函数封装库


一、介绍

        利用C语言,运用链表、指针、封装函数等基本知识实现一个学生管理系统。通过在终端对学生信息进行一系列操作。

        基本思想流程图如下:

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

        基本参数:

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

二、功能

1.录入学生

        通过输入选项  0  匹配功能,进入录入学生信息的程序,将学生的信息录入到程序。 

        相关函数:

int insert_stu(Class_t *cls)

      程序运行结果:

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

2.删除学生信息

         通过输入选项  1  匹配功能,进入删除学生信息的程序,对指定学生的信息删除。

        相关函数:

int delete_stu(Class_t *cls)

       程序运行结果:

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

3.修改学生信息

        通过输入选项  2  匹配功能,进入修改学生信息的程序,对指定学生的信息进行修改。 

        相关函数:

int update_stu(Class_t *cls)

       程序运行结果:

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

4.查询学生信息

        通过输入选项  3  匹配功能,进入查询学生信息的程序,将指定学生的信息打印出来。 

        相关函数:

int select_stu(Class_t *cls)

       程序运行结果:

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

5.所有学生信息

        通过输入选项  4  匹配功能,进入遍历学生信息的程序,将所有学生的信息打印出来。 

        相关函数:

void print_all_stu(Class_t *cls)

      程序运行结果:

         已提前录入aa、bb、cc、dd、ee相关信息。

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

6.成绩排序

        通过输入选项  5  匹配功能,进入成绩排序的程序,将所有的学生按照总成绩降序排序,并打印所有学生的信息。 

        相关函数:

void sort_stu(Class_t *cls)

       程序运行结果: 

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

 7.退出程序

        通过输入选项  6  匹配功能,退出程序。 

        程序运行结果:

 C语言编程学生成绩管理系统文章来源地址https://www.toymoban.com/news/detail-499522.html

三、代码

1.主函数

#include "score.h"

//学生成绩管理系统
int main(int argc, const char *argv[])
{
    int chose = 0;
    int loop = 1;
    // 1. 定义一个班级的的变量
    Class_t *cls_p =(Class_t *)malloc(sizeof(Class_t));
    if (cls_p == NULL)
    {
        printf("malloc failed!\n");
        return -1;
    }
    // 初始化学生的个数, 数组的变量从第0开始的
    cls_p->count = -1;
    while (loop)
    {
        printf("################################################################\n");
        printf("#### 0.录入  1.删除  2.修改  3.查询  4.遍历  5.排序  6.退出 ####\n");
        printf("################################################################\n");
        printf("请输入你的选择 > ");
        scanf("%d", &chose);
        while (getchar() != '\n'); // 循环吃掉所有的垃圾字符
        switch (chose)
        {
        case INSERT:
            insert_stu(cls_p);
            break;
        case DELECT:
            delete_stu(cls_p);
            break;
        case UPDATE:
            update_stu(cls_p);
            break;
        case SELECT:
            select_stu(cls_p);
            break;
        case PRINT:
            print_all_stu(cls_p);
            break;
        case SORT:
            sort_stu(cls_p);
            print_all_stu(cls_p);
            break;
        case QUIT:
            loop = 0;
            printf("退出学生成绩管理系统\n");
            break;
        default:
            printf("输入错误,请重新输入!\n");
            break;
        }
        if (!loop)
        {
            break;
        }
    }

    if (cls_p != NULL)
    {
        free(cls_p);
        cls_p = NULL;
    }
    return 0;
}

2.头文件

#ifndef __SCORE_H__
#define __SCORE_H__
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

// 班级学生的最大的个数
#define NUM 100

// 学生成绩管理系统的功能
#define INSERT 0//插入
#define DELECT 1//删除
#define UPDATE 2//修改
#define SELECT 3//查询
#define PRINT 4//遍历
#define SORT 5//排序
#define QUIT 6//退出


//声明一个学生成绩组成的结构体类型
typedef struct student_score
{
    int Maths;
    int Chinese;
    int English;
    int Total_score;
}score_t;

// 声明一个学生的结构体类型
typedef struct Student /*不省略结构体名*/
{
    char name[20];
    int age;
    char sex;
    score_t score;
} Student_t;
// 声明一个班级的结构体类型
typedef struct /*省略结构体名*/
{
    Student_t stu_arr[NUM];
    int count; // 记录学生的个数
} Class_t;

int insert_stu(Class_t *cls);//录入

int delete_stu(Class_t *cls);//删除

int update_stu(Class_t *cls);//修改

int select_stu(Class_t *cls);//查询

void print_all_stu(Class_t *cls);//遍历

void sort_stu(Class_t *cls);//排序

#endif // __SCORE_H__

3.函数封装库

#include "score.h"

/*--------------------------------------------------------
    功能:录入一个学生
    参数:
        @ cls :插入到哪个班级
    返回值:
        0:成功
        -1:失败 学生满不可以插入
*/
int insert_stu(Class_t *cls)
{
    if (NUM == cls->count-1)
    {
        printf("内存不足!插入失败!\n");
        return -1;
    }
    cls->count++;
    printf("请输入所要录入学生的相关信息\n");
    printf("请输入姓名:");
    scanf("%s",cls->stu_arr[cls->count].name);

    printf("请输入年龄:");
    scanf("%d",&cls->stu_arr[cls->count].age);

    printf("请输入性别:");
    scanf("%s",&cls->stu_arr[cls->count].sex);

    printf("请输入成绩->\n");

    printf("语文:");
    scanf("%d",&cls->stu_arr[cls->count].score.Chinese);

    printf("数学:");
    scanf("%d",&cls->stu_arr[cls->count].score.Maths);

    printf("英语:");
    scanf("%d",&cls->stu_arr[cls->count].score.English);
    cls->stu_arr[cls->count].score.Total_score = \
        cls->stu_arr[cls->count].score.Chinese + \
        cls->stu_arr[cls->count].score.English + \
        cls->stu_arr[cls->count].score.Maths;
    printf("总成绩:%-5d\n",cls->stu_arr[cls->count].score.Total_score);
    printf("录入成功\n");
    return 0;
}

/*---------------------------------------------------------
    功能:删除一个学生,按照名字删除
    参数:
        @ cls : 删除哪个班级的学生
    返回值:
        0 :成功
        -1 : 失败  没有学生的,查无此人
*/
int delete_stu(Class_t *cls)
{
    char name[20] = "";
    printf("请输入所要删除学生的姓名:");
    scanf("%s",name);
    int i,j = 0;
    for(i = 0; i <= cls->count; i++){
        if(!(strcmp(cls->stu_arr[i].name,name))){
            for(j = i; j <= cls->count; j++){
                cls->stu_arr[j] = cls->stu_arr[j+1];
            }
            printf("删除成功\n");
            cls->count--;
            return 0;
        }
    }
    printf("查无此人\n");
    return -1;
}

/*--------------------------------------------------------
    功能:修改学生成绩,按照名字修改
    参数:
        @ cls : 修改哪个班级的学生
    返回值:
        0 : 成功
        -1 : 失败  没有学生的,查无此人
*/
int update_stu(Class_t *cls)
{
    char name[20] = "";
    int i = 0; 
    printf("请输入需要修改成绩学生的姓名:\n");
    scanf("%s",name);
    for(i = 0; i <= cls->count; i++){
        if(!strcmp(cls->stu_arr[i].name,name)){
            printf("该学生语文成绩为:%d\n",cls->stu_arr[i].score.Chinese);
            printf("请输入新的成绩:\n");
            scanf("%d",&(cls->stu_arr[i].score.Chinese));
            printf("该学生数学成绩为:%d\n",cls->stu_arr[i].score.Maths);
            printf("请输入新的成绩:\n");
            scanf("%d",&(cls->stu_arr[i].score.Maths));
            printf("该学生英语成绩为:%d\n",cls->stu_arr[i].score.English);
            printf("请输入新的成绩:\n");
            scanf("%d",&(cls->stu_arr[i].score.English));
                cls->stu_arr[cls->count].score.Total_score = \
                    cls->stu_arr[cls->count].score.Chinese + \
                    cls->stu_arr[cls->count].score.English + \
                    cls->stu_arr[cls->count].score.Maths;
            printf("总成绩:%-5d\n",cls->stu_arr[cls->count].score.Total_score);
            printf("修改成功\n");
            return 0;
        }
    }
    printf("查无此人\n");
    return -1;
}
/*--------------------------------------------------------
    功能:查询某个学生成绩,按照名字查询
    参数:
        @ cls : 查询哪个班级的学生
    返回值:
        0 : 成功
        -1 : 失败  没有学生的,查无此人
*/
int select_stu(Class_t *cls)
{
    char name[20] = "";
    int i = 0; 
    printf("请输入姓名:");
    scanf("%s",name);
    for(i = 0; i <= cls->count; i++){
        if(!(strcmp(cls->stu_arr[i].name,name))){
            printf("查询成功\n");
            printf("该学生成绩为->语文:%-4d数学:%-4d英语:%-4d总成绩:%-5d\n",\
                cls->stu_arr[i].score.Chinese,\
                cls->stu_arr[i].score.Maths,\
                cls->stu_arr[i].score.English,\
                cls->stu_arr[i].score.Total_score);
            return 0;
        }
    }
    printf("查无此人\n");
    return -1;
}
/*--------------------------------------------------------
    功能:打印所有学生成绩信息,
    参数:
        @ cls : 打印哪个班级的学生
*/
void print_all_stu(Class_t *cls)
{
    int i = 0;
    for(i = 0 ;i <= cls->count; i++){
       printf("姓名:%-4s年龄:%-4d性别:%-4c成绩->语文:%-4d数学:%-4d英语:%-4d总成绩:%-5d\n",\
             cls->stu_arr[i].name,\
             cls->stu_arr[i].age,\
             cls->stu_arr[i].sex,\
             cls->stu_arr[i].score.Chinese,\
             cls->stu_arr[i].score.Maths,\
             cls->stu_arr[i].score.English,\
             cls->stu_arr[i].score.Total_score);
    }
}
/*--------------------------------------------------------
    功能:对所有学生按照总成绩进行排序,
    参数:
        @ cls : 排序哪个班级的学生
*/
void sort_stu(Class_t *cls)
{
    int i,j = 0;
    Student_t temp;  
    for(i = 0; i <= cls->count -1; i++){
        for(j = 0; j <= cls->count -1 -i; j++){
            if(cls->stu_arr[j].score.Total_score < cls->stu_arr[j+1].score.Total_score)
            {
                temp = cls->stu_arr[j];
                cls->stu_arr[j] = cls->stu_arr[j+1];
                cls->stu_arr[j+1] = temp;
            }
        }
    }
    printf("排序成功\n");
}

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

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

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

相关文章

  • 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语言版(含源码)

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

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

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

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

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

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

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

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

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

    2023年04月13日
    浏览(55)
  • 中文编程开发语言工具编程实际案例:美发店会员管理系统软件编程实例

    中文编程开发语言工具编程实际案例:美发店会员管理系统软件编程实例 中文编程开发语言工具编程实际案例:美发店会员管理系统软件编程实例。 软件功能: 1、系统设置:参数设定,账号及权限设置,系统初始化,卡类型设置,积分清零等。 2、会员信息登记:可以刷卡

    2024年02月07日
    浏览(59)
  • 中文编程开发语言工具编程案例:计时计费管理系统软件连接灯控器编程案例

    计时计费管理系统软件连接灯控器 计时计费管理系统软件连接灯控器编程案例

    2024年02月07日
    浏览(54)
  • 【C语言链表实现】学生成绩管理系统(功能全面,通俗易懂)

    题目 :学生成绩管理程序 要求 :本程序用于教学单位(院/系)的学生成绩管理。要求程序能够实现学生信息录入(可以实现增加、删除、修改学生的基本信息)、单科学习成绩的录入;班级内单科成绩排名;成绩查询:查询某个学生的各科成绩、统计所有不及格科目超过

    2024年02月09日
    浏览(52)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包