資源簡介
c++ 寫的電梯調度程序,圖形界面,源代碼

代碼片段和文件信息
#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)
{
//?根據電梯的運行規則判斷能否到達某一層
if(iFloor>40||iFloor<1)?return?false;
if(iFloor==1)?return?true;
switch(m_enType)
{
//第一種類型每層都可達.
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中的偶數層.
case?EVENS: if(iFloor%2==0)?return?true;
else?return?false;
break;
//第五種類型1~40中的奇數層.
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?()
{
//電梯自己的管理器對自己狀態的轉換控制.
int?ret;
switch(m_enStatus){
case?IDLE:?//電梯的空閑狀態
m_lTotalIdle++;
m_bFinished?=?false;
if(m_ltMessages.empty())?
{
SetStatus(IDLE);
SetDirection(NONE);
}
else?
{
//消息隊列不為空檢查是否要停.
if(StopOrNot())?Stop();
//否則運行.
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++;
//當電梯處于等待狀態的時候認為他仍在工作
//先下后上
if(!--m_iPassUpDown)
{
if(!PassengerOut())
{
ret?=?PassengerIn();
if(ret!=1)?m_bFinished?=?true;
}
m_iPassUpDown?=?m_pMonitor->m_T;
}
if(m_bFinished)
{
//在這里加入由于滿載而沒有滿足的乘客的處理
if(ret==2)
{
if(!m_ltWaitMsg.empty())?Overloaded();
}
if(m_ltMessages.empty())?
{
SetStatus(IDLE);
SetDirection(NONE);
}
else?Start();
}
break;
default:?
break;
}
}
void?CElevator::Start?()
{
//電梯的啟動
SetStatus(RUN);
//判斷運行方向.
JudgeDirec
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????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個文件信息
- 上一篇:C++串口通信類,包含頭文件和CPP文件
- 下一篇:EasyX圖形庫
評論
共有 條評論