【C语言】C语言-学生成绩管理系统(源码+数据文件+课程论文)【独一无二】

请添加图片描述


👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化【获取源码+商业合作】
👉荣__誉👈:阿里云博客专家博主、51CTO技术博主
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。


系列文章目录


目录

  • 系列文章目录
  • 1. 功能框架说明
  • 2. 程序设计
  • 3. 运行结果


1. 功能框架说明

系统功能:
1、档案管理—学生档案、课程档案、选课档案
增加、删除、修改、查询
2、统计管理—学生成绩表
登记成绩、计算加权平均分、总学分
3、文件加载(进入系统时)
读入学生档案、课程档案、选课档案
生成学生成绩表
4、文件保存(退出系统时)
保存学生档案、课程档案、选课档案

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “成绩” 获取。👈👈👈

需要建立三张表,生成一张表:
学生表—关键字是学号
课程表—关键字是课程号
选课表—关键字是学号+课程号
成绩统计表(生成)–关键字是学号

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “成绩” 获取。👈👈👈

在这里插入图片描述
在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “成绩” 获取。👈👈👈

在这里插入图片描述

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “成绩” 获取。👈👈👈

在这里插入图片描述
在这里插入图片描述

学生成绩管理系统旨在提供一个高效且便捷的工具,用于管理学生、课程和选课信息,并生成和显示学生成绩单。系统主要包括以下功能模块:
数据初始化模块:读取学生、课程和选课信息表文件,初始化系统数据。
主菜单模块:显示主菜单,供用户选择操作。
学生信息管理模块:添加、修改、删除和查询学生信息。
课程信息管理模块:添加、修改、删除和查询课程信息。
选课信息管理模块:添加、修改、删除和查询选课信息。
成绩单管理模块:根据选课信息和课程信息生成学生成绩单,并支持显示和排序功能。
数据存储模块:将当前的学生信息、课程信息和选课信息保存到文件中。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “成绩” 获取。👈👈👈


2. 程序设计

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “成绩” 获取。👈👈👈

程序的主要数据结构包括学生信息、课程信息、选课信息和成绩单信息,具体定义

typedef struct    //学生信息 
{   
    char xh[10];  //学号
    char xm[9];   //姓名,最多4个汉字
    char xb[3];   //性别
    int nl;       //年龄
} Student;

typedef struct    //课程信息
{
    char kh[8];   //课号
    char km[11];  //课名,最多5个汉字
    float xf;     //学分
} Course;

typedef struct    //选课信息
{
    char xh[10];  //学号
    char kh[8];   //课号
    float cj;     //成绩
} Select;

typedef struct    //成绩信息
{         
    char xh[9];  //学号
    float cj[10]; //不超过10门课程成绩
    float pj;     //加权平均分
    float zxf;    //总学分
} Score;

Student:表示学生信息,包括学号、姓名、性别和年龄。
Course:表示课程信息,包括课号、课名和学分。
Select:表示选课信息,包括学号、课号和成绩。
Score:表示成绩单信息,包括学号、各门课程成绩、加权平均分和总学分。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “成绩” 获取。👈👈👈

程序模块之间的调用关系可以描述为一个有序的流程,各个模块通过特定的接口函数进行交互和数据传递。
主程序入口:main函数作为程序的入口,初始化数据并调用主菜单函数。

调用init函数读取文件并初始化数据。
调用create_cjlist函数生成成绩单。
调用display_main_menu函数显示主菜单,用户选择相应操作。

数据初始化模块:init函数负责从文件中读取数据并初始化学生信息、课程信息和选课信息。

从slist.txt读取学生信息,存储到Student数组中。
从clist.txt读取课程信息,存储到Course数组中。
从sclist.txt读取选课信息,存储到Select数组中。

主菜单模块:display_main_menu函数显示主菜单,用户通过输入选择执行相应操作。
用户选择操作后,调用相应的管理模块函数,如input_stud、disp_stud、delete_stud等。
学生信息管理模块:实现添加、修改、删除和查询学生信息的功能。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “成绩” 获取。👈👈👈

