题1】已有类 Time和Date,要求设计一个派生类Birthtime,它是Time和Date的公有派生类,新增一个数据成员childName用于表示小孩的名字,设计主程序显示一个小孩的名字和出生日期时间。数据通过键盘输入,需要判断输入的年月日时分秒是否有效。Time与Date的成员见教材上习题4.21。 输入样例: 赵无忌 2017 8 35 2017 8 25 25 45 68 23 45 23 输出样例: 日期输入错误!请重新输入数据! 时间输入错误!请重新输入数据! 姓名:赵无忌 出生年月:2017年8月25日 出生时间:23时45分23秒 赵无忌 2017 2 29 2017 2 28 25 63 23 15 23 53 日期输入错误!请重新输入数据! 时间输入错误!请重新输入数据! 姓名:赵无忌 出生年月:2017年2月28日 出生时间:15时23分53秒 赵飞燕 2013 45 62 2013 45 23 2013 12 23 6 5 23 日期输入错误!请重新输入数据! 日期输入错误!请重新输入数据! 姓名:赵飞燕 出生年月:2013年12月23日 出生时间:6时5分23秒 曹冲 2010 23 24 2010 12 31 25 56 63 25 35 36 15 36 35 日期输入错误!请重新输入数据! 时间输入错误!请重新输入数据! 时间输入错误!请重新输入数据! 姓名:曹冲 出生年月:2010年12月31日 出生时间:15时36分35秒 赵飞燕 2000 2 29 23 14 25 姓名:赵飞燕 出生年月:2000年2月29日 出生时间:23时14分25秒
时间: 2023-11-22 11:54:01 浏览: 205
```cpp
#include <iostream>
using namespace std;
class Time {
protected:
int hour, minute, second;
public:
Time(int h = 0, int m = 0, int s = 0) {
hour = h;
minute = m;
second = s;
}
void setTime(int h, int m, int s) {
hour = h;
minute = m;
second = s;
}
};
class Date {
protected:
int year, month, day;
public:
Date(int y = 0, int m = 0, int d = 0) {
year = y;
month = m;
day = d;
}
void setDate(int y, int m, int d) {
year = y;
month = m;
day = d;
}
};
class Birthtime : public Time, public Date {
private:
string childName;
public:
Birthtime() {}
Birthtime(string name, int y, int m, int d, int h, int mi, int s) :
Time(h, mi, s), Date(y, m, d) {
childName = name;
}
void setBirthtime(string name, int y, int m, int d, int h, int mi, int s) {
childName = name;
year = y;
month = m;
day = d;
hour = h;
minute = mi;
second = s;
}
void display() {
cout << "姓名:" << childName << endl;
cout << "出生年月:" << year << "年" << month << "月" << day << "日" << endl;
cout << "出生时间:" << hour << "时" << minute << "分" << second << "秒" << endl;
}
};
int main() {
string name;
int y1, m1, d1, h1, mi1, s1;
int y2, m2, d2, h2, mi2, s2;
cout << "请输入姓名、出生年月、出生时间:";
cin >> name >> y1 >> m1 >> d1 >> h1 >> mi1 >> s1;
Birthtime bt;
if (y1 < 0 || m1 < 0 || m1 > 12 || d1 < 0 || d1 > 31 || h1 < 0 || h1 > 23 || mi1 < 0 || mi1 > 59 || s1 < 0 || s1 > 59) {
cout << "日期输入错误!请重新输入数据!" << endl;
return 0;
}
bt.setBirthtime(name, y1, m1, d1, h1, mi1, s1);
bt.display();
cout << endl << "请输入姓名、出生年月、出生时间:";
cin >> name >> y2 >> m2 >> d2 >> h2 >> mi2 >> s2;
if (y2 < 0 || m2 < 0 || m2 > 12 || d2 < 0 || d2 > 31 || h2 < 0 || h2 > 23 || mi2 < 0 || mi2 > 59 || s2 < 0 || s2 > 59) {
cout << "日期输入错误!请重新输入数据!" << endl;
return 0;
}
bt.setBirthtime(name, y2, m2, d2, h2, mi2, s2);
bt.display();
return 0;
}
```
阅读全文