上机实验3:构造函数和析构函数3.2对象数组排序

实验目的:
1. 理解类和对象的概念,掌握声明类和定义 对象的方法
2.掌握构造函数和析构函数的实现方法
3.初步掌握使用类和对象编制C++程序
3.2 对象排序
实验内容:
创建一个 Score 类,完成以下功能:
1.连续输入多位学生的float成绩(成绩=科目A 成绩+科目B成绩+科目C成绩);
2.学生数目可以由用户自定义(默认为 2 个,最 多为 100 个。提示:使用变量。);
3.显示每位同学的每科成绩和平均分;
4.显示每门科目的平均成绩;
5.对每门成绩进行 排序 由高到低 显示; 对整个项目(所有源代码)进行打包。
6.画流程图
代码:
#include<iostream>
#include<string>
int x;
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;
		if (course_name == "A")
			x = 1;
		if (course_name == "B")
			x = 2;
		if (course_name == "C")
			x = 3;
		for (int student_id = 0;student_id < student_nr;student_id++)
		{
			sum = sum + score_table[student_id][x];
		}
			cout << "课程名称: " << course_name << " 平均成绩: " <<sum/student_nr << endl;
	
	}
	void OrderScoreByCourse(string course_name)
	{
		cout << "课程名称: " << course_name << endl;
		if (course_name == "A")
			x = 1;
		if (course_name == "B")
			x = 2;
		if (course_name == "C")
			x = 3;
		
			string v;
			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];
	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;
}

依次输入:徐元,90,92,93.5

孔政,91,95,93

输出结果:

请输入学生姓名:
徐元
请输入科目A成绩:
90
请输入科目B成绩:
92
请输入科目C成绩:
93.5
请输入学生姓名:
孔政
请输入科目A成绩:
91
请输入科目B成绩:
95
请输入科目C成绩:
93
姓名:徐元 科目A成绩: 90 科目B成绩: 92 科目C成绩:93.5
姓名:孔政 科目A成绩: 91 科目B成绩: 95 科目C成绩:93
姓名:孔政 平均成绩: 93
课程名称: A 平均成绩: 90.5
课程名称: B
姓名:孔政 成绩:95
姓名:徐元 成绩:92

流程图:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值