第十六周实验--任务2--学生成绩排序
来源:互联网 发布:天津基础教育网络教研 编辑:程序博客网 时间:2024/05/17 02:17
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:学生成绩排序
* 作 者:雷恒鑫
* 完成日期:2012 年 06 月 01 日
* 版 本 号: V1.0
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:
* 程序输出:
* 程序头部的注释结束
运行结果:
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:学生成绩排序
* 作 者:雷恒鑫
* 完成日期:2012 年 06 月 01 日
* 版 本 号: V1.0
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:
* 程序输出:
* 程序头部的注释结束
*/
#include<iostream> #include<fstream> #include<string>#include<iomanip>using namespace std; class Student { public: Student();Student(string name,int C_plus_plus,int Math,int English,int All_score,double Average);void set_name(string name);void set_C_plus_plus(int C_plus_plus);void set_Math(int Math);void set_English(int English);void set_All_score(int All_score);void set_Average(double Average);string get_name();int get_C_plus_plus();int get_Math();int get_English();int get_All_score();double get_Average();friend Student high_C_plus_plus_score(Student s[]);friend Student high_Math_score(Student s[]) ;friend Student high_English_score(Student s[]);friend Student high_All_score(Student s[]);friend void Descending_order(Student s[]);//排序,降序;friend void All_score(Student s[]);friend void Average_score(Student s[]); friend ostream& operator << (ostream&,Student&); //重载流插入运算符“<<” ;private: string name;int C_plus_plus;int Math;int English;int All_score;double Average;};void input_student(Student s[]);void ordered_student_dat(Student s[]);int main() { Student s1[100],s2; input_student(s1);//读入100人的原始分数 All_score(s1);Average_score(s1); s2=high_C_plus_plus_score(s1);cout<<"C++的最高分为:"<<s2<<endl;s2=high_Math_score(s1);cout<<"高数的最高分为:"<<s2<<'\n' ;s2=high_English_score(s1);cout<<"英语的最高分为:"<<s2<<'\n' ;s2=high_All_score(s1);cout<<"总分的最高分为:"<<s2<<'\n' ;Descending_order(s1);ordered_student_dat(s1);cout<<endl;system("PAUSE"); return 0; }Student::Student(){name="unknow";C_plus_plus=0;Math=0;English=0;All_score=0;Average=0.0;}Student::Student(string name,int C_plus_plus,int Math,int English,int All_score,double Average){this->name=name;this->C_plus_plus=C_plus_plus;this->Math=Math;this->English=English;this->All_score=All_score;this->Average=Average;}void input_student(Student s[]) { int i=0; string name;int C_plus_plus;int Math;int English;ifstream infile("score.dat",ios::in);if (!infile){cerr<<"open error!"<<endl;exit(1);}for (i=0;i<100;i++){infile>>name;s[i].set_name(name);infile>>C_plus_plus;s[i].set_C_plus_plus(C_plus_plus);infile>>Math;s[i].set_Math(Math);infile>>English;s[i].set_English(English);}infile.close();//cout<<endl; }void ordered_student_dat(Student s[]){ofstream outfile("ordered_student.dat",ios::out);if(!outfile){cerr<<"open error!"<<endl;exit(1);}for(int i=0;i<100;i++)outfile<<s[i].get_name()<<"\t"<<s[i].get_C_plus_plus()<<"\t"<<s[i].get_Math()<<"\t"<<s[i].get_English()<<"\t"<<s[i].get_All_score()<<"\t"<<setiosflags(ios::fixed)<<setprecision(2)<<s[i].get_Average()<<'\n';outfile.close();return ;} void Student::set_name(string name){this->name=name;}void Student::set_C_plus_plus(int C_plus_plus){this->C_plus_plus=C_plus_plus;}void Student::set_Math(int Math){this->Math=Math;}void Student::set_English(int English){this->English=English;}void Student::set_All_score(int All_score){this->All_score=All_score;}void Student::set_Average(double Average){this->Average=Average;}string Student::get_name(){return name;}int Student::get_C_plus_plus(){return C_plus_plus;}int Student::get_Math(){return Math;}int Student::get_English(){return English;}int Student::get_All_score(){return All_score;}double Student::get_Average(){return Average;}Student high_C_plus_plus_score(Student s[]) {Student student;int score;int i=0,j=0;string name;score=s[i].get_C_plus_plus();student.set_C_plus_plus(score);for(i=0;i<99;++i){if(student.get_C_plus_plus()<s[i+1].get_C_plus_plus()){score=s[i+1].get_C_plus_plus();student.set_C_plus_plus(score);name=s[i+1].get_name();student.set_name(name);}}return student;}Student high_Math_score(Student s[]) {Student student;int score,i=0;string name;score=s[i].get_Math();student.set_Math(score);for(i=0;i<99;++i){if(student.get_Math()<s[i+1].get_Math()){score=s[i+1].get_Math();student.set_Math(score);name=s[i+1].get_name();student.set_name(name);}}return student;}Student high_English_score(Student s[]) {Student student;int score,i=0;string name;score=s[i+1].get_English();student.set_English(score);for(i=0;i<99;++i){if(student.get_English()<s[i+1].get_English()){score=s[i+1].get_English();student.set_English(score);name=s[i+1].get_name();student.set_name(name);}}return student;}Student high_All_score(Student s[]) {Student student;int score,i=0;string name;score=s[i].get_All_score();student.set_All_score(score);for(i=0;i<99;++i){if(student.get_All_score()<s[i+1].get_All_score()){score=s[i+1].get_All_score();student.set_All_score(score);name=s[i+1].get_name();student.set_name(name);}}return student;}void Descending_order(Student s[]) {Student student;string name; int i,j; for(i=0;i<100-1;i++) { for(j=0;j<100-i-1;j++) {if(s[j].get_All_score()<s[j+1].get_All_score()) { student=s[j+1]; s[j+1]=s[j]; s[j]=student; } }}for (i=0;i<100;i++) { cout<<s[i].get_All_score()<<" "; } }void All_score(Student s[]) {int score;for(int i=0;i<100;++i){score=s[i].get_C_plus_plus()+s[i].get_Math()+s[i].get_English();s[i].set_All_score(score);}}void Average_score(Student s[]) {double average;for(int i=0;i<100;++i){average=double(s[i].get_C_plus_plus()+s[i].get_Math()+s[i].get_English())/3;s[i].set_Average(average);}}ostream& operator << (ostream&output,Student&s) { if(s.get_C_plus_plus()!=0){output<<s.get_C_plus_plus()<<'\t'<<"该同学名叫:"<<s.get_name()<<endl; }else if(s.get_Math()!=0){output<<s.get_Math()<<'\t'<<"该同学名叫:"<<s.get_name()<<endl; }else if(s.get_English()!=0){output<<s.get_English()<<'\t'<<"该同学名叫:"<<s.get_name()<<endl; }else{output<<s.get_All_score()<<'\t'<<"该同学名叫:"<<s.get_name()<<endl; } return output; }
运行结果:
经验积累:
1.这个程序有一点Bug,就是不能显示多个最高分相同的成绩,所以需要改进一下。
- 第十六周实验--任务2--学生成绩排序
- 《第十六周实验报告任务2——学生成绩排序》
- 《C++第十六周实验报告2-1》---学生成绩排序
- 第十六周实验报告(任务二)【学生成绩】
- 第十六周C++【任务二】学生成绩排序
- C++第十六周【任务二】 学生成绩排序
- 第十六周实验--任务2--学生成绩排序--从已有的文件中读入学生数据并把修改后的数据写入到另一个新创建的文件中
- 第十六周 项目2---学生成绩处理
- 第十六周-学生成绩处理2
- 第16周-任务2-学生成绩排序
- 第16周任务2(学生成绩排序)
- 第十六周实践项目2学生成绩处理(2)
- 第十六周 项目2:学生成绩处理(2)
- 第十六周 项目2: 学生成绩处理(1)
- 第十六周实践项目2学生成绩处理(1)
- 第十六周项目—学生成绩处理2
- 第十六周项目二学生成绩处理2
- 第十六周实验报告任务2
- Linux多线程编程
- 不同的老公,不同的结局! (女人该看,男人更该看) - Qzone日志
- 信息资源管理第一章知识结构
- RPC、RMI与MOM与组播 通信原理
- 接口代码
- 第十六周实验--任务2--学生成绩排序
- 深入浅出ThreadLocal
- 通过比对版本和代码修改历史定位由于代码修改引发的新问题
- HTML5本地存储详解
- FlipGame(SRM544-div1-2)
- 我在你眼里到底算什么 - Qzone日志
- C#LC.exe -1问题
- Websphere补丁安装
- ubuntu下如何用命令行运行deb安装包