成绩管理系统
系列文章
任务28 成绩管理系统
文章目录
- 系列文章
- 一、实践目的与要求
- 1、目的
- 2、要求
- 二、课题任务
- 三、总体设计
- 1.存储结构及数据类型定义
- 2.程序结构
- 3.所实现的功能函数
- 4、程序流程图
- 四、小组成员及分工
- 五、 测试
- 读入数据
- 浏览全部信息
- 增加学生信息
- 保存数据
- 删除学生信息
- 修改学生信息
- 按姓名查询
- 按学号查询
- 成绩统计
- 排序
- 退出
- 六、源代码获取
一、实践目的与要求
1、目的
通过此次实践环节主要达到以下目的:
(1)进一步理解和运用结构化程序设计的思想和方法,学会根据具体问题选择合理的计算机存储结构实现数据的存储,构造较有效率的算法;
(2)学会算法描述的方法,并编制具有结构清晰、合理和易读性的小型实用程序;
(3)并会设计测试方案,完成程序的测试,能撰写出该程序的技术报告,为文档整理工作打下一个初步的基础;
(4)培养小组成员间互相学习,取长补短,协同工作的能力。
2、要求
(1)模块化程序设计,锯齿型书写格式,代码要有足够的注释;
(2)根据课题中规定的要求实现既定目标;
(3)撰写格式排版规范、结构完整的技术文档。
二、课题任务
(题目、内容及主要功能描述)
成绩管理系统
1)问题描述
现有学生成绩信息,内容如下:
姓名 学号 语文 数学 英语
张明明 01 67 78 82
李成友 02 78 91 88
张辉灿 03 68 82 56
王露 04 56 45 77
陈东明 05 67 38 47
编写一系统,实现学生信息管理。
2) 基本要求
功能要求:
(1)信息维护:
要求:学生信息数据要以文件的形式保存,能实现学生信息数据的维护。此模块包括子模块有:增加学生信息、删除学生信息(按学号)、修改学生信息(按学号)
(2)信息查询:
要求:查询时可实现按姓名查询、按学号查询、浏览全部信息
(3)成绩统计:
要求:A输入任意的一个课程名(如数学)和一个分数段(如60–70),统计出在此分数段的学生情况。
(4)排序:能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果(使用表格的形式显示排序后的输出结果)(使用多种方法排序者,加分)
三、总体设计
1.存储结构及数据类型定义
(采用了什么存储结构、被处理数据定义的数据类型,数据类型定义中要有注释说明)
#define MAXLEN 1000 // 名称和学号的最大长度
#define MAXNUM 1000 // 学生人数的最大值
#define MAXCOURSE 3 // 课程数量的最大值typedef struct {char name[MAXLEN];char id[MAXLEN];double score[MAXCOURSE];
} student; // 学生结构体,包含姓名、学号、成绩等信息
2.程序结构
(程序整体的模块结构图)
3.所实现的功能函数
(每个功能对应的函数名、函数形参及返回值说明)
void read_data(student data[], int* count);// 从文件中读入数据 函数名称是read_data 函数形参是student data[], int* count 函数返回值是void
void save_data(student* data, int count);// 将数据保存到文件中 函数名称是save_data 函数形参是student* data, int count 函数返回值是void
int add_student(student data[], int count);// 添加学生信息 函数名称是add_student 函数形参是student data[], int count 函数返回值是int
int delete_student(student data[], int count);// 删除学生信息 函数名称是delete_student 函数形参是student data[], int count 函数返回值是int
int modify_student(student data[], int count);// 修改学生信息 函数名称是modify_student 函数形参是student data[], int count 函数返回值是int
void print_student(student s);// 打印单个学生信息 函数名称是print_student 函数形参是student s函数返回值是void
void print_all_students(student data[], int count);// 浏览全部学生信息 函数名称是print_all_students 函数形参是student data[], int count 函数返回值是void
void search_by_name(student data[], int count);// 按姓名查询 函数名称是search_by_name 函数形参是student data[], int count 函数返回值是void
void search_by_id(student data[], int count);// 按学号查询 函数名称是 search_by_id 函数形参是student data[], int count 函数返回值是void
void search_all(student data[], int count);// 浏览全部学生信息 函数名称是search_all 函数形参是student data[], int count 函数返回值是void
void stat_by_score(student data[], int count);// 成绩统计 函数名称是stat_by_score 函数形参是student data[], int count 函数返回值是void
int cmp_score_asc(const void* a, const void* b);// 成绩升序排列的比较函数 函数名称是cmp_score_asc 函数形参是const void* a, const void* b 函数返回值是int
int cmp_score_desc(const void* a, const void* b);// 成绩降序排列的比较函数 函数名称是cmp_score_desc 函数形参是const void* a, const void* b 函数返回值是int
4、程序流程图
四、小组成员及分工
(组长、组员及每人承担的具体模块任务或其他)
组长:完成显示菜单、读取文件中的学生成绩信息到students数组、把学生信息写入文件
统计学生成绩并排名模块。
void read_data(student data[], int* count);// 从文件中读入数据
void save_data(student* data, int count);// 将数据保存到文件中
int add_student(student data[], int count);// 添加学生信息
int delete_student(student data[], int count);// 删除学生信息
int modify_student(student data[], int count);// 修改学生信息
组员1:完成添加学生信息、删除学生信息、根据学生学号查找学生模块
void print_student(student s);// 打印单个学生信息
void print_all_students(student data[], int count);// 浏览全部学生信息
void search_by_name(student data[], int count);// 按姓名查询
void search_by_id(student data[], int count);// 按学号查询
组员2:完成修改学生补考成绩、修改学生信息(姓名或成绩)、显示所有学生信息模块
void search_all(student data[], int count);// 浏览全部学生信息
void stat_by_score(student data[], int count);// 成绩统计
int cmp_score_asc(const void* a, const void* b);// 成绩升序排列的比较函数
int cmp_score_desc(const void* a, const void* b);// 成绩降序排列的比较函数
五、 测试
(整合各功能模块后的测试结果截图及说明)
读入数据
浏览全部信息
增加学生信息
保存数据
删除学生信息
修改学生信息
按姓名查询
按学号查询
成绩统计
排序
退出
六、源代码获取
本次的分享就到这里啦,创作不易,感谢点赞收藏👍
感兴趣的小伙伴可以在评论区留言或者私信我哦💕
提示:代码获取链接:
下载源码
相关文章:

