栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

电梯调度(结对项目)②

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

电梯调度(结对项目)②

文章目录

@[TOC]

一、UML图二、Design by Contract, Code Contract三、实现Bus调度算法四、制作主界面UI 一、UML图 二、Design by Contract, Code Contract

契约式设计(Design by Contract ,DbC)是一种设计计算机软件的方法,是按照某种规定对一些数据等做出约定。如果超出约定,程序将不再运行。例如,要求输入的参数必须满足某种条件。站在java语言的角度上讲,所谓的契约式编程就是在满足一定条件的情况下,才有条件执行方法体,可以使用AOP实现Java契约式设计。在java的Junit测试中我们使用断言(assert)来观察我们程序结构。

三、实现Bus调度算法

Bus调度算法的思想是:将电梯当作公交车,从-1层一直到最高层,每一层都停,并且开门让乘客进出,然后关门继续向上走。直到最高层,再向下。
在实现过程中,我们使用四个线程运行四个电梯。在每个线程中,首先判断电梯是否在本层服务。若可以提供服务,则电梯开门,同时调用EleController类中的synchronized方法GetPsgIn(),将可以在本层进入该电梯的乘客接走,以此保证每个电梯访问等待中的乘客列表时,不会出现因为线程冲突引起的bug。

public void busDispatcher(){
        随机生成乘客
        调度电梯所用的线程(共4个)
        for (int i = 0; i < ELE_COUNT; i++)
        {
            new Thread(()->{
                while (true){
                    获取此刻状态和楼层
                    判断是否在本层服务
                    检测有无上下电梯
                    电梯运行
                    }
                }
            }).start();
        }
    }
四、制作主界面UI


上图为我们小组制作的电梯调度程序主界面,左侧可以随机生成乘客,也可以手动添加乘客。我们提供了“Bus”“SSTF”“LOOK”三个按钮,以供用户自主选择合适的调度算法。右侧为电梯运行状况的模拟,直观地显示了电梯当前所在的楼层、载人、载重以及乘客的信息。

“设置电梯参数”按钮连接一个新的界面,可以根据用户需要调整电梯的服务楼层、最大载人、最大载重等参数。输入电梯编号并填入新的载重、人数,勾选服务楼层,便可以更新该电梯的参数。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/736663.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号