java数据结构停车场管理系统_数据结构实验 停车场管理系统(实验3)

代码:

/*

2018年11月12日

*/

#include

#include

#include

#include

#include

#include

#include

using namespace std;

#define PRICE 10

#define MAXN 2

/*

停车场管理系统

1.进车

如果停车场没满 进进车, 否则进入人行道的队列

输入进入时间

2.出车

如果该车在停车场 将之出栈底,其他再次进栈,并从过道上的一个车辆进入停车场.

如果在过道则在队列元素取出即可 剩下的再次按照原队列排队

*/

class Car

{

public:

string CarNum;

int ArrTime;

int AwayTime;

public:

Car(string s,int arrtime):CarNum(s),ArrTime(arrtime)

{

AwayTime=-1;

}

Car()

{

}

void SetAwayTime(int awaytime)

{

AwayTime=awaytime;

}

void SetArrTime(int arrtime)

{

ArrTime=arrtime;

}

};

class Manager

{

private:

queue SideWalkOfCar;

stack Parking;

stack MidCar;

public:

Manager()

{

while(!SideWalkOfCar.empty())

SideWalkOfCar.pop();

while(!Parking.empty())

Parking.pop();

while(!MidCar.empty())

MidCar.pop();

}

bool AddCar(Car car)//添加车

{

/*

如果停车场没满就加入停车场

满 则停到过道,并且把进入停车场时间设为-1

*/

if(Parking.size()

Parking.push(car);

else

{

SideWalkOfCar.push(car);

car.ArrTime=-1;

}

return 1;

}

Car DelCar(string carnum,int awaytime)//删除车 根据车牌号删除车辆

{

int flag=0;//查看车是否在停车场

Car nowcar;

while(!Parking.empty())

{

if(Parking.top().CarNum==carnum)

{

flag=1;

nowcar=Parking.top();

nowcar.AwayTime=awaytime;

Parking.pop();

break;

}

MidCar.push(Parking.top());

Parking.pop();

}

while(!MidCar.empty())

{

Parking.push(MidCar.top());

MidCar.pop();

}

if(flag)//从停车场出来了

{

if(!SideWalkOfCar.empty())

{

//将便道上的车 进入停车场并且设定进入停车场时间

Car mmm;

mmm=SideWalkOfCar.front();

mmm.ArrTime=awaytime;

SideWalkOfCar.pop();

Parking.push(mmm);

}

return nowcar;

}

else//停车场没有

{

int cnt=SideWalkOfCar.size();

while(cnt--)

{

Car mmm;

mmm=SideWalkOfCar.front();

SideWalkOfCar.pop();

if(mmm.CarNum==carnum)

{

mmm.ArrTime=-1;

flag=1;

nowcar=mmm;

}

else

SideWalkOfCar.push(mmm);

}

}

if(flag)

return nowcar;

return Car("ERROR",-1);

}

int Charge(Car car)//根据车算出收费

{

if(car.ArrTime==-1)

return 0;

return (car.AwayTime-car.ArrTime)*PRICE;

}

};

int main()

{

Manager dch;

int IfContinue=1;

while(IfContinue)

{

cout<

cout<

char cmd[5];

scanf("%s",cmd);

switch(cmd[0])

{

case 'a':

{

string num;

int arrtime;

cout<

cin>>num>>arrtime;

dch.AddCar(Car(num,arrtime));

break;

}

case 'd':

{

string num;

int awaytime;

cout<

cin>>num>>awaytime;

Car dchOfCar=dch.DelCar(num,awaytime);

cout<

break;

}

case 'e':

{

IfContinue=0;

scanf("%*s %*d");

break;

}

default:

printf("input error!---please input again:\n");

break;

}

}

}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值