如何用C++从文件读取学生成绩再求出平均成绩送回文件中

楼主今天心血来潮,第一次发帖,请多多包涵。

数据库第一个实验的目的和内容如下:
一、实验目的
熟练的使用C语言或C++编写程序
二、实验内容
(1)创建一个文本文件,含有若干班级的数据,要求其数据每个班级至少有50位同学,每位同学至少学习10门课程(要考虑各班级中的不同人数以及学习的课程门数不同)
(2) 写出函数求出某一位的平均成绩
(3)写出函数求出每一位的平均成绩
(4)使用文件输入数据,将运行结果送到文件中

其实读取文件数据和把数据送回文件考察的就是文件输入输出流对象的使用。
言归正传,首先说下实验思路。

(1)创建一个文本文件,含有若干班级的数据,要求其数据每个班级至少有50位同学,每位同学至少学习10门课程。因为考虑人数问题,这里只列举一个班的数据,一共54人,效果相同。文本文档f1,数据可以自己编辑,也可以找张班级成绩表,将数据从excel复制粘贴到f1这个文本文档中。

(2)创建一个二维数组来存储学生的各科成绩信息。这个二维数组的第一行其实是按照学号 姓名 十门学科名称。写出两个函数——函数average()求出某一位的平均成绩,函数all()求出每一位的平均成绩并打印。

(3)使用display()方法读入f1.txt内的学生成绩数据,再将得到的平均分用all()方法送到文件f1.txt中,考虑到如果送回原文件会导致原有数据被刷新,所以选择送到新的文件f2.txt中。而且创建输入输出流时候f2.txt文本文件会自动创建在f1.txt所在的相同目录中,不需要自己创建,非常方便。

(4)运行程序,观察输出结果,发现和期待结果一样。(这里有个注意点,你的班级人数如果为n.那你创建的数组大小要为n+2,因为有一行是学号 姓名 还有十门课的名称。)

附上源代码:

#include <iostream>
#include <string>
#include<fstream>
using namespace std;
#define MAX 56
class Student{
private:string num;string name;double subject[10];double total;double ave;
public:void display(Student s[]);void average(Student s[],int);void all(Student s[], int);
}
stu[MAX];void Student::display(Student s[]){cout<<"所有学生的成绩信息为:"<<endl;string a[56][12];ifstream infile("f1.txt",ios::in);if(!infile){cerr<<"Open Error!"<<endl;exit(1);}for(int i=0;i<56;i++){for(int j=0;j<12;j++){infile>>a[i][j];cout<<a[i][j]<<" ";}cout<<endl;}s[i].total = 0;for (i=1;i<56;i++){s[i].num=a[i][0];s[i].name=a[i][1];for(int j=2;j<12;j++){s[i].total +=atoi (a[i][j].c_str());s[i].ave=s[i].total/10;}       }}void Student::average(Student s[],int n){cout<<"请输入要查询平均成绩的学生学号:"<<endl;cin>>num;for (int i= 1; i < n; i++){if(s[i].num==num)cout<<s[i].name<<"的平均成绩为"<<s[i].ave<<endl;}}void Student::all(Student s[], int n){ofstream outfile("f2.txt",ios::out);if(!outfile){cerr<<"open error!"<<endl;exit(1);}cout<<"打印出所有同学的平均成绩"<<endl;for (int i = 1; i < n; i++){outfile<<s[i].name<<"的平均分为"<<s[i].ave<<endl;}outfile.close();}int main(){Student s;s.display(stu);s.average(stu,56);s.all(stu,55);return 0;}

完成一个程序主要还是拥有一个清晰的思路,多思考如何去实现这个功能,而不能盲目地开始去写,代码尽量简洁明了又功能全面,显得短小精悍。这个程序还有许多改进的空间,比如自动扩充数组容量,不论多少学生和成绩都可以,根据数据的个数而变化。

祸福无门,惟人自召;善恶之报,如影随身。

