这C++怎么做啊~~纳闷啊!!

题目
建立一个简单的大学管理系统,其中有学生、教师和兼职学生。大学类继承的层次关系
如下图:
University(虚基类)

Student Teacher

T_Student
大学类继承的层次图
图中,大学类University是虚基类,它包含了所有派生类共有的数据成员,学生类Student和教师类Teacher为虚基类University的派生类,兼职大学生类T_Student是学生类Student和教师类Teacher的共同派生类。每个类定义了一个不同的print() 函数,输出各类的数据成员。各类数据成员如下:
University类; 姓名( name )、年龄( age )
Student 类 : 姓名( name )、年龄( age )、学号(stu_no)、专业(major)、年级(level)
Teacher类: 姓名( name )、年龄( age )、系别(dept)、职称(Title)、工资(salary)
T_Student类: 姓名( name )、年龄( age )、学号(stu_no)、专业(majcr)、年级(level)、
系别(dept)、职称(Title)、工资(salary)
设计大学管理系统类的结构程序,要运用派生类构造函数传递参数,实现简单的大学管理系统。编写主函数创建三种类的对象并输出各对象的数据成员。各对象具体数据自定。

提示:
(1)在“综合应用项目”中简单的大学管理系统有几个类,
大学类University是虚基类,它的继承的层次关系如何?
(2)各类包含哪些数据,按照类的层次关系定义虚基类,各派生类。
(3)按多重继承的构造函数初始化列表的要求设计各类的构造函数,派生类要向基类和虚基类传递参数。并根据需要设计析构函数。
(4)设计各类输出数据的输出函数。
(5)完整写出管理系统类的程序结构
(6)设计主函数,创建三个类的对象(大学生、教师、兼职
大学生),提供自选的数据,调用相应输出函数实现输出

#include <iostream>

#include <string>

using namespace std;

class University{

private:

 string Name;

 int Age;

public:

 University(string name,int age){

  Name=name;

  Age=age;

 }

 void printuni(){

  cout<<"姓名:"<<Name<<endl;

  cout<<"年龄"<<Age<<endl;

 }

};

class Student:public virtual University{

private:

 string Stu_no;

 string Major;

 int Level;

public:

 Student(string name,int age,string stu_no,string major,int level);

 void printstu();

};

Student::Student(string name,int age,string stu_no,string major,int level)

:University(name,age){

 Stu_no=stu_no;

 Major=major;

 Level=level;

}

void Student::printstu(){

 printuni();

 cout<<"学号"<<Stu_no<<endl;

 cout<<"专业"<<Major<<endl;

 cout<<"年级"<<Level<<endl;

}

class Teacher:public virtual University{

private:

 string Dept;

 string Title;

 int Salary;

public:

 Teacher(string name,int age,string dept,string title,int salary);

 void printtea();

};

Teacher::Teacher(string name,int age,string dept,string title,int salary)

:University(name,age){

 Dept=dept;

 Title=title;

 Salary=salary;

}

void Teacher::printtea(){

 printuni();

 cout<<"系别"<<Dept<<endl;

 cout<<"职称"<<Title<<endl;

 cout<<"工资"<<Salary<<endl;

}

class T_Student:public Student,public Teacher{

public:

    T_Student(string name,int age,string stu_no,string major,int level,string dept,string title,int salary);

    void printT_S();

};

T_Student::T_Student(string name,int age,string stu_no,string major,int level,string dept,string title,int salary)

:Student(name,age,stu_no,major,level),Teacher(name,age,dept,title,salary),University(name,age){}

void T_Student::printT_S(){

 printstu();

 printtea();

}

void main(){

 cout<<"*************University***************"<<endl;

 string aa="aaaaa";

 int ah=5;

 University un(aa,ah);

 un.printuni();

 cout<<"*************Student****************"<<endl;

 string ab="bbbbb";

 int ai=6;

 string x="210808036";

 string y="英语";

 int nj=1;

 Student stu(ab,ai,x,y,nj);

 stu.printstu();

 cout<<"***********Teacher******************"<<endl;

 string ac="cccccc";

 int aj=7;

 string xi="computer";

 string zh="professor";

 int sa=3000;

 Teacher te(ac,aj,xi,zh,sa);

 te.printtea();

 cout<<"***********T_Student****************"<<endl;

 string ad;

 int ak=8;

 string xh="369854271";

 string zhuanye="物理";

 int nianji=4;

 //系别与专业一样,不重复定义

 string zhicheng="研究生";

 int gongzi=5000;

 T_Student sss(ad,ak,xh,zhuanye,nianji,zhuanye,zhicheng,gongzi);

 sss.printT_S();

}

//有问题,百度hi我

//打印结果

参考资料:自己经验

温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-11-18
应该没多难
相似回答