程序头部注释开始
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称: 学生成绩排序
* 作 者: 王智凯
* 完成日期: 2012年 6月5日
* 版 本 号: 凯子
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
class Student
{
public:
Student(){};
Student(string na,double c,double m,double e);
void set_name(string name);
void set_c_num(double c_num);
void set_m_num(double m_num);
void set_e_num(double e_num);
void set_sum(double sum);
void set_average(double average);
string get_name(){return name;}
double get_c_num(){return c_num;}
double get_m_num(){return m_num;}
double get_e_num(){return e_num;}
double get_sum(){return sum;}
double get_average(){return average;}
private:
string name;
double c_num;
double m_num;
double e_num;
double sum;
double average;
};
Student::Student(string na,double c,double m,double e)
{
na = name;
c = c_num;
m = m_num;
e = e_num;
sum = c+e+m;
average = (c + e + m)/3;
}
void Student::set_name(string name){this->name =name;}
void Student::set_c_num(double c_num){this->c_num = c_num;}
void Student::set_m_num(double m_num){this->m_num = m_num;}
void Student::set_e_num(double e_num){this->e_num = e_num;}
void Student::set_sum(double sum){this->sum = sum;}
void Student::set_average(double average){this->average = average;}
int main()
{
Student stud[100],t; //stud[100]为保存数据的对象数组
string sname;
double scpp, smath, senglish;
int i,j;
double max1,max2,max3,max4;
//将文件中的数据读入到对象数组中
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;
}
infile.close();
//各科最高分及总分最高分
for(i = 1;i<100;i++)
{
max1 = stud[0].get_c_num();
if(stud[i].get_c_num()>max1){max1 = stud[i].get_c_num();}
max2 = stud[0].get_e_num();
if(stud[i].get_e_num()>max2){max2 = stud[i].get_e_num();}
max3 = stud[0].get_m_num();
if(stud[i].get_m_num()>max3){max3 = stud[i].get_m_num();}
max4 = stud[0].get_sum();
if(stud[i].get_sum()>max4){max4 = stud[i].get_sum();}
}
cout<<"C++最高分为: "<<max1<<endl;
cout<<"高等数学最高分为: "<<max3<<endl;
cout<<"英语最高分为: "<<max2<<endl;
cout<<"总分最高分为: "<<max4<<endl;
//总分排名
for(i = 0;i<99;++i)
{
for(j = 0; j <99-i;++j)
{
if(stud[i].get_sum()<stud[i+1].get_sum())
{
t=stud[i];
stud[i]= stud[i+1];
stud[i+1] = t;
}
}
}
//数据输出
for(i=0;i<100;i++)
{
cout<<stud[i].get_name()<<"\t";
cout<<stud[i].get_c_num()<<"\t";
cout<<stud[i].get_m_num()<<"\t";
cout<<stud[i].get_e_num()<<"\t";
cout<<stud[i].get_sum()<<endl;
}
system("pause");
return 0;
}
此程序有一个地方错误(弄出来的结果乱码),求鉴定