系列文章
任务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
修改学生补考成绩
退出系统
六、源代码获取
本次的分享就到这里啦,创作不易,感谢点赞收藏👍
感兴趣的小伙伴可以在评论区留言或者私信我哦💕
提示:代码获取链接: