电梯调度二——曹玉松&&蔡迎盈
电梯初步版本
经过去实际大楼的调查和一周的学习,初步完成了电梯的制作,但是这个版本的电梯功能并不是很全面,而且界面有待于改善,现在做出了测试版本,稍后进一步跟进新的版本,现在的版本初步完成的是电梯楼层之间上下调度的问题,还有四部电梯之间路程最短的调度,即一个总控控制四部电梯,比较四部电梯哪个电梯距离上电梯者最近,优先调度,还有一部电梯的调度,例如在向上的过程中首先响应向上的楼层,然后再调度其他任务,电梯允许多按钮,并且有颜色变化。其中用到了线程,主要用到了textbox控件,button按钮,panel容器,每个电梯基本用到的算法与前面所说的基本一致,此外在多textbox输出方面增加了foreach方法。
分工问题:
主要代码:
int floor = 1;//电梯所在楼层,初始状态为1楼
int direction = 0;//1状态向上,2向下,0静止
bool Outdir;
bool[] Wait = new bool[21];//同向数组
bool[] Ywait = new bool[21];//反向数组
int Preprocess = 0;
public void Stateofelevator()//显示楼层和上下
{
textBox1.Text = floor.ToString();
Control.ControlCollection cc = panel2.Controls;
foreach (Control ct in cc)
{
if (ct is TextBox)
{
ct.Text = floor.ToString();
}
} if (direction == 1)
{
textBox1.Text += '↑';
foreach (Control ct in cc)
{
if (ct is TextBox)
{
ct.Text+= '↑';
}
} }
else if (direction == 2)
{
textBox1.Text +='↓';
foreach (Control ct in cc)
{
if (ct is TextBox)
{
ct.Text += '↓';
}
} }
else
{
textBox1.Text += "--";
foreach (Control ct in cc)
{
if (ct is TextBox)
{
ct.Text += "--";
}
} }
direction = 0; }
public void Layerofelevator()
{ int i;
for (i = floor; i <= 20; i++)
{
if (Wait[i] == true)
{ while(floor <=i)
{
if (floor == i)
{
direction = 0;
}
else
{
direction = 1;
}
Stateofelevator();
Thread.Sleep(1000);
Application.DoEvents();
floor++; }
Thread.Sleep(5000);
floor--;
Preprocess--;
Wait[i] = false;
} } for (i = floor; i>=0; i--)
{
if (Wait[i] == true)
{
while (floor >= i)
{
if (floor == i)
{
direction = 0;
}
else
{
direction = 2;
} Stateofelevator();
Thread.Sleep(1000);
Application.DoEvents();
floor--; }
Thread.Sleep(10000);
floor++;
Preprocess--;
Wait[i] = false;
} } }
public void Outofelevator(int j)
{
if ((j < floor) && (direction == 2 || direction == 0) && (Outdir == false))
{
direction = 2;
Wait[j] = true;
Preprocess++; }
else if ((j > floor) && (direction == 1 || direction == 0) && (Outdir == true))
{
direction = 1;
Wait[j] = true;
Preprocess++;
}
else Ywait[j] = true; if ((floor == 20) || (floor == 0) || (Preprocess ==0))
{
if (direction == 2)
{
direction = 1;
}
else if (direction == 1)
{
direction = 2;
}
}
for (int i = 0; i <= 20; i++)
{
if (Ywait[i] == true)
{
Wait[i] = true;
Preprocess++;
}
} }
程序截图:
电梯调度二——曹玉松&&蔡迎盈的更多相关文章
- 求二维数组的最大子数组———曹玉松&&蔡迎盈
继上节课老师让求了一维数组最大的子数组后,这节课堂上,老师加深了难度,给了一个二维数组,求最大子数组,开始觉得很容易,但是自己思考起来感觉这个算法很困难,既需要考虑数组直接的连续,又要求出最大的,老师 ...
- 电梯调度设计之初感想——蔡迎盈&&曹玉松
突然拿到这个问题,蒙了好久,索性走一步,再走一步好了,希望在这天下第一庄里,会看到晴空. 查了好多资料,终于还是整理出一个很草稿的版本,这只能算是我们初步的设计. 四部电梯载重和乘客限制不同, ...
- 【软件工程】电梯调度的初步实现 李亚文&&郭莉莉
一.开门见山,代码粘 using System; using System.Collections.Generic; using System.Data; using System.Drawing; ...
- 电梯调度--c++--软件工程
一.设计思路 (1)将乘客要去的楼层数存起来. (2)假设yi为乘客要爬楼层数之和,yi=n1*|(n1-ni)|+n2*|(n2-ni)|+..+n18*|(n18-ni)| (3)比较y1到y18 ...
- OO第二次博客作业——电梯调度
OO第二次博客作业——电梯调度 前言 最近三周,OO课程进入多线程学习阶段,主要通过三次电梯调度作业来学习.从单部电梯的傻瓜式调度到有性能要求的调度到多部电梯的调度,难度逐渐提升,对同学们的要求逐渐变 ...
- 电梯调度编写(oo-java编程)
第二单元的问题是写一个关于电梯调度的程序. 需要模拟一个多线程实时电梯系统,从标准输入中输入请求信息,程序进行接收和处理,模拟电梯运行,将必要的运行信息通过输出接口进行输出. 主要锻炼学生的多线程程序 ...
- OO电梯调度
告别了三次奇妙无比的求导作业之后,我们就开始搭建一部自己的电梯了.相信我们不同同学的电梯运行方式肯定各具特色吧,但值得肯定的是,在艰苦的走完了三次电梯逐步改进的作业之后,我们的电梯在正常情况下应该是可 ...
- 曹玉中-201871010105《面向对象程序设计(java)》第6-7周学习总结
曹玉中-201871010105<面向对象程序设计(java)>第6-7周学习总结 项目 内容 这个作业属于哪个课程 <任课教师博客主页链接> https://www.c ...
- oo第二次博客-三次电梯调度的总结与反思
本单元从电梯调度相关问题层层深入,带领我们学习并运用了了多线程相关的知识. 三次电梯调度依次为单电梯单容量.单电梯可携带.多电梯可携带. 一.我的设计 在第一次作业中,使用了最简单的FIFO调度方法. ...
随机推荐
- Day7 子类调用父类的方法supper 绑定方法与非绑定方法
supper:可以利用supper来重用父类的方法,可以不用指名道姓的调用了. class OldboyPeople: school = 'oldboy' def __init__(self,name ...
- 使用Glide以及OkHttp集成
1.glide的使用: 添加依赖: compile 'com.github.bumptech.glide:glide:3.7.0' 调用代码: ImageView imageView = (Image ...
- C 上传文件到服务器(含接收端源码)
本文demo下载地址:http://www.wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=1067 实例向大家展示了如何用Visua ...
- python 脚本自动登陆校园网
学校的校园网每次重开电脑时都要重新打开浏览器进行网页登录,繁琐的操作比较麻烦,于是便写了个python的脚本进行自动登录,下面说下具体的操作过程: 1. 方法说明 博主采用的python的 reque ...
- composer安装yii2
这几天准备入门yii2,但是对于一个看php不到5天的小白来说,只能说路途艰辛,不过,总算是解决了,先放一张大图 感受一下成功的喜悦...(文章最后有惊喜哦) ok,下面就描述一下安装的步骤: 1.安 ...
- SOFA 源码分析 —— 服务发布过程
前言 SOFA 包含了 RPC 框架,底层通信框架是 bolt ,基于 Netty 4,今天将通过 SOFA-RPC 源码中的例子,看看他是如何发布一个服务的. 示例代码 下面的代码在 com.ali ...
- 修改input获取焦点背景黄色
input:-webkit-autofill { -webkit-box-shadow: 0 0 0px 1000px white inset !important; }
- 局部内部类访问它所在方法的局部变量时,要求该局部变量必须声明为final的原因
这是java的一条规则.那么为什么会有这条规则呢?要想弄懂这个问题,就需要弄懂局部内部类对象和局部变量的生命周期的谁更长的问题. 首先,看一段代码,以没有将变量声明为final的代码作为例子,代码如下 ...
- servlet什么时候被实例化?【转】
如果没有设置loadOnStartup,则第一次请求的时候实例化 分三种情况:loadOnStartup < 0 即负数的情况下,web容器启动的时候不做实例化处理,servlet首次被调用时做 ...
- Java中浮点数的精度问题 【转】
当您在计算Money的时候,请看好了!!!要不损失了别后悔!!! 现象1: public static void main(String[] args) { System.out.println(0. ...