电梯调度算法设计
题目:电梯调度算法
以金川校区电力大楼中间的4部电梯为例。(也可自行设定参数)
(1)建筑共有25层,其中含有地下一层。
(2)建筑内部设有4部电梯。
(3)中间两部电梯内部有25个按钮,其中包括开门按钮、关门按钮和楼层按钮,编号为-1,1,2,3,4…24。外侧两部电梯内部有11个按钮,其中包括开门按钮、关门按钮和楼层按钮,编号为-1,1,2,3,4…10。
(4)中间两部电梯设置为联动模式,外侧两部电梯设置为联动模式。
要求:
1.设计电梯调度算法,使电梯可对乘客的呼叫作出正确反应。
2.电梯运行效率高。
3.考虑特定的运行需求,如设置2-5层电梯不停等。
4.封装以上算法,实现可视化运行界面。【加分点】
时间表格
时间 | 成员 | 分工内容 |
2021年3月3日 A.M. | 李渊博 | 设计程序思路,编写博客 |
陈鹏昊 | 设计程序思路 | |
2021年3月3日 P.M. | 李渊博 | 一起讨轮设计方案,包括应用使用语言,应用设计界面,电梯运行算法实现 决定使用Java作为编译语言,GUI界面设计 |
陈鹏昊 | ||
2021年3月5日 A.M. | 李渊博 | 编写电梯上下运行核心代码 |
陈鹏昊 | 编写Elevator运行界面 | |
2021年3月8日 A.M. | 李渊博 | 合并代码,进行功能测试 |
陈鹏昊 | 多个电梯代码设计 |
电梯算法有些复杂,进行一半发现属于多线程。。没有进行学习
此前工程结束,项目宣告暂停。
下面是一部电梯的残疾代码希望大佬进行指正,在学习多线程之后完善此项目。
package attribute;
public class Elevator extends Floor {
private int number;
private int GoFloor;
private int state = 0;
public Elevator() {
super();
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public int getGoFloor() {
return GoFloor;
}
public void setGoFloor(int goFloor) {
GoFloor = goFloor;
}
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
}
public int ElevatorDown(int gofloor) {
//下楼
this.setGoFloor(gofloor);
this.setNowFloor(this.getNowFloor()-1);
return this.getNowFloor();
}
public int ElevatorUp(int gofloor){
//上楼
this.setGoFloor(gofloor);
this.setNowFloor(this.getNowFloor()+1);
return this.getNowFloor();
}
}
package attribute;
public class Floor {
private int NowFloor = 1;
private int MaxFloor = 25;
private int MinFloor = -1;
public Floor() {
}
public void FloorNo1() {
if(NowFloor == 0)
NowFloor = MinFloor;
}
public int getMaxFloor() {
return MaxFloor;
}
public int getNowFloor() {
return NowFloor;
}
public void setNowFloor(int nowFloor) {
NowFloor = nowFloor;
}
public int getMinFloor() {
return MinFloor;
}
}
package operate;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import attribute.Elevator;
public class Elevator1{
Elevator el = new Elevator();
public void Dianti1hao() {
JButton b1 = new JButton("-1"); //-1
JButton b2 = new JButton("1"); //1
JButton b3 = new JButton("2"); //2
JButton b4 = new JButton("3"); //3
JButton b5 = new JButton("4"); //4
JButton b6 = new JButton("5"); //5
JButton b7 = new JButton("6"); //6
JButton b8 = new JButton("7"); //7
JButton b9 = new JButton("8"); //8
JButton open1 = new JButton("开"); //开
JButton close1 = new JButton("关"); //关
JLabel light1 = new JLabel();
JLabel c1 = new JLabel("-1");
JLabel c2 = new JLabel(" 1");
JLabel c3 = new JLabel(" 2");
JLabel c4 = new JLabel(" 3");
JLabel c5 = new JLabel(" 4");
JLabel c6 = new JLabel(" 5");
JLabel c7 = new JLabel(" 6");
JLabel c8 = new JLabel(" 7");
JLabel c9 = new JLabel(" 8");
JFrame jframe = new JFrame("1号电梯内部");
jframe.setBounds(100,100,700,600);
jframe.setVisible(true);
jframe.setLayout(null); //无布局管理设置
jframe.setResizable(false); //禁止最大化
JPanel jpanel1 =new JPanel(); //电梯按钮
jpanel1.setBorder(BorderFactory.createEtchedBorder()); //设置panel边框
jpanel1.setLayout(null);
jpanel1.setBounds(50,80,205, 400);
JLabel jl2 = new JLabel("当前楼层:");
jl2.setBounds(5,310,55,25);
jpanel1.add(jl2);
JTextField jl2k = new JTextField("1"); //当前楼层 取名为jl2k
jl2k.setBounds(60,310,35,35);
jpanel1.add(jl2k);
jl2k.setBorder(BorderFactory.createLineBorder(Color.black));
jl2k.setFont(new java.awt.Font("Dialog", 1, 25)); //层数字体设置,25为字体大小
JLabel jl3 = new JLabel("前往楼层:");
jl3.setBounds(100,310,55,23);
jpanel1.add(jl3);
JTextField jl3k = new JTextField(""); //前往楼层 取名为jl3k
jl3k.setBounds(155,310,35,35);
jpanel1.add(jl3k);
jl3k.setBorder(BorderFactory.createLineBorder(Color.black));
jl3k.setFont(new java.awt.Font("Dialog", 1, 25));
JPanel jpanel2 =new JPanel(); //电梯标号
jpanel2.setLayout(null);
jpanel2.setBounds(120,45,
今天的文章电梯调度算法设计分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/68195.html