结组队员:刘静(20092532) 解凤娇(20112878) 王洪叶(20112886)
一、电梯调度编写综述:
1、电梯分为四个,因此设置一个电梯标号选项工乘客选择向乘坐的电梯。
2、电梯为负一层到二十层,因此为满足电梯需求,每一层电梯内部设置26个按钮工乘客选择所要到达的电梯层数。电梯外部设置两个按钮(第二十层和负一层除外,第二十层只设置向下按钮,负一层只设置向上按钮)并通过按钮的亮灭状态判断电梯的运行状态。
3、电梯时间设置:电梯到达各层停止时间设置为10s供电体中乘客走出或者电梯外部的人进入电梯;电梯开关门时间设置为1s,通过每一层所用时间为9s。
4、电梯在每一层会判断电梯载重量是否超重,若超重则不再应答电梯外部请求,直到满足条件为止。
二、流程图:
三、功能实现思想:
1、编译环境:vs2010
2、实现语言:C#
3、(1)静态数据设置:
具体实现部分代码:
static public class St { public enum proSt { Wait, Run ,Ready}; public enum dir { Up, Down, Stay }; } public class INFO //INFO数据块 { public bool Run = true; //电梯运行状况 public int req = 0; //电梯剩下的请求数 public St.proSt sta = St.proSt.Ready; //电梯运动状态 public St.dir edir = St.dir.Stay; //电梯运动的方向 public St.dir nextDir = St.dir.Stay; //电梯被请求的下一个运动方向 public int curFlo = 0; //电梯当前楼层数 public int[] upFlo = new int[20]; //上行 目的地状态栏:0为没有请求 1为有请求 public int[] downFlo = new int[20]; //下行 目的地状态栏:0为没有请求 1为有请求 public int[] light = new int[20]; //电梯内按钮灯的状态,1为亮灯,0为灭灯 public int[] uplight = new int[20]; //控制上行灯的显示状态标识 public int[] dLight = new int[20]; //控制下行灯的显示状态标识 }
(2)电梯运行状态类:public class Process
具体代码部分:
public class Process { public INFO info = new INFO(); public TextBox eleSta = new TextBox(); //用来显示此电梯状况的表 private delegate void boxDelegate(); public void Lightup(int floor) { info.light[floor - 1] = 1; } public void Lightclose(int floor) { info.light[floor] = 0; }
(3)电梯运行方向实现方法:public void setdir()
具体实现部分代码:
public void setdir() { int i = 0; if (info.req != 0) { for (i = info.curFlo; i != 20; i++) { if (info.upFlo[i] == 1) { if (info.curFlo == i) { info.edir = St.dir.Stay; break; } else { info.edir = St.dir.Up; break; } } } if(i == 20) { for(i = 19;i != -1 ;i--) { if (info.downFlo[i] == 1) { if (info.curFlo == i) { info.edir = St.dir.Stay; break; } else { info.edir = St.dir.Down; break; } } } } if(i == -1) info.edir = St.dir.Stay; } }
(4)请求参数改变运行状态:public void setFlo(int floor, int reqDir)
具体实现部分代码:
四、运行界面
五、小组成员时间安排
原文:http://www.cnblogs.com/kengqiangmeiguiye/p/3614668.html