结队作业之电梯调度程序
结对伙伴朱岭杰:http://www.cnblogs.com/zhulingjie/
我们使用了C#来做这个电梯调度程序,一开始我们做了一个界面,运行如下图:
其中运行部分使用的timer控件,使用了4个timer控件来控制分别的运行程序,后来明白了应该统一调度,然后又做了一个界面,准备开始重新编写,写了4天多有很大问题,就在后面贴一下新的界面,分解一下这个程序的代码。timer事件如下:
label1.Top通过坐标控制模拟电梯的label1的运动。声明几个全局变量来改变电梯运行状态和楼层数。
private void timer5_Tick(object sender, EventArgs e) { //label1的运行 if (label1.Top >= 58 && quanju.or1 == 0) { label1.Top -= 22; } else if (label1.Top <= 498 && quanju.or1 == 1) { label1.Top += 22; } if (quanju.flag1 == 0)//没到 { int a = quanju.ft1; if (a > quanju.flot1 && quanju.flot1 < 21) { quanju.or1 = 0;//正在向上 textBox1.Text = Convert.ToString(quanju.flot1); quanju.flot1++; } else if (a < quanju.flot1 && quanju.flot1 > -1) { quanju.or1 = 1;//正在向下 textBox1.Text = Convert.ToString(quanju.flot1); quanju.flot1--; } else if (a == quanju.flot1) { quanju.or1 = 2;//正在开门 textBox1.Text = Convert.ToString(quanju.flot1) + "开门"; timer5.Enabled = false;//关闭计时器 quanju.flag1 = 1; } } else if (quanju.flag1 == 1)//到达指定楼层 { textBox1.Text = Convert.ToString(quanju.flot1); quanju.flag1 = 0;//可以运行 quanju.or1 = 2;//静止 foreach (Control c in this.Controls) { if (c is Button) { c.Enabled = true; } } } }
button按钮传递用户的需求,其中学到最多的就是一定要多建立子函数或者类来达到相同目的。我们这次直接在button事件中多次复制粘贴修改代码,代码行数不忍直视,以后一定要改正。
private void button27_Click(object sender, EventArgs e) { int loc = 9;//传递用户所在楼层 int or = 1;//并且用户要往上去 if (timer5.Enabled == true) { if (quanju.or1 == or && loc >= quanju.flot1)//xia { button7.BackColor = Color.Red; button7.Enabled = false; }// 这地方只适合一个电梯的调度使用,多部电梯不需要{}中的内容 } else //电梯不运行的时候在传递用户的楼层 { quanju.ft1 = loc; } if (timer6.Enabled == true) { if (quanju.or2 == or && loc >= quanju.flot2)//xia { button7.BackColor = Color.Red; button7.Enabled = false; } } else { quanju.ft2 = loc; } if (timer7.Enabled == true) { if (quanju.or3 == or && loc >= quanju.flot3)//xia { button7.BackColor = Color.Red; button7.Enabled = false; } } else { quanju.ft3 = loc; } if (timer8.Enabled == true) { if (quanju.or4 == or && loc >= quanju.flot4)//xia { button7.BackColor = Color.Red; button7.Enabled = false; } } else { quanju.ft4 = loc; } }
上边的按钮是激活电梯运行,我们以为用户选择哪个哪个在调度,后来发现这个程序需要使用多线程来完成,否则就会发生冲突,由于没使用过多线程问题,我们两个想要重新编写的程序遇到了很多的问题,虽然作业提交了,但是我们两个还会继续完成这个作业,达到完全满足作业要求的程序,来提高自己。
这个界面是去掉了上边的启动timer控件的4个按钮,代码还要继续完善 ——!
总结:
这次作业是两个人结对作业,感觉到了两个人一起会发现对方很多的优点和自己的不足,在写代码的时候也是感觉很轻松,每个人的知识量都是有限的,两个人就会互相弥补不足然后共同进步,感觉这次作业对我们两个人的提升很大。