用C++编写一个学生类,要求该类完成如下功能:(1)输出每个学生的姓名、学号、成绩;(2)统计并输出学生的总人数、总成绩、平均成绩、最高成绩、最低成绩
时间: 2024-10-08 17:02:35 浏览: 37
在C++中,我们可以创建一个名为`Student`的类来满足这个需求。以下是实现这个类的基本结构:
```cpp
#include <iostream>
#include <vector>
#include <algorithm> // 包含用于排序的算法
class Student {
public:
// 构造函数
Student(const std::string& name, int id, double score) : name(name), student_id(id), score(score) {}
// 获取学生信息
void display_info() const {
std::cout << "姓名:" << name << ", 学号:" << student_id << ", 成绩:" << score << std::endl;
}
// 访问属性
std::string getName() const { return name; }
int getStudentId() const { return student_id; }
double getScore() const { return score; }
private:
std::string name;
int student_id;
double score;
};
// 定义全局变量和辅助函数
std::vector<Student> students;
double calculateTotal(double sum, int count) {
return (sum / count);
}
void addStudent(const std::string& name, int id, double score) {
Student new_student(name, id, score);
students.push_back(new_student);
}
int main() {
// 添加一些学生示例
addStudent("张三", 001, 85);
addStudent("李四", 002, 92);
addStudent("王五", 003, 78);
// 显示所有学生信息
std::cout << "学生总数:" << students.size() << std::endl;
for (const auto& student : students) {
student.display_info();
}
// 统计和显示统计数据
double total_score = 0;
double max_score = *students.rbegin().getScore(); // 最高分初始为最后一个元素
double min_score = *students.begin().getScore(); // 最低分初始为第一个元素
for (const auto& student : students) {
total_score += student.getScore();
if (student.getScore() > max_score) {
max_score = student.getScore();
} else if (student.getScore() < min_score) {
min_score = student.getScore();
}
}
std::cout << "总成绩:" << total_score << std::endl;
std::cout << "平均成绩:" << calculateTotal(total_score, students.size()) << std::endl;
std::cout << "最高成绩:" << max_score << std::endl;
std::cout << "最低成绩:" << min_score << std::endl;
return 0;
}
```
在这个例子中,我们首先定义了一个`Student`类,包含了姓名、学号和成绩属性,以及相应的访问方法。然后,我们在`main`函数中添加了一些学生,并计算了总人数、总成绩、最高成绩和最低成绩。
阅读全文