1、 1 课程设计报告课程设计报告 电梯调度算法电梯调度算法 学 院 医药信息工程学院 专 业 计算机科学与技术(医药物流信息方向) 2 电梯调度电梯调度算法算法设计报告设计报告 一LOOK(查找)调度(电梯)电梯算法,操作系统学术名为 SCAN 算法。磁 臂仅移动到请求的最外道就回转。反方向查找服务。 1. 问题描述: 说明: 电梯调度算法的基本原则就是如果在电梯运行方向上有人要使用电梯则继续往那个方 向运动,如果电梯中的人还没有到达目的地则继续向原方向运动。具体而言,如果电梯现在朝上 运动, * 如果当前楼层的上方和下方都有请求,则先响应所有上方的请求,然后才向下响应下方的请 求;如果电梯向下
2、运动,则刚好相反。 * 设计要求:模拟多人在不同楼层同时要求到各自目的地时电梯的响应顺序,要求使用C语言编 程,定义合适的数据结构。最后,需要说明设计思想,同时给出能够运行的源程序,并给出对应 的程序流程图。 * 设计提示:可以用一个结构体表示乘电梯的人,其中内容包括人的姓名、起始楼层、目的楼 层;建立一个结构体的数组模拟当前所有需要乘电梯的人。把这个结构体数组作为程序的输入, * 通过对数组中每个人的起始楼层和目的楼层进行分析,确定每个人进出电梯的顺序,并打印 输出。 2. 算法设计: 本程序用java语言、eclipse平台编写。 (1)算法思想:本算法只设计了一辆电梯,通过往返寻找方法,
3、即先查询电梯运行方 向的楼层是否存在有其他键被按下,有就继续往该方向运行,如果没有就查询电梯运行 反方向的楼层是否有按键被按下,如果有电梯就改变方向,反方向运行。如果没有电梯 就停止在该楼层,30秒后如果没有任何键被按下,电梯就自动返回1楼驻停。同时,电 梯乘客所去的楼层方向与电梯当前方向一致的话,则电梯优先搭载该乘客。随后再搭载 去反方向的乘客。实现电梯的升降操作。 3 二二1.1.总程序流程图如下总程序流程图如下 判断电梯是否已 经到达该楼层 判断电梯是否已 经逆向到达楼层 键恢复为未按状态 Y N 键恢复为未按状 Y Y N 将电梯的状态改变,即 lift.state!=0 并且将该按钮
4、键颜色改变 开始 判断是否有楼 层键被按下 Y 则 电 梯 仍 然 处 于 停 止 状 态 , 即 lift.state=0 N 电梯是否在向上运动, 并且 电梯是否已经到达该楼层 向上键恢复 为未按状态 Y N 电梯是否在向上运动, 并且 电梯是否已经到达该楼层 Y N 向下键恢复 为未按状态 4 判断电梯是否继 续向下 判断电梯是否已 经到达该楼层 判断电梯是否继 续向下 N 判断电梯是否继 续向下 N Y 设置电梯为停止状态即 lift.state=0 设置电梯为向下 状态即 lift.state=1 N 判断电梯方向是 否是向上 电梯向下一层移 动 lift.number-; Y N Y 判断电梯状态是 否等于 0 结束 判断电梯方向是 否向是上 电梯向上一层移动 lift.number+; Y N 判断电梯是否继 续向上 判断电梯下方楼层 是否有键被按下 N Y N 设置电梯为停止状态即 lift.state=0 设置电梯为向下 状态即 lift.state=2 5 2.代码