结对开发 电梯调度的实现(徐梦迪&刘博)
3月11日星期二下午14:00--15:30
做了一个基本界面,由于要求四部电梯功能是基本一样的,我就先设计了一个电梯,想等功能实现了在用同样的方法设计另外三部电梯。
3月12日星期三晚上19:00--22:00
实现了一些功能,确定了一些基本功能,进行了电梯调度的程序设计,基本确定了大概模块,
具体介绍:
1.左边一列是模拟楼层A,以后电梯具体走向会在这里显示。
2.上面的doorA是要进行设计电梯门的,设想电梯门可以开关。
3.中间的showA是模拟电梯内按键,-1是停车场,1-20是楼层,默认电梯停在1层。用户在这里按键选择要去的楼层。并设置开关键,控制电梯开关。
4.下面的controlA是电梯上下的控制键,用户在电梯外按键上、下使电梯到达用户所在的楼层。这是我们的初步设计,但也被一个难题困住了,怎么把这几个模块联系起来实现电梯的正常使用并屏显出来,我们在这思考了好一会儿,还是没有好的办法。
3月14日星期四晚上19:00--22:00
我们设计了一部电梯,实现了其基本功能,但是好多东西都不符合实际,我们设计了一个四个电梯的界面,讨论的时候,我们觉得四部电梯其实就是一部电梯,因为它们是并联的,运行的过程及其算法是一样的
3月15日星期六晚上19:00--22:00,我们修改了界面,增加了一下功能,实现了一些功能
这个是电梯内部分按钮的代码,因为各个楼层都一样,就不一一列举了。
private void btn1_Click(object sender, EventArgs e) { btn1.ForeColor = Color.Yellow; string s1 = btn1.Name; btnAction(s1); }
3月16日星期日晚19:00-22:30我们修正了代码,初步拟定了我们的测试版电梯调度。下面是部分功能实现的代码。
这个是通过楼层按钮实现把字符转换成数字的函数。基本上也就是通过 int.Parse(str)来实现的。
//string变数字 public int getFloor(string letter) { string s1 = letter; string str = ""; foreach (char s in s1) { if (s <= 58 && s >= 48) { str += s; } } return int.Parse(str); }
这个是楼层的按钮代码。由于每个楼层都设置上下两个按钮,所以要写两个函数通过
btn21Down.ForeColor = Color.Red
实现对楼层颜色的改变,只要掌握了这个函数21层也就和一层一样了。其他代码类似,不在赘述。
private void btn21Down_Click(object sender, EventArgs e) { btn21Down.ForeColor = Color.Red; string s1 = btn21.Name; btnAction1(s1); } private void btn21Up_Click(object sender, EventArgs e) { btn21Up.ForeColor = Color.Red; string s1 = btn21.Name; btnAction1(s1); }
public void btnAction(string s1)//形成队列处理函数一 { isRequest[getFloor(s1)]=1; if (getFloor(s1) < l.Num) { lbldown.ForeColor = Color.Red; lbDown.ForeColor = Color.Red; } else if (getFloor(s1) > l.Num) { lblup.ForeColor = Color.Red; lbUp.ForeColor = Color.Red; } Squeue.msg[getFloor(s1)] = getFloor(s1);//将楼层存入数组 isRequest[getFloor(s1)] = 0;//确定已存入 }
这个是队列处理函数,处理电梯外按钮的动作,是将按钮存入的数据看成个目标,把将要达到这个目标的数据看成一个数组,通过if语句判断来实现楼层颜色变化。
这个是我们初步实现的功能,仅仅实现了电梯的上下移动,还没有实现电梯人数的限制,我们还会对这个进行不断改进。对于电梯门的开关我们还没有很好的实现也会在以后的进程中增加。