17周实验报告 任务1

原创 2012年06月11日 16:06:18

/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生 
* All rights reserved.
* 文件名称:
     
* 作    者:陶锋                             
* 完成日期:2012   年   06   月  11    日
* 版 本 号: 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 void high_C_plus_plus_score(Student  s[]);
	friend void high_Math_score(Student  s[]) ;
	friend void high_English_score(Student  s[]);
	friend void 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&); //重载流插入运算符“<<”  ;
	friend void insert_data(Student  s[]);
	friend void check_data();
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[101],s2,s3[1]; 
    input_student(s1);//读入100人的原始分数   
	//ordered_student_dat(s1);
	insert_data(s1);
	All_score(s1);
	Average_score(s1);
	cout<<"C++的最高分为:";
	high_C_plus_plus_score(s1);
	cout<<endl;
	cout<<"高数的最高分为:";
	high_Math_score(s1);
	cout<<endl;
	cout<<"英语的最高分为:";
	high_English_score(s1);
	cout<<endl;
	cout<<"总分的最高分为:";
	high_All_score(s1);
	cout<<endl;
	Descending_order(s1);
	ordered_student_dat(s1);
	check_data();
	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<101;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("binary_score.dat",ios::out);
	if(!outfile)
	{
		cerr<<"open error!"<<endl;
		exit(1);
	}
//	outfile<<'\t'<<"\t"<<"\t"<<"\t"<<"姓名"<<'\t'<<'\t'<<"\t"<<"C++"<<"\t"<<"英语"<<"\t"<<"高数"<<"\t"<<"总分"<<"\t"<<"平均分"<<'\n'<<'\n';
	for(int i=0;i<101;i++)
		outfile<<'\t'<<"\t"<<"\t"<<"\t"<<s[i].get_name()<<'\t'<<'\t'<<"\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;
}

void 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<100;++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);
		}
	}
	cout<<student.get_C_plus_plus()<<'\n';
	cout<<endl;
	cout<<"获得C++最高分的这几名同学叫:";
	for(i=0;i<101;++i)
	{
		if(student.get_C_plus_plus()==s[i].get_C_plus_plus())
			cout<<s[i].get_name()<<'\t';
	}
	cout<<'\n';
	return ;
}
void 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<100;++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);
		}
	}
	cout<<student.get_Math()<<'\n';
	cout<<endl;
	cout<<"获得高数最高分的这几名同学叫:";
	for(i=0;i<101;++i)
	{
		if(student.get_Math()==s[i].get_Math())
			cout<<s[i].get_name()<<'\t';
	}
	cout<<'\n';
	return ;
}

void 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<100;++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);
		}
	}
	cout<<student.get_English()<<'\n';
	cout<<endl;
	cout<<"获得英语最高分的这几名同学叫:";
	for(i=0;i<101;++i)
	{
		if(student.get_English()==s[i].get_English())
			cout<<s[i].get_name()<<'\t';
	}
	cout<<'\n';
	return ;
}
void 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<100;++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);
		}
	}
	cout<<student.get_All_score()<<'\n';
	cout<<endl;
	cout<<"获得总分最高分的这几名同学叫:";
	for(i=0;i<101;++i)
	{
		if(student.get_All_score()==s[i].get_All_score())
			cout<<s[i].get_name()<<'\t';
	}
	cout<<'\n';
	return ;
}
void Descending_order(Student  s[]) 
{
	Student student;
	string name;
    int i,j;   
    for(i=0;i<101-1;i++) 
	{
        for(j=0;j<101-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<101;i++)  
	{  
		cout<<s[i].get_All_score()<<"  ";  
	}  */
}
void All_score(Student  s[]) 
{
	int score;
	for(int i=0;i<101;++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<101;++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;  
} 
void insert_data(Student  s[])
{
	string name;
	int C_plus_plus;
	int Math;
	int English;
	cout<<"请输入您的姓名,C++成绩,高数成绩和英语成绩,中间以空格顿开:"<<'\n';
	cin>>name>>C_plus_plus>>Math>>English;
	s[100].set_name(name);
	s[100].set_C_plus_plus(C_plus_plus);
	s[100].set_Math(Math);
	s[100].set_English(English);
	cout<<endl;
	/*-ifstream outfile("binary_score.dat",ios::in|ios::binary);//|ios::binary
	if(!outfile)
	{
		cerr<<"open error!"<<endl;
		abort( );
	}
	outfile<<s[100].get_name()<<s[100].get_C_plus_plus()<<s[100].get_Math()<<s[100].get_English();
	outfile.close();*/
}
void check_data()
{
	Student s[107];
	int i=0; 
	string name,str[6];
	int C_plus_plus;
	int Math;
	int English;
	int All_score;
	double Average;
	ifstream infile("binary_score.dat",ios::in);
	if (!infile)
	{
		cerr<<"open error!"<<endl;
		exit(1);
	}
/*	for (i=0;i<6;i++)
	{
		infile>>str[i];
	}*/
	for (i=0;i<107;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>>All_score;
		s[i].set_All_score(All_score);
		infile>>Average;
		s[i].set_Average(Average);
	}
	infile.close();
/*	for (i=0;i<6;i++)
	{
		cout<<str[i];
	}*/
	cout<<s[0].get_name()<<"\t"<<s[0].get_C_plus_plus()<<"\t"<<s[0].get_Math()<<"\t"<<s[0].get_English()<<"\t"<<s[0].get_All_score()<<"\t"<<setiosflags(ios::fixed)<<setprecision(2)<<s[0].get_Average()<<'\n';
	for(i=1;i<101;i++)
	cout<<s[i].get_name()<<'\t'<<"\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';

}


相关文章推荐

17周实验报告1

//*实验目的:学会利用结构体 *实验内容:所有同学的成绩表等用结构体做 * 程序头部注释开始 * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生...
  • z_y_n
  • z_y_n
  • 2012年03月05日 15:22
  • 205

《C++第九周实验报告2-1》---接第8周任务2,定义Time类中的<<和>>运算符重载,实现时间的输入输出

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称: CTim...

12周实验报告(任务1)

知识总结:         继承时三种访问限制符的组合运用可以有效地组成不同的继承组合途径,私有成员只能在自己的类中使用,严格限制别人对自己成员的使用,保护类型只能让自己及其自己的派生类使用,而公共...

《第八周实验报告任务1》

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:  ...

第八周实验报告人任务1

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称: ...

《第四周实验报告任务1》

实验内容:设计一个三角形类,给出各成员函数的的定义。 *程序头部注释开始 *程序的版权和版本声明部分 * Copyright (c) 2012,烟台大学计算机学院学生 * All righ...

《第十六周实验报告任务1——涨工资并排序 》

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:  ...

第八周实验报告(任务1-方案2)

程序头部注释开始 * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:     用友...

第十六周实验报告任务1

/* * 程序头部注释开始 * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称...

第九周实验报告(任务1)

程序头部注释开始 * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称: 复数运算符重...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:17周实验报告 任务1
举报原因:
原因补充:

(最多只允许输入30个字)