15-3用文件保存的学生名单
来源:互联网 发布:淘宝宝贝标题测试 编辑:程序博客网 时间:2024/05/23 01:52
/** 作 者: 霍雨佳* 完成日期:2014 年6月3日* 版 本 号:v1.0* 问题描述:用文件保存的学生名单(文件score.dat中保存的是若干名学生的姓名和C++课、高数和英语成绩)* 样例输入:* 样例输出:* 问题分析:*(1)定义学生类,其中包含姓名、C++课、高数和英语成绩及总分数据成员,成员函数根据需要确定。*(2)用对象数组进行存储学生的成绩,读入成绩并计算总分;将总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中。*/#include<iostream>#include<cstdio> //支持freopen的头文件#include<cstdlib>#include<fstream>using namespace std;//定义学生类class Student{public: //声明必要的成员函数 double gettotal(); static double get_total_sum(); static int get_stu_num(); bool panduan(); friend ostream& operator <<(ostream& output,Student&t); //声明友元函数重载运算符“<<”函数 friend istream& operator >>(istream& output,Student&t);private: string name; double cpp; double math; double english; double total; static int stu_num; //学生人数,处理为类的静态成员合适,【静态成员函数不能被赋值】 static double total_sum; //学生总分和};int Student::stu_num = 0;double Student::total_sum = 0;double Student::gettotal(){ return total;}double Student::get_total_sum(){ return total_sum;}int Student::get_stu_num(){ return stu_num;}bool Student::panduan(){ if(cpp>=60&&math>=60&&english>=60&&total-total_sum>=0) return true; else return false;}istream& operator >>(istream& input,Student&t){ input>>t.name>>t.cpp>>t.math>>t.english; t.total=t.cpp+t.math+t.english; return input;}ostream& operator <<(ostream& output,Student&t) //声明友元函数重载运算符“<<”函数{ output<<t.name<<" "<<t.cpp<<" "<<t.math<<" "<<t.english<<" "<<t.total<<endl; return output;}int main( ){ Student stud[200],t; //stud[200]为保存数据的对象数组 string sname; double total_ave=0; int i=0; //从文件score.dat中读入数据,保存到对象数组中 freopen("score.dat","r",stdin); //以输入的方式打开文件 r=read freopen("pass_score.dat","w",stdout); //输出结果 w=write while(cin>>stud[i]) { i++; //从cin流读取数据 } for(int j=0; j<=i; j++) { total_ave=stud[j].gettotal()+total_ave; } total_ave=Student::get_total_sum()/Student::get_stu_num(); for(int h=0; h<=i; h++) { if(stud[h].panduan()==true) { cout<<stud[h]<<endl; } else {} } //总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中 fclose(stdin); fclose(stdout);//关闭文件。用完了必须关闭,否则会丢失数据 return 0;}
运行结果
经历艰难困苦,终于弄出来了啊,哎哎,其实还是有很多地方不是很懂,
如为什么要用友元函数重载运算符“<<”函数,求高手指点迷津~~~
。
0 0
- 15-3用文件保存的学生名单
- 用文件保存的学生名单
- 用文件保存的学生名单
- 用文件保存的学生名单
- 用文件保存的学生名单
- 用文件保存的学生名单
- 用文件保存的学生名单
- 用文件保存的学生名单
- 用文件保存的学生名单
- 用文件保存学生名单
- 15周【项目2-用文件保存的学生名单】
- 第15周 项目二 用文件保存的学生名单
- 项目2 - 用文件保存的学生名单
- 项目47-用文件保存的学生名单
- 第十六周--用文件保存的学生名单
- 第十六周--用文件保存的学生名单
- 项目-用文件保存的学生名单
- 14.2用文件保存学生名单
- Netcdf-F77 Fortran读写
- Matlab 读取一个文件夹下的文…
- matlab读取一个文件夹下的所有文件…
- 信息学习20
- 程序员值得人尊敬和学习,而码侬不是
- 15-3用文件保存的学生名单
- SQLServer 2008以上误操作数据库恢复方法——日志尾部备份
- IOS开发(50)之GCD的一些小应用
- java面向对象中抽象类的使用方法
- 对LESS的自我理解 和一些简单的LESS封装
- 关于sql server 2008评估过期的问题
- 信息学习21
- Tiled自己做的地图弄到游戏中的时候需要设置缩放比例,放大或者是缩小
- 成绩排名