显示学校信息(继承性)

描述学校情况,学校里有教师和学生,他们有相同的信息,如姓名、编号、年龄等;他们又有各自特殊属性。如学生有课程和该课程的成绩,教师有职称及发表的论文数等属性。要求:
(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;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值