C++面向对象之继承(实验)

题目一

       编写一个学生和教师数据输入和显示程序,学生的数据有编号、姓名、班号和成绩,教师数据有编号、姓名、职称和部门。要求将编号、姓名输入和显示设计成一个类person,并作为学生数据操作类student和教师类teacher的基类

#include"iostream"
#include"string"
using namespace std;
class person{
    int no;//编号
    string name;//姓名
public://使用一个person作为父类
    person(int NO, string NAME):no(NO),name(NAME){}//构造函数初始化列表
    void display(){cout<<"NO:"<<no<< " " << "NAME:"<<name<<" ";
	}//编号和姓名的输出
};
class student:public person{//派生上面的姓名和编号
private:
    string Class;//班号
    float score;//成绩
public:
    student(int NO,string NAME,string CLASS,float SCORE):person(NO,NAME){
        Class=CLASS;
        score=SCORE;}
    void display_student(){
		cout<<"CLASS:"<<Class<<" "<<"SCORE:"<<score<<endl;
	}
};
class teacher:public person{
private:
    string position;
    string department;
public:
    teacher(int NO,string NAME,string POSITION,string DEPARTMENT):person(NO,NAME){
        position=POSITION;
        department=DEPARTMENT;
}
    void display_teacher(){
		cout<<"POSITION:"<<position<<" "<<"DEPARTMENT:"<<department<<endl;
	}
};
int main(){
    cout<<"student information"<<endl;
    student a(2023111111,"Ming","Cumputer02",100);//明 计算机02 100分
    a.person::display();
	a.display_student();
    cout<<"teacher information"<<endl;
    teacher b(2005222222,"John","English teacher","ENGLISH");//约翰 英语老师 英语
    b.person::display();
	b.display_teacher();
    return 0;
}

题目二

        分别定义教师类Teacher 和干部类Cadre,采用多重继承的方式由这两个类派生出新类Teacher_Cadre(教师兼干部类)。

要求:

(1)在两个基类中都包括姓名、年龄、性别、地址、电话作为数据成员;

(2)在Teacher类中还包含数据成员:职称title,在Cadre类中还包含数据成员:职务post,在Teacher_Cadre类中还包含数据成员:工资wage;

(3)对两个基类中的姓名、年龄、性别、地址、电话用相同的名字,在访问者类数据成员时,请指定作用域;

(4)在派生类Teacher_Cadre的成员函数show中调用Teacher类中的display函数,输出姓名、年龄、性别、地址、电话和职称,然后再调用cout语句输出职务和工资;

#include"iostream"
#include"string"
using namespace std;
class Teacher {
public:
	Teacher(string name, int age, string sex, string address, string phone_number, string title) :
		name(name), age(age), sex(sex), address(address), phone_number(phone_number), title(title) {}//构造函数初始化列表
	void display() {		//教师基本信息展示
		cout << "姓名:" << name << endl;
		cout << "年龄:" << age << endl;
		cout << "性别:" << sex << endl;
		cout << "地址:" << address << endl;
		cout << "电话:" << phone_number << endl;
		cout << "职称:" << title << endl;
	}
protected://保护类成员可以被自身和派生类访问
	int age;//年龄
	string name, sex, address, phone_number, title;//姓名、性别、地址、电话、职称
};
class Cadre {
public:
	Cadre(string name, int age, string sex, string address, string phone_number, string post) :
		name(name), age(age), sex(sex), address(address), phone_number(phone_number), post(post) {}//构造函数初始化列表
protected://保护类成员可以被自身和派生类访问
	int age;//年龄
	string name, sex, address, phone_number, post;//姓名、性别、地址、电话、职务
};

class Teacher_Cadre :public Teacher, public Cadre {
private:
	double wage;//工资
public:
	Teacher_Cadre(string name, int age, string sex, string address, string phone_number, string title, string post, double wage) :
		Teacher(name, age, sex, address, phone_number, title), Cadre(name, age, sex, address, phone_number, post), wage(wage) {}//构造函数初始化列表
	void show() {
		Teacher::display();
		cout << "职务:" << Cadre::post << endl;
		cout << "工资:" << wage << endl;
	}
};
int main() {
	Teacher_Cadre a("Ming",35,"男","重庆市巴南区","12345654321","辅导员","数学部组长",8000);
	a.show();
	return 0;
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值