Problem B: 时间和日期类(III)

Time Limit: 4 Sec  Memory Limit: 128 MB
Submit: 2889  Solved: 1732
[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::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

#include <iostream>
#include <iomanip>
using namespace std;
int k=0;
class Time
{
friend class DateTime;
public:
int h,m,s;

Time(int a=0,int b=0,int c=0):h(a),m(b),s(c){}
void showTime()
{
cout<<setw(2)<<setfill('0')<<h<<":"<<setw(2)<<setfill('0')<<m<<":"<<setw(2)<<setfill('0')<<s;
}
Time setTime(int a,int b,int c)
{
*this=Time(a,b,c);
return *this;
}
};
class Date
{
friend class DateTime;
public:
int year,month,day;
Date(int a=1,int b=1,int c=1):year(a),month(b),day(c){}
void showDate()
{
cout<<setw(4)<<setfill('0')<<year<<"-"<<setw(2)<<setfill('0')<<month<<"-"<<setw(2)<<setfill('0')<<day;
}
Date setDate(int a,int b,int c)
{
*this=Date(a,b,c);
return *this;
}
};
class DateTime:public Time,public Date
{
public:
DateTime():Date(1,1,1),Time(0,0,0){cout<<"CREATE Time : ("<<Time::h<<", "<<Time::m<<", "<<Time::s<<")"<<endl;cout<<"CREATE Date : ("<<Date::year<<", "<<Date::month<<", "<<Date::day<<")"<<endl;cout<<"CREATE DateTime : ("<<Date::year<<", "<<Date::month<<", "<<Date::day<<", "<<Time::h<<", "<<Time::m<<", "<<Time::s<<")"<<endl;}
DateTime(const Date &p,const Time &q):Date(p.year,p.month,p.day),Time(q.h,q.m,q.s){}
DateTime(int a,int b,int c,int d,int e,int f):Date(a,b,c),Time(d,e,f){}
void showDateTime()
{
Date::showDate();
cout<<" ";
Time::showTime();
}
DateTime &setDateTime(int a,int b,int c,int d,int e,int f)
{
*this=DateTime(a,b,c,d,e,f);
return *this;
}
};

int main()
{
DateTime date_time;
date_time.showDateTime();
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.setDateTime(year, month, day, hour, minute, second);
date_time.showDateTime();
cout << endl;
}
}

最新文章

  1. Android开发小问题总结
  2. Java基础学习小记--多态
  3. HTML 学习笔记 JavaScript (函数)
  4. 【poj1010】 STAMPS
  5. MyEclipse------execute()使用方法
  6. Quick Trick About Using Dbms_Metadata With Forms_DDL In Oracle Forms
  7. 发布 asp.net网站 到本地IIS
  8. 转载--C++中struct与class
  9. java 去除重复项
  10. CATranstion动画
  11. docker 架构
  12. postgis常用操作手册
  13. Maven CXF wsdl2Java String生成JAXBElement&lt;Xxx&gt; 解决方法
  14. 有没有人曾告诉你,你的SQL又报错了?[开发篇]
  15. JS计算混合字符串长度
  16. 639. Decode Ways II
  17. SpringMVC(二)-- springmvc的系统学习之跳转结果的方式
  18. RHEL6.4 多路径绑定
  19. Jewels and Stones
  20. csrf_execmp

热门文章

  1. 【转】Keberos认证原理
  2. 【BZOJ】1015 [JSOI2008]星球大战starwar(并查集+离线处理)
  3. SQL server2005学习笔记(一)数据库的基本知识、基本操作(分离、脱机、收缩、备份、还原、附加)和基本语法
  4. SpringMVC的一点理解
  5. 关于如何获取iframe中的元素
  6. Linux下将Apache(httpd)新增为系统服务及开机自启动
  7. Spring事务管理配置示例
  8. ASP.NET/MVC 配置log4net启用写错误日志功能
  9. c# 接口实用
  10. 使用IGP和BGP的配合达到降低路由容量目的的实验与总结