第十六周实验报告二
2012-06-05 16:11
323 查看
* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2012, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:学生成绩排序。
* 作 者: 晁阳
* 完成日期: 2012 年 06 月 05 日
* 版 本 号: t1.0
* 对任务及求解方法的描述部分
* 输入描述:学生成绩排序
* 问题描述: 文件score。dat中保存的是100名学生的姓名和各科成绩
* 程序头部的注释结束
上机感言: 说是文件的输入输出流其实大部分还是类的运用
* 程序的版权和版本声明部分
* 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; }
相关文章推荐
- C++程序设计实验报告(八十)---第十六周任务二
- 第十六周实验报告3
- 《C++第十六周实验报告1-1》---涨工资
- 第十六周实验报告(任务一)【涨工资】
- 第十六周实验报告一
- C++程序设计实验报告(八十一)---第十六周任务三
- 第十六周实验报告2
- 第十六周实验报告1
- 第十六周实验报告2
- 20162317袁逸灏 第十六周实验报告:实验五 网络编程与安全
- 《C++第十六周实验报告2-1》---学生成绩排序
- C++程序设计实验报告(八十二)---第十六周任务#3-2(学会二分查找)
- 第十六周实验报告2
- 第十六周实验报告任务3--电子词典
- 第十六周实验报告二
- 第十六周实验报告1
- 第十六周实验报告1
- 《C++第十六周实验报告3-1》---电子词典
- 第十六周实验报告3
- 第十六周实验报告2