input_stud函数:添加或修改学生信息。
disp_stud函数:显示学生信息。
delete_stud函数:删除学生信息。
query_stud函数:查询学生信息。

int delete_stud(Student slist[], int scount) //删除学生信息
{   
    char xh[10]; 
    int i, j, flag = 0;
    char yes; 

    printf("请输入要删除的学生学号:");>👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “成绩” 获取。👈👈👈

    scanf("%s", xh);

    for (i = 0; i < scount; i++) {
        if (strcmp(slist[i].xh, xh) == 0) {
            printf("找到学生 %s %s %s %d,是否删除(Y/N):", slist[i].xh, slist[i].xm, slist[i].xb, slist[i].nl);
            fflush(stdin);
            yes = getchar();
            if (yes == 'Y' || yes == 'y') {
                for (j = i; j < scount - 1; j++) {
                    slist[j] = slist[j + 1];
                }
                scount--;
                printf("删除成功\n");
            }
            flag = 1;
            break;
        }
    }
    if (!flag) {
        printf("未找到学号为 %s 的学生\n", xh);
    }

    system("pause");
    return scount;
}

课程信息管理模块:实现添加、修改、删除和查询课程信息的功能。
input_course函数:添加或修改课程信息。
disp_course函数:显示课程信息。
delete_course函数:删除课程信息。
query_course函数:查询课程信息。

int delete_select(Select sclist[], int sccount) //删除选课信息
{
    char xh[10], kh[11]; 
    int i, j, flag = 0;
    char yes; 

    printf("请输入要删除的选课记录学号和课程号:");
    scanf("%s %s", xh, kh);

    for (i = 0; i < sccount; i++) {
        if (strcmp(sclist[i].xh, xh) == 0 && strcmp(sclist[i].kh, kh) == 0) {
            printf("找到选课记录 %s %s %.1f,是否删除(Y/N):", sclist[i].xh, sclist[i].kh, sclist[i].cj);
            fflush(stdin);
            yes = getchar();
            if (yes == 'Y' || yes == 'y') {
                for (j = i; j < sccount - 1; j++) {
                    sclist[j] = sclist[j + 1];
                }
                sccount--;
                printf("删除成功\n");
            }
            flag = 1;
            break;>👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “成绩” 获取。👈👈👈

        }
    }
    if (!flag) {
        printf("未找到学号为 %s 和课程号为 %s 的选课记录\n", xh, kh);
    }

    system("pause");
    return sccount;
}

选课信息管理模块:实现添加、修改、删除和查询选课信息的功能。

input_select函数:添加或修改选课信息。
disp_select函数:显示选课信息。
delete_select函数:删除选课信息。

void query_course(Course clist[], int ccount) //查询课程记录
{   
    char khkm[11]; 
    int i; 

    printf("请输入要查询的课程号或课程名:");
    scanf("%s", khkm);

    for (i = 0; i < ccount; i++) {
        if (strcmp(clist[i].kh, khkm) == 0 || strcmp(clist[i].km, khkm) == 0) {
            printf("找到课程:课号:%s 课名:%s 学分:%.1f\n", clist[i].kh, clist[i].km, clist[i].xf);
            break;
        }
    }
    if (i == ccount) {
        printf("未找到课程\n");>👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “成绩” 获取。👈👈👈

    }

    system("pause");
}

成绩单管理模块:生成和显示学生成绩单,并支持排序功能。

create_cjlist函数:根据选课信息和课程信息生成成绩单。
disp_cjlist函数:显示成绩单信息。
sort_cjlist函数:按加权平均分降序排序成绩单。

数据存储模块:将当前数据保存到文件中,确保数据的持久化。
write_to_file函数:将学生信息、课程信息和选课信息分别保存到slist.txt、clist.txt和sclist.txt文件中。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “成绩” 获取。👈👈👈

主程序入口 (main):

调用init初始化数据。
调用create_cjlist生成初始成绩单。
进入无限循环,根据用户选择调用display_main_menu,显示主菜单并处理用户输入。
根据用户选择分别调用以下函数:
input_stud、input_course、input_select:添加或修改信息。
disp_stud、disp_course、disp_select、disp_cjlist:显示信息。
delete_stud、delete_course、delete_select:删除信息。
query_stud、query_course、query_cjlist:查询信息。 write_to_file:保存信息到文件。
exit(0):退出程序。

数据初始化模块 (init):从文件读取学生、课程和选课信息,分别存储到Student、Course和Select数组中。
成绩单管理模块 (create_cjlist):根据选课信息和课程信息计算每个学生的成绩单信息,存储到Score数组中。
主菜单模块 (display_main_menu):根据用户输入,调用相应的管理函数进行操作。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “成绩” 获取。👈👈👈

int display_main_menu()
{  
    char c;
    do
    {
        system("cls");
        printf("\n\n\t\t\t         学生成绩管理系统\n\n");
        printf("\t\t\t 1.修改或添加学生、课程和选课信息\n");
        printf("\t\t\t 2.显示学生、课程和选课信息\n");
        printf("\t\t\t 3.删除学生、课程和选课信息\n");
        printf("\t\t\t 4.查询学生、课程和选课信息\n");
        printf("\t\t\t 5.保存学生、课程和选课信息到文件\n");
        printf("\t\t\t 0.退出\n");
        printf("\t\t\t 软件作者 学号:032330135 姓名:南小航\n");>👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “成绩” 获取。👈👈👈

        printf("\n\t\t\t   请选择 (0~5):  ");
        fflush(stdin);
        c = getchar();
    } while (c < '0' || c > '5');
    return c - '0';
}

//读取学生信息表,课程信息表,选课信息表
void init(Student slist[], int *Scount, Course clist[], int *Ccount, Select sclist[], int *SCcount) 
{  
    FILE *file;
    char buffer[100];>👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “成绩” 获取。👈👈👈

    int count;

    // 读取学生信息表
    if ((file = fopen("slist.txt", "r")) == NULL) {
        printf("无法打开学生信息文件\n");
        exit(1);
    }
    count = 0;
    while (fgets(buffer, sizeof(buffer), file)) {
        sscanf(buffer, "%[^,],%[^,],%[^,],%d", slist[count].xh, slist[count].xm, slist[count].xb, &slist[count].nl);
        count++;
    }
    fclose(file);
    *Scount = count;

    // 读取课程信息表
    if ((file = fopen("clist.txt", "r")) == NULL) {
        printf("无法打开课程信息文件\n");
        exit(1);
    }
    count = 0;
    while (fgets(buffer, sizeof(buffer), file)) {
        sscanf(buffer, "%[^,],%[^,],%f", clist[count].kh, clist[count].km, &clist[count].xf);
        count++;
    }
    fclose(file);
    *Ccount = count;

    // 读取选课信息表
    if ((file = fopen("sclist.txt", "r")) == NULL) {
        printf("无法打开选课信息文件\n");
        exit(1);
    }
    count = 0;>👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “成绩” 获取。👈👈👈

    while (fgets(buffer, sizeof(buffer), file)) {
        sscanf(buffer, "%[^,],%[^,],%f", sclist[count].xh, sclist[count].kh, &sclist[count].cj);
        count++;
    }
    fclose(file);
    *SCcount = count;

    printf("读取学生信息表,课程信息表,选课信息表\n");>👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “成绩” 获取。👈👈👈

    system("pause");
}

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “成绩” 获取。👈👈👈


3. 运行结果

主菜单

在这里插入图片描述
修改学生名单

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “成绩” 获取。👈👈👈

修改课程信息
在这里插入图片描述
修改课程信息

在这里插入图片描述
显示学生信息

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “成绩” 获取。👈👈👈

在这里插入图片描述
显示课程信息
在这里插入图片描述
显示成绩单

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “成绩” 获取。👈👈👈

