学生成绩信息管理系统

news/2024/11/17 17:27:14/

系列文章

任务2 学生成绩信息管理系统


文章目录

  • 系列文章
  • 一、实践目的与要求
    • 1、目的
    • 2、要求
  • 二、课题任务
  • 三、总体设计
    • 1.存储结构及数据类型定义
    • 2.程序结构
    • 3.所实现的功能函数
    • 4、程序流程图
  • 四、小组成员及分工
  • 五、 测试
    • score.txt
    • bk.txt
    • 界面展示
    • 显示所有学生信息
    • 添加学生信息
    • 删除学生信息
    • 查找学生信息
    • 修改学生信息
    • 统计学生成绩并排名
    • result.dat
    • 修改学生补考成绩
    • 退出系统
  • 六、源代码获取


一、实践目的与要求

1、目的

通过此次实践环节主要达到以下目的:
(1)进一步理解和运用结构化程序设计的思想和方法,学会根据具体问题选择合理的计算机存储结构实现数据的存储,构造较有效率的算法;
(2)学会算法描述的方法,并编制具有结构清晰、合理和易读性的小型实用程序;
(3)并会设计测试方案,完成程序的测试,能撰写出该程序的技术报告,为文档整理工作打下一个初步的基础;
(4)培养小组成员间互相学习,取长补短,协同工作的能力。

2、要求

(1)模块化程序设计,锯齿型书写格式,代码要有足够的注释;
(2)根据课题中规定的要求实现既定目标;
(3)撰写格式排版规范、结构完整的技术文档。

二、课题任务

(题目、内容及主要功能描述)

学生成绩信息管理系统
某班级学生C语言第一次正考的成绩存于数据文件score.txt中,记录了学生学号、姓名和考试成绩,bk.txt文件中记录了补考学生的学号、姓名和补考成绩,编写程序实现以下要求:
(1)具有对学生成绩数据的的增、删(按学号)、查(按学号)、改(按学号)功能。
(2)对该班级按成绩降序排序并统计成绩平均分及每个分数段(90-100、80-90、70-80、60-70、60分以下)的人数,结果写入到result.dat中。
(3)再根据补考成绩修改原成绩,修改成绩后仍按成绩降序写在result.dat的后面。成绩修改原则:
①补考成绩大于等于60,原成绩以60分记;②补考成绩小于60,取两次成绩中最高值记。

三、总体设计

1.存储结构及数据类型定义

(采用了什么存储结构、被处理数据定义的数据类型,数据类型定义中要有注释说明)

typedef struct {int id; //学生学号char name[20];//学生姓名float score;//学生考试成绩
} Student; //学生结构体

2.程序结构

(程序整体的模块结构图)
在这里插入图片描述

3.所实现的功能函数

(每个功能对应的函数名、函数形参及返回值说明)

void show_menu(); //显示菜单 函数名称是 show_menu 函数形参是空 函数返回值是void
int read_students(char* file_name, Student students[]);// 读取文件中的学生成绩信息到students数组 函数名称是 read_students 函数形参是char* file_name, Student students[] 函数返回值是int 
void write_students(char* file_name, Student students[], int count);// 把学生信息写入文件 函数名称是 write_students 函数形参是char* file_name, Student students[], int count 函数返回值是void
void sort_and_output_result(char* result_file, Student students[], int count);// 统计学生成绩并排名 函数名称是 sort_and_output_result 函数形参是char* result_file, Student students[], int count 函数返回值是void
void add_student(Student students[], int* count);// 添加学生信息 函数名称是add_student 函数形参是Student students[], int* count 函数返回值是void
void delete_student(Student students[], int* count);// 删除学生信息 函数名称是 
delete_student 函数形参是Student students[], int* count 函数返回值是void
Student* find_student_by_id(Student students[], int count, int id);// 根据学生学号查找学生 函数名称是find_student_by_id函数形参是Student students[], int count, int id 函数返回值是Student*
void modify_student_score(Student students[], int count, char* file_name);// /修改学生补考成绩 函数名称是modify_student_score 函数形参是Student students[], int count, char* file_name 函数返回值是void
void modify_student_info(Student students[], int count);// 修改学生信息(姓名或成绩) 函数名称是modify_student_info 函数形参是Student students[], int count 函数返回值是void
void show_all_students(Student students[], int count);// 显示所有学生信息 函数名称是 
show_all_students 函数形参是Student students[], int count 函数返回值是void

4、程序流程图

在这里插入图片描述

四、小组成员及分工

(组长、组员及每人承担的具体模块任务或其他)
组长:完成显示菜单、读取文件中的学生成绩信息到students数组、把学生信息写入文件
统计学生成绩并排名模块。

