如何定义一个名为Student的C++类,包含学号(id)、姓名(name)和年龄(age)的数据成员?此外,该类应具备计算四门课程平均成绩的方法。请提供完整的类定义以及相关测试用例代码示例来验证其功能是否正确。
时间: 2024-11-03 08:21:00 浏览: 66
在C++中,你可以按照以下方式定义一个名为`Student`的类:
```cpp
#include <iostream>
#include <string>
class Student {
private:
int id;
std::string name;
int age;
double course_scores[4]; // 假设每门课的成绩是一个double类型的数组
public:
// 构造函数,初始化数据成员
Student(int id, std::string name, int age) : id(id), name(name), age(age) {}
// 获取学号、姓名和年龄的成员函数
int getID() const { return id; }
std::string getName() const { return name; }
int getAge() const { return age; }
// 计算平均成绩的方法
double calculateAverageScore() const {
double sum = 0;
for (int i = 0; i < 4; ++i) {
if (course_scores[i] > 0) { // 防止除零错误
sum += course_scores[i];
}
}
return sum / 4.0;
}
// 添加成绩的方法,用于模拟设置课程成绩
void addCourseScore(double score) {
if (score >= 0 && score <= 100) {
course_scores[(size_t)(age - 15) % 4] = score; // 年龄较小的学生优先考虑前两门课,年龄较大的学生考虑后两门课
} else {
std::cout << "Invalid score!" << std::endl;
}
}
// 打印信息的方法
void printInfo() const {
std::cout << "Student ID: " << id << ", Name: " << name << ", Age: " << age << std::endl;
std::cout << "Average Score: " << calculateAverageScore() << std::endl;
}
};
// 测试用例
int main() {
Student student(1234, "John Doe", 18);
student.addCourseScore(90); // 第一门课90分
student.addCourseScore(85); // 第二门课85分
student.addCourseScore(78); // 第三门课78分
student.printInfo();
student.addCourseScore(-5); // 错误分数
student.printInfo();
return 0;
}
```
在这个例子中,我们定义了一个`Student`类,包含了私有变量`id`、`name`和`age`,以及存储课程成绩的数组`course_scores`。我们还定义了构造函数、获取和设置数据成员的方法,以及计算平均成绩和添加成绩的方法。最后,我们在`main`函数中创建了一个`Student`对象,并进行了相应的操作。注意,这里只是一个基本的示例,实际应用中可能需要更严格的错误处理和数据校验。
阅读全文