2.定义全班学生成绩类,包括姓名、学号、C++成绩、英语成绩、数学成绩和平均成绩。设计下列方法: (1)全班成绩的输入。 (2)求出每个学生的平均成绩。 (3)按平均成绩的升序排列。 (4)输出全班成绩。 C++语言
时间: 2024-11-20 07:37:45 浏览: 18
新建 Microsoft Word2.rar_学生成绩管理_学生成绩管理系统_成绩管理系统
为了定义一个全班学生成绩类,我们可以按照以下步骤创建:
```cpp
class Student {
public:
// 构造函数,用于初始化学生信息
Student(std::string name, int student_id, float cpp_score, float english_score, float math_score)
: name(name), student_id(student_id), cpp(cpp_score), english(english_score), math(math_score) {}
// 属性
std::string getName() const { return name; }
int getStudentId() const { return student_id; }
float getCppScore() const { return cpp; }
float getEnglishScore() const { return english; }
float getMathScore() const { return math; }
// 平均成绩计算
float calculateAverage() const {
return (cpp + english + math) / 3;
}
private:
std::string name;
int student_id;
float cpp;
float english;
float math;
};
// 全班成绩管理类
class ClassGradeManager {
public:
void addStudent(Student student) {
students.push_back(student);
}
// 求所有学生的平均成绩并输出
void displayAverageScores() {
for (const auto& student : students) {
std::cout << "学生 " << student.getName() << " 的平均成绩: " << student.calculateAverage() << std::endl;
}
}
// 按平均成绩排序并输出
void sortStudentsByAverage() {
std::sort(students.begin(), students.end(), [](const Student& a, const Student& b) {
return a.calculateAverage() < b.calculateAverage();
});
for (const auto& student : students) {
std::cout << "按平均成绩升序排列:" << student.getName() << ", 平均成绩: " << student.calculateAverage() << std::endl;
}
}
private:
std::vector<Student> students;
};
int main() {
// 创建全班学生成绩管理实例
ClassGradeManager classGrades;
// 添加学生成绩
Student student1("张三", 1001, 85, 90, 92);
Student student2("李四", 1002, 78, 85, 88);
// ... 更多添加
classGrades.addStudent(student1);
classGrades.addStudent(student2);
// 输出全班成绩
classGrades.displayAverageScores();
// 排序并输出
classGrades.sortStudentsByAverage();
return 0;
}
```
阅读全文