第五章作业

来源:互联网 发布:php易支付 编辑:程序博客网 时间:2024/05/24 04:15

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

#include<iostream>    

using namespace std;class person {                           //定义一个人物类public:    void input()                         //输入数据的成员函数{ cout<<" 编号:";  cin>>number;      cout<<" 姓名:"; cin>>name;}    void show()                          //输出数据的成员函数{ cout<<" 编号:"<<number<<endl;      cout<<" 姓名:"<<name<<endl;}private:   int number;   char name[10];};class student:public person{             //学生类,公有继承人物类  public:    void input(){ person::input();      cout<<" 班号:"; cin>>depart;      cout<<" 成绩:"; cin>>degree;}    void show()    { person::show();      cout<<" 班号:"<<depart<<endl;      cout<<" 成绩:"<<degree<<endl;    }private:     char depart[6];     int degree;};class teacher:public person{              //教师类,公有继承人物类private:    char prof[10];    char depart[10];public:    void input(){ person::input();cout<<" 职称:"; cin>>prof;cout<<" 部门:";cin>>depart;}   void show(){ person::show();cout<<" 职称:"<<prof<<endl;cout<<" 部门:"<<depart<<endl;}};int  main()                       //主函数{ student s1;teacher t1;cout<<" 输入一个学生数据:\n";s1.input();cout<<" 输入一个教师数据:\n"; t1.input();cout<<" 显示一个学生数据:\n"; s1.show();cout<<" 显示一个教师数据:\n"; t1.show();system("pause");return 0;}




【5.19】设计一个虚基类base,包含姓名和年龄私有数据成员以及相关的成员函数;由它派生出领导类leader,包含植物和部门私有数据成员以及相关的成员函数;再由base派生出工程师类engieer,包含职称和专业私有数据成员以及相关的成员函数;然后再由leaderengieer,派生出主任工程师类chairman。采用相关数据进行测试。

#include<iostream>    using namespace std;class base{                                //基类base    char *name;                            //姓名    int age;                               //年龄public:    base()                                 //无参的构造函数    {}    base(char na[],int a)                  //带参的构造函数    { name=new char[strlen(na)+1];      strcpy(name,na);age=a;    }    char*getname()                         //成员函数{ return name;}    int getage()                           //成员函数{ return age;}~base()                               //析构函数    {delete []name;}};class leader:virtual public base{          //领导类leader                                          //声明类base是leader的虚基类char *job;                             //职务    char *dep;                             //部门public:    leader()                               //无参构造函数    {}    leader(char na[],int n,char jb[],char dp[]):base( na, n)  //带参构造函数    { job=new char[strlen(jb)+1];strcpy(job,jb);dep=new char[strlen(dp)+1];strcpy(dep,dp);}char*getjob(){return job;}char*getdep(){return dep;} ~leader()                      //析构函数    { delete []job;      delete []dep;    }};class engineer:virtual public base{  //工程师类engineer                                       //声明类base是engineer的虚基类    char *major; //专业    char *prof;  //职称public:engineer()    //无参构造函数{}engineer(char na[],int n,char maj[],char pf[]):base( na, n)  //带参构造函数{ major=new char[strlen(maj)+1];      strcpy(major,maj);      prof=new char[strlen(pf)+1];      strcpy(prof,pf);}    char* getmajor(){ return major;}    char* getprof(){ return prof;}~engineer()                  //析构函数{ delete []major;      delete []prof;}}; class chairman:public leader,public engineer{ //主任工程师类chairman          //chairman是leader和engineer的共同派生类,是base的间接派生类public:     chairman()  //无参构造函数{};    chairman(char na[],int n,char jb[],char dp[],char maj[],char pf[]):base( na, n),leader(na,n,jb,dp),engineer( na, n, maj, pf)    { }          //带参构造函数    void dispchairman()    { cout<<getname()<<",年龄: "<<getage()<<"岁,部门: "<<getdep()   <<",职务: "<<getjob()<<endl;      cout<<" 职称: "<<getprof()<<",专业: "<<getmajor()<<endl;    }};int main(){ chairman c1("陈",35,"处长","教务处","管理学","教授");  c1.dispchairman();  system("pause");return 0;}




 


0 0
原创粉丝点击