您的位置:首页 > 其它

习题四第10题

2015-10-24 16:10 288 查看
某出版社系统发行图书和磁带,利用继承设计管理出版物的类。要求如下:建立一个基类publication存储出版物的标题titel、出版物的名称name、单价price、及出版日期date、用book和tape类分别管理图书和磁带。他们都是从publication派生。book类具有保存图书页数的数据成员page,tape类具有保存播放时间的数据成员 playtime,每一个类都有构造函数、析够函数,且都有用于从键盘获取数据的成员函数 inputdate(),用语显示数据的成员函数 display()。

// test.cpp : 定义控制台应用程序的入口点。
//

#include<iostream>
#include<string>

using namespace std;

class Date{
private:
int year;
int month;
int day;
public:
Date(int Y, int M, int D){
year=Y;month=M;day=D;
}
~Date(){}					// 因为没有自主申请的内存空间,所以写一个空的析构函数
void setYear(int x){ year=x;}
void setMonth(int x){ month=x;}
void setDay(int x){ day=x;}
int getYear(){return year;}
int getMonth(){return month;}
int getDay(){return day;}
};

class Publication{
private:
string title;		// 出版物标题
string name;		// 出版物名称
int price;			// 单价
Date date;			// 出版日期
public:
Publication(string til, string n, int p,int Y, int M, int D):date(Y,M,D){
title=til;
name=n;
price=p;
}
~Publication(){};
void setTitle(string til){ title=til;}
void setName(string n){ name=n;}
void setPrice(int p){ price=p;}
void setDate(int Y, int M, int D){
date.setYear(Y);date.setMonth(M);date.setDay(D);
};
string getTitle(){ return title;}
string getName(){ return name;}
int getPrice(){ return price;}
Date getDate(){ return date;}

virtual void inputData(){
int Y,M,D;
cout<<"Title: ";cin>>title;
cout<<"name : ";cin>>name;
cout<<"price:  ";cin>>price;
cout<<"year : ";cin>>Y;
cout<<"month: ";cin>>M;
cout<<"day  :";cin>>D;
setDate(Y,M,D);
}

void display(){
cout<<"Title: "<<title<<endl;
cout<<"name : "<<name<<endl;
cout<<"price: "<<price<<endl;
cout<<"date : "<<date.getYear()<<"/"<<date.getMonth()<<"/"<<date.getDay()<<endl;
}

};
class Book:public Publication{
private:
int page;
public:
Book(int pag,string til, string n, int p,int Y, int M, int D):Publication(til,n,p,Y,M,D){
page=pag;
}
~Book(){}
void setPage(int x){ page=x;}
int getPage(){ return page;}
void inputData(){
Publication::inputData();
cout<<"page : ";cin>>page;
}
void display(){
Publication::display();
cout<<"page : "<<page<<endl;
}
};
class Tape:public Publication{
private:
int playtime;
public:
Tape(int pl,string til,string n,int p,int Y,int M,int D):Publication(til,n,p,Y,M,D){
playtime=pl;
}
~Tape(){}
void setPlaytime(int t){ playtime=t;}
int getPlaytime(){ return playtime;}
void inputData(){
Publication::inputData();
}
void display(){
Publication::display();
cout<<"playtime : "<<playtime<<endl;
}
}

void cut(){
for(int i=0;i<20;i++)
cout<<"-";
cout<<endl;
}

int main()
{
Book *pu =new Book(23,"教育类","C++程序设计",35,2014,10,1);
pu->display();
cut();
pu->setDate(2013,6,10);
pu->display();
cut();
pu->inputData();
pu->display();

system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: