实验目的:
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
流程图: