构造函数和析构函数对象数组排序

实验目的

1,理解类和对象的概念,掌握声明类和定义 对象的方法

2,掌握构造函数和析构函数的实现方法

3,初步掌握使用类和对象编制C++程序

对象排序

实验内容

一,创建一个Score类,完成以下功能:

1,连续输入多位学生的float成绩(成绩=科目A 成绩+科目B成绩+科目C成绩);

2,学生数目可以由用户自定义(默认为2个,最 多为100个。提示:使用变量。);

3,显示每位同学的每科成绩和平均分;

4,显示每门科目的平均成绩;

5,对每门成绩进行排序并由高到低显示;

6,对整个项目(所有源代码)进行打包。

7,画流程图

 

#include<iostream>
#include<string>
using namespace std;
class StudentScore {
public:
	StudentScore()
	{
		student_nr = 2;
	}
	StudentScore(int student_count)
	{
		student_nr = student_count;
	}
	void InputStudentNameAndScore()
	{
		for (int student_id = 0; student_id < student_nr; student_id++)
		{
			cout << "请输入学生姓名:" << endl;
			cin >> name_array[student_id];
			cout << "请输入科目A成绩:" << endl;
			cin >> score_table[student_id][1];
			cout << "请输入科目B成绩:" << endl;
			cin >> score_table[student_id][2];
			cout << "请输入科目C成绩:" << endl;
			cin >> score_table[student_id][3];
		}
	}
	void ShowStudentNameAndScore()
	{
		for (int student_id = 0; student_id < student_nr; student_id++)
		{
			cout << "姓名:" << name_array[student_id] << "科目A成绩:"
				<< score_table[student_id][1] << "科目B成绩:"
				<< score_table[student_id][2] << "科目C成绩:"
				<< score_table[student_id][3] << endl;
		}
	}
	void ShowStdentAvgScore(int student_id)
	{
		cout << "姓名:" << name_array[student_id] << "平均成绩:" << (score_table[student_id][1] +
			score_table[student_id][2] + score_table[student_id][3]) / 3 << endl;
	}
	void ShowCourseAvgScore(string course_name)
	{
		float sum = 0;
		cout << "课程名称:" << course_name << "平均成绩:";
		for (int student_id = 0; student_id < student_nr; student_id++)
		{
			sum += score_table[student_id][1];
		}
		cout << sum / student_nr << endl;
	}
	void orderScoreByCourse(string course_name)
	{
		string v;
		cout << "课程名称:" << course_name << endl;
		for (int student_id = 0, t; student_id < student_nr - 1; student_id++)
			for (int sco = 0; sco < student_nr - 1 - student_id; sco++)
			{
				t = score_table[sco][2];
				score_table[sco][2] = score_table[sco + 1][2];
				score_table[sco + 1][2] = t;

				v = name_array[sco];
				name_array[sco] = name_array[sco + 1];
				name_array[sco + 1] = v;
			}
		for (int student_id = 0; student_id < student_nr; student_id++)
			cout << "姓名:" << name_array[student_id] << "成绩:"
			<< score_table[student_id][2] << endl;

	}
private:
	float score_table[100][3], score_table1[100][3];
	string name_array[100], name_array1[100];
	int student_nr;
};
int main()
{
	StudentScore x;
	x.InputStudentNameAndScore();
	x.ShowStudentNameAndScore();
	x.ShowStdentAvgScore(1);
	x.ShowCourseAvgScore("A");
	x.orderScoreByCourse("B");
	return 0;
}

输出结果

请输入学生姓名:
王敏
请输入科目A成绩:
87
请输入科目B成绩:
99
请输入科目C成绩:
78
请输入学生姓名:
小胖
请输入科目A成绩:
89
请输入科目B成绩:
43
请输入科目C成绩:
55
姓名:王敏科目A成绩:87科目B成绩:99科目C成绩:78
姓名:小胖科目A成绩:89科目B成绩:43科目C成绩:55
姓名:小胖平均成绩:62.3333
课程名称:A平均成绩:88
课程名称:B
姓名:小胖成绩:43
姓名:王敏成绩:99

C:\C++\1\作业2\x64\Debug\作业2.exe (进程 20616)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值