#include<iostream>
#include"string.h"
using namespace std;
//#ifndef MANAGERPERSON_H
//#define MANAGERPERSON_H
class Date
{
public:
Date();
Date(int y,int m,int d);//构造函数
Date(Date &d);//拷贝构造函数
int GetYear();
int GetMonth();
int GetDay();
private:
int year,month,day;
};
class Person
{
public:
Person( );
Person(Date d1);//类的组合
void setNumber(char* no);
void setSex(char* s);
void setID(char* id);
void setName(char* name_);
void display();//内联函数
char name[11];
char number[7];
char sex[3];
Date birthday;
int year,month,day;
char ID[16];
};
class student:virtual public Person{
private:
char classNo[7];//班级
public:
student();
student(Date date);//因为虚基类有一个带参数的组合构造函数
void display_s();//输出一些信息
};
class teacher:virtual public Person{
private:
char principalship[11];//职务
char department[21];//部门
public :
teacher();
teacher(Date date);
void display_t();//输出一些信息
};
class graduate:public student{
private:
char subject[21];//专业
teacher adviser;//导师
public:
graduate();
graduate(Date date);
void display_g();//输出一些信息
};
class TA:public teacher,public graduate{
public :
TA(Date date);
};
//#endif
//日期类实现
Date::Date(){}
Date::Date(int y,int m,int d)//构造函数
{
year=y;
month=m;
day=d;
}
//Date::~Date(){}//析构函数实现
int Date:: GetYear(){return year;}
int Date:: GetMonth(){ return month;}
int Date:: GetDay(){ return day;}
Date::Date(Date &d)//拷贝构造函数实现
{
year=d.year;
month=d.month;
day=d.day;
cout<<" 调用Date的拷贝构造函数 "<<endl;
}
//人员类的实现
Person::Person(){}
Person::Person(Date d1):birthday(d1)//类的组合实现
{
char* no="064401";
char* s="bo";
char* id="36252419880501";
char* n="huangqin";
strcpy(number,no);
strcpy(sex,s);
strcpy(ID,id);
strcpy(name,n);
year=birthday.GetYear();
month=birthday.GetMonth();
day=birthday.GetDay();
}
//Person::~Person(){}//析构函数实现
void Person::setNumber(char* no){ strcpy(number,no);}
void Person::setSex(char* s){ strcpy(sex,s); }
void Person::setID(char* id){ strcpy(ID,id); }
void Person::setName(char* name_){ strcpy(name,name_); }
void Person::display(){ }//内联函数实现
//学生类实现
student::student(){ }
student::student(Date date):Person(date)
{
char *n="064401";
strcpy(classNo,n);
}
inline void student::display_s(){
cout<<"name="<<name<<endl;
cout<<"number="<<number<<endl;
cout<<"sex="<<sex<<endl;
cout<<"ID="<<ID<<endl;
cout<<year<<"年"<<month<<"月"<<day<<"日"<<endl;
cout<<"classNo is:"<<classNo<<endl;
}
//老师类实现
teacher::teacher(){}
teacher::teacher(Date date):Person(date)
{
char *p="C teacher";
char *d="computer department";
strcpy(principalship,p);
strcpy(department,d);
}
inline void teacher::display_t(){
cout<<"name="<<name<<endl;
cout<<"number="<<number<<endl;
cout<<"sex="<<sex<<endl;
cout<<"ID="<<ID<<endl;
cout<<year<<"年"<<month<<"月"<<day<<"日"<<endl;
cout<<"principalship is:"<<principalship<<endl;
cout<<"department is:"<<department<<endl;
}
//研究生类实现
graduate::graduate(){}
graduate::graduate(Date date):student(date)
{
char *s="c++programing";
strcpy(subject ,s);
teacher adviser;
}
inline void graduate::display_g(){//内联函数
cout<<"name="<<name<<endl;
cout<<"number="<<number<<endl;
cout<<"sex="<<sex<<endl;
cout<<"ID="<<ID<<endl;
cout<<year<<"年"<<month<<"月"<<day<<"日"<<endl;
cout<<"subject is:"<<subject<<endl;
//graduate::adviser.display_t();不能实现
}
//TA类实现
TA::TA(Date date):teacher(date),graduate(date){}
int main()
{
Date date1(1988,5,7);//生日
Date date2(1988,5,8);
Date date3(1988,5,9);
student stu(date1);//学生
stu.setID("362524198815");
stu.setName("huangdan");
stu.setNumber("064404");
stu.setSex("gir");
stu.display_s();
teacher tea(date2);//老师
tea.setID("362524198805");
tea.setName("huangqin");
tea.setNumber("064402");
tea.setSex("boy");
tea.display_t();
graduate gra(date3);//研究生
gra.setID("362524198835");
gra.setName("huanglia");
gra.setNumber("064403");
gra.setSex("boy");
gra.display_g();
return 0;
}
posted on 2008-12-01 22:59
黄琴 阅读(85)
评论(0) 编辑 收藏 引用