7-3 日程安排(多重继承+重载) (30 分)

  • Post author:
  • Post category:其他


已有一个日期类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;
class Date{
 protected:
 int year;
 int month;
 int day;
 public:
  Date(int y,int mon,int d):year(y),month(mon),day(d){  }
  void showdate(){cout<<" "<<year<<"/"<<month<<"/"<<day;
  }
};
class Time{
 protected:
 int hour;
 int minute;
 int second;
 public:
  Time(int h,int min,int s):hour(h),minute(min),second(s){  }
  void showtime(){cout<<" "<<hour<<":"<<minute<<":"<<second;}
};
class Schedule:public Date,public Time{
 int ID;//日程的ID
 public:
  bool operator < (const Schedule & s2);//判断当前日程时间是否早于s2
  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;
 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,y,mon,d,h,min,s);
 if(s1<s2)
 s2=s1;
 }
 if(i!=0)
 {cout<<"The urgent schedule is ";s2.show();}
 return 0;
}



版权声明:本文为weixin_44767769原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。