实践描述:
亲爱的慕友们,指亲爱的同学们,在第四周的学习中,我们掌握了结构体、文件操作等实用技能,能够处理更贴近实际开发的数据任务。现在,让我们综合运用这些知识,完成一个小型“成绩报告生成系统”吧!,展示一下自己的编程实力吧!
题目:
假设当前目录下有一个名为 scores.txt 的文件,记录了若干学生的各科成绩。请你编写程序:
1、读取该文件中的学生数据(每行包含学号、姓名、语文、数学、英语成绩);
2、计算每位学生的总分;
3、按总分从高到低排序;
4、将排名前 3 的学生信息写入新文件 report.txt 中。
输入数据scores.txt 内容示例)::
1001 张三 85 90 78
1002 李四 92 88 85
1003 王五 78 82 80
预计结果(report.txt 内容):
排名: 1, 学号: 1002, 姓名: 李四, 总分: 265
排名: 2, 学号: 1001, 姓名: 张三, 总分: 253
排名: 3, 学号: 1003, 姓名: 王五, 总分: 240
任务要求:
一、开发语言与环境要求
1、语言版本:c语言
2、开发工具:Microsoft Visual Studio
二、程序整体要求
1、能正确解析 scores.txt;
2、输出 report.txt 格式严格匹配;
3、包含文件打开失败的错误处理;
4、提交 ScoreReporter.zip,含 main.c
三、详细设计
1、数据结构:
struct Student {
int id;
char name[20];
int chinese, math,
english,
total;
};
2、自定义函数要求:
void sortStudents(struct Student *s, int n):按 total 降序排序(冒泡或选择排序);
3、主函数逻辑:
以 “r” 模式打开 scores.txt,失败则输出错误并退出;
循环读取数据到 struct Student 数组(最多 50 人);
计算每个 total;
调用 sortStudents;
以 “w” 模式创建 report.txt,写入前 min(3, count) 行;
关闭文件。
一、项目规范 【15分】
- 文件名为 main.c,结构体与变量命名规范;
- 代码模块清晰,函数职责单一;
- 关键步骤(如文件操作、排序)有注释。
二、程序整体运行效果 【20分】
- 能正确生成 report.txt;
- 输出内容与预计结果格式完全一致(包括标点、空格、字段顺序)。
三、定义函数 【25分】
- 自定义 sortStudents 函数;
- 函数按总分降序排序;
- 排序逻辑正确,支持多学生。
四、文件操作正确性 【20分】
- 能正确读取 scores.txt 并解析各字段;
- 能创建/覆盖 report.txt;
- 包含 fopen 失败的错误处理(如输出提示并退出)。
五、数据处理与边界 【20分】
- 正确计算总分;
- 能处理少于 3 人的情况(如只输出 2 行);
- 姓名不含空格假设合理,解析无误。