关于电梯运行逻辑原理的思路分析
来源:互联网 发布:ebsco数据库 编辑:程序博客网 时间:2024/05/01 04:21
以前面试考官出的一道题,要求口头作答。今天简单整理了一下一个电梯的上下运行逻辑。
一、简单归纳
系统:window7
语言:不涉及
探究事物:一部电梯的运行逻辑的分析
电梯个数:1
电梯状态:int staTi:0.1.2 0,表示上升,1表示停止,2表示下降。电梯所在层数:int nTi;使用者按键:int staAn: 0,1,2,0,表示上升,1表示未使用,2表示下降。使用者所在层:int nAn;希望到达层:int hAn;
总楼层数:int nNu;
优先级问题:①同层同时点上下。分作两次按键事件处理。
②不同层同时点击。 最优处理,参照下行“优化”说明。
最优处理:每次电梯运行状态(非1)转变(0,2切换)时,需要先判断,是否还有满足此时运行条件的需求。有则继续保持当前运行状态,否,则开始切换。
二、运行逻辑
使用者按键状态staAn改变为0,或者2;此处要由线程随时监控staAn的改变。然后对比电梯状态。
三种情况:
①staAn=0;//希望上升
{
switch staTi:
{
//电梯上升
case 0: nti-nAn=>-1 电梯高于人,人类等待电梯本次运行完毕,状态修改为1时,响应状态修改为2下降至nAn层搭载客户,而后上升,此时状态修改为0。
nTi-nAn<-1 电梯在人类下面一层 电梯运行至此层停止
//电梯停止
case 1: nti-nAn>0 电梯高于人 //电梯状态改为2,下降至nAn层,而后上升至hAn层
nTi-nAn=0 电梯停在同层,人类上电梯。
nTi-nAn<0 电梯停在人类下面,电梯状态改为0,上升至nAn搭载人类,而后上行。
//电梯下降
case2: nti-nAn=>1 电梯高于人,电梯运行至nAn层停下,搭载客户,期间状态不改变。
nTi-nAn<1 电梯在人类下面, 电梯运行完毕状态修改为零时,上升。
}
}
②staAn=1;//没有人类使用。
{
始终保存最后一次运行结束的时间,每五分钟对比一次当前时间。15分钟始终未运行。电梯运行至 楼层中间层nNu/2 层。(nTi>nNu/2 ? nTi:nNu)判断nTi及nNu/2的大小,确定电梯运行方向。修改电梯运行状态。
}
③staAn=0;//希望下降
{
swicth staTi:
{
//电梯上升
case 0: nti-nAn<=-1 电梯低于人,电梯至nAn层搭载客户。
nTi-nAn>-1 电梯在人类上面,电梯运行完毕状态修改为零时,下降搭载客户。
//电梯停止
case 1: nti-nAn>0 电梯高于人 //电梯状态改为2,下降至nAn层,而后上升至hAn层
nTi-nAn=0 电梯停在同层,人类上电梯。
nTi-nAn<0 电梯停在人类下面,电梯状态改为0,上升至nAn搭载人类,而后下行,状态改为2。
//电梯下降
case2: nti-nAn=>1 电梯高于人,电梯运行至nAn层停下,搭载客户,期间状态不改变。
nTi-nAn<1 电梯在人类下面,电梯运行完毕状态修改为1时,响应上升,状态修改为0,搭载客户,而后状态修改为2。
}
}
三、其它注意问题
①双击楼层按键应可以取消选择。按照数据库存入操作信息的存储方式的话,此操作应该将该层该类操作信息删除。
②关于电梯的各个楼层的按键可以按照一定结构存入数据库,运行时可通过当前运行方向及楼层,搜索数据库中最近楼层的操作(这样也能实现按键的及时性,即在电梯即将运行到某层时,某层用户立即按键,此数据实时记录到数据库中,电梯实时判断按照当前运行情况搜索数据库,是否存在最近楼层操作,如果存在即停止),以达到最优效果。
③数据库设计。可分为上行和下行进行数据存入。其中运行表中,应包含,”排队序号、电梯编号、上行/下行、操作楼层等主要信息。电梯上行时实时查询上行运行表。下行时访问下行运行表。各楼层请求操作将分上下行存入运行表中。
④某些地方存在高层电梯(停靠>20层),中层电梯(20>停靠>10),底层电梯(停靠<10)。此种类型电梯可以采用两种方式实现,第一种取消硬件按钮,即取消了非停靠层的请求来源。一种是对电梯响应请求时附加条件(即搜索查询数据库时只响应满足停靠要求的请求)。
阅读全文
1 0
- 关于电梯运行逻辑原理的思路分析
- 关于Tomcat运行原理的一些分析
- 逻辑游戏--在电梯里的男人
- SpringBoot运行原理的分析:
- 关于逻辑分析仪的触发设置
- js模拟电梯运行的例子
- 一个电梯运行的模拟实现
- Netty4源码分析-NioEventLoop实现的线程运行逻辑
- 急:有谁能帮帮,汇编模拟电梯的设计思路,模块,连接图和运行代码,谢谢,本人实习,现在急需,谢谢
- 【学习】关于电梯算法的C++实现
- 关于电梯算法的C++实现(zt)
- 病毒、木马ARP攻击行为的原理分析及解决思路
- Thrift 的TNonblockingServer运行原理分析
- Thrift 的TNonblockingServer运行原理分析
- 关于处理if和复杂逻辑的一种思路及…
- 课程设计 电梯运行仿真
- Java-模拟电梯运行
- JQuery 运行原理分析
- plsql远程连接ORACLE数据库
- AC97,i2S,HD-AUDIO接口的声卡,输出是什么?
- 关于iText生成PDF文件
- 选择排序
- Mac安装mysql
- 关于电梯运行逻辑原理的思路分析
- jQuery弹出侧边栏滑动菜单实现思路
- h5的离线存储怎么使用原理是什么
- CentOS6.5安装openssl
- 何给背景图像使用CSS3变形
- 播放常见问题分析
- CRC校验
- jQuery -- touch事件之轮播图效果
- disruptor总结