#include <fstream>
#include<iostream>
#include<string>
#include<cstdlib>
using namespace std;
//定义学生类
class Student
{
public:
bool pass ();
Student() {};
~Student();
double get_total();
static int getstu_num();
static double gettotal_sum();
friend istream& operator>>(istream &in, Student &s); //可以定义input函数替代
friend ostream& operator<<(ostream &out, Student &s); //可以定义display函数替代
//声明必要的成员函数
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;
int Student::getstu_num()
{
return stu_num;
}
Student::~Student()
{
total_sum-=total;
stu_num--;
}
double Student::get_total ()
{
return total;
}
double Student::gettotal_sum ()
{
return total_sum;
}
istream& operator>>(istream &input, Student &s)
{
input>>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 input;
}
ostream& operator << (ostream &output,Student&t)
{
output<<t.name<<" "<<t.cpp<<" "<<t.math<<t.english<<" "<<t.math+t.cpp+t.english;
return output;
}
bool Student::pass ()
{
return cpp>=60 && math>=60 && english>=60;
}
int main()
{
Student stu[100],t;
int i=0;
ifstream readFile("score.dat",ios::in);
if(!readFile)
{
cout<<"data error";
exit(1);
}
while(readFile>>stu[i])
{
i++;
}
readFile.close();
ofstream writeFile("scorepass.dat",ios::out);
if(!writeFile)
{
cout<<"data error";
exit (1);
}
for (int i=0;i<Student::getstu_num();i++)
{
if(stu[i].pass())
{
writeFile<<stu[i]<<endl;
}
}
return 0;
}