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

结队成员:朱民福,李遇塘。

李遇塘的博客地址: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;
        }
View Code

比电梯所在楼层的楼层按钮低的不响应。

到达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;
            }
        }
View Code

然后就是电梯如果是向上状态,应该禁止响应比电梯楼层低的楼层按钮。

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); 
            }
        }
View Code

最后就是上边的选择要使用的电梯号。事件为启动timer控件。

 public void button1_Click(object sender, EventArgs e)
        {
                timer1.Enabled = true;
        }
View Code

总结

在这次结队编程过程中,我第一次体会到了和单人编程不一样的感觉,虽然因为第一次合作没有什么默契,但是随着我们的努力,两人之间的配合也是越来越好,我感到非常兴奋,这才是结队编程,和独行侠完全不一样的感觉。虽然由于我们两人的编程基础比较薄弱,整个过程磕磕碰碰的,路上充满了荆棘,编程过程中,总是出现各种各样的问题,但是我们两人齐心协力,请教同学中的大神,还是解决了一些问题,但是由于实力原因,还是无法完成老师的要求,我们感到非常惭愧与歉疚,非常抱歉!下次编程我们一定会更加努力,努力看书,多编程。总之,这次结队编程带给了我不一样的体验,以后我会加倍努力的!

 

posted on 2016-04-09 11:33  空白12332  阅读(311)  评论(1编辑  收藏  举报