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