"这是一个使用C++编写的学生成绩管理系统的源代码示例。系统包含了学生类(Student)的定义,以及对学生的操作,如添加成绩、计算平均分和打印学生信息。"
在这个C++程序中,我们首先看到的是一个名为`Student`的类,它代表了一个学生的基本信息和成绩数据。类的私有(private)成员变量包括学生的姓名(name)、学号(id)以及一个整数向量(vector<int>)来存储成绩(scores)。接下来,让我们详细探讨一下这个类的各个部分。
1. **构造函数**:
类`Student`有一个构造函数,接受学生的姓名(n)和学号(i)作为参数,并初始化相应的成员变量。构造函数的定义是`Student(string n, int i)`,其中`n`和`i`分别对应传入的姓名字符串和学号整数。
2. **添加成绩方法**:
`void addScore(int score)` 方法允许向学生的成绩列表中添加一个新的分数。它通过调用`push_back`函数将传入的`score`值插入到`scores`向量的末尾。
3. **获取平均成绩方法**:
`double getAverageScore() const` 方法返回学生的平均成绩。首先检查`scores`向量是否为空,如果为空则返回0.0。否则,遍历向量中的每个分数,计算总分,然后除以分数数量,得到平均分。注意,为了确保结果为浮点数,使用了`static_cast<double>`进行类型转换。
4. **打印学生信息方法**:
`void printInfo() const` 方法用于打印学生的基本信息(姓名和学号)以及平均成绩。使用`cout`输出相关字段,并调用了`getAverageScore`来获取并显示平均分。
在`main`函数中,我们创建了一个`vector<Student>`类型的容器`students`来存储学生对象。然后,通过`emplace_back`向容器中添加学生对象,并立即对新添加的对象调用`addScore`添加成绩。最后,使用范围基础循环(range-based for loop)遍历`students`容器,对每个学生对象调用`printInfo`来显示其信息。
这个简单的程序展示了如何在C++中利用面向对象编程来实现一个基本的学生成绩管理系统。它涉及到类的设计、构造函数的使用、成员函数的操作以及容器(如`vector`)的使用,这些都是C++编程中的核心概念。