结队编程作业——电梯调度
结队成员:朱民福,李遇塘。
李遇塘的博客地址:http://home.cnblogs.com/u/Liyutang/
成员照片:
电梯调度
现有一新建办公大厦,共有21层,共有四部电梯,所有电梯基本参数如下表所示:
电梯编号 |
可服务楼层 |
最大乘客数量 |
最大载重量 |
1 |
全部楼层 |
10 |
800 kg |
2 |
单层 |
10 |
800 kg |
3 |
双层 |
20 |
1600 kg |
4 |
全部楼层 |
20 |
2000 kg |
其使用规定如下:
1、楼层号为0~20,其中0号为地下一层;
2、有楼层限制的电梯不在响应楼层停靠,如单双层;
3、所有电梯采用统一按钮控制
请根据上述要求设计并实现一个电梯控制程序,如果有图形显示就更好了。
程序分析
首先运行,中间的textbox显示电梯的初始楼层,下边的button是用户所在楼层,最上边的是选择使用的电梯号。
假设人在15层,点击15,电梯是向上走的,置or为0。
public static class quanju { public static int flot = 0;//dianti suo zai louceng! public static int flag = 0;//运行状态 public static int num_flot = 0; public static int or = 2;//0为上!1为下!2为静止 public static int flot1 = 0; public static int flot2 = 0; public static int flot3 = 2; public static int flot4 = 0; }
比电梯所在楼层的楼层按钮低的不响应。
到达15层,开门!并且重置禁止响应的楼层按钮。
实现是通过在窗口中添加4个timer控件,在控件中分别控制对应的电梯运行,其中的语句在4个timer事件中差不多。
private void timer1_Tick(object sender, EventArgs e) { if (quanju.flag == 0)//没到 { int a = quanju.flot; quanju.num_flot = a; if (a > quanju.flot1 && quanju.flot1 < 21) { quanju.or = 0;//正在向上 textBox1.Text = Convert.ToString(quanju.flot1); quanju.flot1++; } else if (a < quanju.flot1 && quanju.flot1 > -1) { quanju.or = 1;//正在向下 textBox1.Text = Convert.ToString(quanju.flot1); quanju.flot1--; } else if (a == quanju.flot1) { quanju.or = 2;//正在开门 textBox1.Text = Convert.ToString(quanju.flot1); timer1.Enabled = false;//关闭计时器 quanju.flag = 1; } } if (quanju.flag == 1)//到达指定楼层 { textBox1.Text = "正在开门! "; quanju.flag = 0;//可以运行 quanju.or = 2;//静止 button2.Enabled = true; button6.Enabled = true; button7.Enabled = true; button8.Enabled = true; } }
然后就是电梯如果是向上状态,应该禁止响应比电梯楼层低的楼层按钮。
private void button2_Click(object sender, EventArgs e) { if(quanju.or==0) //shang { //比当前楼层低的按钮不响应 if(int.Parse(button2.Text)<=quanju.flot1) { button2.Enabled = false; } } else if (quanju.or == 1)//xia { //比当前楼层高的按钮不响应 if (int.Parse(button2.Text) >= quanju.flot1) { button2.Enabled = false; } } else //静止状态传送本按钮楼层 { quanju.flot = int.Parse(button2.Text); } }
最后就是上边的选择要使用的电梯号。事件为启动timer控件。
public void button1_Click(object sender, EventArgs e) { timer1.Enabled = true; }
总结
在这次结队编程过程中,我第一次体会到了和单人编程不一样的感觉,虽然因为第一次合作没有什么默契,但是随着我们的努力,两人之间的配合也是越来越好,我感到非常兴奋,这才是结队编程,和独行侠完全不一样的感觉。虽然由于我们两人的编程基础比较薄弱,整个过程磕磕碰碰的,路上充满了荆棘,编程过程中,总是出现各种各样的问题,但是我们两人齐心协力,请教同学中的大神,还是解决了一些问题,但是由于实力原因,还是无法完成老师的要求,我们感到非常惭愧与歉疚,非常抱歉!下次编程我们一定会更加努力,努力看书,多编程。总之,这次结队编程带给了我不一样的体验,以后我会加倍努力的!