题目要求
已有一个日期类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;
int month;
int day;
public:
// Date 类构造函数,用于初始化 year、month 和 day 成员变量
Date(int y,int mon,int d):year(y),month(mon),day(d){}
// 输出日期信息
void showdate(){cout<<" "<<year<<"/"<<month<<"/"<<day;}
};
// 定义 Time 类
class Time{
protected:
int hour;
int minute;
int second;
public:
// Time 类构造函数,用于初始化 hour、minute 和 second 成员变量
Time(int h,int min,int s):hour(h),minute(min),second(s){}
// 输出时间信息
void showtime(){cout<<" "<<hour<<":"<<minute<<":"<<second;}
};
// 定义 Schedule 类,继承 Date 和 Time 类
class Schedule:public Date,public Time{
int ID;//日程的ID
public:
// 重载小于号运算符,判断当前日程时间是否早于 s2
bool operator < (const Schedule & s2);
// Schedule 类构造函数,用于初始化 ID、year、month、day、hour、minute 和 second 成员变量
Schedule(int id,int y,int mon,int d,int h,int min,int s):Date(y,mon,d),Time(h,min,s),ID(id){}
// 输出日程信息
void show();
};
// 重载小于号运算符
bool Schedule::operator < (const Schedule & s2){
if(year<s2.year)
return 1;
else if(year>s2.year)
return 0;
else{
if(month<s2.month)
return 1;
else if(month>s2.month)
return 0;
else{
if(day<s2.day)
return 1;
else if(day>s2.day)
return 0;
else {
if(hour<s2.hour)
return 1;
else if(hour>s2.hour)
return 0;
else{
if(minute<s2.minute)
return 1;
else if(minute>s2.minute)
return 0;
else {
if(second<s2.second)
return 1;
else
return 0;
}
}
}
}
}
}
// 输出日程信息
void Schedule::show(){
cout<<"No."<<ID<<":";
Date::showdate();
Time::showtime();
}
// 主函数入口
int main()
{
int id,y,mon,d,h,min,s,i=0;
// 初始化 s2 日程对象,用于保存最早需要安排的日程对象
Schedule s2(0,9999,9999,9999,999,999,99);
while(1)
{
cin>>id;
if(id==0)
break;
i++;
scanf("%d/%d/%d",&y,&mon,&d);
scanf("%d:%d:%d",&h,&min,&s);
// 创建 Schedule 对象 s1,并初始化它的 ID、日期和时间成员变量
Schedule s1(id,y,mon,d,h,min,s);
// 如果当前日程比之前最早需要安排的日程更早,就更新 s2 日程对象
if(s1<s2)
s2=s1;
}
// 如果有输入的日程,输出最早需要安排的日程对象的信息
if(i!=0)
{
cout<<"The urgent schedule is ";
s2.show();
}
return 0;
}