成绩管理系统
系列文章 任务28 成绩管理系统 文章目录 系列文章一、实践目的与要求1、目的2、要求 二、课题任务三、总体设计1.存储结构及数据类型定义2.程序结构3.所实现的功能函数4、程序流程图 四、小组成员及分工五、 测试读入数据浏览全部信息增加学生信息保存数据删除学生信息修改学生…...

【MYSQL】事务的4大属性,对隔离级别的详细讲解
目录 1.原子性和持久性 1.1.手动提交事务 1.2.自动提交事务 1.3.事务的原理: 2.隔离性 1.读未提交(Read Uncommitted) 2.读提交(Read Committed) 3.可重复读 4.串行化 3.一致性 4.理解读提交和可重复读的实现…...

如何在宝塔面板后的阿里云服务器运行Flask项目并公网可以访问?
在你的服务器安装宝塔面板 宝塔面板是服务器运维管理系统 使用宝塔前: 手工输入命令安装各类软件,操作起来费时费力并且容易出错,而且需要记住很多Linux的命令,非常复杂。 使用宝塔后: 2分钟装好面板,一键…...
HTTP(九)-- response对象 -- 向页面响应数据
目录 1. 服务器输出字符数据到浏览器 1.1 获取字符输出流 1.2 实例演示:...

音视频windows安装ffmpeg6.0并使用vs调试源码笔记
建立在上一步,vs已经能够正常调试qt项目,可以实现: 1:qt可以使用mvsc (使用cdb)进行调试。 2:vs已经可以加载qt项目,借助vs进行调试。 本文目标:编译ffmpeg库…...

Midjourney|文心一格prompt教程[进阶篇]:Midjourney Prompt 高级参数、各版本差异、官方提供常见问题
Midjourney|文心一格prompt教程[进阶篇]:Midjourney Prompt 高级参数、各版本差异、官方提供常见问题 1.Midjourney Prompt 高级参数 Quality 图片质量是另一个我比较常用的属性,首先需要注意这个参数并不影响分辨率,并不改变分辨率&#x…...
什么是Java虚拟机(JVM)?
Java虚拟机(Java Virtual Machine,JVM)是Java平台的关键组成部分之一。它是一种虚拟的计算机,可以在计算机上运行Java字节码(即编译后的Java程序)。 JVM具有以下主要功能: 字节码执行ÿ…...
【HISI IC萌新虚拟项目】Package Process Unit模块整体方案·PART3
5. 模块方案说明 5.1CRG 模块方案说明 5.1.1简介 CRG 模块实现复位信号的滤抖功能,可滤除小于100ns的低电平复位毛刺,并对复位信号进行同步化处理。同时,对100MHz的输入时钟信号进行2分频,作为 CPU_IF模块和TEST_CORE模块的工作时钟。 5.1.2接口信号 信号位宽I/O描述...

