设计一个学生类,包括学号、姓名、成绩、总成绩(静态成员变量),计算所有学生总成绩的静态成员函数及构造函数和析构函数。创建3个学生对象进行功能验证并求学生的平均成绩。。
时间: 2024-10-17 15:08:22 浏览: 75
可以设计一个名为`Student`的类,它包含属性如学号(student_id)、姓名(name)和成绩(scores),同时有一个静态成员变量total_score来累计所有学生总成绩。此外,我们还需要一个静态成员函数calculateAverageScore()来计算平均分,构造函数(ctor)用于初始化学生信息,析构函数(dtor)则用于清理资源。
```cpp
#include <iostream>
#include <vector>
class Student {
public:
// 构造函数
Student(int id, const std::string& name, double score)
: student_id(id), name(name), scores(score) {}
// 成员变量
int student_id;
std::string name;
double scores; // 单次成绩
// 静态总成绩变量
class TotalScores {
public:
static double total_score;
};
// 添加单次成绩到总成绩
static void addScore(double new_score) {
TotalScores::total_score += new_score;
}
// 计算所有学生总成绩
static double calculateAverageScore() {
if (TotalScores::total_score == 0) {
std::cerr << "No scores to average." << std::endl;
return 0;
}
return TotalScores::total_score / static_cast<double>(TotalScores::getStudentCount());
}
private:
~Student() {} // 析构函数,这里简单地表示释放资源操作
// 静态成员函数获取学生总数
static int getStudentCount() {
// 这里假设有一个全局的学生集合,实际应用中可以有其他方式获取
static std::vector<Student> students;
return students.size();
}
};
double Student::TotalScores::total_score = 0; // 初始化静态总成绩为0
int main() {
// 创建3个学生对象
Student s1(1, "Alice", 90);
Student s2(2, "Bob", 85);
Student s3(3, "Charlie", 95);
// 添加成绩到总成绩
Student::addScore(s1.scores);
Student::addScore(s2.scores);
Student::addScore(s3.scores);
// 求平均分
double avg_score = Student::calculateAverageScore();
std::cout << "Average score: " << avg_score << std::endl;
return 0;
}
```
在这个示例中,我们创建了三个学生对象并添加他们的成绩到总成绩,然后通过静态函数计算平均分数。注意,这只是一个简化版的实现,实际应用中你需要处理更多的细节,例如存储学生数据的方式。
阅读全文