停车场计费函数c语言 停车场计时收费函数c语言( 二 )


cout"\t|然后根据屏幕提示进行相关操作,要退出系统请按Q键 。|\n\n";
cout"\t|--------------------------------------------------|\n\n";
cout"请选择操作:";
gets(choice);
if(1 != strlen(choice))
{
cout"请正确输入选项!";
continue;
}
else
{
switch(*choice)
{
case 'c':
case 'C':
{
Car_come(parking,sidewalk);break;
}
case 'l':
case 'L':
{
Car_leave(parking,sidewalk);break;
}
case 'q':
case 'Q':
{
flag=0;break;
}
case 'd':
case 'D':
{
Display(parking);break;
}
default:
cout"选择不正确!请重新选择!\n";
}
}
}
}
//有车到来时的操作
void Car_come(SeqStack parking , LQueue *sidewalk)
{
//定义变量
char license_plate[MAX_PLATE];
cout"请输入车辆的车牌号码:";
Input_Check(license_plate);
//判断停车场是否已满,满则进入便道,不满进入停车场
if(StackFull(parking))
{
In_LQueue(sidewalk , license_plate);//进入便道
cout"停车场已满请在便道等候,您的位置为"QueueLength(sidewalk)
endl;
}
else
{
StackPush(parking , license_plate , GetTickCount());//进入停车场
cout"请进入停车场中的"parking.top+1"号停车位\n";
}
// Display(parking);
}
//有车离开时的操作
void Car_leave(SeqStack parking , LQueue *sidewalk)
{
//定义变量
SeqStack tmpparking;//定义临时停车场
char leave_license_plate[MAX_PLATE]; //要离开的车牌号
char license_plate[MAX_PLATE];//存放从停车场中读出来的车牌信息
int time;
InitStack(tmpparking);//初始化临时停车场
//判断停车场中是否有车
if(StackEmpty(parking))
{
cout"当前停车场中没有车\n";
return;//退出子函数
}
cout"请输入要离开的车牌照:";
Input_Check(leave_license_plate);
cout"当前停车场中有"parking.top+1"辆车\n";
if(LeaveCheck(parking , leave_license_plate)) //判断车是否在停车场中
{
//车在停车场中
cout"您的车在"LeaveCheck(parking , leave_license_plate)"号车位上\n";
while(StackTop(parking , license_plate , time)
(strcmp(parking.STOP[parking.top].license_plate , leave_license_plate) != 0))
{
strcpy(parking.STOP[parking.top].license_plate , license_plate);
cout"牌照为"license_plate"的车暂时退出停车场"parking.top+1"号位\n";
StackPush(tmpparking , license_plate , time);//停车场中的车暂时退出 进入临时停车场
StackPop(parking);//出栈
}
cout"牌照为"license_plate"的车离开停车场"parking.top+1"号位\n";
cout"您在停车场中停了"(GetTickCount()-time)/TIME_MS_TO_CONUTTIME_COUNTendl;//输出所停时间信息
cout"应缴费用为"(GetTickCount()-time)/TIME_MS_TO_CONUT*UNIT_PRICE"元\n";;//输出费用信息
StackPop(parking);//出栈
//将临时停车场中的车停回停车场
while(StackEmpty(tmpparking) != 1)
{
StackTop(tmpparking , license_plate , time);
StackPush(parking , license_plate , time);
cout"牌照为"license_plate"的车进入停车场"parking.top+1"号位\n";
license_plate[0] = '\0';
StackPop(tmpparking);
}
if(parking.top+1 == MAX_STOP-1)//判断车离开前停车场是否停满
if(QueueLength(sidewalk))//如果停满则判断便道上是否有车
{
//便道中有车 则从便道中停入停车场
Out_LQueue(sidewalk , license_plate);//出队
StackPush(parking , license_plate , GetTickCount()); //入栈
cout"在便道中牌照为"license_plate"的车进入停车场"parking.top+1"号位\n";

推荐阅读