描述学校情况,学校里有教师和学生,他们有相同的信息,如姓名、编号、年龄等;他们又有各自特殊属性。如学生有课程和该课程的成绩,教师有职称及发表的论文数等属性。要求:
(1)定义一个基类person,内有数据成员:姓名、编号,还定义构造函数和输出函数。
(2)定义一个学生类student,它是person类的派生类,在类中添加数据成员:课程、成绩,定义自己的构造函数和输出函数,在函数中继承基类的函数。
(3)定义一个教师类teacher,它是person类的派生类,在类中添加数据成员:职称、论文数,
(4)定义主函数进行测试。
注:数据输入顺序格式如下
学生:姓名 编号 课程 成绩
教师:姓名 编号 职称 论文数
输出格式见用例
测试用例1
wanghong↵
2008001↵
C++↵
78.5↵
lining↵
2000↵
professor↵
5↵
期待输出1
Studentinformation:↵
Name:wanghong↵
Number:2008001↵
Course:C++↵
Grade:78.5↵
↵
Teacherinformation:↵
Name:lining↵
Number:2000↵
pro:professor↵
paper:5↵
#include <iostream>
#include <string>
using namespace std;
class Person {
public:
Person(string name,int id)
:m_name(name),m_id(id)
{}
virtual void Show(void) = 0;
protected:
string m_name;
int m_id;
};
class Student :public Person {
public:
Student(string name,int id,string course,double grade)
:Person(name,id),m_course(course),m_grade(grade)
{}
void Show(void);
private:
string m_course;
double m_grade;
};
class Teacher :public Person {
public:
Teacher(string name, int id, string pro, int paper)
:Person(name, id), m_pro(pro), m_paper(paper)
{}
void Show(void);
private:
string m_pro;
int m_paper;
};
int main() {
string name;
int id;
string course;
double grade;
string pro;
int paper;
cin >> name;
cin >> id;
cin >> course;
cin >> grade;
Student s(name,id,course,grade);
cin >> name;
cin >> id;
cin >> pro;
cin >> paper;
Teacher t(name, id, pro, paper);
s.Show();
cout << endl;
t.Show();
return 0;
}
void Student::Show(void) {
cout << "Studentinformation:" << endl
<< "Name:" << m_name << endl
<< "Number:" << m_id << endl
<< "Course:" << m_course << endl
<< "Grade:" << m_grade << endl;
}
void Teacher::Show(void) {
cout << "Teacherinformation:" << endl
<< "Name:" << m_name << endl
<< "Number:" << m_id << endl
<< "pro:" << m_pro << endl
<< "paper:" << m_paper << endl;
}