c++编程 设计一个学生类Student(属性有学号、姓名、3门课成绩<课程编号为1-3>)和教师类Teacher(属性有职工号和姓名),实现以下要求: (1)输出学生成绩; (2)教师可以修改学生成绩。
时间: 2023-06-27 13:01:28 浏览: 252
以下是实现思路:
1. 首先定义一个学生类 Student,其中包括学号、姓名和三门课成绩。
2. 然后定义一个教师类 Teacher,其中包括职工号和姓名。
3. 在 Student 类中定义一个成员函数 showScore(),用于输出学生成绩。
4. 在 Teacher 类中定义一个成员函数 modifyScore(),用于修改学生成绩。
5. 在主函数中创建一个教师对象和多个学生对象,然后通过教师对象调用 modifyScore() 函数修改学生成绩,再通过学生对象调用 showScore() 函数输出学生成绩。
以下是代码实现:
```
#include <iostream>
#include <string>
using namespace std;
class Student {
private:
int id; // 学号
string name; // 姓名
int scores[3]; // 三门课成绩
public:
Student(int id, string name, int s1, int s2, int s3) { // 构造函数
this->id = id;
this->name = name;
scores[0] = s1;
scores[1] = s2;
scores[2] = s3;
}
void showScore() { // 输出学生成绩
cout << "学号:" << id << endl;
cout << "姓名:" << name << endl;
cout << "课程1成绩:" << scores[0] << endl;
cout << "课程2成绩:" << scores[1] << endl;
cout << "课程3成绩:" << scores[2] << endl;
}
friend class Teacher; // 声明友元类
};
class Teacher {
private:
int id; // 职工号
string name; // 姓名
public:
Teacher(int id, string name) { // 构造函数
this->id = id;
this->name = name;
}
void modifyScore(Student &s, int cno, int score) { // 修改学生成绩
s.scores[cno-1] = score;
cout << "教师 " << name << " 修改了学生 " << s.name << " 的课程" << cno << "成绩为 " << score << endl;
}
};
int main() {
Student s1(1001, "张三", 90, 80, 85);
Student s2(1002, "李四", 70, 75, 80);
Teacher t(2001, "王老师");
t.modifyScore(s1, 2, 85); // 教师修改学生成绩
t.modifyScore(s2, 1, 75);
s1.showScore(); // 输出学生成绩
s2.showScore();
return 0;
}
```
运行结果:
```
教师 王老师 修改了学生 张三 的课程2成绩为 85
教师 王老师 修改了学生 李四 的课程1成绩为 75
学号:1001
姓名:张三
课程1成绩:90
课程2成绩:85
课程3成绩:85
学号:1002
姓名:李四
课程1成绩:75
课程2成绩:75
课程3成绩:80
```
阅读全文