设计一个学生类,实现学生信息输入输出(学号、姓名、5 门课程分数),学生 5 门课 程平均分的输出。要求将类声明放在“.h”文件,成员函数定义放在“.cpp 文件
时间: 2024-09-19 18:18:23 浏览: 44
数学建模拟合与插值.ppt
在 C++ 中设计一个简单的 `Student` 类来满足您的需求,可以分为两部分:头文件 `.h` 和实现文件 `.cpp`。
首先,创建名为 `Student.h` 的头文件(`.h`),包含类声明:
```cpp
// Student.h
#ifndef STUDENT_H
#define STUDENT_H
#include <string>
class Student {
public:
// 构造函数
Student(std::string id, std::string name);
// 拷贝构造函数和析构函数 (默认实现)
Student(const Student& other); // 默认拷贝构造函数
~Student(); // 默认析构函数
// 设置和获取学生信息
void setScore(int courseId, int score);
std::pair<int, std::string> getCourseScore(int courseId) const;
double calculateAverageGrade() const;
private:
// 学生信息
std::string studentId;
std::string name;
std::map<int, int> scores; // 课程ID到分数的映射
};
#endif // STUDENT_H
```
然后,在名为 `Student.cpp` 的实现文件中编写具体的函数定义:
```cpp
// Student.cpp
#include "Student.h"
// 构造函数
Student::Student(std::string id, std::string name)
: studentId(id), name(name) {}
// 拷贝构造函数
Student::Student(const Student& other) : studentId(other.studentId), name(other.name), scores(other.scores) {}
// 计算平均成绩
double Student::calculateAverageGrade() const {
if (scores.empty()) {
return 0.0;
}
double total = 0.0;
for (const auto& pair : scores) {
total += pair.second;
}
return total / scores.size();
}
// 设置和获取课程分数
void Student::setScore(int courseId, int score) {
scores[courseId] = score;
}
std::pair<int, int> Student::getCourseScore(int courseId) const {
auto it = scores.find(courseId);
if (it != scores.end()) {
return {it->first, it->second};
}
throw std::runtime_error("Course not found.");
}
```
现在您已经完成了 `Student` 类的设计。在其他程序中使用这个类时,只需包含 `Student.h` 并实例化它,就可以操作学生的学号、姓名以及课程分数了。例如:
```cpp
#include "Student.h"
using namespace std;
int main() {
Student s("001", "张三");
s.setScore(1, 85); // 设置语文成绩
s.setScore(2, 92); // 设置数学成绩
// ... 其他课程分数设置...
cout << "学号:" << s.studentId << ", 姓名:" << s.name << endl;
cout << "语文分数:" << s.getCourseScore(1).second << endl;
cout << "平均分:" << s.calculateAverageGrade() << endl;
return 0;
}
```
阅读全文