实验6:Problem D: 时间和日期类(II)
Description
设计一个日期时间类,用于读取输入的数据,按格式输出日期和时间。
设计日期时间类DateTime由2个成员组成,分别是一个Date类对象和一个Time类对象;
设计DateTime类需支持以下操作:
DateTime::DateTime()无参构造方法:初始化为1年1月1日、0时0分0秒;
DateTime::DateTime(const Date&,const Time&)构造方法:依照参数传入的日期和时间初始化对象;
DateTime::DateTime(int,int,int,int,int,int)构造方法:依照参数(顺序为年月日、时分秒)初始化对象;
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::showDate()方法:按格式输出Date对象。
Date::setDate(int,int,int)方法:传入的参数依次为年月日,用参数修改对象的属性值
设计时间类Time需支持以下操作:
Time::Time()无参构造方法:初始化为0时0分0秒
Time::Time(int,int,int)构造方法:传入的参数依次为时分秒,用参数将时间初始化。
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 Date{ 5 friend class DateTime; 6 private: 7 int y,m,d; 8 public: 9 Date():y(1),m(1),d(1){} 10 Date(int yy,int mo,int dd):y(yy),m(mo),d(dd){} 11 void showDate(){cout<<setw(4)<<setfill('0')<<y<<"-"<<setw(2)<<setfill('0')<<m<<"-"<<setw(2)<<setfill('0')<<d<<" ";} 12 void setDate(int a,int b,int c){y=a;m=b;d=c;} 13 }; 14 class Time{ 15 friend class DateTime; 16 private: 17 int h,m,s; 18 public: 19 Time():h(0),m(0),s(0){} 20 Time(int hh,int mm,int ss):h(hh),m(mm),s(ss){} 21 void showTime(){cout<<setw(2)<<setfill('0')<<h<<":"<<setw(2)<<setfill('0')<<m<<":"<<setw(2)<<setfill('0')<<s;} 22 void setTime(int a,int b,int c){h=a;m=b;s=c;} 23 }; 24 class DateTime{ 25 friend class Date; 26 friend class Time; 27 private: 28 Date d; 29 Time t; 30 public: 31 DateTime(){} 32 DateTime(const Date& D,const Time& T){d=D;t=T;} 33 DateTime(int yy,int mo,int dd,int hh,int mm,int ss):d(yy,mo,dd),t(hh,mm,ss){} 34 void showDateTime(){d.showDate();t.showTime();} 35 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;} 36 }; 37 int main() 38 { 39 Date date(1000, 10, 10); 40 Time time(1, 1, 1); 41 DateTime date_time(date, time); 42 date_time.showDateTime(); 43 cout << endl; 44 int cases, flag = 0; 45 cin >> cases; 46 for(int ca = 0; ca < cases; ca++) 47 { 48 int year, month, day; 49 cin >> year >> month >> day; 50 int hour, minute, second; 51 cin >> hour >> minute >> second; 52 if(flag == 0) 53 { 54 flag = 1; 55 DateTime dt(year, month, day, hour, minute, second); 56 dt.showDateTime(); 57 } 58 else if(flag == 1) 59 { 60 flag == 0; 61 date_time.setDateTime(year, month, day, hour, minute, second).showDateTime(); 62 } 63 cout << endl; 64 } 65 }