在这里插入图片描述

查询学生信息
在这里插入图片描述

查询课程信息

在这里插入图片描述

查询成绩信息

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “成绩” 获取。👈👈👈

在这里插入图片描述
删除学生信息

在这里插入图片描述
删除课程信息
在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “成绩” 获取。👈👈👈

删除选修信息
在这里插入图片描述

保存到文件
在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “成绩” 获取。👈👈👈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/643019.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

体检系统商业源码,C/S架构的医院体检系统源码,大型健康体检中心管理系统源码

体检系统商业源码&#xff0c;C/S架构的医院体检系统源码&#xff0c;大型健康体检中心管理系统源码 体检信息管理系统软件是对医院体检中心进行系统化和规范化的管理。系统从检前&#xff0c;检中&#xff0c;检后整个业务流程提供标准化以及精细化的解决方案。实现体检业务市…

I.MX6ULL的官方 SDK 移植实验

系列文章目录 I.MX6ULL的官方 SDK 移植实验 I.MX6ULL的官方 SDK 移植实验 系列文章目录一、前言二、I.MX6ULL 官方 SDK 包简介三、硬件原理图四、试验程序编写4.1 SDK 文件移植4.2 创建 cc.h 文件4.3 编写实验代码 五、编译下载验证5.1编写 Makefile 和链接脚本5.2编译下载 一、…

Rolla‘s homework:Image Processing with Python Final Project

对比学习Yolo 和 faster rcnn 两种目标检测 要求 Image Processing with Python Final Project Derek TanLoad several useful packages that are used in this notebook:Image Processing with Python Final Project Project Goals: • Gain an understanding of the object …

【vue-5】双向数据绑定v-model及修饰符

单向数据绑定&#xff1a;当数据发生改变时&#xff0c;视图会自动更新&#xff0c;但当用户手动更改input的值&#xff0c;数据不会自动更新&#xff1b; 双向数据绑定&#xff1a;当数据发生改变时&#xff0c;视图会自动更新&#xff0c;但当用户手动更改input的值&#xf…

【深度学习】yolov8 seg实例分割训练,交通灯

文章目录 一、类别定义二、标注后再清洗数据三、训练yolov8 seg四、部署五、代码资料 一、类别定义 类别0&#xff1a; 类别1&#xff1a; 类别2&#xff1a; 类别3&#xff1a; 类别4&#xff1a; 类别5&#xff1a; 类别6&#xff1a; 类别7&#xff1a; 二、标注后再清洗…

【Linux】TCP协议【上】{协议段属性:源端口号/目的端口号/序号/确认序号/窗口大小/紧急指针/标记位}

文章目录 1.引入2.协议段格式4位首部长度16位窗口大小32位序号思考三个问题【demo】标记位URG: 紧急指针是否有效提升某报文被处理优先级【0表示不设置1表示设置】ACK: 确认号是否有效PSH: 提示接收端应用程序立刻从TCP缓冲区把数据读走RST: 对方要求重新建立连接; 我们把携带R…

Go 1.23 Release Notes编写方式改进!

2024.5.22日&#xff0c;Go 1.23 feature冻结&#xff01;Go团队开始Go 1.23rc1的冲刺&#xff0c;截至发文时&#xff0c;Go 1.23 milestone已经完成59%(https://github.com/golang/go/milestone/212)&#xff0c;还有188个open的issue待解决。 Go 1.23有哪些新feature&#x…

前后端开发入门全攻略:零基础学起

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、前后端开发概览 二、后端开发基础&#xff1a;Flask框架入门 代码案例&#xff1a;Hel…

Pytorch-01 框架简介

智能框架概述 人工智能框架是一种软件工具&#xff0c;用于帮助开发人员构建和训练人工智能模型。这些框架提供了各种功能&#xff0c;如定义神经网络结构、优化算法、自动求导等&#xff0c;使得开发人员可以更轻松地实现各种人工智能任务。通过使用人工智能框架&#xff0c;…

