zoukankan      html  css  js  c++  java
  • 实现简单电梯调度

    实现简单电梯调度


    • 本程序基于以下设定:

      • 在乘客请求电梯时,电梯才知道乘客的信息。
      • 电梯在每秒内会规划好下一秒的行动。
      • 电梯不会超载,乘客不会等的不耐烦去走楼梯。
      • 电梯可以在运行过程中瞬间掉头。
      • 乘客请求时刻为整数时刻。
    • 基本思想:

      • 模拟电梯的实时过程。
    • 程序实现:

      • 输入。
      • 给所有的乘客按请求时间排一个序。
      • 电梯开始运行。
        • 判断是否所有人离开电梯。
        • 判断是否有乘客请求电梯。
        • 判断最佳运行目标。
        • 判断是否有乘客上下楼。
        • 电梯向目标移动。
      • 电梯结束运行。
    • 程序信息:

      • 程序包括一个头文件,一个头文件中类的实现,和一个主函数。
      • 头文件 passager.h
        • 长度25行。
        • 包括类:passager
        • 成员变量(public):
          • id(int):记录乘客的编号。
          • isok(int):记录乘客的状态,分为0,1,2三种,0
            • 0:还未进入电梯。
            • 1:已经进入了电梯。
            • 2:已经离开了电梯。
          • floor(int):表示请求电梯时所在的楼层。
          • direction(int):表示目标楼层。
          • time(int):表示请求电梯的时间。
          • goal(int):表示此时请求电梯前往的楼层。
        • 成员函数(public):
          • passager:构造函数。
          • ~passager:析构函数。
          • call(void)
            • 输入:此时的时间。
            • 作用:更新该事件乘客的目标。
          • in_out(int)
            • 输入:现在的楼层和现在的时间。
            • 作用:判断是否有乘客需要进出,并更新乘客的状态。
            • 输出:离开的乘客所等待的时间。
          • 重载运算符>>:
            • 作用:输入时间,请求电梯时乘客所在的楼层,和目标楼层,并将目标楼层改为110
      • 源文件passager.cpp:为 passager类的实现。
        • 长度:67行。
      • 源文件lift.cpp
        • 长度:124行。
        • 变量:
          • liftgoal(int):电梯当前运行目标。
          • nowtime(int) :当前时间。
          • liftfloor(int) 电梯当前所在楼层。
          • goalid(int):电梯当前运行目标的请求乘客编号。
          • sumtime(int):总等待时间。
        • 函数:
          • min(void)
            • 输入:五个乘客。
            • 作用:给五个乘客按请求时间排一个序。
          • iscall(void)
            • 输入:五个乘客,现在的时间。
            • 作用:更新乘客请求状态。
          • isopen(bool)
            • 输入:五个乘客,现在的时间,现在的楼层。
            • 作用:判断时候开门,并进行上下客。
            • 输出:
              • 若没有开门返回flase
              • 若开门返回true。若有乘客下电梯,则返回所有下电梯的乘客等待的时间。
          • choice(int)
            • 输入:五个乘客,现在的楼层。
            • 作用:判断该向几层行进。
            • 输出:返回最合适的目标楼层
          • isall(bool)
            • 输入:五个乘客。
            • 作用:判断是否所有的乘客都离开了电梯。
            • 输出:
              • 如果有乘客未下电梯,返回true
              • 如果有所有乘客都下电梯,返回flase
  • 相关阅读:
    MySQL-存储过程
    MySQL-触发器
    MySQL自学笔记
    arrayList和LinkedList区别
    RecyclerView和ListView比较
    【二叉树遍历】必知方式
    进程与线程的区别
    【单例模式】java实现
    【斐波那契数列】java探究
    replugin插件化,插件转场动画失效的问题解决
  • 原文地址:https://www.cnblogs.com/jhy16193335/p/8426760.html
Copyright © 2011-2022 走看看