电梯调度算法.doc

上传人:sk****8 文档编号:3143259 上传时间:2019-05-23 格式:DOC 页数:17 大小:140KB
下载 相关 举报
电梯调度算法.doc_第1页
第1页 / 共17页
电梯调度算法.doc_第2页
第2页 / 共17页
电梯调度算法.doc_第3页
第3页 / 共17页
电梯调度算法.doc_第4页
第4页 / 共17页
电梯调度算法.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

1、0目录一、算法设计 .11算法思想 .12运行环境 .13问题描述 .1二、实验步骤及方法 .1三、源程序代码 .1四、运行结果图 .14五、课程总结 .151一、算法设计1算法思想本 算 法 设 计 一 部 电 梯 , 通 过 往 返 寻 找 方 法 , 即 先 查 询 电 梯 运 行 方 向 的 楼 层 是 否存 在 有 其 他 键 被 按 下 , 有 就 继 续 往 该 方 向 运 行 , 如 果 没 有 就 查 询 电 梯 运 行 反 方 向 的楼 层 是 否 有 按 键 被 按 下 , 如 果 有 电 梯 就 改 变 方 向 , 反 方 向 运 行 。 如 果 没 有 电 梯 就 停

2、止 在 该 楼 层 , 30秒 后 如 果 没 有 任 何 键 被 按 下 , 电 梯 就 自 动 返 回 1楼 停 住 。 同 时 , 电梯 乘 客 所 去 的 楼 层 方 向 与 电 梯 当 前 方 向 一 致 的 话 , 则 电 梯 优 先 搭 载 该 乘 客 。 随 后 再搭 载 去 反 方 向 的 乘 客 , 以 此 实 现 电 梯 的 升 降 操 作 。2运行环境本 程 序 用 java语 言 、 eclipse平 台 编 写 。3问题描述电 梯 调 度 算 法 的 基 本 原 则 就 是 如 果 在 电 梯 运 行 方 向 上 有 人 要 使 用 电 梯 则 继 续 往那 个 方

3、 向 运 动 , 如 果 电 梯 中 的 人 还 没 有 到 达 目 的 地 则 继 续 向 原 方 向 运 动 。 具 体 而 言 ,如 果 电 梯 现 在 朝 上 运 动 , 如 果 当 前 楼 层 的 上 方 和 下 方 都 有 请 求 , 则 先 响 应 所 有 上 方的 请 求 , 然 后 才 向 下 响 应 下 方 的 请 求 ; 反 之 。二、实验步骤及方法1由于鼠标单击每个楼层按钮时,需要作出相应的动作,所以我们使用jbutton按钮类,通过jbutton的单击事件来模拟楼层按钮并通过改变颜色来表示按钮是否被按下2使用数组存储每个按钮的状态,1表示被按下,0表示未被按下。用于电

4、梯是否到达目标层的判断,及按钮颜色的刷新判断;3“电梯”也是一个jbutton类,通过改变颜色来模拟电梯的运行,需要在此类中设置一个方向值,用0,1,2分别表示电梯的停止向上向下运行。三、源程序代码import java.awt.Color;import java.awt.Container;import java.awt.Font;import java.awt.GridLayout;2import java.awt.TextField;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import

5、java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.util.*;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.Timer;public class Lifta/* param args*/public static void main(String args)Brick brick=new Brick(); class Brick /方块类public

6、int octime=0; /计算开关门事件。public int j=0;public String closedoor=“关门“;public String close=“关“;public String open=“开“;JFrame frame=new JFrame(“电梯调度算法“);JPanel pan=new JPanel();JButton but=null;JButton sign=new JButton(+j+“楼“);JButton openclose=new JButton(closedoor+“);JButton openkey=new JButton(open+“)

7、;JButton closekey=new JButton(close+“);3public ArrayList blackBrick; /brick用来依次存放button,程序用button显示蓝色表示有电梯的当前位置。public ArrayList controlBrick; /controlBrick用来依次存放button,表示每层楼电梯口的是上键和下键,程序用button显示绿色表示对应键被按下。public int controlTable; /用二维数组controlTable与电梯口的上下键对应,其中如果值1表示button应显示绿色,值0表示button应显示灰色。pub

8、lic ArrayList numberBrick; /numberBrick用来依次存放button,程序用button显示桔黄色表示电梯内的数字键被按下。public inttable; /用二维数组table与电梯内的数字键对应,其中如果值1表示button应显示桔黄色,值0表示button应显示灰色。public int upSignalTable; /纪录向上任务的任务数组,值为 1表示相应位的上键被按下。public int downSignalTable; /纪录向下任务的任务数组,值为1表示相应位的下键被按下。public Timer timer; /计时器。public Li

9、ftThread lift; /控制每个电梯的线程数组。/=构造方法(下)初始化=/public Brick()sign.setBounds(0, 0, 80, 40); /起始位置/开关门部分openclose.setBounds(80, 0, 80, 40); openclose.setBackground(Color.yellow);openkey.setBounds(160, 0, 80, 40); openkey.addActionListener(new OpencolseListener();/开门按钮添加事件closekey.setBounds(240, 0, 80, 40);

10、closekey.addActionListener(new OpencolseListener();/关门按钮添加事件pan.setLayout(null); /画布绝对定位 Font fnt=new Font(“Serief“,Font.ITALIC,15); /设置字体样式 /实例化数组numberBrick=new ArrayList(10);4blackBrick=new ArrayList(10);controlBrick = new ArrayList(10);controlTable = new int102;for (int i = 0; i 0;i-)/最左边黑色列but=

11、new JButton();but.setFont(fnt);but.setBounds(0, (11-i)*40, 80, 40);but.setBackground(Color.BLACK);blackBrick.add(but);pan.add(but); /显示楼层but=new JButton(+i+“楼“);but.setFont(fnt);but.setBounds(80, (11-i)*40, 80, 40);but.addActionListener(new NumberListener(i);but.setBackground(Color.gray);5numberBric

12、k.add(but);pan.add(but); /向上键but=new JButton(“上“);but.setFont(fnt);but.setBounds(160, (11-i)*40, 80, 40);if(i!=10)but.addActionListener(new UpListener(i);but.setBackground(Color.gray);controlBrick.add(but);pan.add(but);/向下键but=new JButton(“下“);but.setFont(fnt);but.setBounds(240, (11-i)*40, 80, 40);i

13、f(i!=1)but.addActionListener(new DownListener(i);but.setBackground(Color.gray);controlBrick.add(but);pan.add(but); /*运行部分*pan.add(sign);pan.add(openclose);pan.add(openkey);pan.add(closekey);frame.add(pan);frame.setSize(329, 479);lift = new LiftThread();frame.setVisible(true);6frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); /=构造方法(上)=/*填充方块和设置方法*public void DrawBrick() /重新刷新整个table,使每个button显示应该的颜色。for (int i = 1; i x)lift.state = 1;if (number 0; i-)if (table10 - i = 1|controlTable10-i1=1|controlTable10-i0=1)count+;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 精品笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。