#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
//定义学生类
class Student
{
public:
//声明必要的成员函数
friend istream &operator>>(istream &input,Student &t)
{
input>>t.name>>t.cpp>>t.math>>t.english;
stu_num++;
return input;
}
friend ostream &operator<<(ostream &output,Student &t)
{
output<<t.name<<" "<<t.cpp<<" "<<t.math<<" "<<t.english<<" "<<t.gettotal()<<endl;
return output;
}
double getcpp()
{
return cpp;
}
double getmath()
{
return math;
}
double getenglish()
{
return english;
}
double gettotal()
{
return (cpp+math+english);
}
double gettotal_sum()
{
for(int j=0;j<stu_num;j++)
{
total_sum+=gettotal();
}
return total_sum;
}
int getstu_num()
{
return stu_num;
}
int total_avg()
{
return gettotal_sum()/getstu_num();
}
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 main( )
{
Student stud[200]; //stud[200]为保存数据的对象数组
string sname;
int i=0;
//从文件score.dat中读入数据,保存到对象数组中
ifstream infile("score.txt",ios::in);
if(!infile)
{
cerr<<"open error!"<<endl;
exit(1);
}
while(infile>>stud[i])
{
i++;
}
infile.close();
//总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中
ofstream outfile("pass_score.txt",ios::out);
if(!outfile)
{
cerr<<"no file!"<<endl;
exit(1);
}
for(int j=0;j<i;j++)
{
if(stud[j].getcpp()>=60&&stud[j].getenglish()>=60&&stud[j].getmath()>=60&&(stud[j].gettotal_sum()>stud[j].total_avg()))
{
outfile<<stud[j];
}
}
outfile.close();
return 0;
}
十五周——文件中储存学生信息
最新推荐文章于 2024-01-17 19:46:37 发布