控制台模拟电梯工作原理
来源:互联网 发布:jquery.rotate.1 1.js 编辑:程序博客网 时间:2024/04/30 22:56
代码片段(4)[全屏查看所有代码]
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
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;
}
}
}
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
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();
}
}
}
4. [代码][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
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();
}
}
}
0 0
- 控制台模拟电梯工作原理
- java 多线程 模拟一台电梯的工作状态
- Struts2工作原理模拟
- 电梯调度模拟系统
- 简易电梯模拟程序
- 课程设计-电梯模拟
- 电梯调度算法模拟
- c语言,电梯模拟
- 电梯调度模拟系统
- 模拟电梯调度程序
- 电梯模拟系统
- 【java】电梯调度模拟
- Java-模拟电梯运行
- [NOIP2017模拟]太空电梯
- 模拟电梯系统的问题
- 简单电梯调度算法模拟
- 51单片机模拟电梯汇编程序
- C语言电梯模拟程序
- matplotlib内坐标的设置及使用
- 处理器,操作系统,程序的位数,指针的长度
- 在Spring MVC中,事务可以加在Controller层
- Android 性能分析案例
- IE11 经常崩溃的一个解决方法
- 控制台模拟电梯工作原理
- Centos 7安装XFCE桌面
- PHP面向对象-单列模式
- Form builder开发一些技巧
- 随机点云遍历构造成树
- SGU129 Inheritance
- 大概知道 ParameterSet 是什么意思了
- redis 应用场景
- 腾讯-信鸽实现消息推送