分布式事务常见解决方案
分布式事务常见解决方案 一、事务介绍 事务是一系列的动作,它们综合在一起才是一个完的工作单元,这些动作必须全部完成,如果有一个失败的话,那么事务就会回滚到最开始的状态,仿佛什么都没发生过一样。 1、单事务概念…...

061:cesium设置棋盘图材质(material-5)
第061个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中设置棋盘材质,请参考源代码,了解CheckerboardMaterialProperty的应用。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共89行)相关API参考:专栏目标…...

【AI Earth试玩】权限配置与openAPI调用工具库
前言 AI earth是阿里达摩院出的遥感云计算平台,我简单体验下来感觉像是GEE的python版本遥感深度学习计算平台,整体体验还是挺不错的,尤其是多分类的结果还是挺惊艳的。 平台提供工具箱和notebook两种模式,工具箱整个交互简单易用…...

Tomcat安装与使用
Tomcat 是HTTP服务器,用于使用HTTP协议。 1、下载Tomcat 下载链接:https://tomcat.apache.org/ 进入官网后,根据自己想要下载的版本进行下载,我这里选择下载的版本是Tomcat 8. 点击选择自己想要下载的对应版本,下载Z…...
大数据课程-学习二十四周总结
6.Hive函数 Hive的函数分为三类: 聚合函数、内置函数,表生成函数,聚合函数之前已经学习过了,接下来学习内置函数和表生成函数. 6.1.Hive的内置函数 6.1.1.数学函数 6.1.1.1. 取整函数: round 语法: round(double a) 返回值: BIG…...

【GPT科技系列】国内开发者调用openAI-API科技方法
1. 前言 openAI上线7个月了,但是随着openAI的约束越来越多,国内开发者想要使用openai的接口实现开发简直就是难上加难。那真的就没有办法了吗?no no no,CF解决一切不开心~ 2.准备工作 我们需要一个国际域名 注册cloudflare账号 …...

基于QGIS的长株潭城市群边界范围融合实战
背景 在面向区域的研究过程中,比如一些研究区域,如果是具体的行政区划,比如具体的某省或者某市或者县,可以直接从国家官方的地理数据中直接下载就可以。但如果并没有直接的空间数据那怎么办呢?比如之前遇到的一个场景&…...

【MySQL联合查询】轻松实现数据关联
1、联合查询 联合查询又称为多表查询,它的基本执行过程就是笛卡尔积 1.1 认识笛卡尔积 那么什么是笛卡尔积呢? 答:笛卡尔积就是将两张表放在一起进行计算,把第一张表的每一行分别取出来和第二张表的每一行进行连接,得到…...

Windows安装Ubuntu双系统
Windows安装Ubuntu双系统 1.下载Ubuntu 16.04,地址https://releases.ubuntu.com/16.04/ 2.下载Rufus,地址https://rufus.ie/zh/ 3.准备U盘,烧录系统 4.磁盘分区 5.重启,按住shift键 本人电脑是联想小新 Windows11系统࿰…...
【大数据之Hadoop】三十四、Hadoop综合调优之小文件优化方法
1 Hadoop小文件弊端 HDFS上每个文件都要在NameNode上创建对应的元数据,这个元数据的大小约为150byte,这样当小文件比较多的时候,就会产生很多的元数据文件,一方面会大量占用NameNode的内存空间,另一方面就是元数据文件…...

周赛 Round#3 题解
又不能放图片,又不能写学校,你让我怎么办啊!! 系列文章目录 1.周赛 Round#1 2.周赛 Round#2 前言 这是周赛第三轮。//涉及隐私原因,博文里不放题目,要看的去http://0241:101:610:801.22222 划分字符串贪…...

详解HTTPS加密过程
目录 前言 HTTPS是什么 HTTPS的工作过程 引入对称加密 引入非对称加密 引入证书 总结 前言 对于HTTP上篇文章已经做了详细的解释了。众所周知,HTTPS要比HTTP要安全,但是为什么HTTPS要比HTTP安全呢? 这篇文章主要研究HTTPS的加密机制…...

【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...

DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...

如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...