【问题描述】
编程定义日期类Date和时间类Time,Date类的数据成员为年、月、日,Time类则为时、分、秒。Date和Time类共同派生出日期时间类DateTime类。部分代码见代码区。请分析代码功能、设计各类并完善程序,使给出的程序代码正确执行。
Date类中数据输出格式:cout << year << "/" << month << "/" << day << endl;
Time类中数据输出格式:cout << hour << ":" << minute << ":" << second << endl;
如程序中的一个交互输出为:
2020/4/4
10:0:0
请输入日期(年 月日):2021 3 5
请输入时间(小时 分钟 秒):12 12 36
2021/3/5
12:12:36
2020/4/4
12:47:56
【上机代码】
#include <iostream>
using namespace std;
class Date
{
public:
int year,month,day;
Date(int y=2021,int mon=1,int d=1)
{
year = y;
month = mon;
day = d;
}
void Display()
{
cout << year << "/" << month << "/" << day << endl;
}
};
class Time
{
public:
int hour,minute,second;
Time(int h=12,int m=0,int s=0)
{
hour = h;
minute = m,
second = s;
}
void Display()
{
cout << hour << ":" << minute << ":" << second << endl;
}
};
class DateTime:public Date,public Time
{
private:
Date date;
Time time;
public:
DateTime(){};
DateTime(Date da, Time ti):date(da),time(ti){};
DateTime(int y,int mon,int d,int h,int m,int s):date(Date(y,mon,d)),time(Time(h,m,s)){};
void Display()
{
date.Display();
time.Display();
}
void SetDateTime(int y,int mon,int d,int h,int m,int s)
{
date=Date(y,mon,d);
time=Time(h,m,s);
}
};
void InputDateTime(Date& da, Time& ti)
{
cout << "请输入日期(年 月日):";
cin >> da.year >> da.month >> da.day;
cout << "请输入时间(小时 分钟 秒):";
cin >> ti.hour >> ti.minute >> ti.second;
}
int main()
{
Date da;
Time ti;
DateTime dt1(2020, 4, 4, 10, 0, 0);
dt1.Display();
InputDateTime(da, ti);
DateTime dt2(da, ti);
dt2.Display();
DateTime dt3;
dt3.SetDateTime(2020, 4, 4, 12, 47, 56);
dt3.Display();
return 0;
}