第十四周项目2——【项目2-用文件保存的学生名单】
2015-06-13 13:42
363 查看
/* *Copyright (c) 2014,烟台大学计算机学院 *All rights reserved. *文件名称:main.cpp *作者:苏强 *完成日期:2015年6月13日 *版本号:v1.0 * *问题描述:文件score.dat中保存的是若干名学生的姓名和C++课、高数和英语成绩。 定义学生类,其中包含姓名、C++课、高数和英语成绩及总分数据成员。 用对象数组进行存储学生的成绩,读入成绩并计算总分;将总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中。 */ #include <iostream> #include <cstdlib> #include <fstream> using namespace std; class Student { public: Student() {} ~Student(); double get_total(); static int get_stunum(); static double get_totalsum(); friend istream &operator >>(istream &input,Student &s); friend ostream &operator<<(ostream&output,Student &S); bool pass(); 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; Student::~Student() { total_sum-=total; stu_num--; } double Student::get_total() { return total; } int Student::get_stunum() { return stu_num; } double Student::get_totalsum() { return total_sum; } istream &operator >>(istream &input,Student &s) { input>>s.name>>s.cpp>>s.math>>s.english; s.total=s.cpp+s.english+s.math; Student::stu_num++; Student::total_sum=s.total; return input; } ostream &operator<<(ostream&output,Student &s) { output<<s.name<<endl<<s.cpp<<endl<<s.math<<endl<<s.english<<endl<<s.total; return output; } bool Student::pass() { return cpp>59&&math>59&&english>59; } int main( ) { Student stud[200],t; //stud[200]为保存数据的对象数组 string sname; double total_avg; int i=0; //从文件score.dat中读入数据,保存到对象数组中 ifstream infile("score.dat",ios::in); if(!infile) { cerr<<"infile open error"<<endl; exit(1); } while(!infile.eof()) infile>>stud[i++]; infile.close(); //总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中 total_avg=Student::get_totalsum()/Student::get_stunum(); ofstream outfile("pass_score",ios::out); if(!outfile) { cerr<<"outfile oper error"<<endl; exit(1); } for(i=0;i<Student::get_totalsum();++i) { if(stud[i++].get_total()>total_avg&&stud[i].pass()) { outfile<<stud[i]<<endl; } } outfile.close(); cout<<"请到pass_score.dat查看名单"<<endl; return 0; }
类外调用函数要加 “类名::”
相关文章推荐
- Java 打开文件的两种方式
- Windows7在自由的虚拟机(微软官方虚拟机)
- jquery实现简单的自动播放幻灯片效果
- iPlayer项目开发
- C#Winform使用扩展方法自定义富文本框(RichTextBox)字体颜色
- 关于TI sysbios 的SWI
- opencl上下文
- spi驱动框架分析
- const修饰问题
- oracle union 注入工具
- HTML在Select具体的使用说明
- 屏蔽网站
- GridControl详解(五)设置行备注和行号
- oracle日期合并 分别用逗号或者分号隔开
- 【C语言】实现对一个8bit数据的指定位的置0或者置1操作,并保持其他位不变。
- Mybatis整合Spring
- [UnityShader]RenderingPath(一)
- 怎样给电脑添加一个IP
- GridControl详解(四)分组排序汇总
- 将Qt 动态链接生成的exe及依赖dll打包方法