⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 carbarn.cpp

📁 是一款车库模拟控制系统,可以实现对当前车库存车状态的实时描述.
💻 CPP
字号:
// Carbarn.cpp: implementation of the CCarbarn class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "garage.h"
#include "Carbarn.h"
#include "SeatsSearchDia.h"
#include "SearchAllDia.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
void CCarbarn::adjust(int a,int b,int c){
	charge[0]=a;
	charge[1]=b;
	charge[2]=c;
}
void CCarbarn::park(CCar* a){

	if(a->size==0){
		if(a->parkPlace=findSmallSeat()){
			a->unitPrice=charge[0];
			cars.push_back(a);
			CString b;
			b.Format("%d",a->parkPlace);
		
		}
		else
			AfxMessageBox("There is no more seats for small car.");
	}
	else if(a->size==1){
		if(a->parkPlace=findMiddleSeat()){
			a->unitPrice=charge[1];
			cars.push_back(a);
			CString b;
			b.Format("%d",a->parkPlace);
		
		}
		else
			AfxMessageBox("There is no more seats for middle car.");
	}
	else if(a->size==2)
	{
		if(a->parkPlace=findBigSeat()){
			a->unitPrice=charge[2];
			cars.push_back(a);
			CString b;
			b.Format("%d",a->parkPlace);
		
		}
		else
			AfxMessageBox("There is no more seats for big car.");
	}
	else
	{
		if(a->parkPlace=findBigSeat()){
			a->unitPrice=charge[2];
			a->keepFee=keepCharge;
			cars.push_back(a);
			CString b;
			b.Format("%d",a->parkPlace);
			
		}
		else
			AfxMessageBox("There is no more seats for big car.");
	}
}

int CCarbarn::findSmallSeat()
{
	for(int i=0;i<seat_num_for_smallcar;i++){
		if(seats[i]==false){
			seats[i]=true;
			return i+1;
		}
	}
	return 0;
}
int CCarbarn::findMiddleSeat()
{
	for(int i=seat_num_for_smallcar;i<(seat_num_for_smallcar+seat_num_for_middlecar);i++)
	{
		if(seats[i]==false){
			seats[i]=true;
			return i+1;
		}
	}
	return 0;
}
int CCarbarn::findBigSeat()
{
	for(int i=seat_num_for_smallcar+seat_num_for_middlecar;i<(seat_num_for_smallcar+seat_num_for_middlecar+seat_num_for_bigcar);i++){
		if(seats[i]==false){
			seats[i]=true;
			return i+1;
		}
	}
	return 1;
}
//------------------------------------------------------------------------------------------
int CCarbarn::exit(CString  m){
	for(list<CCar*>::iterator it=cars.begin();it!=cars.end();++it)
		if((*it)->numberPlate==m)
		{
			seats[(*it)->parkPlace-1]=false;
			CString b;
			b.Format("%d",(*it)->parkPlace);
			if((*it)->parkPlace<10)
				b="0"+b;
			CString time=COleDateTime::GetCurrentTime().Format("20%y年%m月%d日 %H:%M");
			CString d;
			if((*it)->size==0)
				d="  小型车 ";
			else if((*it)->size==1)
				d="  中型车 ";
			else if((*it)->size==2)
				d="  大型车 ";
			else 
				d="  大货车 ";
			f.SeekToEnd();
			f.WriteString((*it)->enterTime+d+" 车号为:"+(*it)->numberPlate+"  进入 "+b+"号车位 "+time+" 离开.\n");
			int a=(*it)->getCharge();
			CString c;
			c.Format("%d",a);
			AfxMessageBox(c);
			cars.erase(it);
			return a;
		}
	AfxMessageBox("no this car");
	return 0;


}
//------------------------------------------------------
void CCarbarn::findEmptySeats(){
	CSeatsSearchDia dlg;
	int j=0;
	dlg.m_sSmallSeats+="小型车";
	dlg.m_sMiddleSeats+="中型车";
	dlg.m_sBigSeats+="大型车";

	for(int i=0;i<30;i++){
		if(!seats[i]){
			j++;
			CString b;
			if(i+1<10)
				dlg.m_sSmallSeats+="   0";
			else
				dlg.m_sSmallSeats+="   ";
			b.Format("%d      ",i+1);
			dlg.m_sSmallSeats+=b;
		}
	}
	for(i=0;i<30;i++){
		if(!seats[30+i]){
			j++;
			CString b;
			dlg.m_sMiddleSeats+="   ";
			b.Format("%d      ",i+31);
			dlg.m_sMiddleSeats+=b;
		}
	}
	for(i=0;i<30;i++){
		if(!seats[60+i]){
			j++;
			CString b;
			dlg.m_sBigSeats+="   ";
			b.Format("%d      ",i+61);
			dlg.m_sBigSeats+=b;
		}
	}
		

	dlg.m_totalNum=j;
	dlg.DoModal();

}
//--------------------------------------------------------------------
void CCarbarn::findCurrentCar(){
	CSearchCarDia dlg;
	if(dlg.DoModal()==IDOK){
		for(list<CCar*>::iterator it=cars.begin();it!=cars.end();++it){
			if((*it)->numberPlate==dlg.m_sCarNo)
			{
				CSearchCarDia dlg1;
				dlg1.m_sEnterTime=(*it)->enterTime;
				dlg1.m_sCarNo=(*it)->numberPlate;
				dlg1.m_seatNo=(*it)->parkPlace;
				if((*it)->size==0)
					dlg1.m_sCarSize="小车型";
				else if((*it)->size==1)
					dlg1.m_sCarSize="中车型";
				else if((*it)->size==2)
					dlg1.m_sCarSize="大车型";
				else
					dlg1.m_sCarSize="大货车";
				dlg1.DoModal();
				return;
			}
		}
			AfxMessageBox("没有找到你想要查找的车辆的信息");
	}

}
//-----------------------------------------------------------------------------
void CCarbarn::findAllInfo(){
	CSearchAllDia dlg;
	dlg.m_sAllCar+="  车牌号码         所在车位           ";
	for(list<CCar*>::iterator it=cars.begin();it!=cars.end();++it){
		dlg.m_sAllCar+="    ";
		dlg.m_sAllCar+=(*it)->numberPlate;
		CString a;
		if((*it)->parkPlace<10)
			dlg.m_sAllCar+="              0";
		else dlg.m_sAllCar+="              ";
		a.Format("%d号车位            ",(*it)->parkPlace);
		dlg.m_sAllCar+=a;
	}
	dlg.DoModal();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -