题目描述

已有一个日期类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. 从命令行运行postman脚本
  2. 清空oracle表数据 外键,oracle清空所有表数据
  3. java 的 AccessController.doPrivileged使用
  4. java xml格式打包,maven项目打包xml没有被打包解决办法 ,mybatis的xml打包
  5. 莫比乌斯带catia建模_独家教程 | 循环曲面“莫比乌斯”,康石石教你Rhino“3步”快速打造...
  6. thymeleaf条件表达式
  7. web安全day5:DNS部署与安全
  8. python接口测试覆盖率统计_pytest文档57-计算单元测试代码覆盖率(pytest-cov)
  9. (转)用Javascript获取页面元素的位置
  10. 魔兽怀旧服服务器怎么修改,魔兽世界怀旧服今日开服 魔兽世界怀旧服剥皮制皮玩法攻略 怀旧服服务器连不上怎么办?...
  11. 那些年你不能错过的之【Linux操作】
  12. PyTorch中的pack_padded_sequence和pad_packed_sequence
  13. 服务器vga转hdmi显示器不亮,手把手教你排除HDMI转VGA常见故障
  14. Android 无法播放此视频
  15. 王道计组——计算机的组成
  16. 北京工商专修学校计算机学院院长,北京工商大学计算机学院
  17. 凡人修c传(四)翻牌子(POJ - 3279 - Fliptile)(思维+dfs)
  18. 用WinDbg分析电脑蓝屏文件
  19. SVN提交错误:系统找不到指定路径
  20. 【证券相关】终值和现值

热门文章

  1. android虚线边框_android 绘制虚线效果
  2. 源声|操作系统十年磨一剑,幕后的坚挺、不懈与客户第一
  3. 景安服务器怎么重装系统,手把手教你win7镜像怎么重装系统
  4. SEO学习的最好方式:搜索引擎
  5. 移动端接入游戏渠道自动化解决方案
  6. 百度人脸识别sdk图片转码的问题
  7. ADB关闭华为系统更新
  8. 第三方网站应用微信登录开发指南
  9. 大专计算机网络基础试题及答案,大专计算机应用基础试卷试题及答案.docx
  10. 小白看完都会了!怒斩获了30家互联网公司offer,面试总结