【C++语言实现】【本科实验系列】设计以下类和函数,Person,Student,Teacher……

【C++语言实现】【本科实验系列】设计以下类和函数,Person,Student,Teacher……

    • 前言(有些废话)
    • 实验内容
    • 必要解说
    • 逻辑思维图
    • 代码
    • 运行结果(截图形式)
    • 轻微吐槽

前言(有些废话)

这是我本人在脚摔坏后不能走路在家修养时写的代码,耽误了学校的这节实验课,自己coding一下相当于把实验课补了回来,接下来介绍实验内容

实验内容

一,实验目的及要求
实验要求:类的继承与派生
设计以下类和函数

1.人员基类Person。其成员包括:

  • 数据成员:姓名、性别、年龄
  • 成员函数:SetPerson,设置人员数据函数
  • DisplayPerson,显示人员数据函数。

2.派生类1,Teacher,派生与Person。新增成员包括:

  • 数据成员:职称、教研室、所授课程

  • 成员函数:SetTeacher,设置数据

  • DisplayTeacher,显示数据

3.派生类2,Student,派生与Person。新增成员包括:

  • 数据成员:专业、班级、类别

  • 成员函数:SetStudent,设置数据

  • DisplayStudent,显示数据

4.派生类3,PostDoctor,多重继承与Student和Teacher。新增成员包括:

  • 数据成员:无

  • 成员函数:SetPostDoctor,设置数据

  • DisplayPostDoctor,显示数据

5.主函数:输入并输出一个教师、一个本科生、一个博士后数据。

必要解说

这里需要说明一下,要想搞清楚类的继承与派生就必须搞清楚逻辑关系,读者可以自己画一个逻辑思维图认清类与类之间的根本关系,接下来我就给出我所制作的思维图。

逻辑思维图

由上图就可以清晰地看出这个程序的思路(图片为本人原创,禁止转载!禁止转载!禁止转载!)

代码

#include
#include
using namespace std;
//基类Person
class Person
{
private:
	string name;//名字
	string sex;//性别
	string age;//年龄
public:
	void SetPerson();
	void DisplayPerson();
};
//继承于Person类的Teacher类
class Teacher:public Person
{
private:
	string ranks;
	string room;
	string course;
public:
	void SetTeacher();
	void DisplayTeacher();
};
//继承于Person类的Student类
class Student:public Person
{
private:
	string profession;
	string class_num;
	string class_class;
public:
	void SetStudent();
	void DisplayStudent();
};
//多重继承,既继承于Student类又继承于Teacher类的PostDoctor类
class PostDoctor: public Student, public Teacher
{
public:
	void SetPostDoctor();
	void DisplayPostDoctor();
};
void Person::SetPerson()
{
	cout<<"==============输入基本人员信息==============="<<endl;
	cout<<"姓名:";
	cin>> this->name;
	cout<<"年龄:";
	cin>> this->age;
	cout<<"性别:";
	cin>> this->sex;
}
void Teacher::SetTeacher()
{
	Person::SetPerson();
	cout<<"==============输入教师基本信息==============="<<endl;
	cout<<"职称:";
	cin>> this->ranks;
	cout<<"教研室:";
	cin>> this->room;
	cout<<"所授课程:";
	cin>> this->course;
}
void Student::SetStudent()
{
	Person::SetPerson();
	cout<<"==============输入学生基本信息==============="<<endl;
	cout<<"专业:";
	cin>> this->profession;
	cout<<"班级:";
	cin>> this->class_num;
	cout<<"类别:";
	cin>> this->class_class;
}
void PostDoctor::SetPostDoctor()
{
	Student::SetStudent();
}
void Person::DisplayPerson()
{
	cout<<"==="<<endl;
	cout<<"该人信息如下:"<<endl;
	cout<<"姓名:"<<this->name<<endl;
	cout<<"性别:"<<this->sex<<endl;
	cout<<"年龄:"<<this->age<<endl;
}
void Teacher::DisplayTeacher()
{
	Person::DisplayPerson();
	cout<<"职称:"<<this->ranks<<endl;
	cout<<"教研室:"<<this->room<<endl;
	cout<<"所授课程:"<<this->course<<endl;
	cout<<"类别:教师"<<endl;
}
void Student::DisplayStudent()
{
	Person::DisplayPerson();
	cout<<"专业:"<<this->profession<<endl;
	cout<<"班级:"<<this->class_num<<endl;
	cout<<"类别:"<<this->class_class<<endl;
}
void PostDoctor::DisplayPostDoctor()
{
	Student::DisplayStudent();
}
int main()
{
	Teacher a;
	Student b;
	PostDoctor c;
	a.SetTeacher();
	b.SetStudent();
	c.SetPostDoctor();
	a.DisplayTeacher();
	b.DisplayStudent();
    c.DisplayPostDoctor();
	return 0;
}

运行结果(截图形式)

输入截图:
【C++语言实现】【本科实验系列】设计以下类和函数,Person,Student,Teacher……_第1张图片输出截图:
【C++语言实现】【本科实验系列】设计以下类和函数,Person,Student,Teacher……_第2张图片

轻微吐槽

这里的Set/Get方法其实有很多更好的实现方式,而且完全可以用构造函数去处理输入输出,但是因为本人脚疼得一批,实在无心去写更好版本的代码,欢迎大佬们吐槽我这个代码(这个题还是没有太多难度的,要是加入用数据结构知识去处理这些数据的题目要求就好玩了)

你可能感兴趣的:(本科实验,C++,面向对象,类的派生,类的继承,本科实验)