Date_Time(多继承)

描述

1、定义日期“Date”类,类中包含数据成员年、月、日,成员函数包括构造函数(只有带参的构造函数),设置日期,或取年、月、日,显示年、月、日等  

2、定义时间“Time”类,数据成员包括时分秒。成员函数的要求同date类

3、定义日期时间型“Date_Time”类

⑴公有继承Date类及Time类;

⑵不增加数据成员;  

⑶增加日期时间处理成员函数,包括初始化日期时间、设置日期时间、显示日期时间等。在

4、每个类都要求重载>> 和<<运算符< span="">

5.对Date_Time,重载〉运算符。

6. 编写main()函数进行测试。在主函数中,输入两个Date_Time类的数据,按照时间从小到大的顺序输出两个时间信息。

 

输入

输入年、月、日、时、分、秒。
输入年、月、日、时、分、秒。

输出

输出年、月、日、时、分、秒。
输出年、月、日、时、分、秒。

样例输入

2019 3 4 12 23 23
2018 4 3 11 11 11

样例输出

2018 4 3 11 11 11
2019 3 4 12 23 23

 

#include <iostream>
#include <cstdio>
using namespace std;
class Date
{
protected:
    int mouth,day,year;
public:
    Date(int a,int b,int c):year(a),mouth(b),day(c){}
};
class Time
{
protected:
    int hour,second,minute;
public:
    Time(int a,int b,int c):hour(a),minute(b),second(c){}
};
class Date_Time:public Date,Time
{
public:
    friend ostream &operator <<(ostream &out,Date_Time &obj){
        out<<obj.year<<" "<<obj.mouth<<" "<<obj.day<<" "<<obj.hour<<" "
        <<obj.minute<<" "<<obj.second<<endl;
    }
    friend istream &operator >>(istream &in,Date_Time &obj){
        in>>obj.year>>obj.mouth>>obj.day>>obj.hour>>obj.minute>>obj.second;
    }
    Date_Time(int a,int b,int c,int d,int e,int f):Date(a,b,c),Time(d,e,f){}
    const bool operator >(Date_Time &b)
    const{
        if(year!=b.year) return year<b.year;
        if(mouth!=b.mouth) return mouth<b.mouth;
        if(day!=b.day) return day<b.day;
        if(hour!=b.hour) return hour<b.hour;
        if(minute!=b.minute) return minute<b.minute;
        if(second!=b.second) return second<b.second;
        return true;
    }
};
int main()
{
    Date_Time a(0,0,0,0,0,0);
    cin>>a;
    int _[6];
    for(int i=0;i<6;i++) cin>>_[i];
    Date_Time b(_[0],_[1],_[2],_[3],_[4],_[5]);
    if(a>b) swap(a,b);
    cout<<b<<a;
    return 0;
}

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是实现您所需的代码: ```cpp #include <iostream> #include <iomanip> using namespace std; class Date { public: Date(int year = 0, int month = 0, int day = 0) : year_(year), month_(month), day_(day) {} friend istream& operator>>(istream& in, Date& date); friend ostream& operator<<(ostream& out, const Date& date); void SetDate(int year, int month, int day) { year_ = year; month_ = month; day_ = day; } int GetYear() const { return year_; } int GetMonth() const { return month_; } int GetDay() const { return day_; } private: int year_; int month_; int day_; }; istream& operator>>(istream& in, Date& date) { in >> date.year_ >> date.month_ >> date.day_; return in; } ostream& operator<<(ostream& out, const Date& date) { out << setfill('0') << setw(4) << date.year_ << "-" << setw(2) << date.month_ << "-" << setw(2) << date.day_; return out; } class Time { public: Time(int hour = 0, int minute = 0, int second = 0) : hour_(hour), minute_(minute), second_(second) {} friend istream& operator>>(istream& in, Time& time); friend ostream& operator<<(ostream& out, const Time& time); void SetTime(int hour, int minute, int second) { hour_ = hour; minute_ = minute; second_ = second; } int GetHour() const { return hour_; } int GetMinute() const { return minute_; } int GetSecond() const { return second_; } private: int hour_; int minute_; int second_; }; istream& operator>>(istream& in, Time& time) { in >> time.hour_ >> time.minute_ >> time.second_; return in; } ostream& operator<<(ostream& out, const Time& time) { out << setfill('0') << setw(2) << time.hour_ << ":" << setw(2) << time.minute_ << ":" << setw(2) << time.second_; return out; } class Date_Time : public Date, public Time { public: Date_Time(int year = 0, int month = 0, int day = 0, int hour = 0, int minute = 0, int second = 0) : Date(year, month, day), Time(hour, minute, second) {} friend istream& operator>>(istream& in, Date_Time& datetime); friend ostream& operator<<(ostream& out, const Date_Time& datetime); friend bool operator>(const Date_Time& datetime1, const Date_Time& datetime2); void SetDateTime(int year, int month, int day, int hour, int minute, int second) { SetDate(year, month, day); SetTime(hour, minute, second); } }; istream& operator>>(istream& in, Date_Time& datetime) { in >> static_cast<Date&>(datetime) >> static_cast<Time&>(datetime); return in; } ostream& operator<<(ostream& out, const Date_Time& datetime) { out << static_cast<const Date&>(datetime) << " " << static_cast<const Time&>(datetime); return out; } bool operator>(const Date_Time& datetime1, const Date_Time& datetime2) { if (datetime1.GetYear() > datetime2.GetYear()) { return true; } else if (datetime1.GetYear() < datetime2.GetYear()) { return false; } else { if (datetime1.GetMonth() > datetime2.GetMonth()) { return true; } else if (datetime1.GetMonth() < datetime2.GetMonth()) { return false; } else { if (datetime1.GetDay() > datetime2.GetDay()) { return true; } else if (datetime1.GetDay() < datetime2.GetDay()) { return false; } else { if (datetime1.GetHour() > datetime2.GetHour()) { return true; } else if (datetime1.GetHour() < datetime2.GetHour()) { return false; } else { if (datetime1.GetMinute() > datetime2.GetMinute()) { return true; } else if (datetime1.GetMinute() < datetime2.GetMinute()) { return false; } else { if (datetime1.GetSecond() > datetime2.GetSecond()) { return true; } else { return false; } } } } } } } int main() { Date_Time datetime1, datetime2; cout << "Please input the first datetime (yyyy-MM-dd hh:mm:ss): "; cin >> datetime1; cout << "Please input the second datetime (yyyy-MM-dd hh:mm:ss): "; cin >> datetime2; if (datetime1 > datetime2) { cout << datetime2 << " " << datetime1 << endl; } else { cout << datetime1 << " " << datetime2 << endl; } return 0; } ``` 上述代码实现了日期、时间、日期时间型三个类,并重载了输入输出运算符以及比较运算符。其中日期和时间的输入输出运算符实现很简单,直接使用了流输入输出。日期时间型的输入输出运算符则将输入分别交给日期和时间输入运算符处理,输出则将日期和时间输出运算符的结果拼接起来。 比较运算符的实现比较繁琐,需要逐个比较年、月、日、时、分、秒,直到找到不同之处或者比较完毕。在比较时,我们先比较年,如果年相同则比较月,以此类推。这种比较方式可以确保按照时间从小到大的顺序输出两个时间信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值