結對開發項目 電梯調度發布版(已完成) 劉佳琪、蘭夢


---恢復內容開始---

程序開發周期

程序的一些重要算法

public void call()//根據電梯所在樓層和所在樓層的距離差,選擇最近的電梯調度
        {
            int[] a = new int[4];
            a[0] = (442 - label2.Top) / 19;//電梯一所在樓層
            a[1] = (442 - label3.Top) / 19;//電梯二所在樓層
            a[2] = (442 - label4.Top) / 19;//電梯三所在樓層
            a[3] = (442 - label5.Top) / 19;//電梯四所在樓層
            int n = 0;
            int min = 461;
            for (int i = 0; i <= 3; i++)//找出距離最近的電梯
                if (Math.Abs(a[i] - floor1) < min)
                {
                    n = i;
                    m=n;//傳值到函數用來判斷請求到的電梯
                    min = Math.Abs(a[i] - floor1);
                }
            if (floor1 - a[n] == 0)//所在樓層相同不動
            {
                switch (n)
                {
                    case 3:
                        this.timer1.Stop();
                        break;
                    case 2:
                        this.timer3.Stop();
                        break;
                    case 1:
                        this.timer5.Stop();
                        break;
                    case 0:
                        this.timer7.Stop();
                        break;
                }
            }
            else
            {
            if ((floor1 - a[n])> 0)//電梯所在樓層小於請求樓層,向上走
            {
                switch (n)
                {
                    case 3:
                        this.timer1.Start();
                        break;
                    case 2:
                        this.timer3.Start();
                        break;
                    case 1:
                        this.timer5.Start();
                        break;
                    case 0:
                        this.timer7.Start();
                        break;
                }
            }
/*向下走*/
else { switch (n) { case 3: this.timer2.Start(); break; case 2: this.timer4.Start(); break; case 1: this.timer6.Start(); break; case 0: this.timer8.Start(); break; } } } }

 電梯的上升函數

 public void timer1_Tick(object sender, EventArgs e)//電梯四上升
        {
            label7.Text = "電梯四";//顯示請求到的電梯
            label1.Text = ("" + (461 - label5.Top) / 19 + "");//顯示所在樓層及狀態
            if (label5.Top < 53 + 19 * (21 - floor1))
                this.timer1.Stop();
            label5.Top -= 19;//電梯上升
        }

電梯下降函數

 private void timer2_Tick(object sender, EventArgs e)//電梯四下降
        {
            label7.Text = "電梯四";
            label1.Text = ("" + (424 - label5.Top) / 19 + "");
            if (label5.Top >404-19*floor1 )
                this.timer2.Stop();
                 label5.Top += 19;
        }

運行的一些截圖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM