Problem D: 时间和日期类(IV)

Problem D: 时间和日期类(IV)

Time Limit: 4 Sec   Memory Limit: 128 MB
Submit: 3785   Solved: 2247
[ Submit][ Status][ Web Board]

Description

设计一个日期时间类,用于读取输入的数据,按格式输出日期和时间。

设计日期时间类DateTime由2个成员组成,分别是一个Date类对象和一个Time类对象;

设计DateTime类需支持以下操作:

DateTime::DateTime()无参构造方法:初始化为1年1月1日、0时0分0秒;

DateTime::DateTime(int,int,int,int,int,int)构造方法:依照参数(顺序为年月日、时分秒)初始化对象;

在上述两个DateTime类的构造函数中输出:“CREATE DateTime : (y, m, d, hh, mm, ss)”,其中y、m、d为初始化对象时的年月日值,h、m、s为初始化对象时的时分秒值。参见输出。

DateTime::DateTime(const Date&,const Time&)构造方法:依照参数传入的日期和时间初始化对象;

在这个DateTime类的构造函数中输出:“CREATE DateTime : (y, m, d) (hh, mm, ss)”,其中y、m、d为初始化对象时的年月日值,h、m、s为初始化对象时的时分秒值。参见输出。

DateTime:DateTime(const DateTime&)构造方法:拷贝构造函数,初始化对象。

在拷贝构造函数中输出:“COPY   DateTime : (y, m, d) (hh, mm, ss)”,其中y、m、d为初始化对象时的年月日值,h、m、s为初始化对象时的时分秒值。参见输出。

DateTime::showDateTime()方法:按格式输出DateTime对象;

DateTime::setDateTime(int,int,int,int,int,int)方法:依照参数(顺序为年月日、时分秒)修改对象的属性值;

编写DateTime类的读写函数:year()、month()、day()、hour()、minute()、second()。读写函数的参数、返回值参见main()函数。

DateTime类包含了两个类:Date类和Time类

设计日期类Date需支持以下操作:

Date::Date()无参构造方法:初始化为1年1月1日

Date::Date(int,int,int)构造方法:传入的参数依次为年月日,用参数将日期初始化。

在Date类的构造函数中输出:“CREATE Date : (y, m, d)”,其中y、m、d为初始化对象时的年月日值。参见输出。

Date::Date(const Date&)构造方法:拷贝构造函数,初始化对象。

在拷贝构造函数中输出:“COPY   Date : (y, m, d)”,其中y、m、d为初始化对象时的年月日值。参见输出。

Date::showDate()方法:按格式输出Date对象。

Date::setDate(int,int,int)方法:传入的参数依次为年月日,用参数修改对象的属性值

设计时间类Time需支持以下操作:

Time::Time()无参构造方法:初始化为0时0分0秒

Time::Time(int,int,int)构造方法:传入的参数依次为时分秒,用参数将时间初始化。

在Time类的构造函数中输出:“CREATE Time : (h, m, s)”,其中h、m、s为初始化对象时的时分秒值。参见输出

Time::Time(const Time&)构造方法:拷贝构造函数,初始化对象。

在拷贝构造函数中输出:“COPY   Time : (h, m, s)”,其中h、m、s为初始化对象时的时分秒值。参见输出

Time::showTime()方法:按格式输出Time对象。

Time::setTime(int,int,int)方法:传入的参数依次为时分秒,用参数修改对象的属性值

-----------------------------------------------------------------------------

你设计DateTime类、Date类和Time类,使得main()函数能够正确运行。

函数调用格式见append.cc。

append.cc中已给出main()函数。

Input

输入的第一个整数n,表示有n组测试数据。

后面的输入每行为一组测试数据。每组测试数据的前3个整数是日期的年月日,后3个整数是时间的时分秒。

Output

每组测试数据对应一行输出。日期的输出格式为“yyyy-mm-dd”,时间的输出格式为“hh:mm:ss”,中间用一个空格分开。

Sample Input

31982 10 1 0 0 02000 2 28 23 59 592014 7 2 13 30 01

Sample Output

CREATE Date : (1000, 10, 10)COPY Date : (1000, 10, 10)CREATE Time : (1, 1, 1)COPY Time : (1, 1, 1)COPY Time : (1, 1, 1)COPY Date : (1000, 10, 10)CREATE DateTime : (1000, 10, 10) (1, 1, 1)COPY Time : (1, 1, 1)COPY Date : (1000, 10, 10)COPY DateTime : (1000, 10, 10) (1, 1, 1)DateTime : 1000 10 10 1 1 11982-10-01 00:00:002000-02-28 23:59:592014-07-02 13:30:01

HINT

输出格式用头文件<iomanip>中流操作算子:

setw(w)   :设置数据的输出宽度为w个字符

setfill(c):设置用字符c作为填充字符


Append Code

