基于C++定义一个学生类,实现上课过程的模拟和平时成绩的计算,应用STL库的相关容器对数据进行存储,程序数据可以保存到文件中,开始程序时自动读取。
时间: 2024-02-09 17:07:58 浏览: 64
学生成绩管理 ,这是一个学生成绩管理的实例,有C++实现。
好的,我来帮您解答这个问题。
首先,我们需要定义一个学生类,包含学生的基本信息以及相关成绩信息:
```c++
#include <string>
#include <vector>
#include <iostream>
using namespace std;
class Student {
public:
string name; // 学生姓名
int age; // 学生年龄
vector<int> scores; // 存储学生各门课的成绩
// 构造函数
Student(string name, int age) : name(name), age(age) {}
// 计算平均成绩
double avg_score() const {
double sum = 0.0;
for(int score : scores) {
sum += score;
}
return scores.empty() ? 0.0 : sum / scores.size();
}
// 输出学生信息
friend ostream& operator<<(ostream& os, const Student& student) {
os << "Name: " << student.name << ", Age: " << student.age
<< ", Scores: ";
for(int score : student.scores) {
os << score << " ";
}
os << ", Avg Score: " << student.avg_score();
return os;
}
};
```
接下来,我们需要模拟上课过程,即随机生成学生的成绩,并将其存储到容器中:
```c++
#include <random>
// 模拟上课过程,随机生成学生的成绩
void simulate_class(vector<Student>& students) {
// 随机数生成器
random_device rd;
mt19937 gen(rd());
uniform_int_distribution<> dis(0, 100);
// 遍历学生,生成成绩
for(auto& student : students) {
for(int i = 0; i < 5; i++) {
student.scores.push_back(dis(gen));
}
}
}
```
最后,我们需要使用STL库的相关容器对数据进行存储,并将数据保存到文件中:
```c++
#include <fstream>
// 从文件中读取学生信息
void read_students(const string& filename, vector<Student>& students) {
ifstream fin(filename);
string name;
int age, score;
while(fin >> name >> age) {
Student student(name, age);
while(fin >> score) {
student.scores.push_back(score);
}
students.push_back(student);
}
fin.close();
}
// 将学生信息保存到文件中
void save_students(const string& filename, const vector<Student>& students) {
ofstream fout(filename);
for(const auto& student : students) {
fout << student.name << " " << student.age << " ";
for(int score : student.scores) {
fout << score << " ";
}
fout << endl;
}
fout.close();
}
int main() {
vector<Student> students;
// 从文件中读取学生信息
read_students("students.txt", students);
// 模拟上课过程
simulate_class(students);
// 将学生信息保存到文件中
save_students("students.txt", students);
// 输出学生信息
for(const auto& student : students) {
cout << student << endl;
}
return 0;
}
```
以上就是基于C++定义一个学生类,实现上课过程的模拟和平时成绩的计算,应用STL库的相关容器对数据进行存储,程序数据可以保存到文件中,开始程序时自动读取的全部代码。
阅读全文