www.pudn.com > Elevators.rar > Passenger.cpp


//## begin module%1.3%.codegen_version preserve=yes 
//   Read the documentation to learn more about C++ code generator 
//   versioning. 
//## end module%1.3%.codegen_version 
 
//## begin module%3C12C5580352.cm preserve=no 
//	  %X% %Q% %Z% %W% 
//## end module%3C12C5580352.cm 
 
//## begin module%3C12C5580352.cp preserve=no 
//## end module%3C12C5580352.cp 
 
//## Module: Passenger%3C12C5580352; Package body 
//## Subsystem:  
//## Source file: D:\Program\OOP\Elevators\SourceCode\Passenger.cpp 
 
//## begin module%3C12C5580352.additionalIncludes preserve=no 
//## end module%3C12C5580352.additionalIncludes 
 
//## begin module%3C12C5580352.includes preserve=yes 
#include "stdafx.h" 
//## end module%3C12C5580352.includes 
 
// Passenger 
#include "Passenger.h" 
//## begin module%3C12C5580352.declarations preserve=no 
//## end module%3C12C5580352.declarations 
 
//## begin module%3C12C5580352.additionalDeclarations preserve=yes 
//## end module%3C12C5580352.additionalDeclarations 
 
 
// Class CPassenger  
 
 
 
 
 
 
 
 
 
CPassenger::CPassenger() 
  //## begin CPassenger::CPassenger%3C12151703DE_const.hasinit preserve=no 
      : m_iFloor(1), 
        m_enStatus(WAITING), 
        m_lWaitTimer(0), 
        m_iDelay(10), 
        m_iRideTimes(3) 
  //## end CPassenger::CPassenger%3C12151703DE_const.hasinit 
  //## begin CPassenger::CPassenger%3C12151703DE_const.initialization preserve=yes 
  //## end CPassenger::CPassenger%3C12151703DE_const.initialization 
{ 
  //## begin CPassenger::CPassenger%3C12151703DE_const.body preserve=yes 
  //## end CPassenger::CPassenger%3C12151703DE_const.body 
} 
 
CPassenger::CPassenger(const CPassenger &right) 
  //## begin CPassenger::CPassenger%3C12151703DE_copy.hasinit preserve=no 
      : m_iFloor(1), 
        m_enStatus(WAITING), 
        m_lWaitTimer(0), 
        m_iDelay(10), 
        m_iRideTimes(3) 
  //## end CPassenger::CPassenger%3C12151703DE_copy.hasinit 
  //## begin CPassenger::CPassenger%3C12151703DE_copy.initialization preserve=yes 
  //## end CPassenger::CPassenger%3C12151703DE_copy.initialization 
{ 
  //## begin CPassenger::CPassenger%3C12151703DE_copy.body preserve=yes 
  //## end CPassenger::CPassenger%3C12151703DE_copy.body 
} 
 
 
CPassenger::~CPassenger() 
{ 
  //## begin CPassenger::~CPassenger%3C12151703DE_dest.body preserve=yes 
  //## end CPassenger::~CPassenger%3C12151703DE_dest.body 
} 
 
 
CPassenger & CPassenger::operator=(const CPassenger &right) 
{ 
  //## begin CPassenger::operator=%3C12151703DE_assign.body preserve=yes 
	return *this; 
  //## end CPassenger::operator=%3C12151703DE_assign.body 
} 
 
 
int CPassenger::operator==(const CPassenger &right) const 
{ 
  //## begin CPassenger::operator==%3C12151703DE_eq.body preserve=yes 
	return 0; 
  //## end CPassenger::operator==%3C12151703DE_eq.body 
} 
 
int CPassenger::operator!=(const CPassenger &right) const 
{ 
  //## begin CPassenger::operator!=%3C12151703DE_neq.body preserve=yes 
	return 0; 
  //## end CPassenger::operator!=%3C12151703DE_neq.body 
} 
 
 
 
