停车场(2)

xiaoxiao2021-02-28  72

#include "L.h" #include <stdlib.h> #include <stdio.h> #define FALSE 0 #define TRUE 1 int count = 0; int a = 0; int main() { Queue* Wait = Create_Queue(); Queue* Stop = Create_Queue(); LinkStack* Give = Create_Stack(); while(1) { system("clear"); if(count == 0) { printf("停车场当前没有车辆,请停车\n"); sleep(1); QueueData x; printf("请输入你要停放车辆的id\n"); scanf("%d",&x.id); printf("正在停车,请稍候\n"); x.time_first = time(NULL); EnQueue(Stop,x); count++; sleep(1); printf("停车成功,开始计时\n"); getchar(); sleep(1); continue; } printf("**************************************************\n"); printf("* *\n"); printf("* 1、停放车辆 *\n"); printf("* *\n"); printf("* 2、取走车辆 *\n"); printf("* *\n"); printf("* 3、查看停车信息 *\n"); printf("* *\n"); printf("* 4、退出 *\n"); printf("* *\n"); printf("**************************************************\n"); printf("停车场当前有%d辆车,等待区有%d辆车\n",count,a); printf("请输入你的选择:\n"); char c; scanf("%c",&c); if(c == '1') { QueueData x; printf("请输入你要停放车辆的id\n"); scanf("%d",&x.id); printf("正在停车,请稍候\n"); x.time_first = time(NULL); sleep(1); if(find_id(Stop, x.id)) { printf("对不起,该车辆已在停车场中\n"); } else if(count < 10) { EnQueue(Stop,x); count++; printf("停车成功,开始计时\n"); } else { EnQueue(Wait,x); a++; printf("停车场已满,车辆进入候车区\n"); } sleep(1); printf("输入回车键继续\n"); getchar(); getchar(); } else if(c == '2') { int id; QueueData x; printf("请输入你要取的车辆的id\n"); scanf("%d",&id); printf("正在查车并取车,请稍候\n"); sleep(1); if(!find_id(Stop, id)) { printf("对不起,该车辆不在停车场中,取车失败\n"); getchar(); getchar(); continue; } while(!QueueEmpty(Stop)) { re_DeQueue(Stop,&x); count--; if(x.id == id) { break; } Push(Give,x); } printf("取车成功,停放时间为%d秒,请缴费\n",Time_Stop(x)); while(!StackEmpty(Give)) { Pop(Give,&x); EnQueue(Stop,x); count++; } if(!QueueEmpty(Wait)) { DeQueue(Wait,&x); x.time_first = time(NULL); EnQueue(Stop,x); count++; a--; } sleep(1); printf("输入回车键继续\n"); getchar(); getchar(); } else if(c == '3') { printf("正在查询,请稍候\n"); sleep(1); system("clear"); printf("车辆编号 车辆停放时间\n"); Node * node = (Node*)malloc(sizeof(Node)/sizeof(char)); if (node == NULL) { return FALSE; } node = Stop->front; int b = count; while(b) { sleep(1); printf(" %d",node->data.id); if(Time_Stop(node->data) >= 60) { printf(" %dm %ds\n",Time_Stop(node->data)/60,Time_Stop(node->data)`); } else printf(" %ds\n",Time_Stop(node->data)); node = node->next; b--; } sleep(1); printf("输入回车键继续\n"); getchar(); getchar(); } else if(c == '4') { Destroy(Give); Destroy_Queue(Stop); Destroy_Queue(Wait); system("clear"); exit(0); } else if( c == '\n') { continue; } else { printf("输入有误,请重新输入\n"); sleep(1); printf("输入回车键继续\n"); getchar(); getchar(); } } return 0; }停车场的实现主要使用的两个队列和一个栈,一个停车队列,一个等候队列,一个让路栈,当有车进入停车场的时候会先判断停车队列是否满了,如果停车队列未满,该辆车将直接停车在停车场,如果停车场已经满了,那么该车将停入等候队列,当用户取车的时候,会让该车辆后面的车先出队列进入栈中,让该车直接出队列,再将栈中的车停入停车队列中,此时如果候车队列中有车将候车队列中取出一辆车停入停车队列中。
转载请注明原文地址: https://www.6miu.com/read-72584.html

最新回复(0)