/* * 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; }
原文地址:http://blog.csdn.net/u012369134/article/details/30506901