电梯初步版本
    经过去实际大楼的调查和一周的学习,初步完成了电梯的制作,但是这个版本的电梯功能并不是很全面,而且界面有待于改善,现在做出了测试版本,稍后进一步跟进新的版本,现在的版本初步完成的是电梯楼层之间上下调度的问题,还有四部电梯之间路程最短的调度,即一个总控控制四部电梯,比较四部电梯哪个电梯距离上电梯者最近,优先调度,还有一部电梯的调度,例如在向上的过程中首先响应向上的楼层,然后再调度其他任务,电梯允许多按钮,并且有颜色变化。其中用到了线程,主要用到了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++;
}
} }

  

程序截图:

电梯调度二——曹玉松&&蔡迎盈的更多相关文章

  1. 求二维数组的最大子数组———曹玉松&&蔡迎盈

    继上节课老师让求了一维数组最大的子数组后,这节课堂上,老师加深了难度,给了一个二维数组,求最大子数组,开始觉得很容易,但是自己思考起来感觉这个算法很困难,既需要考虑数组直接的连续,又要求出最大的,老师 ...

  2. 电梯调度设计之初感想——蔡迎盈&&曹玉松

    突然拿到这个问题,蒙了好久,索性走一步,再走一步好了,希望在这天下第一庄里,会看到晴空.   查了好多资料,终于还是整理出一个很草稿的版本,这只能算是我们初步的设计.   四部电梯载重和乘客限制不同, ...

  3. 【软件工程】电梯调度的初步实现 李亚文&&郭莉莉

    一.开门见山,代码粘 using System; using System.Collections.Generic; using System.Data; using System.Drawing; ...

  4. 电梯调度--c++--软件工程

    一.设计思路 (1)将乘客要去的楼层数存起来. (2)假设yi为乘客要爬楼层数之和,yi=n1*|(n1-ni)|+n2*|(n2-ni)|+..+n18*|(n18-ni)| (3)比较y1到y18 ...

  5. OO第二次博客作业——电梯调度

    OO第二次博客作业——电梯调度 前言 最近三周,OO课程进入多线程学习阶段,主要通过三次电梯调度作业来学习.从单部电梯的傻瓜式调度到有性能要求的调度到多部电梯的调度,难度逐渐提升,对同学们的要求逐渐变 ...

  6. 电梯调度编写(oo-java编程)

    第二单元的问题是写一个关于电梯调度的程序. 需要模拟一个多线程实时电梯系统,从标准输入中输入请求信息,程序进行接收和处理,模拟电梯运行,将必要的运行信息通过输出接口进行输出. 主要锻炼学生的多线程程序 ...

  7. OO电梯调度

    告别了三次奇妙无比的求导作业之后,我们就开始搭建一部自己的电梯了.相信我们不同同学的电梯运行方式肯定各具特色吧,但值得肯定的是,在艰苦的走完了三次电梯逐步改进的作业之后,我们的电梯在正常情况下应该是可 ...

  8. 曹玉中-201871010105《面向对象程序设计(java)》第6-7周学习总结

    曹玉中-201871010105<面向对象程序设计(java)>第6-7周学习总结 项目 内容 这个作业属于哪个课程 <任课教师博客主页链接>    https://www.c ...

  9. oo第二次博客-三次电梯调度的总结与反思

    本单元从电梯调度相关问题层层深入,带领我们学习并运用了了多线程相关的知识. 三次电梯调度依次为单电梯单容量.单电梯可携带.多电梯可携带. 一.我的设计 在第一次作业中,使用了最简单的FIFO调度方法. ...

随机推荐

  1. 学习MQ(二)基本概念

    学习MQ(二)基本概念 这次简单罗列一下MQ的基本概念,还有我对它们的理解 1.queue manager 队列管理器,这是MQ系统中最上层的一个概念.每一个queue manager都有一个侦听器, ...

  2. Spring Boot实战:模板引擎

    虽然现在很多开发,都采用了前后端完全分离的模式,即后端只提供数据接口,前端通过AJAX请求获取数据,完全不需要用的模板引擎.这种方式的优点在于前后端完全分离,并且随着近几年前端工程化工具和MVC框架的 ...

  3. printf("Hello 2018!");

    月考 has Boom! 要全心准备期末考试,到年前是不能再看Blog了 新年加油!!! 不要感冒 :joy:

  4. 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 ...

  5. var $this = $(this)是什么意思?

    var $this = $(this) 声明一个变量,$this 是变量名,加$说明是jquery对象. 给声明的变量赋值,赋的值是将this元素转换为jQuery对象.

  6. 从数据库读取数据并动态生成easyui tree构结

    一. 数据库表结构 二.从后台读取数据库生成easyui tree结构的树 1.TreeNode树结点类(每个结点都包含easyui tree 的基本属性信息) import java.io.Seri ...

  7. Linux(Redhat)安装Redis

    Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.(百度百科 0.0) 下载:http://www.redis. ...

  8. hashmap,hashTable concurrentHashMap 是否为线程安全,区别,如何实现的

    线程安全类 在集合框架中,有些类是线程安全的,这些都是jdk1.1中的出现的.在jdk1.2之后,就出现许许多多非线程安全的类. 下面是这些线程安全的同步的类: vector:就比arraylist多 ...

  9. vue项目在移动端(手机)调试

    查了很长一段时间的资料才搞好. 感悟就是:原来那么简单呐. 首要条件:同一局域网下(大致理解为链接相同的wifi) 1:命令行运行 ipconfig 2: 得到ipv4值, 用该值替换localhos ...

  10. 洛谷 P1129 解题报告

    P1129 [ZJOI2007]矩阵游戏 题目描述 小\(Q\)是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个\(N*N\)黑白方阵进行(如同国际象棋一般 ...