【项目作业】学生成绩排名报告生成器
项目作业 118
等2人参与
来源: 第7周 / 文件操作原理与实战

实践描述:
亲爱的慕友们,指亲爱的同学们,在第四周的学习中,我们掌握了结构体、文件操作等实用技能,能够处理更贴近实际开发的数据任务。现在,让我们综合运用这些知识,完成一个小型“成绩报告生成系统”吧!,展示一下自己的编程实力吧!

题目:
假设当前目录下有一个名为 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分】

  1. 文件名为 main.c,结构体与变量命名规范;
  2. 代码模块清晰,函数职责单一;
  3. 关键步骤(如文件操作、排序)有注释。

二、程序整体运行效果 【20分】

  1. 能正确生成 report.txt;
  2. 输出内容与预计结果格式完全一致(包括标点、空格、字段顺序)。

三、定义函数 【25分】

  1. 自定义 sortStudents 函数;
  2. 函数按总分降序排序;
  3. 排序逻辑正确,支持多学生。

四、文件操作正确性 【20分】

  1. 能正确读取 scores.txt 并解析各字段;
  2. 能创建/覆盖 report.txt;
  3. 包含 fopen 失败的错误处理(如输出提示并退出)。

五、数据处理与边界 【20分】

  1. 正确计算总分;
  2. 能处理少于 3 人的情况(如只输出 2 行);
  3. 姓名不含空格假设合理,解析无误。
项目作业上传说明
第1步:上传你的作业压缩包
第2步:等待讲师一对一批复
第3步:查看讲师点评
上传作业

登录后查看更多作业,立即

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师