C++OJ题:设计管理出版物的类

该博客介绍如何使用C++进行面向对象编程,设计一个管理出版物的类结构,包括一个基类Publication,以及派生的Book和CD类。基类包含标题、名称、价格和出版日期等属性,而Book类增加了页数属性,CD类增加了播放时间属性。每个类都实现了构造函数、析构函数,以及输入和显示数据的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

某出版社发行图书和光盘,利用继承设计管理出版物的类。

要求如下:建立一个基类Publication存储出版物的标题title、出版物名称name、单价price及出版日期date;用Book和CD类分别管理图书和光盘,它们都从Publication类派生;Book类具有保存图书页数的数据成员page,CD类具有保存播放时间的数据成员playtime;每个类都有构造函数、析构函数,且都有用于从键盘获取数据的成员函数inputData()和用于显示数据的成员函数display()。

请完成下面的程序:

#include<iostream> 

#include<string> 

using namespace std; 

struct Date{//年月日 

    int year; 

    int month; 

    int day; 

    Date(int y=0,int m=0,int d=0){year=y;month=m;day=d;} 

    ~Date(){} 

}; 

struct Time{//时分秒 

    int hour; 

    int minute; 

    int second; 

    Time(int h=0,int m=0,int s=0){hour=h;minute=m;second=s;} 

    ~Time(){} 

}; 

class Publication{ 

private: 

    string title;//出版物的标题title 

    string name;//出版物的名称name 

    float price;//出版物的单价price 

    Date date; //出版日期date 

public: 

    Publication(string t="",string n="",float p=0,int h=0,int m=0,int s=0):date(h,m,s){ 

        title=t;name=n;price=p;} 

    ~Publication(){} 

    void inputdata(){         

        cin>>title;         

        cin>>name;         

        cin>>price;         

        cin>>date.year>>date.month>>date.day; 

        } 

    void display(){ 

        cout<<"*****display*****"<<endl; 

        cout<<"title:"<<title<<endl; 

        cout<<"name:"<<name<<endl; 

        cout<<"price:"<<price<<endl; 

        cout<<"year-month-day:"<<date.year<<"-"<<date.month<<"-"<<date.day<<endl; 

        } 

}; 

//你的代码将被嵌在这里 

int main() 

{ 

    Book b; 

    CD c(1,2,3,"郎朗","肖邦钢琴协奏曲",61,2018,8,1); 

    b.inputdata(); 

    b.display(); 

    c.display();     

    return 0; 

} 

Sample Input

文学作品
西游记
28
2018 1 8
280

Sample Output

*****display*****
title:文学作品
name:西游记
price:28
year-month-day:2018-1-8
pages:280
*****display*****
title:郎朗
name:肖邦钢琴协奏曲
price:61
year-month-day:2018-8-1
playtime(h:m:s) 1:2:3

解题:

//先看懂给出的代码是干嘛的再解题
class Book:public Publication{
private:
    int page;
public:
    Book(){}
    void inputdata(){
        Publication::inputdata();
        cin>>page;
    }
    void display(){
    Publication::display();
    cout<<"pages:"<<page<<endl;
    }
};
class CD:public Publication{
private:
    Time playtime;
public:
    CD(){}
    CD(int hour,int minute,int second,string title,string name,float price,int year,int month,int day):playtime(hour,minute,second),Publication(title,name,price,year,month,day){}
    void display(){
    Publication::display();
    cout<<"playtime(h:m:s) "<<playtime.hour<<":"<<playtime.minute<<":"<<playtime.second<<endl;
    }
};

实验内容: 1.对象的定义对象的定义对象的定义对象的定义,实现,实现,实现StudentStudentStudent成绩的基本员定义成绩的基本员定义成绩的基本员定义成绩的基本员定义成绩的基本员定义成绩的基本员定义;的基本函数功能的基本函数功能的基本函数功能的基本函数功能:学号的学号的提取,成绩的基本计算。提取,成绩的基本计算。提取,成绩的基本计算。提取,成绩的基本计算。提取,成绩的基本计算。 2.构造函数析构造函数析构造函数析构造函数析构造函数析,实现对象自动初始化释放,实现对象自动初始化释放,实现对象自动初始化释放,实现对象自动初始化释放,实现对象自动初始化释放,实现对象自动初始化释放,实现对象自动初始化释放; 3.静态成员静态成员,实现数据共享,实现数据共享,实现数据共享,实现数据共享,实现数据共享;静态成员函数功能静态成员函数功能静态成员函数功能静态成员函数功能静态成员函数功能:计算N个学生的某科成绩总分平均个学生的某科成绩总分平均个学生的某科成绩总分平均个学生的某科成绩总分平均个学生的某科成绩总分平均个学生的某科成绩总分平均个学生的某科成绩总分平均分。 4.友元函数友元函数友元函数友元函数,实现非函数对私有据的访问功能,实现非函数对私有据的访问功能,实现非函数对私有据的访问功能,实现非函数对私有据的访问功能,实现非函数对私有据的访问功能,实现非函数对私有据的访问功能,实现非函数对私有据的访问功能,实现非函数对私有据的访问功能,实现非函数对私有据的访问功能;友元函数功能:计算任友元函数功能:计算任友元函数功能:计算任友元函数功能:计算任友元函数功能:计算任友元函数功能:计算任友元函数功能:计算任两个学生的某科成绩差。两个学生的某科成绩差。两个学生的某科成绩差。两个学生的某科成绩差。两个学生的某科成绩差。 5.友元,实现友元,实现友元,实现友元,实现友元,实现TeacherTeacherTeacher与StudentStudentStudent静态数据共享静态数据共享静态数据共享静态数据共享;友元函数功能:通过班号友元函数功能:通过班号友元函数功能:通过班号友元函数功能:通过班号友元函数功能:通过班号友元函数功能:通过班号提取某班科成绩总分平均。提取某班科成绩总分平均。提取某班科成绩总分平均。提取某班科成绩总分平均。提取某班科成绩总分平均。提取某班科成绩总分平均。提取某班科成绩总分平均。 6.派生,实现访问基保护成员的功能派生,实现访问基保护成员的功能派生,实现访问基保护成员的功能派生,实现访问基保护成员的功能派生,实现访问基保护成员的功能派生,实现访问基保护成员的功能派生,实现访问基保护成员的功能派生,实现访问基保护成员的功能派生,实现访问基保护成员的功能派生,实现访问基保护成员的功能;派生函数功能:根据某个学总分派生函数功能:根据某个学总分派生函数功能:根据某个学总分派生函数功能:根据某个学总分派生函数功能:根据某个学总分派生函数功能:根据某个学总分派生函数功能:根据某个学总分派生函数功能:根据某个学总分派生函数功能:根据某个学总分计算等级。计算等级。 7.虚函数虚函数,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值