欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

从Student类和Teacher类多重派生Graduate类

程序员文章站 2022-07-15 16:59:41
...

题目内容:

已知基类Person定义如下:
class Person
{
char Name[10];
char Sex[10];
int Age;
public:
void Register(char *name,int age,char *sex);
void ShowMe();
};
请通过继承的方法建立两个派生类,其中
派生类Teacher:
1.新增的数据成员有:
char Dept[20];
int Salary;
2.新增的成员函数有:
Teacher(char *name,int age,char *sex,char *dept,int salary);
void Show() //显示新增数据成员
派生类Student:
1.新增的数据成员有:
char ID[12];
char Class[12];
2.新增的成员函数有:
Student(char *name,int age,char *sex,char *ID,char *Class);
void Show()//显示新增数据成员
请通过继承的方法从Teacher和Student中建立派生类Graduate,其中
1.新增的成员函数有:
Graduate(char *name,int age,char *sex,char *dept,int salary,char *id,char *classid);
2.重写的成员函数有:
void ShowMe()//显示数据成员,要求调用基类的Show和ShowMe
在主程序中建立一个派生类Graduate的对象,利用成员函数显示对象的数据成员。


输入格式:

Graduate对象的初始化信息


输出格式:

按照输出样例格式输出Graduate对象的信息


输入样例:

李木子 22 f 电信学院 2300 04035003 硕401


输出样例:

班级 硕401
学号 04035003
姓名 李木子
性别 女
年龄 22
工作单位 电信学院

月薪 2300

#include<iostream>
#include<string.h>
using namespace std;
class Person
{   protected:
    char Name[10];
    string Sex;
    int Age;
    public:
    void Register(char *name, int age, string sex) ;
    void ShowMe();
};  
void Person::Register(char *name,int age,string sex)
{
	strcpy(Name,name);
	Age=age;
    if(sex=="m") Sex="男"; 
	if(sex=="f") Sex="女";
}
void Person::ShowMe()
{
	cout<<"姓名 "<<Name<<'\n'<<"性别 "<<Sex<<'\n'<<"年龄 "<<Age<<endl;
}

class Teacher:public Person
{   protected:
	char Dept[20];
    int Salary;
    public:
    	Teacher(char *name,int age,string sex,char *dept,int salary)
    	{
    		Register(name, age, sex);
    		strcpy(Dept,dept);
	        Salary=salary;
		};
		void Show();
};
void Teacher::Show()
{
	Person::ShowMe();
	cout<<"工作单位 "<<Dept<<endl;
	cout<<"月薪 "<<Salary<<endl;
}

class Student:public Person
{   protected:
	char ID[12];
    char Class[12];
    public:
    	Student(char *name,int age,string sex, char *id,char *classid);
    	void Show();
 };
 Student::Student(char *name,int age,string sex, char *id,char *classid)
 {
 	strcpy(Name,name);
 	Age=age;
 	if(sex=="m") Sex="男"; 
	if(sex=="f") Sex="女";
 	strcpy(ID,id);
 	strcpy(Class,classid);
 }
 void Student::Show()
 {
 	cout<<"学号 "<<ID<<endl;
 	Person::ShowMe();
 	cout<<"班级 "<<Class<<endl;
 }
 
 class Graduate:public Teacher,public Student
 {
 	public:
 		Graduate(char *name,int age,string sex,char *dept,int salary,char *id,char *classid):Teacher(name,age,sex,dept,salary),Student(name,age,sex,id,classid)
 		{};
 		void ShowMe();
 };
 void Graduate::ShowMe()
 {
 	cout<<"班级 "<<Class<<endl;
 	cout<<"学号 "<<ID<<endl;
 	Teacher::Show();
 }
 
 
 int main()
 {
 	char nam[10];
    string sx;
    int ag;
    char dep[20];
    int saly;
    char id[12];
    char clss[12];
    cin>>nam>>ag>>sx>>dep>>saly>>id>>clss;
    
    Graduate grad(nam,ag,sx,dep,saly,id,clss);
    grad.ShowMe();
    return 0;
 }