1、创建一个学生类和成绩类,具体信息如下,在main函数中显示出每位同学的学号、姓名、单科成绩信息、总分和平均分信息(显示效果如下图),并将“C++程序设计”的最高分同学信息显示出来; c++
时间: 2024-05-12 17:14:15 浏览: 114
学生成绩管理 ,这是一个学生成绩管理的实例,有C++实现。
以下是实现该功能的代码:
```cpp
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
class Score {
private:
string subject; // 科目
double score; // 成绩
public:
Score(string s, double sc) : subject(s), score(sc) {}
string get_subject() const { return subject; }
double get_score() const { return score; }
};
class Student {
private:
string id; // 学号
string name; // 姓名
vector<Score> scores; // 成绩列表
public:
Student(string i, string n) : id(i), name(n) {}
void add_score(const Score& score) { scores.push_back(score); }
string get_id() const { return id; }
string get_name() const { return name; }
vector<Score> get_scores() const { return scores; }
double get_total_score() const {
double total_score = 0;
for (auto score : scores) {
total_score += score.get_score();
}
return total_score;
}
double get_average_score() const {
return get_total_score() / scores.size();
}
};
int main() {
vector<Student> students;
// 添加学生信息
students.push_back(Student("1001", "张三"));
students.push_back(Student("1002", "李四"));
students.push_back(Student("1003", "王五"));
// 添加成绩信息
students[0].add_score(Score("C++程序设计", 90));
students[0].add_score(Score("数据结构", 85));
students[0].add_score(Score("操作系统", 78));
students[1].add_score(Score("C++程序设计", 95));
students[1].add_score(Score("数据结构", 88));
students[1].add_score(Score("操作系统", 90));
students[2].add_score(Score("C++程序设计", 80));
students[2].add_score(Score("数据结构", 75));
students[2].add_score(Score("操作系统", 82));
// 计算总分和平均分
for (auto& student : students) {
double total_score = student.get_total_score();
double average_score = student.get_average_score();
cout << "学号:" << student.get_id() << endl;
cout << "姓名:" << student.get_name() << endl;
cout << "成绩信息:" << endl;
for (auto score : student.get_scores()) {
cout << score.get_subject() << ":" << score.get_score() << endl;
}
cout << "总分:" << total_score << endl;
cout << "平均分:" << average_score << endl;
cout << endl;
}
// 找到"C++程序设计"最高分同学信息
double max_score = 0;
string max_score_student_id;
string max_score_student_name;
for (auto student : students) {
for (auto score : student.get_scores()) {
if (score.get_subject() == "C++程序设计" && score.get_score() > max_score) {
max_score = score.get_score();
max_score_student_id = student.get_id();
max_score_student_name = student.get_name();
}
}
}
cout << "C++程序设计最高分同学信息:" << endl;
cout << "学号:" << max_score_student_id << endl;
cout << "姓名:" << max_score_student_name << endl;
cout << "成绩:" << max_score << endl;
return 0;
}
```
运行结果:
```
学号:1001
姓名:张三
成绩信息:
C++程序设计:90
数据结构:85
操作系统:78
总分:253
平均分:84.3333
学号:1002
姓名:李四
成绩信息:
C++程序设计:95
数据结构:88
操作系统:90
总分:273
平均分:91
学号:1003
姓名:王五
成绩信息:
C++程序设计:80
数据结构:75
操作系统:82
总分:237
平均分:79
C++程序设计最高分同学信息:
学号:1002
姓名:李四
成绩:95
```
阅读全文