题目描述

已有一个日期类Date,包括三个protected成员数据year,month,day;

另有一个时间类Time,包括三个protected成员数据hour,minute,second,12小时制;

现需根据输入的日程的日期时间,安排前后顺序,为此以Date类和Time类为基类,建立一个日程类Schedule,包括以下新增成员:

int ID;//日程的ID

定义友元函数bool before(const Schedule & s1,const Schedule & s2);//判断日程s1时间是否早于日程s2。

编写主函数,根据输入的各项日程信息,建立日程对象,找出需要最早安排的日程(日期和时间相等时,输出较早建立的日程),并输出该日程对象的信息。

输入

测试输入包含若干日程,每个日程占一行(日程ID 日程日期 日程时间)。

当读入0时输入结束,相应的结果不要输出。

输出

时间最靠前的日程

样例输入

1 2019 6 27 8 0 1 2 2019 6 28 8 0 1 3 2020 1 1 8 0 0 0

样例输出

The urgent schedule is No.1: 2019/06/27 08:00:01

提示

在两个日程完全相同的情况下,输出前面那一个

#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
class Date {
protected:int year, month, day;
public:Date(int a = 0, int b = 0, int c = 0) :year(a), month(b), day(c) {};};class Time  {
protected:int hour, minute, second;
public:Time(int a = 0, int b = 0, int c = 0) :hour(a), minute(b), second(c) {};};class Schedule :public Date,public Time {
protected:int id;
public:Schedule(const Date& p,const Time&q,int ID=0) :Date(p),Time(q),id(ID) {}friend Schedule compare(const Schedule& S1, const Schedule& S2);void show() {cout << "The urgent schedule is No." << id << ": " << year << "/" << setw(2) << setfill('0') << month << "/" << setw(2) << setfill('0') << day<<" ";cout << setw(2) << setfill('0') << hour << ":" << setw(2) << setfill('0') << minute << ":" << setw(2) << setfill('0') << second;}//定义一个函数输出
};
Schedule compare(const Schedule& S1, const Schedule& S2) {int sum1, sum2;sum1 = S1.year * 10000 + S1.month * 100 + S1.day + S1.hour * 3600 + S1.minute * 60 + S1.second;sum2 = S2.year * 10000 + S2.month * 100 + S2.day + S2.hour * 3600 + S2.minute * 60 + S2.second;if (sum1 > sum2) { return S2; }if (sum1 <= sum2) { return S1; }//根据提示:相同时输出前面的number}int main() {int id, y, m, d, h, ms, s;int id1, y1, m1, d1, h1, ms1, s1;cin >> id;if (id == 0) { return 0; }cin >> y >> m >> d >> h >> ms >> s;Date D1(y, m, d);Time T1(h, ms, s);Schedule S1(D1, T1, id);for (;;) {cin >> id;if (id == 0) { break; }cin >> y >> m >> d >> h >> ms >> s;Date D2(y, m, d);Time T2(h, ms, s);Schedule S2(D2, T2, id);S1=compare(S1, S2);}S1.show();
}

C++: 日程安排(多继承+友元函数)相关推荐

  1. 类模板,多种类型的类模板,自定义类模板,类模板的默认类型,数组的模板实现,友元和类模板,友元函数,类模板与静态变量,类模板与普通类之间互相继承,类模板作为模板参数,类嵌套,类模板嵌套,类包装器

     1.第一个最简单的类模板案例 #include "mainwindow.h" #include <QApplication> #include <QPush ...

  2. c++模板---3(类模板碰到继承问题,类模板类外实现,类模板与友元函数)

    类模板碰到继承问题 基类如果是模板类,必须让子类告诉编译器 基类中的T到底是什么类型 如果不告诉,那么无法分配内存,编译不过 利用参数列表class Child :public Base<int ...

  3. c++友元函数与友元类

    友元函数和友元类的需要: 类具有封装和信息隐藏的特性.只有类的成员函数才能访问类的私有成员,程序中的其他函数是无法访问私有成员的.非成员函数可以访问类中的公有成员,但是如果将数据成员都定义为公有的,这 ...

  4. public 函数_Chapter18:友元函数和友元类

    这一章的问题从"如何畅通无阻的访问另一个类"开始,类的属性有private.protected.public,根据继承权限有不同的访问方式.但是类之间的关系不一定是继承,有时一个类 ...

  5. 【足迹C++primer】52、,转换和继承虚函数

    转换和继承,虚函数 Understanding conversions between base and derived classes is essential to understanding h ...

  6. C++中友元函数,友元类数详解

    C++控制对类对象私有部分的访问,为了适应的编程问题,所以在C++中提供了特定的访问权限:友元. 友元分为3中即: 1:友元函数: 2:友元类: 3:友元成员函数. 一.友元函数 定义:有一类特殊的非 ...

  7. 【C++】C++类的学习(三)——运算符重载与友元函数

    [fishing-pan:https://blog.csdn.net/u013921430转载请注明出处] 前言 前面的两篇博文中介绍了类的一些基本特性,今天讲一讲运算符重载和友元. 运算符重载 运算 ...

  8. 友元函数的访问权限和注意事项

    友元函数要在一个类体内说明,形式为: 形式 friend 类型名 友元函数名(形参表): 然后在类体外对友元函数进行定义,定义的格式和普通函数相同,但可以通过对象作为参数直接访问对象的私有成员 友元函 ...

  9. C++中的友元函数、static函数、常函数小结(理论篇)

     友元函数 一个常规的成员函数声明描述了三件在逻辑上相互不同的事情 1.  该函数能访问类声明的私用部分 2.  该函数位于类的作用域之中 3.  该函数必须经由一个对象去激活(有一个this指针 ...

最新文章

  1. python学习之第二课时--运行程序和字符编码
  2. HotSpotOverview.pdf
  3. vscode c++编译报错:‘nullptr’ was not declared in this scope(-std=c++11)
  4. php自定义函数数学计算,ThinkPHP自定义函数解决模板标签加减运算的方法
  5. Promise 的基础用法
  6. html5调用系统声音1s响一次_20款奔驰GLC260提车改柏林之声音响,音乐诉请,为爱发声!...
  7. (转)Spring Boot(七):Mybatis 多数据源最简解决方案
  8. 量子计算机迷宫,工程杰作诞生可编程的光学量子计算机
  9. input文本框不可编辑的方法
  10. linux leach仿真数据传输图性能,基于OMNeT-+-+的Leach协议的仿真研究.pdf
  11. 超人段永平的网易博客文集
  12. 印度小伙花不到10美元自制智能眼镜
  13. 不要一个人吃饭---人脉就是钱脉
  14. 王者怎么看微信以前玩过的服务器,王者荣耀如何查看微信帐号在那个区玩过
  15. 王者荣耀告诉你什么是节流
  16. IntelliJ IDEA注释字体形式修改
  17. LLVM系列(三)小插曲---Clang的常用命令
  18. 目标管理【管理学之十四】
  19. CGB2105-Day09
  20. 老调重弹,Android Studio 打包H5项目(2020版)

热门文章

  1. Spring IOC源码解析笔记
  2. 从零开始学WEB前端——JavaScript流程控制语句
  3. 开发通用资料——常用接口引脚定义
  4. 高新技术企业的重要性
  5. PPC关键字广告是什么?一次搞懂CPC、CPM广告投放术语
  6. JavaScript处理大数问题
  7. 韩国计算机专业,韩国计算机专业发展前瞻
  8. 文献综述怎么写 ,一直没头绪写不出来怎么办?
  9. 我国2016研发的超级计算机,我国超级计算机研制取得重大突破
  10. 仿微信打开红包旋转动画