实验6:Problem E: 时间和日期类(III)
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::showDateTime()方法:按格式输出DateTime对象;
DateTime::setDateTime(int,int,int,int,int,int)方法:依照参数(顺序为年月日、时分秒)修改对象的属性值;
DateTime类包含了两个类:Date类和Time类
设计日期类Date需支持以下操作:
Date::Date()无参构造方法:初始化为1年1月1日
Date::Date(int,int,int)构造方法:传入的参数依次为年月日,用参数将日期初始化。
在Date类的构造函数中输出:“CREATE 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::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 #include<iostream> 2 #include<iomanip> 3 using namespace std; 4 class Time{ 5 friend class DateTime; 6 private: 7 int h,m,s; 8 public: 9 Time(int hh=0,int mm=0,int ss=0):h(hh),m(mm),s(ss){cout<<"CREATE Time : ("<<h<<", "<<m<<", "<<s<<")"<<endl;} 10 void showTime(){cout<<setw(2)<<setfill('0')<<h<<":"<<setw(2)<<setfill('0')<<m<<":"<<setw(2)<<setfill('0')<<s;} 11 void setTime(int a,int b,int c){h=a;m=b;s=c;} 12 }; 13 class Date{ 14 friend class DateTime; 15 private: 16 int y,m,d; 17 public: 18 Date(int yy=1,int mo=1,int dd=1):y(yy),m(mo),d(dd){cout<<"CREATE Date : ("<<y<<", "<<m<<", "<<d<<")"<<endl;} 19 void showDate(){cout<<setw(4)<<setfill('0')<<y<<"-"<<setw(2)<<setfill('0')<<m<<"-"<<setw(2)<<setfill('0')<<d<<" ";} 20 void setDate(int a,int b,int c){y=a;m=b;d=c;} 21 }; 22 class DateTime{ 23 friend class Date; 24 friend class Time; 25 private: 26 Time t; 27 Date d; 28 public: 29 DateTime(){cout<<"CREATE DateTime : ("<<d.y<<", "<<d.m<<", "<<d.d<<", "<<t.h<<", "<<t.m<<", "<<t.s<<")"<<endl;} 30 DateTime(const Date& D,const Time& T){d=D;t=T;cout<<"CREATE DateTime : ("<<d.y<<", "<<d.m<<", "<<d.d<<") ("<<t.h<<", "<<t.m<<", "<<t.s<<")"<<endl;} 31 DateTime(int yy,int mo,int dd,int hh,int mm,int ss):d(yy,mo,dd),t(hh,mm,ss){cout<<"CREATE DateTime : ("<<d.y<<", "<<d.m<<", "<<d.d<<", "<<t.h<<", "<<t.m<<", "<<t.s<<")"<<endl;} 32 void showDateTime(){d.showDate();t.showTime();} 33 DateTime& setDateTime(int yy,int mo,int dd,int hh,int mm,int ss){d.setDate(yy,mo,dd);t.setTime(hh,mm,ss);return *this;} 34 }; 35 int main() 36 { 37 DateTime date_time; 38 date_time.showDateTime(); 39 cout << endl; 40 int cases; 41 cin >> cases; 42 for(int ca = 0; ca < cases; ca++) 43 { 44 int year, month, day; 45 cin >> year >> month >> day; 46 int hour, minute, second; 47 cin >> hour >> minute >> second; 48 date_time.setDateTime(year, month, day, hour, minute, second); 49 date_time.showDateTime(); 50 cout << endl; 51 } 52 }