本项目为《数据结构》课程设计作品,旨在通过模拟多部电梯系统来展示队列、链表等数据结构的实际应用,提升算法理解和问题解决能力。
设计一个电梯模拟系统用于某校九层教学楼的场景。这是一个离散事件驱动的程序,通过随机事件来推进时间,并由以0.1秒为单位的时间轴决定乘客或电梯的动作发生的时刻顺序。具体要求如下:
(1)此模型中的电梯可以在每层停留并服务于该楼层的所有进出请求;第一层作为大楼的主要入口和出口点,即“本垒层”。当没有其他需求时,电梯返回至这一层候命状态。整个系统包括八个不同的运行状态:开门中、已打开门、关门中、关闭且静止等待指令、移动中(上下行)、加速准备阶段以及减速减缓阶段。
(2)乘客可以在任意楼层随机进出大楼,并拥有一个可接受的最大等待时间,超过该时间段未被响应则会放弃请求。当最后一个人选择离开后,是否可以取消之前按下过的按键?
(3)模拟开始的时间标记为0秒,之后的每一动作都将消耗一定数量的时间单位t。例如:电梯每40个时间单位检查一次是否有乘客进出;如果无人进入或退出,则在接下来的20个时间内完成关门操作;开门同样需要耗时20t;每个人上下电梯所需时间为25t;加速过程需15t;上升一层楼花费的时间为51t,减速则消耗14t。下降过程中每个楼层用61t时间到达,并减缓至停止状态需要额外的23个单位时间。如果某层停留超过300秒且未有新的请求,则电梯将自动返回第一层等待进一步指示。
(4)关于调度规则:①遵循最近优先原则,即首先响应当前行进方向上的最接近楼层需求直至满足该方向上距离最远的乘客需要;若无同向新要求则改变行驶路线。②若无法通过就近原则安排,则应先服务更高层的需求。③电梯最大载客量为13人,在未有人员离开前不再接受新的进入请求。④上下楼时遵循“先进后出”规则,即乘客按发出指令的顺序依次进出,并且每次仅允许一人进入或退出,每个人进出所需时间为25t;⑤在关门期间(电梯即将移动),该层仍有新需求的话则可以继续开放入口让新的乘客上车。
(5)整个模拟过程应以时间序列的形式展示所有的人和电梯的动作变化情况。此外,还可以考虑开发一个可视化的界面来更直观地表现这一流程:如通过动画形式动态展现电梯的升降动作以及人员进出的过程,并设计包含电梯、人形图标、控制面板及其上的各种按钮等元素在内的模拟时钟模块。
扩展要求还包括实现上述描述中的可视化交互体验。