第十六周 任务二

来源:互联网 发布:ubuntu安装openjdk1.7 编辑:程序博客网 时间:2024/06/11 01:25
/** 程序头部注释开始  * 程序的版权和版本声明部分  * Copyright (c) 2011, 烟台大学计算机学院学生  * All rights reserved.  * 文件名称:学生成绩排序                              * 作    者:薛广晨                              * 完成日期:2011  年 06 月  02  日  * 版 本号:x1.0             * 对任务及求解方法的描述部分  * 输入描述:文件score.dat * 问题描述:文件score.dat 中保存的是100 名学生的姓名和C++课、高数和英语成绩。          (1)定义学生类,其中包含姓名、C++课、高数和英语成绩及总分、均分数据成员,成员函数根据需要确定。          (2)读入这名学生的成绩,用对象数组进行存储。          (3)求出各科和总分的最高分。          (4)请按总分的降序(高成绩在前,低成绩在后)排序          (5)在屏幕上显示各科及总分的最高分,排序后的成绩单(包括总分)保存到文件odered_score.dat中。* 程序输出:odered_score.dat  * 程序头部的注释结束*/#include <fstream>#include<iomanip>#include <string>#include<iostream>using namespace std;class Student{private:string name;double cgrade;double mathgrade;double englishgrade;double score;double average;public:Student();Student(string name, double cgrade, double mathgrade, double englishgrade, double score, double average);void set_name(string name);      void set_cgrade(double cgrade);      void set_mathgrade(double mathgrade);      void set_englishgrade(double englishgrade);      void set_score(double score);      void set_average(double average);      string get_name();      double get_cgrade();      double get_mathgrade();      double get_englishgrade();      double get_score();      double get_average();    friend void high_grade(Student  s[]);    friend void scoregrade(Student  s[]);      friend void averagegrade(Student  s[]);   friend void bubble_sort(Student  s[]);//排序;};void cin_grade(Student  s[]);//从文件得到数据;void cout_grade(Student  s[]);//储存数据;int main( ){        Student s1[100],s2;       cin_grade(s1);//读入100人的原始分数         scoregrade(s1);      averagegrade(s1);     high_grade(s1);    bubble_sort(s1);      cout_grade(s1);      cout<<endl;      system("PAUSE");        return 0;    }  Student::Student(){this->name = "NULL";this->cgrade = 0;this->mathgrade = 0;this->englishgrade = 0;this->score = 0;this->average = 0;}Student::Student(string name, double cgrade, double mathgrade, double englishgrade, double score, double average){this->name = name;this->cgrade = cgrade;this->mathgrade = mathgrade;this->englishgrade = englishgrade;this->score = score;this->average = average;}void cin_grade(Student  s[]){int i;    string name;double cgrade;double mathgrade;double englishgrade;       ifstream infile("score.dat",ios::in);    if(!infile){cerr<<"open error!"<<endl;       exit(1);}    for(i=0;i<100;i++){infile >> name >> cgrade >> mathgrade >> englishgrade;       s[i].set_name(name);    s[i].set_cgrade(cgrade);s[i].set_mathgrade(mathgrade);s[i].set_englishgrade(englishgrade);}    infile.close();    cout<<endl;}void cout_grade(Student  s[]){int i;    ofstream outfile("odered_score.dat",ios::out);    if(!outfile){cerr<<"open error!"<<endl;       exit(1);}outfile << setiosflags(ios::left) << setw(12) << "姓名" << setw(8) << "C++" << setw(8) << "高数" << setw(8) << "英语" << setw(8) <<"总分" << setw(8) << "平均分" << endl;   for(i=0;i<100;i++)   outfile<<setiosflags(ios::left)<<setw(12)<<s[i].get_name()<<setw(8)<<s[i].get_cgrade()<<setw(8)<<s[i].get_mathgrade()<<setw(8)<<s[i].get_englishgrade()<<setw(8)<<s[i].get_score()<<setw(8)<<s[i].get_average()<<endl;     outfile.close();}void Student::set_name(string name)  {      this->name = name;  }void Student::set_cgrade(double cgrade)  {      this->cgrade = cgrade;  }     void Student::set_mathgrade(double mathgrade)  {      this->mathgrade = mathgrade;  }  void Student::set_englishgrade(double englishgrade)  {      this->englishgrade=englishgrade;  }  void Student::set_score(double score)  {      this->score=score;  }  void Student::set_average(double average)  {      this->average=average;  }  string Student::get_name()  {      return name;  } double Student::get_cgrade()  {      return cgrade;  }  double Student::get_mathgrade()  {      return mathgrade;  }double Student::get_englishgrade()  {      return englishgrade;  }   double Student::get_score()  {      return score;  }  double Student::get_average()  {      return average;  }void bubble_sort(Student  s[]) {      Student stud;       int i,j;         for(i=0;i<100-1;i++)       {          for(j=0;j<100-i-1;j++)           {              if(s[j].get_score()<s[j+1].get_score())                {                    stud=s[j+1];                    s[j+1]=s[j];                    s[j]=stud;                }            }      }  }   void high_grade(Student  s[])   {Student max_stud("nobody",0,0,0,0,0); for(int i=0;i<100;i++)  {  if(s[i].get_cgrade() > max_stud.get_cgrade()) {max_stud.set_cgrade(s[i].get_cgrade());}if(s[i].get_mathgrade() > max_stud.get_mathgrade()){max_stud.set_mathgrade(s[i].get_mathgrade());}if(s[i].get_englishgrade() > max_stud.get_englishgrade()){max_stud.set_englishgrade(s[i].get_englishgrade()); }if(s[i].get_score() > max_stud.get_score()) {max_stud.set_score(s[i].get_score()); }}cout<<"C++的最高分为:"<<max_stud.get_cgrade()<<endl;cout<<"高数的最高分为:"<<max_stud.get_mathgrade()<<endl ;cout<<"英语的最高分为:"<<max_stud.get_englishgrade()<<endl ;cout<<"总分的最高分为:"<<max_stud.get_score()<<endl;}  void scoregrade(Student  s[])   {      double grade;      for(int i=0;i<100;++i)      {          grade=s[i].get_cgrade()+s[i].get_mathgrade()+s[i].get_englishgrade();          s[i].set_score(grade);      }            }  void averagegrade(Student  s[])   {      double average;      for(int i=0;i<100;++i)      {          average=double(s[i].get_cgrade()+s[i].get_mathgrade()+s[i].get_englishgrade())/3;          s[i].set_average(average);      }  }  

 

 

上机感言:虽然很累,但依然很爽

原创粉丝点击