第16周项目2--用文件保存学生的名单

来源:互联网 发布:mac电脑转换视频格式 编辑:程序博客网 时间:2024/05/21 22:43

代码:

/**Copyright (c) 2016, 烟台大学计算机与控制工程学院*All rights reserved.*文件名称:ycy.cpp;*作    者:岳成艳 2016年6月19号;*版 本 号:vc++6.0;**问题描述:用对象数组进行存储学生的成绩,读入成绩并计算总分;将总分高于平均总分且          没挂科的同学的信息保存到文件pass_score.dat中。  *程序输入:略;*程序输出:略;*/#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);  //可以定义input函数替代      friend ostream& operator<<(ostream &out, Student &s); //可以定义display函数替代      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)  {      in>>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; //stud[200]为保存数据的对象数组      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;  }  
运行测试;

张三 71 97 99 267

李四 89 99 67 255

王五 98 95 98 291

心得:

实践出真知。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 乐天玛特超市卡怎么办 乐天玛特的卡怎么办 乐天玛特倒闭 卡怎么办 公租房五年到期怎么办 超市的水杯坏了怎么办 玩天涯明月刀卡怎么办? 想开童装店没什么经验怎么办 孕后期鼻炎犯了怎么办 酷狗国外听不了怎么办 酷狗音乐换手机怎么办 有优势卵泡不排卵怎么办 卵泡30mm不破怎么办 成熟的卵泡不破怎么办 卵泡大了不破怎么办 卵泡突然不长了怎么办 想怀孕卵泡不长怎么办 吉吉影音下载慢怎么办 辞职后社保断了怎么办 2岁泡泡糖咽下去怎么办 我在拼多多开团怎么办 养了一条鱼死了怎么办 鱼缸的鱼尾巴烂怎么办 捡到玉佛吊坠该怎么办 晚上睡不踏实多梦易醒怎么办 红米3s蓝屏怎么办 吃饭没给钱跑了怎么办 刚出生的宝宝红屁屁怎么办 刚出生的宝宝红屁股怎么办 眼镜配高了25度怎么办 广州摇号中签后怎么办 深圳摇号中签后怎么办 皮肤被紫外线晒伤怎么办 脸被太阳晒过敏怎么办 星际2买了的怎么办 脸被风吹红了怎么办 天谕背包满了怎么办 剑灵没用的武器怎么办 人老实心太善良怎么办 雷蛇鼠标滚轮响怎么办 唱歌唱的嗓子疼怎么办 额头又高又凸怎么办