其他分享
首页 > 其他分享> > 日程安排(多重继承+重载)

日程安排(多重继承+重载)

作者:互联网

已有一个日期类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

 

#include<iostream>
#include<iomanip>
#include<math.h>
using namespace std;
class date
{
	protected:
		int year,month,day=0;	
};
class time
{
	protected:
		int hour,minute,second=0;
};
class schedule:public date,time
{
	protected:
		int id;
	public:
		void dis()
		{
			cout<<"The urgent schedule is No."<<id<<": "<<year<<"/"<<month<<"/"<<day<<" "<<hour<<":"<<minute<<":"<<second<<endl;
		}
		void set(int y,int m,int d,int h,int min,int s,int i)
		{
			year=y;month=m;day=d;hour=h;minute=min;second=s;id=i;
		}
		bool operator < (const schedule & s2)
		{
			double all;//暴力求和,可替换
			all=year*365+month*30+day+hour/24.0+minute/1440.0+second/86400.0;
			double all2;
			all2=s2.year*365+s2.month*30+s2.day+s2.hour/24.0+s2.minute/1440.0+s2.second/86400.0;
			if(all<all2)
			{
				return true;
			}
			else
			{
				return false;
			}
		}
};
int main()
{
	int id;
	schedule s1;
	s1.set(9999,0,0,0,0,0,0);
	for(;;)
	{
		cin>>id;
		if(id==0){break;}
		
		int y,m,d,h,min,s;
		char c1,c2,c3,c4;
		cin>>y>>c1>>m>>c2>>d>>h>>c3>>min>>c4>>s;//如果是cin输入,记得有字符。可替换
		schedule s2;
		s2.set(y,m,d,h,min,s,id);
		if(s2<s1)
		{
			s1=s2;
		}
		
	}
	s1.dis();
    return 0;
}

 

标签:多重,日程,int,s2,protected,重载,日程安排,id,输入
来源: https://www.cnblogs.com/iceforever7/p/16332338.html