void show_menu(); //显示菜单
int read_students(char* file_name, Student students[]);// 读取文件中的学生成绩信息到students数组
void write_students(char* file_name, Student students[], int count);// 把学生信息写入文件
void sort_and_output_result(char* result_file, Student students[], int count);// 统计学生成绩并排名

组员1:完成添加学生信息、删除学生信息、根据学生学号查找学生模块

void add_student(Student students[], int* count);// 添加学生信息
void delete_student(Student students[], int* count);// 删除学生信息
Student* find_student_by_id(Student students[], int count, int id);// 根据学生学号查找学生

组员2:完成修改学生补考成绩、修改学生信息(姓名或成绩)、显示所有学生信息模块

void modify_student_score(Student students[], int count, char* file_name);// 修改学生补考成绩
void modify_student_info(Student students[], int count);// 修改学生信息(姓名或成绩)
void show_all_students(Student students[], int count);// 显示所有学生信息

五、 测试

(整合各功能模块后的测试结果截图及说明)

score.txt

在这里插入图片描述

bk.txt

在这里插入图片描述

界面展示

在这里插入图片描述

显示所有学生信息

在这里插入图片描述

添加学生信息

在这里插入图片描述

删除学生信息

在这里插入图片描述

查找学生信息

在这里插入图片描述

修改学生信息

在这里插入图片描述

统计学生成绩并排名

在这里插入图片描述

result.dat

在这里插入图片描述

修改学生补考成绩

在这里插入图片描述

退出系统

在这里插入图片描述

六、源代码获取

本次的分享就到这里啦,创作不易,感谢点赞收藏👍
感兴趣的小伙伴可以在评论区留言或者私信我哦💕

提示:代码获取链接: 下载源码


http://www.ppmy.cn/news/76458.html

相关文章

pytorch:nn.ModuleList和nn.Sequential、list的用法以及区别

文章目录 在构建网络的时候,pytorch有一些基础概念很重要,比如nn.Module,nn.ModuleList,nn.Sequential,这些类我们称为为容器(containers),可参考containers。本文中我们主要学习nn.…

pytorch如何调用m1芯片的显卡进行深度模型训练

加速原理 苹果有自己的一套GPU实现API — Metal,而Pytorch此次的加速就是基于Metal,具体来说,使用苹果的Metal Performance Shaders(MPS)作为PyTorch的后端,可以实现加速GPU训练。MPS后端扩展了PyTorch框架…

【程序员必须避免的一些陷阱和错误】

对于程序员来说,有很多需要注意的事项,下面列举一些绝对不能踩的坑以及编写代码时需要特别注意的流程: 不要忽视边界条件:边界条件是指极端情况下的输入或输出。在编写程序时,应该注意考虑所有可能出现的情况&#xff…

遇到一个同事,喜欢查其他同事的BUG,然后截图发工作大群里,还喜欢甩锅,该怎么办?...

职场上都有哪些奇葩同事? 一位网友吐槽: 遇到一个同事,喜欢查同级别同事的bug,截图发工作群,甚至发大群里,还喜欢甩锅,该怎么办? 职场工贼,人人喊打,网友们纷…

GitLab服务器搭建

文章目录 前述方式一:非容器安装搭建GitLab服务器查看gitlab用户的初始密码:修改初始密码gitlab配置文件修改服务的端口号启动并访问服务 方式二:容器下安装基于Docker安装Docker在容器中安装gitlab服务宿主机配置修改容器配置修改启动并访问…

新星计划 uni-app 学习2

uni-app 学习资料:uni-app官网 教程地址:uni-app官网 官方给的很多视频地址,省的自己找。 前一阵子在apicloud群里吃瓜,该平台不再指出svn管理项目,集中到开发的ide里设置git,还有一个用友割韭菜。看官网…

2023河海大学838计算机学硕考研高分经验分享

大家好,我是陪你考研每一天的大巴学长。 大巴学长为大家邀请到了2023年838计算机学硕初试第二名的高分学长,为大家分享一下他的考研经验,经验里详细介绍了各科的复习方法,很有参考意义。 希望对大家有所借鉴和帮助,在…

基于FPGA的车牌识别

基于FPGA进行车牌识别 基于FPGA进行车牌识别 1. 文件说明2. 程序移植说明3. 小小的编程感想 本项目的原理讲解视频已经上传到B站“基于FPGA进行车牌识别”。 本项目全部开源,见我本人的Github仓库“License-Plate-Recognition-FPGA”。 1. 文件说明 小技巧&…