结队作业——电梯调度程序

结队伙伴‘隋世旭’ http://www.cnblogs.com/suisx/

经过商讨,我们决定使用c#来做这个电梯调度程序。一开始我们做了一个界面,运行如下图:

其中运行部分使用的timer控件,使用了4个timer控件来控制分别的运行程序,后来经过商讨与询问明白了应该使用统一调度来实现。经过多次修改与完善后完成了一个新的界面,不过依然存在着各种问题,经过与同伴的交流与向其他人询问最终完成了一个较为满意的界面。

就这一界面分解一下这个程序的代码。

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;
                    }
                }
            }
        }

 

 

timer事件如下:

label1.Top通过坐标控制模拟电梯的label1的运动,声明几个全局变量来改变运行状态和楼层数。

代码:

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;
            }
        }

 

button按钮传递用户的经过,学到东西最多的就是一定要建立子函数或者类来达到清晰明了直观的目的。我们这次直接在buttun事件中多次复制粘贴修改代码,代码不是很规范,下次一定注意

上边的按钮是激活电梯运行的,我们以为是用户选择的,后来发现需要使用多线程来解决这一问题,否则会发生冲突,由于没学过和使用过这一功能,故给编程带来了很多困难。

总结:在这次结队编程过程中,我受益匪浅,队友很给力,有什么不懂的他经过多方努力都给解决了,让我发现了结队实际上就是拿自己的长处和对方的长处相结合或者是哪对方的长处来弥补自己的不足,这次作业虽然提交了但不够完善,我们会继续努力将它做的尽量完美。

posted @ 2016-04-09 18:25  swses  阅读(304)  评论(1编辑  收藏  举报