电梯调度二——曹玉松&&蔡迎盈
电梯初步版本
经过去实际大楼的调查和一周的学习,初步完成了电梯的制作,但是这个版本的电梯功能并不是很全面,而且界面有待于改善,现在做出了测试版本,稍后进一步跟进新的版本,现在的版本初步完成的是电梯楼层之间上下调度的问题,还有四部电梯之间路程最短的调度,即一个总控控制四部电梯,比较四部电梯哪个电梯距离上电梯者最近,优先调度,还有一部电梯的调度,例如在向上的过程中首先响应向上的楼层,然后再调度其他任务,电梯允许多按钮,并且有颜色变化。其中用到了线程,主要用到了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调度方法. ...
随机推荐
- 6.4 Schema 设计对系统的性能影响
前面两节中,我们已经分析了在一个数据库应用系统的软环境中应用系统的架构实现和系统中与数据库交互的SQL 语句对系统性能的影响.在这一节我们再分析一下系统的数据模型设计实现对系统的性能影响,更通俗一点就 ...
- spring:org.springframework.web.servlet.DispatcherServlet noHandlerFound解决方法
1.搜了许久: <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern& ...
- Day4_生成器_三元表达式_列表解析_生成器表达式
生成器:在函数内部包含yield关键,那么该函数执行的结果就是生成器. 生成器就是迭代器. def func(): print('first') yield 111111 print('second' ...
- FFPLAY的原理(四)
意外情况 你们将会注意到我们有一个全局变量quit,我们用它来保证还没有设置程序退出的信号(SDL会自动处理TERM类似的信号).否则,这个线程将不停地运 行直到我们使用kill -9来结束程序.FF ...
- 从__acrt_first_block == header 谈起,记录dll链接不一致的问题
最近写了一个postgresql的数据库连接池dll.写的比较随意,某个头文件如下: #pragma once #include "common.h"#include " ...
- Java自学编程学习之路资源合集
Java Web学习 STEP.1---Java基础最重要 工欲善其事,必先利其器.想要学好Java Web,或者说想要开始学Java Web,Java的基础是必不可少. 基本语法(★★★★★) 数组 ...
- 大型EMR电子病历源码三甲医院医疗信息管理系统软件网络版
详情请点击查看 开发环境 :VS2010 + C# + ORACLE系统简介:1各种记录的书写,并可保留修改痕迹 在各种记录的书写过程中,根据系统提供的首次护理记录.一般护理记录.术前术后护理记录等模 ...
- developers.google.com上的开发者文档如何切换显示语言
一个小的tip,搜索到developers.google.com上的开发者文档,有些被翻译了的会自动显示中本版,如果想看英文版,可以在当前url后面加?hl=en,就会变成英文版.估计是根据地区直接推 ...
- NGINX按天生成日志文件的简易配置
NGINX按天生成日志文件的简易配置 0x01 最近后端童鞋遇到一个小需求,拆分nginx生成的log文件,最好是按天生成,看着她还有很多bug待改的状态,我说这个简单啊,我来吧.曾经搞node后端的 ...
- HTML学习笔记3:文字和段落
①标题标签 <h1></h1> ~ <h6></h6>分别对应字体不同的大小,数字又小到大对应字体由大到小 ②段落 <p> ...