题目一
编写一个学生和教师数据输入和显示程序,学生的数据有编号、姓名、班号和成绩,教师数据有编号、姓名、职称和部门。要求将编号、姓名输入和显示设计成一个类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;
}