资源简介
设计一个电梯模拟系统。这是一个离散的模拟程序,由随机事件驱动,以模拟时钟决定乘客或电梯的动作发生的时刻和顺序,系统在某个模拟瞬间处理有待完成的各种事情,然后把模拟时钟推进到某个动作预定要发生的下一时刻。
要求:
(1)模拟某校九层教学楼的电梯系统。该楼有一个自动电梯,能在每层停留,其中第一层是大楼的进出层,即是电梯的“本垒层”,电梯“空闲”时,将来到该层候命。
电梯一共有八个状态,即正在开门(Opening)、已开门(Opened)、正在关门(Closing)、已关门(Closed)、等待(Waiting)、移动(Moving)、加速(Accelerate)、减速(Decelerate)。
(2)乘客可随机地进出于任何层。对每个人来说,他有一个能容忍的最长等待时间,一旦等候电梯时间过长,他将放弃。最后一个人放弃能不能取消按键?
(3)模拟时钟从0开始,时间单位为0.1秒。人和电梯的各种动作均要消耗一定的时间单位(简记为t),比如:
有人进出时,电梯每隔40t测试一次,若无人进出,则关门;
关门和开门各需要20t;
每个人进出电梯均需要25t;
电梯加速需要15t; 下行时要不要加速?
上升时,每一层需要51t,减速需要14t;每一层和减速?
下降时,每一层需要61t,减速需要23t;
如果电梯在某层静止时间超过300t,则驶回1层候命。驶回本垒层间接到消息?
(4)电梯调度规则如下:
①就近原则:电梯的主要调度策略是首先响应沿当前行进方向上最近端的请求直到满足最远端请求。若该方向上无请求时,就改变移动方向;
②在就近原则无法满足的情况下,首先满足更高层的请求;
③电梯的最大承载人数为13人,电梯人数达到13人后,在有人出电梯之前,不接受进入电梯的请求;
④乘客上下电梯时先出后进。进电梯时乘客是按发出乘坐请求的顺序依次进入,每次只能进入一人且每个人花费的时间都为25t;
⑤电梯在关门期间(电梯离开之前)所在层提出请求的乘客同样允许进入。
(5)按时序显示系统状态的变化过程,即发生的全部人和电梯的动作序列。
扩展要求:
实现电梯模拟的可视化界面。用动画显示电梯的升降,人进出电梯。设计有下列对象:电梯、人、电梯控制板及其上各种按钮、模拟时钟等。
要求:
(1)模拟某校九层教学楼的电梯系统。该楼有一个自动电梯,能在每层停留,其中第一层是大楼的进出层,即是电梯的“本垒层”,电梯“空闲”时,将来到该层候命。
电梯一共有八个状态,即正在开门(Opening)、已开门(Opened)、正在关门(Closing)、已关门(Closed)、等待(Waiting)、移动(Moving)、加速(Accelerate)、减速(Decelerate)。
(2)乘客可随机地进出于任何层。对每个人来说,他有一个能容忍的最长等待时间,一旦等候电梯时间过长,他将放弃。最后一个人放弃能不能取消按键?
(3)模拟时钟从0开始,时间单位为0.1秒。人和电梯的各种动作均要消耗一定的时间单位(简记为t),比如:
有人进出时,电梯每隔40t测试一次,若无人进出,则关门;
关门和开门各需要20t;
每个人进出电梯均需要25t;
电梯加速需要15t; 下行时要不要加速?
上升时,每一层需要51t,减速需要14t;每一层和减速?
下降时,每一层需要61t,减速需要23t;
如果电梯在某层静止时间超过300t,则驶回1层候命。驶回本垒层间接到消息?
(4)电梯调度规则如下:
①就近原则:电梯的主要调度策略是首先响应沿当前行进方向上最近端的请求直到满足最远端请求。若该方向上无请求时,就改变移动方向;
②在就近原则无法满足的情况下,首先满足更高层的请求;
③电梯的最大承载人数为13人,电梯人数达到13人后,在有人出电梯之前,不接受进入电梯的请求;
④乘客上下电梯时先出后进。进电梯时乘客是按发出乘坐请求的顺序依次进入,每次只能进入一人且每个人花费的时间都为25t;
⑤电梯在关门期间(电梯离开之前)所在层提出请求的乘客同样允许进入。
(5)按时序显示系统状态的变化过程,即发生的全部人和电梯的动作序列。
扩展要求:
实现电梯模拟的可视化界面。用动画显示电梯的升降,人进出电梯。设计有下列对象:电梯、人、电梯控制板及其上各种按钮、模拟时钟等。
代码片段和文件信息
#include“pch.h“
#include“Elevator.h“
#include
#include
#include
#include
#include
#include
using namespace std;
Elevator::~Elevator()
{
Passage* current *temp;
for (int i = 1; i <= Floor; i++)
{
current = UpQ[i];
while (current != NULL){
temp = current;
current = current->next;
delete temp;
}
}
delete[]UpQ;
for (int i = 1; i <= Floor; i++)
{
current = DownQ[i];
while (current != NULL) {
temp = current;
current = current->next;
delete temp;
}
}
delete[]DownQ;
for (int i = 1; i <= Floor; i++)
{
current = Elev_Q[i];
while (current != NULL) {
temp = current;
current = current->next;
delete temp;
}
}
delete[]Elev_Q;
}
void Elevator::Init()
{
// cout << “现在进行电梯系统的初始化------>“ << endl;
//楼层初始化
// cout << “请输入楼层高度:“;
// cin >> Floor;
// 加检测
// UpQ = new Passage*[Floor + 1];
// DownQ= new Passage*[Floor + 1];//外面等待队列采用链表形式
// for (int i = 0; i <= Floor; i++)
// UpQ[i] = NULL;
// for (int i = 0; i <= Floor; i++)
// DownQ[i] = NULL;
//电梯初始化
// cout << “请输入电梯最大载荷人数:“;
// cin >> MaxLoad;
// 加检测
// Number = 0;
// Elev_Q = new Passage*[Floor +1]; //内部等待队列采用数组形式
// for (int i = 0; i <= Floor; i++)
// Elev_Q[i] = NULL;
// now_floor = 1;
// states = Waiting;
// ways = 0;
//时间初始化
//
// cout << “注意:以下设置的时间单位t为0.1s.“ << endl;
// cout << “1)请输入电梯开门时间:“;
// cin >> T_Open;
// 加检测
// cout << “2)请输入电梯关门时间:“;
// cin >> T_Close;
// 加检测
// cout << “3)请输入人员进出时间:“;
// cin >> T_People;
// 加检测
// cout << “4)请输入电梯上行时间:“;
// cin >> T_Up;
// 加检测
// cout << “5)请输入电梯下行时间:“;
// cin >> T_Down;
// 加检测
// cout << “6)请输入电梯加速时间:“;
// cin >> T_Acc;
// 加检测
// cout << “7)请输入电梯上升减速时间:“;
// cin >> T_UpDec;
// 加检测
// cout << “8)请输入电梯下降减速时间:“;
// cin >> T_DownDec;
// 加检测
// cout << “9)请输入电梯关门等待时间:“;
// cin >> T_Test;
// 加检测
// cout << “10)请输入电梯空闲等待时间:“;
// cin >> T_Wait;
// 加检测
Floor=9;
UpQ = new Passage*[Floor + 1];
DownQ = new Passage*[Floor + 1];//外面等待队列采用链表形式
for (int i = 0; i <= Floor; i++)
UpQ[i] = NULL;
for (int i = 0; i <= Floor; i++)
DownQ[i] = NULL;
MaxLoad = 13;
//加检测
Number = 0;
Elev_Q = new Passage*[Floor + 1]; //内部等待队列采用数组形式
for (int i = 0; i <= Floor; i++)
Elev_Q[i] = NULL;
now_floor = 1;
states = Waiting;
ways = 0;
//时间初始化
T_Open=20;
T_Close=20;
T_People=25;
T_Up=51;
T_Down=61;
T_Acc=15;
T_UpDec=14;
T_DownDec=23;
T_Test=40;
T_Wait=300;
}
//获取一队乘客的到来信息,保存在P中,返回到来时间
void Elevator::GetPassage(Passage*& P)
{
//time(0);
int T = rand() %20000;
if (T < 19900)
return;
else //加一个人到列表中
{
Passage*temp = new Passage;
temp->Sorc_floor = rand() % Floor + 1;
temp->Dest_floor = rand() % Floor + 1;
while (temp->Dest_floor == temp->Sorc_floor)
temp->Dest_floor = rand() % Floor + 1; //重摇
temp->T_Stand = rand() % 2000 + 300; //估算人的等待时间在10-120秒
temp->Pname = rand() % 10000;
tem
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-12-06 11:25 模拟电梯\
目录 0 2019-12-02 23:09 模拟电梯\.vs\
目录 0 2019-12-02 23:09 模拟电梯\.vs\模拟电梯\
目录 0 2019-12-19 23:54 模拟电梯\.vs\模拟电梯\v15\
文件 55808 2019-12-19 23:54 模拟电梯\.vs\模拟电梯\v15\.suo
文件 5427200 2019-12-19 23:54 模拟电梯\.vs\模拟电梯\v15\Browse.VC.db
目录 0 2019-12-19 14:01 模拟电梯\.vs\模拟电梯\v15\ipch\
文件 327680 2019-12-19 23:07 模拟电梯\.vs\模拟电梯\v15\ipch\1e79c1d3d1207885.ipch
目录 0 2019-12-05 22:05 模拟电梯\.vs\模拟电梯\v15\ipch\AutoPCH\
目录 0 2019-12-05 21:15 模拟电梯\.vs\模拟电梯\v15\ipch\AutoPCH\cec9e5a631563721\
文件 75956224 2019-12-05 21:15 模拟电梯\.vs\模拟电梯\v15\ipch\AutoPCH\cec9e5a631563721\图的遍历-邻接表.ipch
文件 327680 2019-12-10 08:35 模拟电梯\.vs\模拟电梯\v15\ipch\f4f7feccebcd5da5.ipch
目录 0 2019-12-19 14:02 模拟电梯\Debug\
文件 139264 2019-12-19 14:08 模拟电梯\Debug\模拟电梯.exe
文件 802124 2019-12-19 14:08 模拟电梯\Debug\模拟电梯.ilk
文件 1019904 2019-12-19 14:08 模拟电梯\Debug\模拟电梯.pdb
目录 0 2019-12-19 23:08 模拟电梯\模拟电梯\
目录 0 2019-12-19 14:08 模拟电梯\模拟电梯\Debug\
文件 302963 2019-12-19 15:35 模拟电梯\模拟电梯\Debug\Elevator.obj
文件 308268 2019-12-06 10:42 模拟电梯\模拟电梯\Debug\elevator.obj.enc
文件 4040 2019-12-19 14:02 模拟电梯\模拟电梯\Debug\pch.obj
文件 281600 2019-12-19 15:35 模拟电梯\模拟电梯\Debug\vc141.idb
文件 585728 2019-12-19 15:35 模拟电梯\模拟电梯\Debug\vc141.pdb
文件 194046 2019-12-19 14:02 模拟电梯\模拟电梯\Debug\原语函数.obj
文件 1516 2019-12-05 20:51 模拟电梯\模拟电梯\Debug\模拟电梯.Build.CppClean.log
文件 7660 2019-12-19 15:35 模拟电梯\模拟电梯\Debug\模拟电梯.log
文件 39137 2019-12-19 15:35 模拟电梯\模拟电梯\Debug\模拟电梯.obj
文件 2031616 2019-12-19 14:02 模拟电梯\模拟电梯\Debug\模拟电梯.pch
目录 0 2019-12-19 15:35 模拟电梯\模拟电梯\Debug\模拟电梯.tlog\
文件 5308 2019-12-19 15:35 模拟电梯\模拟电梯\Debug\模拟电梯.tlog\CL.command.1.tlog
文件 27418 2019-12-19 15:35 模拟电梯\模拟电梯\Debug\模拟电梯.tlog\CL.read.1.tlog
............此处省略17个文件信息
- 上一篇:SSM框架新闻管理系统
- 下一篇:全国高校名单—数据库参考(EXCEL)
相关资源
- 电梯模拟问题课程设计报告
- 物业费管理系统源码超详细注释附文
- 数据结构算术表达式求值实验报告
- 数据结构课程设计 表达式类型的实现
- 长整数的代数计算 算法
- 数据结构与程序设计考研试题精选及
- 山东大学数据结构部分笔记.rar
- 数据结构 (STL框架)Part 1
- 数据结构 课程设计 中缀算术表达式求
- 数据结构课程设计----表达式类型的实
- 数据结构课程设计表达式类型的实现
- 资源管理器 中国地质大学数据结构
- 广工数据结构实验
- 电梯模拟c实现
- 数据结构图遍历的演示
- 数据结构课程设计——基于链表与哈
- 02331数据结构复习题及答案
- 数据结构停车管理系统
- 表达式求值问题 数据结构
- 数据结构与算法-AV阿霍 JE霍普克罗夫
- 杭电数据结构课设自选题
- 数据结构期末考试试卷
- “数据结构与算法”课程学习总
- 表达式求值 数据结构
- 外排序初始游程的生成
- 数据结构课程设计之电梯模拟
- 大话数据结构原书+源代码.zip164041
- 《程序员代码面试指南》(高清PDF版
- 耿国华 数据结构 课后答案
- (答案)上海理工大学848真题数据结
评论
共有 条评论