已有一个日期类Date,包括三个protected成员数据
int year;
int month;
int day;
另有一个时间类Time,包括三个protected成员数据
int hour;
int minute;
int second;
现需根据输入的日程的日期时间,安排前后顺序,为此以Date类和Time类为基类,建立一个日程类Schedule,包括以下新增成员:
int ID;//日程的ID
bool operator < (const Schedule & s2);//判断当前日程时间是否早于s2
生成以上类,并编写主函数,根据输入的各项日程信息,建立日程对象,找出需要最早安排的日程,并输出该日程对象的信息。
输入格式: 测试输入包含若干日程,每个日程占一行(日程编号ID 日程日期(****//)日程时间(::**))。当读入0时输入结束,相应的结果不要输出。
输入样例:
1 2014/06/27 08:00:01
2 2014/06/28 08:00:01
0
输出样例:
The urgent schedule is No.1: 2014/6/27 8:0:1
#include <iostream>
using namespace std;
// Date 类定义
class Date {
protected:
int year, month, day; // 年、月、日
public:
// Date 类构造函数,初始化年月日
Date(int y, int m, int d)
: year(y), month(m), day(d) {}
};
// Time 类定义
class Time {
protected:
int hour, minute, second; // 时、分、秒
public:
// Time 类构造函数,初始化时分秒
Time(int h, int m, int s)
: hour(h), minute(m), second(s) {}
};
// Schedule 类定义,公有继承 Date 和 Time 类
class Schedule : public Date, public Time {
int ID; // 日程的ID
public:
// Schedule 类构造函数,初始化日程的ID、日期和时间
Schedule(int i, int y, int m, int d, int h, int mi, int s)
: Date(y, m, d), Time(h, mi, s), ID(i) {}
// 重载小于运算符,用于比较两个日程的时间先后
bool operator<(const Schedule& s2) {
// 按照年月日时分秒的顺序进行比较
if (year < s2.year || (year == s2.year && month < s2.month) || (year == s2.year && month == s2.month && day < s2.day) ||
(year == s2.year && month == s2.month && day == s2.day && hour < s2.hour) ||
(year == s2.year && month == s2.month && day == s2.day && hour == s2.hour && minute < s2.minute) ||
(year == s2.year && month == s2.month && day == s2.day && hour == s2.hour && minute == s2.minute && second < s2.second))
return true;
return false;
}
// 打印日程信息
void printInfo() const {
cout << "The urgent schedule is No." << ID << ": " << year << "/" << month << "/" << day << " " << hour << ":" << minute << ":" << second << endl;
}
};
int main() {
int id, y, m, d, h, mi, s;
Schedule earliestSchedule(0, 9999, 99, 99, 99, 99, 99); // 创建初始值较大的日期时间(不一定要合理)
// 循环读取日程信息
while (cin >> id && id != 0) { // 依次读取日程ID、年、月、日、时、分、秒
char c;
cin >> y >> c >> m >> c >> d >> h >> c >> mi >> c >> s;
// 创建当前日程对象
Schedule currentSchedule(id, y, m, d, h, mi, s);
// 比较当前日程和最早日程,更新最早日程
if (currentSchedule < earliestSchedule) {
earliestSchedule = currentSchedule;
}
}
// 打印最早日程信息
earliestSchedule.printInfo();
return 0;
}