c++编写一个师生数据输入和显示程序,学生数据有编号、姓名、班号和成绩,教师数据有编号、姓名、职称和部门。要求将编号、姓名、输入和显示设计成一个类Person,并作为学生数据操作类Student和教师数据操作类Teacher的基类。
时间: 2024-06-08 10:09:02 浏览: 58
以下是一个可能的实现:
```cpp
#include <iostream>
#include <string>
using namespace std;
class Person {
protected:
int id;
string name;
public:
Person(int id, const string& name) : id(id), name(name) {}
virtual void display() const {
cout << id << " " << name << endl;
}
};
class Student : public Person {
private:
int classNumber;
double score;
public:
Student(int id, const string& name, int classNumber, double score)
: Person(id, name), classNumber(classNumber), score(score) {}
void display() const {
Person::display();
cout << "Class: " << classNumber << endl;
cout << "Score: " << score << endl;
}
};
class Teacher : public Person {
private:
string title;
string department;
public:
Teacher(int id, const string& name, const string& title, const string& department)
: Person(id, name), title(title), department(department) {}
void display() const {
Person::display();
cout << "Title: " << title << endl;
cout << "Department: " << department << endl;
}
};
int main() {
// 学生信息
Student s1(1, "Tom", 1, 90);
Student s2(2, "Kate", 2, 80);
// 教师信息
Teacher t1(101, "John", "Professor", "Computer Science");
Teacher t2(102, "Mary", "Associate Professor", "Mathematics");
// 显示学生信息
cout << "Student Info:" << endl;
s1.display();
s2.display();
// 显示教师信息
cout << "Teacher Info:" << endl;
t1.display();
t2.display();
return 0;
}
```
在这个程序中,`Person`类是一个基类,它包含了编号和姓名两个属性,并定义了一个`display()`方法来显示基本信息。`Student`和`Teacher`类都继承自`Person`类,并添加了自己特有的属性和`display()`方法。在`display()`方法中,我们使用了`Person::display()`来显示基本信息,然后再显示子类特有的信息。
在`main()`函数中,我们创建了一些学生和教师对象,然后调用它们的`display()`方法来显示信息。注意,由于`display()`方法在基类中是虚函数,因此它可以根据对象实际的类型来调用不同的实现。这就是多态的应用。
阅读全文