电梯调度算法设计

这篇博客探讨了电梯调度算法的设计,以25层楼和4部电梯为例,涉及联动模式和特定楼层停靠策略。作者指出算法实现过程中意识到问题与多线程相关,并分享了初步代码及学习心得,强调命名规范和技能提升的重要性。
摘要由CSDN通过智能技术生成

电梯调度算法设计

题目:电梯调度算法
以金川校区电力大楼中间的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, 
  • 10
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值