第十六周实验报告2

实验目的:

文件score.dat中保存的是100名学生的姓名和C++课、高数和英语成绩。

(1)定义学生类,其中包含姓名、C++课、高数和英语成绩及总分、均分数据成员,成员函数根据需要确定。

(2)读入这名学生的成绩,用对象数组进行存储。

(3)求出各科和总分的最高分。

(4)请按总分的降序(高成绩在前,低成绩在后)排序

(5)在屏幕上显示各科及总分的最高分,排序后的成绩单(包括总分)保存到文件odered_score.dat中。

实验代码:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

class Student
{
public:
	string name;
	double C;
	double math;
	double english;
	double addition();
	double average();
	
	void display();
};

double Student::addition()
{
	return C + math + english;
}
double Student::average()
{
	return (C + math + english) / 3;
}

void Student::display()
{
	cout << name << '\t' << C << '\t' << math << '\t' << english << '\t';
}

int main()
{
	Student stu[100];
	double max_c, max_math, max_english, max_addition;
	ifstream infile("score.txt", ios::in);
	if(!infile)
	{
		cerr << "open error!" << endl;
		exit(1);
	}
	for(int i = 0; i < 100; i++)
	{
		infile >> stu[i].name >> stu[i].C >> stu[i].math >> stu[i].english;
		stu[i].display();
		cout << stu[i].addition() << '\t';
		cout << stu[i].average() << endl;
	}

	max_c = stu[0].C;
    for(int i = 1; i < 100; i++)
	{
		if(stu[i].C > max_c)
		{
			max_c = stu[i].C;
		}
	}
	cout << "C++的最高成绩为:" << max_c << endl;

	max_math = stu[0].math;
	for(int i = 1; i < 100; i++)
	{
		if(stu[i].math > max_math)
		{
			max_math = stu[i].math;
		}
	}
	cout << "高数的最高成绩为:" << max_math << endl;

	max_english = stu[0].english;
	for(int i = 1; i < 100; i++)
	{
		if(stu[i].english > max_english)
		{
			max_english = stu[i].english;
		}
	}
	cout << "英语的最高成绩为:" << max_english << endl;
    
	max_addition = stu[0].addition();
	for(int i = 1; i < 100; i++)
	{
		if(stu[i].addition() > max_addition)
		{
			max_addition = stu[i].addition();
		}
	}
    cout << "总分的最高成绩为:" << max_addition << endl;

	
	Student t;
	for(int j = 0; j < 99; j++)
	{
		for(int i = 0; i < 99 - j; i++)
		{
			if(stu[i].addition() > stu[i + 1].addition())
			{
				t.name  = stu[i].name;
				t.C = stu[i].C;
				t.math = stu[i].math;
				t.english = stu[i].english;


				stu[i].name = stu[i + 1].name;
				stu[i].C = stu[i + 1].C;
				stu[i].math = stu[i + 1].math;
				stu[i].english = stu[i + 1].english;

				stu[i + 1].name = t.name;
				stu[i + 1].C = t.C;
				stu[i + 1].math = t.math;
				stu[i + 1].english = t.english;
			}
		}
	}
	cout << endl;
	cout << "按照总分高低排序:" << endl;
	for(int i = 0; i < 100; i++)
	{
		stu[i].display();
		cout << stu[i].addition() << '\t';
		cout << stu[i].average() << endl;
	}

	ofstream outfile("ordered_score.txt");
	if(!outfile)
	{
		cerr << "ordered_salary.txt error!" << endl;
		exit(1);
	}
	for(int i = 0; i < 100; i++)
	{
		outfile << stu[i].name << '\t' << stu[i].C << '\t' << stu[i].math << '\t' << stu[i].english << '\t' << stu[i].addition() << '\t'<< stu[i].average() << endl;
	}
	outfile.close();
	

    system("pause");
    
	return 0;
}


实验结果:

