Problem D: 时间和日期类(IV)
Time Limit: 4 Sec Memory Limit: 128 MBSubmit: 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
Sample Input
Sample Output
HINT
Append Code
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;
}
}
|