首页 > 其他 > 详细

电梯调度测试版本——曹玉松&&蔡迎盈

时间:2014-03-17 03:44:20      阅读:604      评论:0      收藏:0      [点我收藏+]

电梯初步版本
    经过去实际大楼的调查和一周的学习,初步完成了电梯的制作,但是这个版本的电梯功能并不是很全面,而且界面有待于改善,现在做出了测试版本,稍后进一步跟进新的版本,现在的版本初步完成的是电梯楼层之间上下调度的问题,还有四部电梯之间路程最短的调度,即一个总控控制四部电梯,比较四部电梯哪个电梯距离上电梯者最近,优先调度,还有一部电梯的调度,例如在向上的过程中首先响应向上的楼层,然后再调度其他任务,电梯允许多按钮,并且有颜色变化。其中用到了线程,主要用到了textbox控件,button按钮,panel容器,每个电梯基本用到的算法与前面所说的基本一致,此外在多textbox输出方面增加了foreach方法。
分工问题:

bubuko.com,布布扣

 主要代码:

1
2
3
4
5
6
int floor = 1;//电梯所在楼层,初始状态为1楼
        int direction = 0;//1状态向上,2向下,0静止
        bool Outdir;
        bool[] Wait = new bool[21];//同向数组
        bool[] Ywait = new bool[21];//反向数组
        int Preprocess = 0;

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
public void Stateofelevator()//显示楼层和上下
       {
           textBox1.Text = floor.ToString();
           Control.ControlCollection cc = panel2.Controls;
           foreach (Control ct in cc)
           {
               if (ct is TextBox)
               {
                   ct.Text = floor.ToString();
               }
           }
          
            
           if (direction == 1)
           {
               textBox1.Text += ‘↑‘;
               foreach (Control ct in cc)
               {
                   if (ct is TextBox)
                   {
                       ct.Text+= ‘↑‘;
                   }
               }
                
             
           }
           else if (direction == 2)
           {
               textBox1.Text +=‘↓‘;
               foreach (Control ct in cc)
               {
                   if (ct is TextBox)
                   {
                       ct.Text += ‘↓‘;
                   }
               }
               
           }
           else
           {
               textBox1.Text += "--";
               foreach (Control ct in cc)
               {
                   if (ct is TextBox)
                   {
                       ct.Text += "--";
                   }
               }
              
                
               
           }
           direction = 0;
            
       }

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
public void Layerofelevator()
       {
           
           int i;
           for (i = floor; i <= 20; i++)
           {
               if (Wait[i] == true)
               {
 
             
                  while(floor <=i)
                  {
                      if (floor == i)
                      {
                          direction = 0;
                      }
                      else
                      {
                          direction = 1;
                      }
                      Stateofelevator();
                      Thread.Sleep(1000);
                       Application.DoEvents();
                           floor++;
                       
                   }
                  Thread.Sleep(5000);
                  floor--;
                   Preprocess--;
                   Wait[i] = false;
               }
              
           }
 
            
           for (i = floor;  i>=0; i--)
           {
               if (Wait[i] == true)
               {
                  while (floor >= i)
                   {
                       if (floor == i)
                       {
                           direction = 0;
                       }
                       else
                       {
                           direction = 2;
                       }               
                         
                      Stateofelevator();
                      Thread.Sleep(1000);
                      Application.DoEvents();
                      floor--;
                   
                   }
                  Thread.Sleep(10000);
                  floor++;
                   Preprocess--;
                   Wait[i] = false;
               }
                
           }
                
 
           }

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public void Outofelevator(int j)
        {
            if ((j < floor) && (direction == 2 || direction == 0) && (Outdir == false))
                {
                    direction = 2;
                    Wait[j] = true;
                    Preprocess++;
 
                }
                else if ((j > floor) && (direction == 1 || direction == 0) && (Outdir == true))
                {
                    direction = 1;
                    Wait[j] = true;
                    Preprocess++;
                }
                else Ywait[j] = true;
 
 
            if ((floor == 20) || (floor == 0) || (Preprocess ==0))
            {
                if (direction == 2)
                {
                    direction = 1;
                }
                else if (direction == 1)
                {
                    direction = 2;
                }
            }
                for (int i = 0; i <= 20; i++)
                {
                    if (Ywait[i] == true)
                    {
                        Wait[i] = true;
                        Preprocess++;
                    }
                }
 
 
            
 
            
}

  

程序截图:

bubuko.com,布布扣 bubuko.com,布布扣

电梯调度测试版本——曹玉松&&蔡迎盈,布布扣,bubuko.com

电梯调度测试版本——曹玉松&&蔡迎盈

原文:http://www.cnblogs.com/caoyusongnet/p/3603858.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!