某出版社系統發行圖書和磁帶,利用繼承設計管理出版物的類。要求以下:創建一個基類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; }