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
3 1982 10 1 0 0 0 2000 2 28 23 59 59 2014 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 1 1982-10-01 00:00:00 2000-02-28 23:59:59 2014-07-02 13:30:01
HINT
Append Code
#include <iostream> #include <iomanip> using namespace std; class Date { public : int year , month, day; Date(int a=1, int b=1, int c=1):year(a), month(b), day(c) { 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; } void setDate(int a, int b, int c) { year=a; month=b; day=c; } void showDate() { cout<<setw(4)<<setfill('0')<<year<<"-"<<setw(2)<<setfill('0')<<month<<"-"<<setw(2)<<setfill('0')<<day; } }; class Time { public: int h, m, s; Time(int a=0, int b=0, int c=0):h(a), m(b), s(c) { cout<<"CREATE Time : ("<<h<<", "<<m<<", "<<s<<")"<<endl; } Time(const Time &p) { h=p.h; m=p.m; s=p.s; cout<<"COPY Time : ("<<h<<", "<<m<<", "<<s<<")"<<endl; } void setTime(int a, int b, int c) { h=a; m=b; s=c; } void showTime() { cout<<setw(2)<<setfill('0')<<h<<":"<<setw(2)<<setfill('0')<<m<<":"<<setw(2)<<setfill('0')<<s; } }; class DateTime { public : Time time; Date date;//为了copy顺序,竟然要把定义顺序都改了,无语 int year()const{return date.year;} int month()const{return date.month;} int day()const{return date.day;} int hour()const{return time.h;} int minute()const{return time.m;} int second()const{return time.s;} int year(int a){date.year=a;} int month(int a){date.month=a;} int day(int a){date.day=a;} int hour(int a){time.h=a;} int minute(int a){time.m=a;} int second(int a){time.s=a;} DateTime():date(1,1,1), time(0,0,0) { cout<<"CREATE DateTime : ("<<date.year<<", "<<date.month<<", "<<date.day<<", "<<time.h<<", "<<time.m<<", "<<time.s<<")"<<endl; } DateTime(int a, int b, int c, int d, int e, int f):date(a,b,c), time(d,e,f) { cout<<"CREATE DateTime : ("<<date.year<<", "<<date.month<<", "<<date.day<<", "<<time.h<<", "<<time.m<<", "<<time.s<<")"<<endl; } DateTime(const Date &p1, const Time &p2): time(p2),date(p1) { cout<<"CREATE DateTime : ("<<date.year<<", "<<date.month<<", "<<date.day<<")("<<time.h<<", "<<time.m<<", "<<time.s<<")"<<endl; } DateTime(const DateTime &p):time(p.time),date(p.date) { cout<<"COPY DateTime : ("<<date.year<<", "<<date.month<<", "<<date.day<<")("<<time.h<<", "<<time.m<<", "<<time.s<<")"<<endl; } DateTime setDateTime(int a, int b, int c, int d, int e, int f) { date.year=a; date.month=b; date.day=c; time.h=d; time.m=e; time.s=f; return *this; } void showDateTime() { cout<<setw(4)<<setfill('0')<<date.year<<"-"<<setw(2)<<setfill('0')<<date.month<<"-"<<setw(2)<<setfill('0')<<date.day<<" "<<setw(2)<<setfill('0')<<time.h<<":"<<setw(2)<<setfill('0')<<time.m<<":"<<setw(2)<<setfill('0')<<time.s; } }; 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; } }