开发者社区> 问答> 正文

C#控制台模拟电梯工作原理:报错

每天上下楼都是乘坐电梯的,就想电梯的工作原理是什么呢?于是自己写了个控制台程序来模拟一下电梯的工作原理!
采用面向对象的编程思想!将电梯拆解为两部分;
第一部分就是每个楼层的控制器(每个楼层都有叫梯按钮的哈,一个向上一个向下)
第二部分就电梯间了。电梯间里有楼层按钮,你想上那个楼层就可以按哪个按钮了!
技术难点:状态刷新、命令顺序、电梯运行走向

1. [图片] 1.png    

2. [代码][C#]代码     

?
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
 
namespaceElevator
{
    /// <summary>
    /// 楼层类,每个楼层有向上叫梯命令和向下叫梯命令
    /// </summary>
    publicclassFloor
    {
        Elevator elevator;
        /// <summary>
        /// 楼层号
        /// </summary>
        privateint_iFloorNo;
 
        publicintIFloorNo
        {
            get{return_iFloorNo; }
            set{ _iFloorNo = value; }
        }
        /// <summary>
        /// 上行需求
        /// </summary>
        privatebool_boolUp =false;
        /// <summary>
        /// 下行需求
        /// </summary>
        privatebool_boolDown =false;
 
        privatebool_boolStop =false;
 
        publicboolBoolStop
        {
            get{return_boolStop; }
            set{ _boolStop = value; }
        }
 
        #region 构造函数
         
       
        publicFloor(intf,Elevator e)
        {
            _iFloorNo = f;
            elevator = e;
        }
 
        publicFloor(intf)
        {
            _iFloorNo = f;
        }
 
        publicFloor()
        {
        }
        #endregion
 
        /// <summary>
        /// 获取本层是否停靠,是否为命令层
        /// </summary>
        /// <returns>停靠true;过false;</returns>
        publicboolGetStatus()
        {
            return_boolDown || _boolUp;
        }
 
        /// <summary>
        /// 上行返回1;下行返回-1;本层为目的地返回0;
        /// </summary>
        /// <returns></returns>
        publicintGetStatusFlag()
        {
            if(_boolDown)
            {
                return-1;
            }
            elseif(_boolUp)
            {
                return1;
            }
            elseif(_boolStop)
            {
                return0;
            }
            else
            {
                return-999;
            }
 
        }
 
        /// <summary>
        /// 上楼命令
        /// </summary>
        publicvoidCommandUp()
        {
            _boolUp =true;
            elevator.GoToCommandFloor();
        }
 
        /// <summary>
        /// 下楼命令
        /// </summary>
        publicvoidCommandDown()
        {
            _boolDown =true;
            elevator.GoToCommandFloor();
        }
 
        /// <summary>
        /// 楼层到达状态刷新
        /// </summary>
        publicvoidRefresh()
        {
            _boolUp =false;
            _boolDown =false;
            _boolStop =false;
        }
 
 
        /// <summary>
        /// 楼层比较看楼层号
        /// </summary>
        /// <param name="floor"></param>
        /// <returns></returns>
        publicintCompare(Floor floor)
        {
            intresult = 1;
            if(this._iFloorNo > floor._iFloorNo)
            {
                result = 1;
            }
            elseif(this._iFloorNo < floor._iFloorNo)
            {
                result = -1;
            }
            else
            {
                result = 0;
            }
            returnresult;
        }
    }
}

3. [代码][C#]代码     

?
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130

展开
收起
kun坤 2020-06-14 10:37:27 705 0
1 条回答
写回答
取消 提交回答
  • 电梯算法,其实可以不用那么复杂,建立一个队列,然后就是一个电梯的方向,当队列有数时,电梯总会向一个方向上最近的移动,知道到达本次队列该方向上的最大值,然后改变方向(因为不是上就是下-_-),电梯楼层按钮感觉都没必要有上行下行之分了,反正都不是在那里控制的,只是叫电梯来这一层而已,就是把楼层号加入队列中

    这是我个人看法,电梯算法在硬盘的读写中也有用到

    2020-06-14 10:37:33
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
DTS控制台一本通 立即下载
Android内存泄漏自动化链路分析组件--Probe 立即下载
内容驱动游戏分发 立即下载