第十六周 任务二
来源:互联网 发布: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); } }
上机感言:虽然很累,但依然很爽
- 第十六周 任务二
- 第十六周 任务二
- 第十六周任务二
- 第十六周任务(二)
- 第十六周任务(二)
- 第十六周实验报告(任务二)
- C++程序设计实验报告(八十)---第十六周任务二
- 第十六周C++【任务二】学生成绩排序
- 第十六周实验报告(任务二)【学生成绩】
- C++第十六周【任务二】 学生成绩排序
- 第十六周任务二(学生分数文件处理)
- 第十六周 任务一
- 第十六周 任务三
- 第十六周 任务一
- 第十六周 任务一
- 第十六周 任务三
- 第十六周 任务四
- 第十六周任务1
- 高可用之2——存储b
- URI URL的区别
- 毕业季挚言
- mysql 性能优化方案
- OGRE+CEGUI游戏教程(1)----GUI框架
- 第十六周 任务二
- 主题:iPhone解析非UTF-8的XML
- 温习下 function pointer.
- nmap扫描器学习
- 原码,反码和补码
- ubuntu12.04中配置sun jdk1.7
- 端口扫描工具nmap使用介绍
- 快排2
- OpenCV2.4 例程七 (鼻子和嘴巴检测)