如何用C++从文件读取学生成绩再求出平均成绩送回文件中相关推荐

  1. c语言求三科平均成绩,C语言 4个人,姓名、学号三科成绩,求出平均成绩,按平均成绩由高到低 代码好多错误,不知道那错了,求解...

    满意答案 qiheqx 2015.05.08 采纳率:56%    等级:10 已帮助:268人 您好,这样的: //其实这些语法错误都很好检查的,真正难查的是逻辑错误 //编译不通过的时候多看一下窗 ...

  2. (C++题目)定义一个描述学生基本情况的类Student,数据成员包括姓名、学号、英语成绩和高数成绩;成员函数包括构造函数、析构函数、获取姓名、获取学号、求出平均成绩,以及显示各

    定义一个描述学生基本情况的类Student,数据成员包括姓名.学号.英语成绩和高数成绩:成员函数包括构造函数.析构函数.获取姓名.获取学号.求出平均成绩,以及显示各科成绩和平均成绩的显示函数.编写ma ...

  3. 【C语言】平均分的战争。有m个人的成绩存放在score数组中,请编写程序求出平均成绩并且罗列出低于平均分的分数。

    [问题描述] 平均分的战争.有m个人的成绩存放在score数组中,请编写程序求出平均成绩并且罗列出低于平均分的分数. [输入形式]输入共两行: 第一行成绩个数N,N<=20 第二行,N个以空格分 ...

  4. C语言:编程题(在某次比赛中,有10个评委给选手打分。现要求编程:1)输入一位选手的10个成绩;2)去掉一个最高分,一个最低分,求出平均成绩;3)输出该选手的平均成绩,保留一位小数。

    具体如下: 编程题(在某次比赛中,有10个评委给选手打分.现要求编程:1)输入一位选手的10个成绩:2)去掉一个最高分,一个最低分,求出平均成绩:3)输出该选手的平均成绩,保留一位小数.(17分) 基 ...

  5. 有一个班4个学生,5门课程①求第1门课程的平均分;②找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均成绩;③找出平均成绩在90分以上或全部课程成绩在85分以上的学生分别编3个函数实

    有一个班4个学生,5门课程. ①求第1门课程的平均分; ②找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均成绩; ③找出平均成绩在90分以上或全部课程成绩在85分以上的学生. 分别编 ...

  6. 五十道编程小题目 --- 50 有五个学生,每个学生有3门课的成绩,计算出平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件stud中java

    [程序50]  题目:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件"stud" ...

  7. 有2个学生,每个学生有3门课程的成绩,从键盘中输入学生数据(包括学号,姓名 3门课程成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中

    有2个学生,每个学生有3门课程的成绩,从键盘中输入学生数据(包括学号,姓名3门课程成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中 解题思路:看到要输入不同类型的数据,考虑 ...

  8. 【C语言】#文件操作#有5个学生,每个学生有3门课程的成绩,从键盘输入以上数据(包括学号、姓名、3门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中。

    题目: (1)有5个学生,每个学生有3门课程的成绩,从键盘输入以上数据(包括学号.姓名.3门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中. 设5名学生的学号.姓名和3 ...

  9. 三个学生四门课程,求出学生平均成绩和课程的平均成绩;n个学生每人m门课程,找出最高分学生,输出有一门成绩不合格的学生的各门成绩,计算每门成绩都在85分及以上的学生的人数(C)

    养成好习惯,点个赞 再走:有问题,欢迎私信.评论,我看到都会回复的 以下两个题目就是玩一下for循环语句和二维数组 文章目录 三个学生四门课程,求出学生平均成绩和课程的平均成绩 n个学生,每人m门课程 ...

最新文章

  1. 《这就是搜索引擎:核心技术详解》---读后感
  2. Python高级教程-生成器
  3. 腾讯微信是通过美国服务器传的吗,原来微信和QQ的文件是可以相互传输的!现在才知道,真是太可惜了...
  4. Node.Js从零开始搭建数据管理后台 (一)
  5. python获得用户输入的一个字符串(长度3)_python3 字符串属性(一)
  6. 图的长宽_华为P50 Pro渲染图曝光:单挖孔屏+超高屏占比
  7. 四因素三水平正交表_做论文要用正交表?我打包送给你
  8. Spring 依赖注入的实现
  9. Spring源码分析-从源码看BeanFactory和FactoryBean的区别
  10. CheckBoxList 赋值问题
  11. 添加ejs后页面空白解决办法
  12. 吴恩达:我的AI商业化方法论
  13. 一个有趣的例子,JS+CSS实现【兴趣是最好的老师】
  14. linux创建删除用户和用户组
  15. Fiddler使用过程中无法抓取https的解决方法
  16. 【Matlab印刷数字识别】OCR识别系统【含源码 438期】
  17. dns被劫持了怎么处理 5种方法教你处理
  18. SEO站群优化排名用哪里的服务器比较好
  19. C++ USN日志 相关的代码
  20. 简单说一下Flutter框架

热门文章

  1. java 上溯造型与下塑造型
  2. MyBatis框架generatorSqlmapCustom自动生成及下载方法
  3. java web filter 入口_springboot 通过@WebFilter(urlPatterns )配置Filter过滤路径
  4. java 内部类 加载_Java 内部类基础介绍
  5. php 12小时,使用php怎么将12小时制转换为24小时制
  6. 6年经验java笔试_不想搞Java了,6年经验去面试10分钟结束,现在Java面试为这么难...
  7. python程序按钮怎么创建_如何使用pygame创建按钮?
  8. python设计一个爱心_python画一个玫瑰和一个爱心
  9. Eclipse安装Egit插件,egit安装特别缓慢
  10. 在小程序中使用腾讯视频插件播放教程视频