[ Submit][ Status][ Web Board]
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include <iostream> 
#include <algorithm> 
#include <iomanip> 
using namespace std; 
   
   
class Time{ 
    private
       friend class DateTime; 
       int hh,mm,ss; 
    public
       Time():hh(0),mm(0),ss(0){ 
           cout<< "CREATE Time : (" <<hh<< ", " <<mm<< ", " <<ss<< ")" <<endl; 
      
       Time( int a, int b, int c):hh(a),mm(b),ss(c){ 
            cout<< "CREATE Time : (" <<hh<< ", " <<mm<< ", " <<ss<< ")" <<endl; 
      
       Time( const Time &p):hh(p.hh),mm(p.mm),ss(p.ss){ 
           cout<< "COPY   Time : (" <<hh<< ", " <<mm<< ", " <<ss<< ")" <<endl; 
      
       Time &setTime( int a, int b, int c){hh=a;mm=b;ss=c; return * this ;} 
       void showTime(){ 
         cout<<setw(2)<<setfill( '0' )<<hh<< ":" <<setw(2)<<setfill( '0' )<<mm<< ":" <<setw(2)<<setfill( '0' )<<ss; 
      
       ~Time(){} 
}; 
   
class Date{ 
    private
        friend class DateTime; 
        int year,month,day; 
    public
        Date():year(1),month(1),day(1){ 
            cout<< "CREATE Date : (" <<year<< ", " <<month<< ", " <<day<< ")" <<endl; 
       
        Date( const Date &p):year(p.year),month(p.month),day(p.day){ 
   
           cout<< "COPY   Date : (" <<year<< ", " <<month<< ", " <<day<< ")" <<endl; 
      
        Date( int a, int b, int c):year(a),month(b),day(c){ 
           cout<< "CREATE Date : (" <<year<< ", " <<month<< ", " <<day<< ")" <<endl; 
       
        Date &setDate( int a, int b, int c){year=a;month=b;day=c; return * this ;} 
        void showDate() { 
            cout<<setfill( '0' )<<setw(4)<<year<< "-" <<setfill( '0' )<<setw(2)<<month<< "-" <<setfill( '0' )<<setw(2)<<day<< " "
       
        ~Date(){} 
}; 
   
   
   
class DateTime{ 
    private
        friend class Date; 
        friend class Time; 
        Time T; 
        Date D; 
        int year1,month1,day1,hh1,mm1,ss1; 
    public
        DateTime(){ 
          cout<< "CREATE DateTime : (" <<D.year<< ", " <<D.month<< ", " <<D.day<< ", " <<T.hh<< ", " <<T.mm<< ", " <<T.ss<< ")" <<endl; 
       
        DateTime( const Date& d, const Time& t):D(d),T(t){ 
          cout<< "CREATE DateTime : (" <<D.year<< ", " <<D.month<< ", " <<D.day<< ") (" <<T.hh<< ", " <<T.mm<< ", " <<T.ss<< ")" <<endl; 
       
        DateTime( const DateTime& p):T(p.T),D(p.D){ 
         cout<< "COPY   DateTime : (" <<D.year<< ", " <<D.month<< ", " <<D.day<< ") (" <<T.hh<< ", " <<T.mm<< ", " <<T.ss<< ")" <<endl; 
       
        DateTime( int a, int b, int c, int d, int e, int f):D(a,b,c),T(d,e,f){ 
       
        int const year( int year1){D.year=year1;} 
        int const year() const { return D.year;} 
        int const month( int month1){D.month=month1;} 
        int const month() const { return D.month;} 
        int const day( int day1){D.day=day1;} 
        int const day() const { return D.day;} 
        int const hour( int hh1){T.hh=hh1;} 
        int const hour() const { return T.hh;} 
        int const minute( int mm1){T.mm=mm1;} 
        int const minute() const { return T.mm;} 
        int const second( int ss1){T.ss=ss1;} 
        int const second() const { return T.ss;} 
        void showDateTime(){ 
          D.showDate();  T.showTime(); 
       
        DateTime &setDateTime( int a, int b, int c, int d, int e, int f){ 
            D.setDate(a,b,c);T.setTime(d,e,f); return * this
       
        ~DateTime(){} 
}; 
   
int main()
{
     const Date date(1000, 10, 10), dt(date);
     const Time time (1, 1, 1), tm ( time );
     DateTime date_time(dt, tm );
     const DateTime cnt(date_time);
     cout << "DateTime : " << cnt.year() << " " << cnt.month() << " " << cnt.day();
     cout << " " << cnt.hour() << " " << cnt.minute() << " " << cnt.second();
     cout << endl;
     int cases;
     cin >> cases;
     for ( int ca = 0; ca < cases; ca++)
     {
         int year, month, day;
         cin >> year >> month >> day;
         int hour, minute, second;
         cin >> hour >> minute >> second;
         date_time.year(year);
         date_time.month(month);
         date_time.day(day);
         date_time.hour(hour);
         date_time.minute(minute);
         date_time.second(second);
         date_time.showDateTime();
         cout << endl;
     }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值