zoukankan      html  css  js  c++  java
  • 【C#】结对项目开发-电梯调度需求分析(党云龙、黄为)

    1 、春晖楼实际调研

      数据

     

      电梯实际运行概况

        经过实际的调研,电梯的实际运行状况与开始的初步想法有些出入,在外部同一组电梯,按下其中一个请求按钮,一组电梯的请求信号同时亮起同时做出响应,并且电梯没有固定初始位置,初始位置默认为电梯最后到达的一楼层,在内部进入电梯后如不对电梯发出任何请求,电梯不做出任何响应,电梯运行中优先响应与电梯运行方向相同的请求,

     

                              
    2、设计

        对于四部电梯调度进行简化来进行思考;首先我们假定有一台电梯,对于上述条件进行调度。
        

    • 电梯 
      电梯有三种状态,上升、静止、下降;同时电梯根据上述条件有乘客与重量的限制,是否超重;在最顶层上升不可用,在最低层下降不可用,求助状态,断电状态,电梯门状态,电梯所在楼层。
      Class 电梯
      {
          private int MoveStatus;//运行状态
          private int MoveDir;//运行方向
          private int MaxWeight;//重量限制
          private int WhereFloor;//所在楼层
          private bool HelpSingle;//求助信号
          private bool NoPower;//断电状态
          private bool DoorStatus;//电梯门状态
          pubulic bool OpenDoor();//打开电梯门
          pubulic bool CloseDoor();//关闭电梯门
          pubulic bool OverWeight();//检测超重
          pubulic bool ChangStatue();//改变电梯状态
          
      }
    • 运行
      单电梯情况:
      每一层,乘客发出请求,电梯响应请求。首先,进行方向判断,优先与电梯方向相同并且楼层与电梯所在楼层相近的请求。其次,待与电梯方向相同的请求执行完毕之后,电梯改变运行方向,按照之前的规则执行,直至电梯没人,电梯恢复初始位置。
      假设:电梯初始楼层在一楼,MoveRequest=0(用户请求变量),监测用户请求,此时电梯门处于关闭状态;
              1、若有用户请求,判断是否本层请求
                   若在本层,则用OpenDoor()函数打开电梯门,同时每隔固定时间检测用户是否已全部进入电梯,若已全部进入电梯,则用CloseDoor()函数关闭电梯,继续运行。
                   若不在本层,则判断时候接收到多了用户请求,若是多个请求则利用JudgeNext()函数判断该响应哪一个请求。若只有一个请求,则直接响应,判断是否需要改变运行方向MoveDir,上为1,下为-1,改变运行状态MoveStatus上升为1,静止为0,下降为-1.

                    2、若无请求,则继续监视。

              JudgeNext()
              {

                  if(判断请求楼层是否与电梯运行方向相同)
                    {

                          for()//多个请求,依次响应

                          {
                           if(若多个请求,比较距离本楼层最近的请求)
                          {给出响应}

                          }
                     }
                  else

                   {
                       电梯方向响应完成后,改变方向,响应反方向的请求。规则与上面类似。

                   }
               } 
            推广:四电梯情况
                    与一电梯情况区别在,某人在某层同时给四部电梯发出请求,四部电梯如何响应的问题。  
                    pubulic float TotleCost()//计算出此状态 到达目标层所用时间

                   {

                     电梯状态随着请求的结束不断变化,每个状态时间不一样。

                    }      
                    BestJudgeNext()//给出最有响应

                   {

                      根据四部电梯的状态,计算出到达本层并响应该请求总共所用的时间,取时间最短的电梯做出响应。
                   }  

      • 特殊情况
        超重:当电梯超重时,电梯发出警告,电梯不可用,保持运行方向,待问题解决完之后,电梯可用,继续运行。
        断电:在备用电源的支持下,电梯恢复到初始位置。
        意外停止:电梯强制静止,通知发送求助状态。
      • 3、设计窗体初稿:

              

         以图片替换的形式来展示电梯的运行过程。

  • 相关阅读:
    Java并发(五):并发,迭代器和容器
    Java并发(四):并发集合ConcurrentHashMap的源码分析
    Java爬虫初体验
    提升Java代码质量(三)
    Get和Post的初步探究
    01-什么是ElasticSearch
    python-实现动态web服务器
    python-实现二叉树
    python-实现栈结构
    python-实现单链表
  • 原文地址:https://www.cnblogs.com/huang-wei/p/3590850.html
Copyright © 2011-2022 走看看