首页 > 代码库 > 保存学生信息

保存学生信息

/** Copyright (c) 2013, 烟台大学计算机学院* All rights reserved.* 作    者:马广明* 完成日期:2014 年 6 月 10 日* 版 本 号:v1.0* 输入描述: 无* 问题描述:学生信息*/#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;}