学生成绩排列

程序的版权和版本声明部分 

* Copyright (c) 2011, 烟台大学计算机学院学生 

* All rights reserved. 

* 文件名称:  学生成绩的读入和排序

* 作者:  郭广建

* 完成日期: 2012年 6月 3日

* 版本号:  1、0

*对任务及求解方法的描述部分

/*【任务】学生成绩排序
文件score.dat 中保存的是名学生的姓名和C++课、高数和英语成绩。
()定义学生类,其中包含姓名、C++课、高数和英语成绩及总分、均分数据成员,成员函数根据
需要确定。
()读入这名学生的成绩,用对象数组进行存储。
()求出各科和总分的最高分。
()请按总分的降序(高成绩在前,低成绩在后)排序
()在屏幕上显示各科及总分的最高分,排序后的成绩单(包括总分)保存到文件odered_score.dat
中。*/
#include<iostream>

#include<fstream>

#include<iomanip >

#include<string>

using namespace std;

class Student
{
public:
	Student();

	double Sum();

	double Everage();

	string get_name(){return name;}

	double get_program(){return program;}

	double get_math(){return math;}

	double get_english(){return english;}

	
//private:
	string name;

	double program;

	double math;

	double english;
};
Student::Student()
{
	name = '\0';

	program = 0;

	math = 0;

	english = 0;
}

double Student::Sum()
{
	return (program +math +english);
}
double Student::Everage()
{
	return((program +math +english)/3);
}
int main()
{
	Student stu[100];

	double score_sum[100];

	
	ifstream readFile;
	ofstream writeFile;
		
	readFile.open("score.dat", ios::in);

	if(!readFile)
	{
		cerr << "open error!"<<endl;;

		exit(1);
	}

	for(int i=0; i < 100; ++i)
	{
		 //readFile >> stu[i].get_name()>> stu[i].get_program() >> stu[i].get_math() >> stu[i].get_english();
        readFile >> stu[i].name >> stu[i].program >>stu[i]. math >> stu[i].english;

		score_sum[i] = stu[i].Sum();
	}
	readFile.close();

	double max;

    for(int i = 1; i < 100; ++i)
	{
		max = score_sum[0];

		if( max < score_sum[i])
		{
			max = score_sum[i];
		}
	}
	cout << "总成绩的最高分是:" << max <<endl;

	max = stu[0].program;
	for(int i=0; i < 100; ++i)
	{
		if(max < stu[i].program)
		{
			max = stu[i].program;
		}
	}
	cout << "C++成绩的最高分是:" << max <<endl;

	max = stu[0].math;
	for(int i=0; i < 100; ++i)
	{
		

		if(max < stu[i].math)
		{
			max = stu[i].math;
		}
	}
	cout << "高数成绩的最高分是:" << max <<endl;

	max = stu[0].english;

	for(int i=0; i < 100; ++i)
	{

		if(max < stu[i].english)
		{
			max = stu[i].english;
		}
	}
	cout << "英语成绩的最高分是:" << max <<endl;



	for(int i = 0; i < 100; ++i)
	{
		for(int j =0; j < 100; ++j)
		{
			if(score_sum[j] < score_sum[j+1])
			{
				double temp;

				string t;

				t = stu[j].name; 

				stu[j].name = stu[j+1].name;

				stu[j+1].name = t;

				temp = stu[j].program; 

				stu[j].program = stu[j+1].program;

				stu[j+1].program = temp;

				temp = stu[j].math; 

				stu[j].math = stu[j+1].math;

				stu[j+1].math = temp;

				temp = stu[j].english; 

				stu[j].english= stu[j+1].english;

				stu[j+1].english = temp;

				temp = score_sum[j];

				score_sum[j] = score_sum[j+1];

				score_sum[j+1] = temp;
			}
		}
	}

	cout <<setw(10)<< "姓名" << "  "<<"C++成绩"<< "  " <<"高数成绩"<< "  " << "英语成绩" << "  "<< "总分"<<endl;

    for(int i=0; i < 100; ++i)
	{
		cout <<setw(10)<< stu[i].name << "   "<< stu[i].program << "     "<< stu[i].math<< "       " << stu[i].english << "        "<< score_sum[i] <<endl;;
	
	}

	writeFile.open("odered_score.dat", ios::out);

	if(!writeFile)
	{
		cerr << "open error!" <<endl;
	}

	for(int i=0; i < 100; ++i)

		writeFile <<setw(8)<< stu[i].name << "  "<<stu[i].program << "  "<< stu[i].math << "  "<< stu[i].english << "  "<<endl;

	writeFile.close();


	system("pause");
	return 0;
}

运行结果:


阅读更多
个人分类: 课程作业
上一篇有组合框的窗口程序
下一篇涨工资!!!
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