//## Other Operations (implementation) 
bool CPassenger::HasRequest () 
{ 
  //## begin CPassenger::HasRequest%3C121C960096.body preserve=yes 
//乘客根据当前的状态判断自己有无请求. 
	switch(m_enStatus) 
	{ 
		case WAITING: 
			{ 
				m_lWaitTimer++; 
				return false; 
			} 
		case INLIFT: 
			{ 
				return false; 
			} 
		case WORKING: 
			{ 
				m_iDelay--; 
				if(!m_iDelay) return true; 
				else return false; 
			} 
//该状态使用来处理那些因为超载而产生的没有满足要求的乘客 
		case NOTSERVED: 
			{ 
				return true; 
			} 
//该状态用来标志那些结束乘坐,要回到一层的乘客 
		case COMPLETED: 
			{ 
				m_iDelay--; 
				if(!m_iDelay) return true; 
				else return false; 
			} 
		case END: 
			{ 
				return false; 
			} 
		default: return false; 
	} 
  //## end CPassenger::HasRequest%3C121C960096.body 
} 
// Additional Declarations 
  //## begin CPassenger%3C12151703DE.declarations preserve=yes 
CPassenger::CPassenger(int ID,int ridetimes) 
{ 
    m_iPID = ID;     
	m_iFloor=1; 
    m_enStatus = WORKING; 
    m_lWaitTimer= 0; 
//为了满足乘客在刚到中心是可以发出请求 
	m_lWorkTimer=0; 
    m_iDelay = 1; //假设乘客刚来的时候已经等了一秒了 
    m_iRideTimes  = ridetimes; 
} 
int CPassenger::GetPID() 
{ 
	return m_iPID; 
} 
 
int CPassenger::GetOriFloor() 
{ 
	return m_iFloor; 
} 
int CPassenger::GetObjFloor() 
{ 
	return m_iObjFloor; 
} 
 
long CPassenger::GetWaitTimer() 
{ 
	return m_lWaitTimer; 
} 
void CPassenger::FinishOneRide() 
{ 
// 乘客结束一次乘坐. 
	m_iRideTimes--; 
	//如果乘坐了L+1次. 
	if(m_iRideTimes<0)  
	{ 
		SetStatus(END); 
	} 
	else 
	{ 
		if(!m_iRideTimes) 
		{ 
			//如果乘坐了L次. 
			SetStatus(COMPLETED); 
			GenRandDelay();//必须停留停留,否则会破坏电梯的工作状态 
		} 
		else 
		{ 
			SetStatus(WORKING); 
			GenRandDelay(); //停留10到120秒. 
		} 
	} 
} 
void CPassenger::SetFloor(int floor) 
{ 
	m_iFloor = floor; 
} 
void CPassenger::SetObjFloor(int floor) 
{ 
	m_iObjFloor= floor; 
} 
void CPassenger::SetStatus(PSTATUS ps) 
{ 
	m_enStatus = ps; 
} 
 
PSTATUS CPassenger::GetStatus() 
{ 
	return m_enStatus; 
} 
void CPassenger::GenRandDelay() 
{ 
	m_iDelay = Random(120,10); 
} 
void CPassenger::GenRandFloor() 
{ 
	m_iObjFloor = Random(40,1); 
	while(m_iObjFloor==m_iFloor) 
	{ 
		m_iObjFloor = Random(40,1); 
	} 
} 
void CPassenger::EndActivity() 
{ 
	m_enStatus = END; 
} 
bool CPassenger::IsCompleted() 
{ 
	if(m_enStatus==COMPLETED) return true; 
	else return false; 
} 
bool CPassenger::IsServed() 
{ 
	if(m_enStatus==NOTSERVED) return false; 
	else return true; 
} 
bool CPassenger::IsEnd() 
{ 
	if(m_enStatus==END) return true; 
	else return false; 
} 
 
 
  //## end CPassenger%3C12151703DE.declarations 
 
//## begin module%3C12C5580352.epilog preserve=yes 
//## end module%3C12C5580352.epilog