国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#控制臺模擬電梯工作原理

2020-01-24 01:42:05
字體:
來源:轉載
供稿:網友

每天上下樓都是乘坐電梯的,就想電梯的工作原理是什么呢?于是自己寫了個控制臺程序來模擬一下電梯的工作原理!
采用面向對象的編程思想!將電梯拆解為兩部分;
第一部分就是每個樓層的控制器(每個樓層都有叫梯按鈕的哈,一個向上一個向下)
第二部分就電梯間了。電梯間里有樓層按鈕,你想上那個樓層就可以按哪個按鈕了!
技術難點:狀態刷新、命令順序、電梯運行

核心代碼一:

using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace Elevator{  /// <summary>  /// 樓層類,每個樓層有向上叫梯命令和向下叫梯命令  /// </summary>  public class Floor  {    Elevator elevator;    /// <summary>    /// 樓層號    /// </summary>    private int _iFloorNo;     public int IFloorNo    {      get { return _iFloorNo; }      set { _iFloorNo = value; }    }    /// <summary>    /// 上行需求    /// </summary>    private bool _boolUp = false;    /// <summary>    /// 下行需求    /// </summary>    private bool _boolDown = false;     private bool _boolStop = false;     public bool BoolStop    {      get { return _boolStop; }      set { _boolStop = value; }    }     #region 構造函數             public Floor(int f,Elevator e)    {      _iFloorNo = f;      elevator = e;    }     public Floor(int f)    {      _iFloorNo = f;    }     public Floor()    {    }    #endregion     /// <summary>    /// 獲取本層是否停靠,是否為命令層    /// </summary>    /// <returns>停靠true;過false;</returns>    public bool GetStatus()    {      return _boolDown || _boolUp;    }     /// <summary>    /// 上行返回1;下行返回-1;本層為目的地返回0;    /// </summary>    /// <returns></returns>    public int GetStatusFlag()    {      if (_boolDown)      {        return -1;      }      else if(_boolUp)      {        return 1;      }      else if(_boolStop)      {        return 0;      }      else      {        return -999;      }     }     /// <summary>    /// 上樓命令    /// </summary>    public void CommandUp()    {      _boolUp = true;      elevator.GoToCommandFloor();    }     /// <summary>    /// 下樓命令    /// </summary>    public void CommandDown()    {      _boolDown = true;      elevator.GoToCommandFloor();    }     /// <summary>    /// 樓層到達狀態刷新    /// </summary>    public void Refresh()    {      _boolUp = false;      _boolDown = false;      _boolStop = false;    }      /// <summary>    /// 樓層比較看樓層號    /// </summary>    /// <param name="floor"></param>    /// <returns></returns>    public int Compare(Floor floor)    {      int result = 1;      if (this._iFloorNo > floor._iFloorNo)      {        result = 1;      }      else if (this._iFloorNo < floor._iFloorNo)      {        result = -1;      }      else      {        result = 0;      }      return result;    }  }}

核心代碼二:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading; namespace Elevator{  /// <summary>  /// 電梯類,有樓層選擇方法  /// </summary>  public class Elevator  {    #region 屬性     /// <summary>    /// 當前樓層    /// </summary>    public Floor _floorCurrent ;    /// <summary>    /// 全部樓層    /// </summary>    public List<Floor> _floorAll = new List<Floor>();     #endregion     /// <summary>    /// 我想在所輸入參數樓層停止    /// </summary>    /// <param name="floor">想要停止的樓層</param>    public void CommandStop(Floor floor)    {      floor.BoolStop = true;      GoToTargetFloor();    }      /// <summary>    /// 電梯向上運行,運行到floor層    /// </summary>    /// <param name="floor"></param>    public void GoUp(Floor floor)    {      if (_floorCurrent.Compare(floor) < 0)      {      Thread.Sleep(300);      Console.WriteLine("上行:" + _floorCurrent.IFloorNo);      int index = _floorAll.IndexOf(_floorCurrent);      _floorCurrent = _floorAll[index + 1];      GoUp(floor);      }      else {        Thread.Sleep(500);        Reach(floor);      }    }     /// <summary>    /// 電梯向下運行    /// </summary>    public void GoDown(Floor floor)    {      if (_floorCurrent.Compare(floor) > 0)      {        Thread.Sleep(300);        Console.WriteLine("下行:" + _floorCurrent.IFloorNo);        int index = _floorAll.IndexOf(_floorCurrent);        _floorCurrent = _floorAll[index - 1];        GoDown(floor);      }      else {        Thread.Sleep(500);        Reach(floor);      }    }     /// <summary>    /// 前往命令層,循環列表是否有命令層    /// </summary>    public void GoToCommandFloor()    {      foreach (var item in _floorAll)      {        if (item.GetStatus())        {          if (_floorCurrent.Compare(item) < 0)          {            GoUp(item);          }          else if (_floorCurrent.Compare(item) > 0)          {            GoDown(item);          }        }      }    }     /// <summary>    /// 前往目標樓層    /// </summary>    public void GoToTargetFloor() {       foreach (var item in _floorAll)      {        if (item.GetStatusFlag()==0)        {          if (_floorCurrent.Compare(item) < 0)          {            GoUp(item);          }          else if (_floorCurrent.Compare(item) > 0)          {            GoDown(item);          }        }      }    }         /// <summary>    /// 到達樓層命令    /// </summary>    public void Reach(Floor f)    {      Console.WriteLine("電梯門打開,停靠層:"+f.IFloorNo);      f.Refresh();    }   }}

核心代碼三:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading; namespace Elevator{  class Program  {    static void Main(string[] args)    {       Elevator elevator = new Elevator();      List<Floor> lfloor = new List<Floor>();      Floor f1 = new Floor(1, elevator);      Floor f2 = new Floor(2, elevator);      Floor f3 = new Floor(3, elevator);      Floor f4 = new Floor(4, elevator);      Floor f5 = new Floor(5, elevator);      Floor f6 = new Floor(6, elevator);      Floor f7 = new Floor(7, elevator);      Floor f8 = new Floor(8, elevator);      Floor f9 = new Floor(9, elevator);      Floor f10 = new Floor(10, elevator);      lfloor.Add(f1);      lfloor.Add(f2);      lfloor.Add(f3);      lfloor.Add(f4);      lfloor.Add(f5);      lfloor.Add(f6);      lfloor.Add(f7);      lfloor.Add(f8);      lfloor.Add(f9);      lfloor.Add(f10);            elevator._floorAll = lfloor;      //設置當前樓層      elevator._floorCurrent = f1;      //2樓叫梯 想下樓      f2.CommandDown();      //目標樓層為1樓      elevator.CommandStop(f1);      //4樓叫梯      f4.CommandUp();      //目標樓層為8樓      elevator.CommandStop(f8);       Console.ReadLine();    }  }}

以上所述就是本文的全部內容了,希望對大家熟練掌握C#能夠有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 台安县| 巴塘县| 宜州市| 桐梓县| 沙洋县| 读书| 南澳县| 民权县| 雷州市| 丰镇市| 云浮市| 乐都县| 彭阳县| 板桥市| 滦南县| 天等县| 永安市| 定州市| 乐昌市| 仲巴县| 黔江区| 来安县| 陇南市| 剑河县| 霍林郭勒市| 建德市| 林周县| 读书| 安溪县| 无锡市| 盘山县| 鄂尔多斯市| 哈尔滨市| 栖霞市| 泰来县| 丰原市| 昌江| 元江| 克拉玛依市| 衡山县| 宜川县|