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

    每组测试数据对应一行输出。日期的输出格式为“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

    1000-10-10 01:01:01 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 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 }
    向代码最深处出发~!
  • 相关阅读:
    初窥RabbitMQ消息中间及SpringBoot整合
    博客园页面嵌入左下角小女孩
    不依赖Spring使用AspectJ达到AOP面向切面编程
    彻底搞懂计算机网络通信设备与协议
    博客园如何嵌入网易云音乐播放器
    并发编程之详解InheritableThreadLocal类原理
    2小时学会Spring Boot(IDE:eclipse)
    $.Ajax、$.Get、$.Post代码实例参数解析
    设计模式之空对象模式
    设计模式之黑板模式
  • 原文地址:https://www.cnblogs.com/auto1945837845/p/5383899.html
Copyright © 2020-2023  润新知