结对开发 电梯调度的实现(徐梦迪&刘博)

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语句判断来实现楼层颜色变化。

这个是我们初步实现的功能,仅仅实现了电梯的上下移动,还没有实现电梯人数的限制,我们还会对这个进行不断改进。对于电梯门的开关我们还没有很好的实现也会在以后的进程中增加。

原文地址:https://www.cnblogs.com/mengdi/p/3604121.html