C++创建一个类,成员包含学生姓名、学号、多个课程以及对应成绩(学生可能选修不同数量与不同名称的课程),使用静态变量记录学生总数、现有课程名称等。成员函数:,学生新增:,课程新增:,学生课程与成绩单添加与删除:,某一学生所有课程平均成绩计算:,某一课程所有学生平均成绩与通过率计算
时间: 2024-10-20 22:16:42 浏览: 51
在C++中,你可以创建一个名为`Student`的类来表示学生信息,包含姓名(name)、学号(id)、一个关联容器存储课程及其成绩(例如`std::map<std::string, int>`)。为了记录学生总数和现有课程,可以使用静态变量。这里是一个简单的示例:
```cpp
#include <iostream>
#include <string>
#include <map>
class Course {
public:
static std::map<std::string, int> course_scores;
std::string name;
int total_students;
Course(const std::string& courseName) : name(courseName), total_students(0) {}
};
// 定义静态变量用于跟踪学生总数和课程分数
std::map<std::string, int> Course::course_scores;
class Student {
private:
std::string name;
std::string id;
std::map<std::string, int> grades; // 学生选课成绩
public:
Student(const std::string& studentName, const std::string& studentId)
: name(studentName), id(studentId), grades() {}
// 新增学生
void addCourse(const std::string& course, int score) {
grades[course] = score;
++Course::course_scores[course];
Course::total_students++;
}
// 删除学生课程
void removeCourse(const std::string& course) {
grades.erase(course);
if (Course::course_scores.find(course) != Course::course_scores.end())
--Course::course_scores[course];
if (--Course::total_students == 0)
Course::course_scores.erase(course);
}
// 添加或修改成绩
void updateGrade(const std::string& course, int score) {
grades[course] = score;
}
// 计算学生所有课程平均成绩
double calculateAverageScore() const {
double sum = 0;
for (const auto &grade : grades) {
sum += grade.second;
}
return sum / grades.size();
}
// 打印学生信息和平均成绩
void printInfo() const {
std::cout << "Name: " << name << ", ID: " << id << ", Average Score: " << calculateAverageScore() << "\n";
}
};
int main() {
Student s("张三", "001");
s.addCourse("数学", 85);
s.addCourse("英语", 90);
// 更改并打印成绩
s.updateGrade("英语", 92);
s.printInfo();
return 0;
}
```
阅读全文