编写一个学生和教师相关数据输入和显示程序。设计三个类 person, student 和 teacher 类,其中 student 和 teacher 是由 person 类派生出来的。学生(student)数据有 学号、姓名、性别、年龄、班级号和期末三门功课总分;教师(teacher)数据有职工号、 姓名、性别、年龄、职称和系别。 Student 类和 Teacher 类共同派生出一个类 Onjobpostgraduate,表示在 职研究生,写出该派生类的构造函数及类定义,为避免二义性,用虚基类的方法。在 main 函数中定义一个派生类对象。
时间: 2024-02-15 16:03:22 浏览: 82
以下是代码实现:
```c++
#include <iostream>
#include <string>
using namespace std;
// 虚基类
class Person {
public:
string name;
char sex;
int age;
};
// 学生类
class Student : virtual public Person {
public:
int studentID;
int classID;
int score[3];
int totalScore;
void inputStudentInfo() {
cout << "请输入学生姓名:";
cin >> name;
cout << "请输入学生性别:";
cin >> sex;
cout << "请输入学生年龄:";
cin >> age;
cout << "请输入学生学号:";
cin >> studentID;
cout << "请输入学生班级号:";
cin >> classID;
cout << "请输入学生期末三门功课总分:";
for (int i = 0; i < 3; i++) {
cin >> score[i];
totalScore += score[i];
}
}
void displayStudentInfo() {
cout << "学生姓名:" << name << endl;
cout << "学生性别:" << sex << endl;
cout << "学生年龄:" << age << endl;
cout << "学生学号:" << studentID << endl;
cout << "学生班级号:" << classID << endl;
cout << "学生期末三门功课总分:" << totalScore << endl;
}
};
// 教师类
class Teacher : virtual public Person {
public:
int teacherID;
string title;
string department;
void inputTeacherInfo() {
cout << "请输入教师姓名:";
cin >> name;
cout << "请输入教师性别:";
cin >> sex;
cout << "请输入教师年龄:";
cin >> age;
cout << "请输入教师职工号:";
cin >> teacherID;
cout << "请输入教师职称:";
cin >> title;
cout << "请输入教师系别:";
cin >> department;
}
void displayTeacherInfo() {
cout << "教师姓名:" << name << endl;
cout << "教师性别:" << sex << endl;
cout << "教师年龄:" << age << endl;
cout << "教师职工号:" << teacherID << endl;
cout << "教师职称:" << title << endl;
cout << "教师系别:" << department << endl;
}
};
// 在职研究生类,继承了学生类和教师类
class Onjobpostgraduate : public Student, public Teacher {
public:
Onjobpostgraduate() {
cout << "请输入在职研究生信息:" << endl;
inputStudentInfo(); // 调用学生类的输入函数
inputTeacherInfo(); // 调用教师类的输入函数
}
void displayOnjobpostgraduateInfo() {
cout << "在职研究生信息:" << endl;
displayStudentInfo(); // 调用学生类的显示函数
displayTeacherInfo(); // 调用教师类的显示函数
}
};
int main() {
Onjobpostgraduate onjobpostgraduate; // 定义一个在职研究生对象
onjobpostgraduate.displayOnjobpostgraduateInfo(); // 显示在职研究生信息
return 0;
}
```
运行程序后,输入相关信息即可显示出在职研究生的信息。
阅读全文