資源簡介
設計一個電梯模擬系統。這是一個離散的模擬程序,由隨機事件驅動,以模擬時鐘決定乘客或電梯的動作發生的時刻和順序,系統在某個模擬瞬間處理有待完成的各種事情,然后把模擬時鐘推進到某個動作預定要發生的下一時刻。
要求:
(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?<“現在進行電梯系統的初始化------>“?<//樓層初始化
// 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.“?<// 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)
評論
共有 條評論