域内攻击 ----->约束非约束委派攻击

在域中&#xff0c;除了我们常见的横向移动以外&#xff0c;还有很多攻击&#xff0c;像什么kerberoasting&#xff0c;委派攻击&#xff0c;NTLMrelay啊...... 还有很多&#xff08;暂时只知道这些&#xff09; 以前在一篇公众号看到的一个笑话也荟萃了网安的一些攻击手法&am…

vue17:v-bind对css样式的控制增强

代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><styl…

Kafka(十三)监控与告警

目录 Kafka监控与告警1 解决方案1.2 基础知识JMX监控指标代理查看KafkaJMX远程端口 1.3 真实案例Kafka Exporter:PromethusPromethus Alert ManagerGrafana 1.3 实际操作部署监控和告警系统1.2.1 部署Kafka Exporter1.2.2 部署Prometheus1.2.3 部署AlertManger1.2.4 添加告警规…

缓存IO与直接IO

IO类型 缓存 I/O 缓存 I/O 又被称作标准 I/O&#xff0c;大多数文件系统的默认 I/O 操作都是缓存 I/O。在 Linux 的缓存 I/O 机制中&#xff0c;数据先从磁盘复制到内核空间的缓冲区&#xff0c;然后从内核空间缓冲区复制到应用程序的地址空间&#xff08;用户空间&#xff0…

java基础-JVM日志、参数、内存结构、垃圾回收器

一、基础基础 1.1 数据类型 Java的数据类型分为原始数据类型和引用数据类型。 原始数据类型又分为数字型和布尔型。 数字型又有byte、short、int、long、char、float、double。注意&#xff0c;在这里char被定义为整数型&#xff0c;并且在规范中明确定义&#xff1a;byte、…

阿里云的域名购买和备案(一)

前言 本篇文章主要讲阿里云的域名购买和备案。 大家好&#xff0c;我是小荣&#xff0c;我又开始做自己的产品迷途dev了。这里详细记录一下域名购买的流程和备案流程。视频教学 购买流程 1.阿里云官网搜索域名注册 2.搜索你想注册的域名 3.将想要注册的域名加入域名清单 4.点…

Java+原生HTML+ WebSocket+MySQL云HIS信息管理系统源码 支持一体化电子病历四级

Java原生HTML WebSocketMySQL云HIS信息管理系统源码 支持一体化电子病历四级 云HIS电子病历系统是一种基于云计算技术的医疗信息管理系统&#xff0c;旨在实现医疗信息的数字化、标准化和共享化。该系统通过云计算平台&#xff0c;将医院内部的各个业务模块&#xff08;如门诊、…

Spring系列-03-BeanFactory和Application接口和相关实现

BeanFactory BeanFactory和它的子接口们 BeanFactory 接口的所有子接口, 如下图 BeanFactory(根容器)-掌握 BeanFactory是根容器 The root interface for accessing a Spring bean container. This is the basic client view of a bean container; further interfaces such …

【深度学习实战—7】:基于Pytorch的多标签图像分类-Fashion-Product-Images

✨博客主页&#xff1a;王乐予&#x1f388; ✨年轻人要&#xff1a;Living for the moment&#xff08;活在当下&#xff09;&#xff01;&#x1f4aa; &#x1f3c6;推荐专栏&#xff1a;【图像处理】【千锤百炼Python】【深度学习】【排序算法】 目录 &#x1f63a;一、数据…

提示优化 | PhaseEvo:面向大型语言模型的统一上下文提示优化

【摘要】为大型语言模型 (LLM) 制作理想的提示是一项具有挑战性的任务&#xff0c;需要大量资源和专家的人力投入。现有的工作将提示教学和情境学习示例的优化视为不同的问题&#xff0c;导致提示性能不佳。本研究通过建立统一的上下文提示优化框架来解决这一限制&#xff0c;旨…

【讲解下PDM,PDM是什么?】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…