• 大小: 149KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-08
  • 语言: C/C++
  • 标签: 电梯调度  c++  MFC  

资源简介

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个文件信息

评论

共有 条评论