电梯调度二——曹玉松&&蔡迎盈
电梯初步版本
经过去实际大楼的调查和一周的学习,初步完成了电梯的制作,但是这个版本的电梯功能并不是很全面,而且界面有待于改善,现在做出了测试版本,稍后进一步跟进新的版本,现在的版本初步完成的是电梯楼层之间上下调度的问题,还有四部电梯之间路程最短的调度,即一个总控控制四部电梯,比较四部电梯哪个电梯距离上电梯者最近,优先调度,还有一部电梯的调度,例如在向上的过程中首先响应向上的楼层,然后再调度其他任务,电梯允许多按钮,并且有颜色变化。其中用到了线程,主要用到了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调度方法. ...
随机推荐
- 学习MQ(二)基本概念
学习MQ(二)基本概念 这次简单罗列一下MQ的基本概念,还有我对它们的理解 1.queue manager 队列管理器,这是MQ系统中最上层的一个概念.每一个queue manager都有一个侦听器, ...
- Spring Boot实战:模板引擎
虽然现在很多开发,都采用了前后端完全分离的模式,即后端只提供数据接口,前端通过AJAX请求获取数据,完全不需要用的模板引擎.这种方式的优点在于前后端完全分离,并且随着近几年前端工程化工具和MVC框架的 ...
- printf("Hello 2018!");
月考 has Boom! 要全心准备期末考试,到年前是不能再看Blog了 新年加油!!! 不要感冒 :joy:
- Lintcode399 Nuts & Bolts Problem solution 题解
[题目描述] Given a set of n nuts of different sizes and n bolts of different sizes. There is a one-one m ...
- var $this = $(this)是什么意思?
var $this = $(this) 声明一个变量,$this 是变量名,加$说明是jquery对象. 给声明的变量赋值,赋的值是将this元素转换为jQuery对象.
- 从数据库读取数据并动态生成easyui tree构结
一. 数据库表结构 二.从后台读取数据库生成easyui tree结构的树 1.TreeNode树结点类(每个结点都包含easyui tree 的基本属性信息) import java.io.Seri ...
- Linux(Redhat)安装Redis
Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.(百度百科 0.0) 下载:http://www.redis. ...
- hashmap,hashTable concurrentHashMap 是否为线程安全,区别,如何实现的
线程安全类 在集合框架中,有些类是线程安全的,这些都是jdk1.1中的出现的.在jdk1.2之后,就出现许许多多非线程安全的类. 下面是这些线程安全的同步的类: vector:就比arraylist多 ...
- vue项目在移动端(手机)调试
查了很长一段时间的资料才搞好. 感悟就是:原来那么简单呐. 首要条件:同一局域网下(大致理解为链接相同的wifi) 1:命令行运行 ipconfig 2: 得到ipv4值, 用该值替换localhos ...
- 洛谷 P1129 解题报告
P1129 [ZJOI2007]矩阵游戏 题目描述 小\(Q\)是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个\(N*N\)黑白方阵进行(如同国际象棋一般 ...