刘得意  60      98      75      233     77.6667
王锐    63      90      96      249     83
何煜中  90      73      82      245     81.6667
王磊    87      86      92      265     88.3333
冯松    89      98      83      270     90
裴培    75      82      91      248     82.6667
马骁    62      67      90      219     73
马婧    98      84      87      269     89.6667
周俊升  57      68      96      221     73.6667
贺祺    61      96      72      229     76.3333
李桐    93      83      86      262     87.3333
高路    63      74      98      235     78.3333
冯佳媛  61      79      81      221     73.6667
张迪    99      88      80      267     89
张里响  85      65      96      246     82
王瑞麒  89      83      91      263     87.6667
徐金竹  75      89      73      237     79
赵媛媛  77      75      66      218     72.6667
宋宗杰  94      100     92      286     95.3333
张佳玮  61      98      96      255     85
王姝    70      91      90      251     83.6667
宋媛媛  61      94      92      247     82.3333
于莉    55      66      78      199     66.3333
于浩    78      84      72      234     78
王竞    90      87      67      244     81.3333
崔赞    91      67      93      251     83.6667
宋静    69      85      73      227     75.6667
王磊    71      78      77      226     75.3333
方圆    70      79      76      225     75
李朋    90      82      97      269     89.6667
马佳    60      90      100     250     83.3333
张龙    62      100     78      240     80
马里    73      95      73      241     80.3333
韩明    83      97      88      268     89.3333
马立    73      90      83      246     82
吴清正  89      97      85      271     90.3333
印虹    92      68      75      235     78.3333
田苗苗  75      91      71      237     79
卫青    66      73      77      216     72
冷云    89      88      71      248     82.6667
葛志伟  100     79      71      250     83.3333
范振光  98      87      89      274     91.3333
王芳    71      97      99      267     89
杨超    67      73      82      222     74
杨梦婕  89      99      67      255     85
梁雅宁  55      88      100     243     81
王琦    98      95      98      291     97
吴玮    69      76      68      213     71
杨阔    90      91      98      279     93
贾伟林  63      90      86      239     79.6667
刘亚新  77      81      95      253     84.3333
金昕    92      67      69      228     76
董一伟  93      88      80      261     87
汤娜    68      85      71      224     74.6667
周恒    87      82      69      238     79.3333
张笑    86      88      76      250     83.3333
文静    93      88      85      266     88.6667
杨华鑫  81      81      68      230     76.6667
苏明霞  59      79      94      232     77.3333
黄京    62      75      96      233     77.6667
佟欣    60      79      98      237     79
张雯    69      70      93      232     77.3333
刘京西  67      78      78      223     74.3333
徐嘉琦  90      75      87      252     84
魏佳    100     94      80      274     91.3333
高举    81      99      91      271     90.3333
边里    56      94      87      237     79
何佳成  70      75      78      223     74.3333
赵旭洋  87      91      94      272     90.6667
孙大伟  65      69      98      232     77.3333
鲁继森  84      79      75      238     79.3333
白涛    57      82      75      214     71.3333
蔺剑飞  88      75      79      242     80.6667
兰天    83      66      74      223     74.3333
王悦    79      82      70      231     77
陈世勃  70      92      65      227     75.6667
张昊    94      83      96      273     91
高清    76      83      84      243     81
王欣欣  71      83      78      232     77.3333
王欢欢  57      33      66      156     52
叶丹    87      80      96      263     87.6667
李悦    63      79      97      239     79.6667
郭倩    69      94      69      232     77.3333
刘盈    99      72      93      264     88
杨洁    96      79      87      262     87.3333
徐一菡  85      45      62      192     64
王蒙    67      97      89      253     84.3333
张敏    85      75      89      249     83
桂佳    60      73      65      198     66
林倩    67      77      80      224     74.6667
任盛达  57      86      88      231     77
吴佳林  96      65      82      243     81
黄金龙  85      90      78      253     84.3333
陈美珠  82      72      83      237     79
冼丹    100     89      89      278     92.6667
唐楠    68      97      77      242     80.6667
张扬    77      65      93      235     78.3333
宋航彬  80      71      91      242     80.6667
薛淇文  89      71      75      235     78.3333
刘紫亮  72      98      84      254     84.6667
C++的最高成绩为:100
高数的最高成绩为:100
英语的最高成绩为:100
总分的最高成绩为:291

