第十六周实验报告二

来源:互联网 发布:unity3d跑酷 编辑:程序博客网 时间:2024/05/23 12:42
* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2012, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:学生成绩排序。

* 作 者: 晁阳
* 完成日期: 2012 年 06 月 05 日
* 版 本 号: t1.0
* 对任务及求解方法的描述部分
* 输入描述:学生成绩排序

* 问题描述: 文件score。dat中保存的是100名学生的姓名和各科成绩

* 程序头部的注释结束

上机感言: 说是文件的输入输出流其实大部分还是类的运用

#include <fstream>#include<iostream>#include<string>using namespace std;//定义学生类class Student{public:Student(){};//构造函数Student(string nam, double c, double m, double e):name(nam),cpp(c),math(m),english(e){total=c+m+e;}//构造函数重载如果是一个参数//如果是一个参数可以是小括号,但是由于是三个参数所以为大括号的形式;void set_value(string nam, double c, double m, double e);string get_name(){return name;}double get_cpp(){return cpp;}double get_math(){return math;}double get_english(){return english;}double get_total(){return total;}void set_cpp(double c){cpp=c;}void set_math(double m){math=m;}void set_english(double e){english=e;}void set_total(double t){total=t;}private:string name;double cpp;double math;double english;double total;};void Student::set_value(string nam, double c, double m, double e){name=nam;cpp=c;math=m;english=e;total=c+m+e;}int main( ){Student stud[100],t; //stud[100]为保存数据的对象数组string sname;double scpp, smath, senglish;int i,j;//将文件中的数据读入到对象数组中ifstream infile("score.dat",ios::in);  //以输入的方式打开文件if(!infile)       //测试是否成功打开{cerr<<"open error!"<<endl;exit(1);}for(i=0;i<100;i++){infile>>sname>>scpp>>smath>>senglish;stud[i].set_value(sname, scpp, smath, senglish);//将读入的数据调用函数进行赋值}infile.close();//求各科最高分及总分最高分Student max_stud("nobody",0,0,0);  //max_stud是一个不存在的学生,存储最高分for(i=0;i<100;i++){if(stud[i].get_cpp()>max_stud.get_cpp()) max_stud.set_cpp(stud[i].get_cpp());if(stud[i].get_math()>max_stud.get_math()) max_stud.set_math(stud[i].get_math());if(stud[i].get_english()>max_stud.get_english()) max_stud.set_english(stud[i].get_english());if(stud[i].get_total()>max_stud.get_total()) max_stud.set_total(stud[i].get_total());}//按总分排序for(j=0;j<100-2;j++) {for(i=0;i<100-j-1;i++)   if (stud[i].get_total()<stud[i+1].get_total()) {t=stud[i]; stud[i]=stud[i+1];stud[i+1]=t;}}//显示各科及总分的最高分cout<<"C++最高分为: "<<max_stud.get_cpp()<<endl;cout<<"高等数学最高分为: "<<max_stud.get_math()<<endl;cout<<"英语最高分为: "<<max_stud.get_english()<<endl;cout<<"总分最高分为: "<<max_stud.get_total()<<endl;//将按总分排序后的结果存入文件cout<<"请到文件ordered_salary.txt中查看排序后的结果"<<endl;ofstream outfile("ordered_salary.txt",ios::out); if(!outfile)    {cerr<<"open error!"<<endl;exit(1);}for(i=0;i<100;i++){outfile<<stud[i].get_name()<<"\t";outfile<<stud[i].get_cpp()<<"\t";outfile<<stud[i].get_math()<<"\t";outfile<<stud[i].get_english()<<"\t";outfile<<stud[i].get_total()<<endl;}outfile.close();    system("pause");return 0;}


原创粉丝点击