第十六周C++【任务二】学生成绩排序
2012-06-04 21:05
441 查看
【任务2】学生成绩排序
文件score.dat 中保存的是100 名学生的姓名和C++课、高数和英语成绩。
(1)定义学生类,其中包含姓名、C++课、高数和英语成绩及总分、均分数据成员,成员函数根据
需要确定。
(2)读入这名学生的成绩,用对象数组进行存储。
(3)求出各科和总分的最高分。
(4)请按总分的降序(高成绩在前,低成绩在后)排序
(5)在屏幕上显示各科及总分的最高分,排序后的成绩单(包括总分)保存到文件odered_score.dat
中
积累经验:文件的输入输出是有一定套路的,掌握其方法,万变不离其中。
writeFile<<stu[i].name;这里只是将数据向磁盘文件输出,所以在屏幕上看不见输出结果,要想输出,就加上cout<<stu[i].name<<" ";
这一点与电子词典不同。而且在读入数据时,此处涉及到了传参。
文件score.dat 中保存的是100 名学生的姓名和C++课、高数和英语成绩。
(1)定义学生类,其中包含姓名、C++课、高数和英语成绩及总分、均分数据成员,成员函数根据
需要确定。
(2)读入这名学生的成绩,用对象数组进行存储。
(3)求出各科和总分的最高分。
(4)请按总分的降序(高成绩在前,低成绩在后)排序
(5)在屏幕上显示各科及总分的最高分,排序后的成绩单(包括总分)保存到文件odered_score.dat
中
#include<iostream> #include <string> using namespace std; #include<fstream> class Student { public: double get_total(); double get_average(); void get_name(string name); void get_c_score(double c_score); void get_m_score(double m_score); void get_e_score(double e_score); friend void input(Student *stu) ; friend void output(Student *stu); friend void output_max(Student *stu); friend void paixu(Student *stu); private: string name; double c_score; double m_score; double e_score; double total; double average; }; double Student::get_total() { (this->total) = (this->c_score + this->e_score + this->m_score); return (this->total); } double Student::get_average() { (this->average) = (this->c_score + this->e_score + this->m_score)/3; return (this->average); } void Student::get_name(string name) { this->name = name; } void Student::get_c_score(double c_score) { this->c_score = c_score; } void Student::get_m_score(double m_score) { this->m_score = m_score; } void Student::get_e_score(double e_score) { this->e_score = e_score; } void input(Student stu[]) { string name; int i; double c_score; double m_score; double e_score; ifstream inFile("score.dat",ios::in); if(!inFile) { cerr<<"open error!"<<endl; exit(1); } for( i=0;i<100;++i) { inFile>>name; stu[i].get_name( name); inFile>>c_score; stu[i].get_c_score( c_score); inFile>>e_score; stu[i].get_e_score( e_score); inFile>>m_score; stu[i].get_m_score( m_score); } inFile.close(); } void output(Student *stu) { ofstream writeFile("odered_score.dat",ios::out); if(!writeFile) { cerr<<"open error!"<<endl; exit(1); } for(int i=0;i<100;++i) { writeFile<<stu[i].name; cout<<stu[i].name<<" "; writeFile<<stu[i].c_score; cout<<stu[i].c_score<<" "; writeFile<<stu[i].e_score; cout<<stu[i].e_score<<" "; writeFile<<stu[i].m_score; cout<<stu[i].m_score<<" "; writeFile<<stu[i].average; cout<<stu[i].average<<" "; writeFile<<stu[i].total; cout<<stu[i].total<<" "; cout<<endl; } writeFile.close(); } void output_max(Student *stu) { double max1,max2,max3,max4; max1=stu[0].c_score; max2=stu[0].m_score; max3=stu[0].e_score; max4=stu[0].get_total(); for(int i=0;i<100;++i) { if(stu[i].c_score>max1) { max1=stu[i].c_score; } if(stu[i].m_score>max2) { max2=stu[i].m_score; } if(stu[i].e_score>max3) { max3=stu[i].e_score; } if(stu[i].get_total()>max4) { max4=stu[i].get_total(); } } cout<<max1<<endl; cout<<max2<<endl; cout<<max3<<endl; cout<<max4<<endl; } void paixu(Student *stu) { Student t; for( int i=0;i<100;++i) { stu[i].get_total(); stu[i].get_average(); } for(int i=0;i<99;++i) for(int j=0;j<99-i;++j) { if(stu[i].total<stu[i+1].total) { t=stu[i]; stu[i]=stu[i+1]; stu[i+1]=t; } } } int main() { Student stu[100]; input(stu); output_max(stu); paixu(stu); output(stu); cout<<endl; system("PAUSE"); return 0; }
积累经验:文件的输入输出是有一定套路的,掌握其方法,万变不离其中。
writeFile<<stu[i].name;这里只是将数据向磁盘文件输出,所以在屏幕上看不见输出结果,要想输出,就加上cout<<stu[i].name<<" ";
这一点与电子词典不同。而且在读入数据时,此处涉及到了传参。
相关文章推荐
- C++第十六周【任务二】 学生成绩排序
- 第十六周实验--任务2--学生成绩排序
- 第十六周实验--任务2--学生成绩排序--从已有的文件中读入学生数据并把修改后的数据写入到另一个新创建的文件中
- 《第十六周实验报告任务2——学生成绩排序》
- 《C++第十六周实验报告2-1》---学生成绩排序
- 十六周任务二 学生成绩排序文件score.dat 中保存的是100 名学生的姓名和C++课、高数和英语成绩,将成绩排序后保存到ordered_score.dat文件中
- 2015年C++第三周,任务二:输入几个学生的成绩,用空格隔开,利用容器vector输出成绩,并显示各个等级的数量。
- 第16周-任务2-学生成绩排序
- 第16周-任务2-学生成绩排序
- C++第十七周【任务一】 学生成绩处理
- C/C++动态自定义结构体数组实例锻炼-学生成绩排序
- C++学生成绩排序
- 第16周任务2(学生成绩排序)
- C++第5周任务【任务4】设计一个学生类,包括学号(num)和成绩(score)。建立一个对象数组
- 编写一个应用程序,用户分别从两个文本框输入学术的姓名和分数,程序按成绩排序将这些学生的姓名和分数显示在一个文本区中。
- 使用指针实现学生成绩的录入,求最高分最低分、平均值和排序
- 第十六周oj刷题——Problem F: B 统计程序设计基础课程学生的平均成绩
- C++ 课程设计学生成绩管理系统源代码
- C++实现学生信息及成绩处理系统(面向对象的程序设计思想)
- 十六周任务(二)对成绩分数排序