实验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

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

 

Sample Input

3 1982 10 1 0 0 0 2000 2 28 23 59 59 2014 7 2 13 30 01

Sample Output

CREATE Time : (0, 0, 0) CREATE Date : (1, 1, 1) CREATE DateTime : (1, 1, 1, 0, 0, 0) 0001-01-01 00:00:00 1982-10-01 00:00:00 2000-02-28 23:59:59 2014-07-02 13:30:01

HINT

 

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

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

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

 

 

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 }

 

posted @ 2016-04-12 19:11  一一一匹马赛克儿  阅读(574)  评论(0编辑  收藏  举报