第16周项目2-用文件保存学生名单
2016-06-23 09:16
429 查看
/* *Copyright(C) 2016,计算机与控制工程学院 *All rights reserved. *文件名:test.cpp *作者:张志新 *完成日期:2016年6月23日 *版本号:v1.0 * *问题描述:用文件保存学生名单 */ #include <fstream> #include<iostream> #include<string> #include<cstdlib> using namespace std; class Student { public: Student() {}; ~Student(); double get_total(); static int get_stu_num(); static double get_total_sum(); friend istream& operator>>(istream &in, Student &s);//重载 friend ostream& operator<<(ostream &out, 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_stu_num() { return stu_num; } double Student::get_total_sum() { return total_sum; } istream& operator>>(istream &in, Student &s) { cin>>s.name>>s.cpp>>s.math>>s.english; s.total=s.cpp+s.math+s.english; Student::stu_num++; Student::total_sum+=s.total; return in; } ostream &operator<<(ostream &out, Student &s) { out<<s.name<<"\t"; out<<s.cpp<<"\t"; out<<s.math<<"\t"; out<<s.english<<"\t"; out<<s.total; return out; } bool Student::pass() { return cpp>=60 && math>=60 && english>=60; } int main() { Student stud[200],t; string sname; double total_avg; int i=0; ifstream infile("score.dat",ios::in); if(!infile)//文件打开不成功 { cerr<<"open error!"<<endl; exit(1); } while(!infile.eof()) { infile>>stud[i++]; } infile.close();//关闭文件 if(Student::get_stu_num()>0) { total_avg = Student::get_total_sum() / Student::get_stu_num(); ofstream outfile("pass_score.dat",ios::out); if(!outfile) { cerr<<"open error!"<<endl; exit(1); } for(i=0; i<Student::get_stu_num(); i++) { if(stud[i].get_total()>total_avg&&stud[i].pass()) { outfile<<stud[i]<<endl; } } outfile.close(); cout<<"请到文件pass_score.dat中查看名单:"<<endl; } return 0; }
相关文章推荐
- 使用Redis的INCR、Hsetnx、Hincrby的命令生成序列号
- 2015年Java开发岗位面试题归类
- LeetCode OJ 289. Game of Life
- 阅读笔记《梦断代码》其三
- Problem E
- Jedis(Java操作Redis)入门学习总结
- PHP生成静态HTML文档实现代码
- 第十六周--阅读程序
- C++感悟
- 阅读笔记《梦断代码》其二
- Acache 学习笔记
- C#ArrayList
- C++学习体会
- 填空程序
- jsp输出当前时间的实现代码
- 一排石头的游戏(续)
- Scala写排序可以说是简洁又明了
- 保证图书馆借书不过期
- 阅读笔记《梦断代码》其一
- 第13周项目训练1.2 阅读程序