按照总分高低排序:
王欢欢  57      33      66      156     52
徐一菡  85      45      62      192     64
桂佳    60      73      65      198     66
于莉    55      66      78      199     66.3333
吴玮    69      76      68      213     71
白涛    57      82      75      214     71.3333
卫青    66      73      77      216     72
赵媛媛  77      75      66      218     72.6667
马骁    62      67      90      219     73
周俊升  57      68      96      221     73.6667
冯佳媛  61      79      81      221     73.6667
杨超    67      73      82      222     74
刘京西  67      78      78      223     74.3333
何佳成  70      75      78      223     74.3333
兰天    83      66      74      223     74.3333
汤娜    68      85      71      224     74.6667
林倩    67      77      80      224     74.6667
方圆    70      79      76      225     75
王磊    71      78      77      226     75.3333
宋静    69      85      73      227     75.6667
陈世勃  70      92      65      227     75.6667
金昕    92      67      69      228     76
贺祺    61      96      72      229     76.3333
杨华鑫  81      81      68      230     76.6667
王悦    79      82      70      231     77
任盛达  57      86      88      231     77
苏明霞  59      79      94      232     77.3333
张雯    69      70      93      232     77.3333
孙大伟  65      69      98      232     77.3333
王欣欣  71      83      78      232     77.3333
郭倩    69      94      69      232     77.3333
刘得意  60      98      75      233     77.6667
黄京    62      75      96      233     77.6667
于浩    78      84      72      234     78
高路    63      74      98      235     78.3333
印虹    92      68      75      235     78.3333
张扬    77      65      93      235     78.3333
薛淇文  89      71      75      235     78.3333
徐金竹  75      89      73      237     79
田苗苗  75      91      71      237     79
佟欣    60      79      98      237     79
边里    56      94      87      237     79
陈美珠  82      72      83      237     79
周恒    87      82      69      238     79.3333
鲁继森  84      79      75      238     79.3333
贾伟林  63      90      86      239     79.6667
李悦    63      79      97      239     79.6667
张龙    62      100     78      240     80
马里    73      95      73      241     80.3333
蔺剑飞  88      75      79      242     80.6667
唐楠    68      97      77      242     80.6667
宋航彬  80      71      91      242     80.6667
梁雅宁  55      88      100     243     81
高清    76      83      84      243     81
吴佳林  96      65      82      243     81
王竞    90      87      67      244     81.3333
何煜中  90      73      82      245     81.6667
张里响  85      65      96      246     82
马立    73      90      83      246     82
宋媛媛  61      94      92      247     82.3333
裴培    75      82      91      248     82.6667
冷云    89      88      71      248     82.6667
王锐    63      90      96      249     83
张敏    85      75      89      249     83
马佳    60      90      100     250     83.3333
葛志伟  100     79      71      250     83.3333
张笑    86      88      76      250     83.3333
王姝    70      91      90      251     83.6667
崔赞    91      67      93      251     83.6667
徐嘉琦  90      75      87      252     84
刘亚新  77      81      95      253     84.3333
王蒙    67      97      89      253     84.3333
黄金龙  85      90      78      253     84.3333
刘紫亮  72      98      84      254     84.6667
张佳玮  61      98      96      255     85
杨梦婕  89      99      67      255     85
董一伟  93      88      80      261     87
李桐    93      83      86      262     87.3333
杨洁    96      79      87      262     87.3333
王瑞麒  89      83      91      263     87.6667
叶丹    87      80      96      263     87.6667
刘盈    99      72      93      264     88
王磊    87      86      92      265     88.3333
文静    93      88      85      266     88.6667
张迪    99      88      80      267     89
王芳    71      97      99      267     89
韩明    83      97      88      268     89.3333
马婧    98      84      87      269     89.6667
李朋    90      82      97      269     89.6667
冯松    89      98      83      270     90
吴清正  89      97      85      271     90.3333
高举    81      99      91      271     90.3333
赵旭洋  87      91      94      272     90.6667
张昊    94      83      96      273     91
范振光  98      87      89      274     91.3333
魏佳    100     94      80      274     91.3333
冼丹    100     89      89      278     92.6667
杨阔    90      91      98      279     93
宋宗杰  94      100     92      286     95.3333
王琦    98      95      98      291     97
请按任意键继续. . .


实验心得:

老师真的是用心良苦啊。将这个周学习的文件操作及文件流的问题和起一阵子学习的类的应用结合到一起了。整个题目难度相比任务一略有增加,不过还好,因为,说实话,类的题目我们做过不少,而且这个任务中对类的操作考察的不是很难所以整个题目不算太难,所以做起来不是太吃力,只是,同样的,在排序的时候,会有一点思考,因为,在老师给的.score中没有总分和均分的数据,那么,在输出数据和排序的时候真的不是太容易,我的做法自然也不知道是不是很好,因为在冒泡法的时候,有点麻烦。至于其他的,也没什么难点了吧!

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值