-
大小: 149KB文件類型: .zip金幣: 2下載: 0 次發(fā)布日期: 2021-06-08
- 語(yǔ)言: C/C++
- 標(biāo)簽: 電梯調(diào)度??c++??MFC??
資源簡(jiǎn)介
c++ 寫的電梯調(diào)度程序,圖形界面,源代碼

代碼片段和文件信息
#include?“stdafx.h“
#include?“Monitor.h“
#include?“Floor.h“
//?Elevator
#include?“Elevator.h“
CElevator::CElevator()
??????:?m_enType(ALL)
????????m_iPassengers(0)
????????m_enStatus(WAIT)
????????m_enDirection(DOWN)
????????m_enDoorState(CLOSED)
????????m_lTimer(0)
????????m_lTotalRun(0)
????????m_lTotalIdle(0)
{
}
CElevator::CElevator(const?CElevator?&right)
??????:?m_enType(ALL)
????????m_iPassengers(0)
????????m_enStatus(WAIT)
????????m_enDirection(DOWN)
????????m_enDoorState(CLOSED)
????????m_lTimer(0)
????????m_lTotalRun(0)
????????m_lTotalIdle(0)
{
}
CElevator::~CElevator()
{
delete?m_pltPassenger;
}
CElevator?&?CElevator::operator=(const?CElevator?&right)
{
return?*this;
}
int?CElevator::operator==(const?CElevator?&right)?const
{
return?0;
}
int?CElevator::operator!=(const?CElevator?&right)?const
{
return?0;
}
bool?CElevator::Reachable?(int?iFloor)
{
//?根據(jù)電梯的運(yùn)行規(guī)則判斷能否到達(dá)某一層
if(iFloor>40||iFloor<1)?return?false;
if(iFloor==1)?return?true;
switch(m_enType)
{
//第一種類型每層都可達(dá).
case?ALL: return?true;break;
//第二種類型除一層外只能到25~40.
case?UPPART: if(iFloor<=40?&&?iFloor>=25)?return?true;
else?return?false;
break;
//第三種類型只能到1~25;
case?DOWNPART: if(iFloor>0?&&?iFloor<=25)?return?true;
else?return?false;
break;
//第四種類型12~40中的偶數(shù)層.
case?EVENS: if(iFloor%2==0)?return?true;
else?return?false;
break;
//第五種類型1~40中的奇數(shù)層.
case?ODDS: if(iFloor%2==1)?return?true;
else?return?false;
default: TRACE(“Wrong?requried?floor!\n“);
return?false;
break;
}
return?false;
}
bool?CElevator::IsOverloading?()
{
//?電梯是否超載
if(m_pltPassenger->size()>=m_iCapacity)
return?true;
else?
return?false;
}
void?CElevator::Manager?()
{
//電梯自己的管理器對(duì)自己狀態(tài)的轉(zhuǎn)換控制.
int?ret;
switch(m_enStatus){
case?IDLE:?//電梯的空閑狀態(tài)
m_lTotalIdle++;
m_bFinished?=?false;
if(m_ltMessages.empty())?
{
SetStatus(IDLE);
SetDirection(NONE);
}
else?
{
//消息隊(duì)列不為空檢查是否要停.
if(StopOrNot())?Stop();
//否則運(yùn)行.
else?Start();
}
break;
case?RUN:
m_bFinished?=?false;
m_lTotalRun++;
m_iSpeed--;
//速度控制電梯的位置.
if(!m_iSpeed)
{
if(m_enDirection==UP)?m_iLocation++;
else?m_iLocation--;
m_iSpeed?=?m_pMonitor->m_S;
if(StopOrNot())?Stop();
}
break;
case?WAIT:
m_lTotalWait++;
m_lTotalRun++;
//當(dāng)電梯處于等待狀態(tài)的時(shí)候認(rèn)為他仍在工作
//先下后上
if(!--m_iPassUpDown)
{
if(!PassengerOut())
{
ret?=?PassengerIn();
if(ret!=1)?m_bFinished?=?true;
}
m_iPassUpDown?=?m_pMonitor->m_T;
}
if(m_bFinished)
{
//在這里加入由于滿載而沒(méi)有滿足的乘客的處理
if(ret==2)
{
if(!m_ltWaitMsg.empty())?Overloaded();
}
if(m_ltMessages.empty())?
{
SetStatus(IDLE);
SetDirection(NONE);
}
else?Start();
}
break;
default:?
break;
}
}
void?CElevator::Start?()
{
//電梯的啟動(dòng)
SetStatus(RUN);
//判斷運(yùn)行方向.
JudgeDirec
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2009-03-31?08:53??Elevator\
?????目錄???????????0??2012-03-25?16:40??Elevator\Debug\
?????文件??????147540??2009-01-03?07:05??Elevator\Debug\ESystem.exe
?????文件?????????769??2009-01-02?10:56??Elevator\Debug\result.txt
?????文件???????13801??2009-01-03?03:25??Elevator\Elevator.cpp
?????文件????????4571??2009-01-02?14:59??Elevator\Elevator.h
?????文件???????25900??2009-03-25?12:26??Elevator\ESystem.aps
?????文件????????4646??2009-01-03?08:55??Elevator\ESystem.clw
?????文件????????2077??2001-12-10?14:25??Elevator\ESystem.cpp
?????文件????????5230??2002-01-03?14:29??Elevator\ESystem.dsp
?????文件?????????537??2001-12-10?11:14??Elevator\ESystem.dsw
?????文件????????1335??2001-12-10?11:14??Elevator\ESystem.h
?????文件??????320512??2009-01-03?08:55??Elevator\ESystem.ncb
?????文件???????55808??2009-01-03?08:55??Elevator\ESystem.opt
?????文件????????1016??2009-01-03?07:05??Elevator\ESystem.plg
?????文件???????11551??2009-01-03?07:05??Elevator\ESystem.rc
?????文件???????12351??2009-01-03?07:02??Elevator\ESystemDlg.cpp
?????文件????????1939??2002-01-03?15:13??Elevator\ESystemDlg.h
?????文件?????????630??2009-01-02?14:48??Elevator\Floor.cpp
?????文件?????????901??2009-01-02?15:01??Elevator\Floor.h
?????文件?????????147??2009-01-02?14:48??Elevator\Global.cpp
?????文件?????????266??2009-01-02?15:02??Elevator\Global.h
?????文件????????3823??2009-01-03?03:58??Elevator\Manager.cpp
?????文件????????1644??2009-01-03?04:01??Elevator\Manager.h
?????文件????????4209??2009-01-03?03:02??Elevator\Monitor.cpp
?????文件????????2021??2009-01-03?02:52??Elevator\Monitor.h
?????文件?????????810??2009-01-02?14:52??Elevator\MsgList.cpp
?????文件?????????595??2001-12-17?12:36??Elevator\MsgList.h
?????文件????????3060??2009-01-02?14:53??Elevator\Passenger.cpp
?????文件????????3461??2009-01-03?03:14??Elevator\Passenger.h
?????文件?????????850??2002-01-05?06:52??Elevator\PassengerList.cpp
............此處省略15個(gè)文件信息
- 上一篇:C++串口通信類,包含頭文件和CPP文件
- 下一篇:EasyX圖形庫(kù)
評(píng)論
共有 條評(píng)論