收藏 分销(赏)

停车场管理系统源代码.doc

上传人:人****来 文档编号:4584203 上传时间:2024-09-30 格式:DOC 页数:18 大小:38.50KB 下载积分:8 金币
下载 相关 举报
停车场管理系统源代码.doc_第1页
第1页 / 共18页
停车场管理系统源代码.doc_第2页
第2页 / 共18页


点击查看更多>>
资源描述
停车场管理系统源代码 18 2020年4月19日 文档仅供参考,不当之处,请联系改正。 //停车场管理系统 #include<stdio.h> #include<stdlib.h> #define OVERFLOW 0 #define ERROR 0 #define OK 1 #define STACKSIZE 2 //车库容量 //时间节点 typedef struct time{ int hour; int min; }Time; //车辆信息 typedef struct{ char CarNum; float time; int pos_a; //车在停车场中的位置 int pos_b; //车在便道上的位置 int flag; }Car,Car2; //车库信息 (顺序栈) typedef struct{ Car *top; Car *base; int stacksize; }SqStack; //初始化 int InitStack(SqStack &S){ S.base=new Car[STACKSIZE]; if(!S.base) exit(OVERFLOW); S.top=S.base; S.stacksize=STACKSIZE; return OK; } //判空 int StackEmpty(SqStack S){ if(S.top==S.base) return OK; else return ERROR; } //判满 int StackFull(SqStack S){ if(S.top-S.base>=S.stacksize) return OK; else return ERROR; } //入栈 int Push(SqStack &S,Car e){ if(S.top-S.base==S.stacksize) return ERROR; *S.top++=e; return OK; } //出栈 int Pop(SqStack &S,Car &e){ if(S.top==S.base) return ERROR; e=*--S.top; return OK; } //遍历栈 int StackTraverse(SqStack S) { Car *p=S.top; Car *q=S.base; int l=1; if(StackEmpty(S)){ for(int j=1;j<=STACKSIZE;j++){ printf("\t车牌: "); printf("\t\t到达时间: "); printf("\t位置%d:空空",j); printf("\n"); } return OK; } while(p!=q){ Car car=*(q); printf("\t车牌: %d",car.CarNum); printf("\t\t到达时间:%5.2f",car.time); printf("\t\t位置:%d",l++); printf("\n"); q++; } return OK; } //备用车道 (顺序栈) typedef struct { Car2 *top2; Car2 *base2; // int stacksize2; }SqStack2; //初始化 int InitStack2(SqStack2 &S2){ S2.base2=new Car2[STACKSIZE]; if(!S2.top2) exit(OVERFLOW); // S2.top2=S2.base2; S2.stacksize2=STACKSIZE; return OK; } //判空 int StackEmpty2(SqStack2 S2){ if(S2.top2==S2.base2) return OK; else return ERROR; } //进栈 int Push2(SqStack2 &S2,Car2 e2){ if(S2.top2-S2.base2==STACKSIZE) return ERROR; *S2.top2++=e2; return OK; } //出栈 int Pop2(SqStack2 &S2,Car2 &e2){ if(S2.top2==S2.base2) return ERROR; e2=*--S2.top2; return OK; } //车道信息(链队) typedef struct QNode{ Car data; struct QNode *next; }QNode,*QueuePtr; typedef struct{ QueuePtr front; QueuePtr rear; }LinkQueue; //初始化 int InitQueue(LinkQueue &Q){ Q.front=Q.rear=new QNode; Q.front->next=NULL; return OK; } //进队 int EnQueue(LinkQueue &Q,Car e){ QueuePtr p; p=new QNode; p->data=e; p->next=NULL; Q.rear->next=p; Q.rear=p; return OK; } //判空 int QueueEmpty(LinkQueue Q){ if(Q.front==Q.rear) return OK; else return ERROR; } //出队 int DeQueue(LinkQueue &Q,Car &e){ QueuePtr p; if(Q.front==Q.rear) return ERROR; p=Q.front->next; e=p->data; Q.front->next=p->next; delete p; return OK; } //主函数 int main(){ int i=1; int j=1; int status; float time,money; LinkQueue Q; Car car_I,car_D,car_M; SqStack S; SqStack2 S2; InitStack(S); InitStack2(S2); InitQueue(Q); while(1){ printf("\t\t\t欢迎来到XXX停车场!\n"); printf("*****************************************************************\n"); printf("\t\t\t1--车辆到达停车场\n"); printf("\t\t\t2--车辆离开停车场\n"); printf("\t\t\t3--停车场存放车辆情况\n"); printf("\t\t\t0--退出程序\n"); printf("*****************************************************************\n"); printf("选择(0-3):\n"); scanf("%d",&status) ; if(status==1){ printf("\t请输入车牌号:"); scanf("%d",&car_I.CarNum); printf("\t请输入车到达的时间:"); scanf("%f",&car_I.time); if(!StackFull(S)){ Push(S,car_I); //车进入车库 car_I.pos_a=i; car_I.flag=1; i=i+1; for(int m=1;m<50;m++) //边线 printf("--"); printf("\n"); printf("\t车牌号:"); printf("%d",car_I.CarNum); printf("\t到达时间:"); printf("%5.1f\t",car_I.time); printf("\t车库中的位置是:%d\n",car_I.pos_a); for(int m=1;m<50;m++) //边线 printf("--"); printf("\n"); printf("\n"); printf("\n"); } else{ EnQueue(Q,car_I); car_I.pos_b=j; car_I.flag=0; // ++j; printf("\n"); printf("\tSorry!我们的车库已满!!!,您能够把车!!免费!!停在车道上!\n"); printf("\n"); for(int m=1;m<50;m++) //边线 printf(".."); printf("\n"); printf("\t车牌号:"); printf("%d",car_I.CarNum); printf("\t便道上的位置为:%d\n",car_I.pos_b); for(int m=1;m<50;m++) //边线 printf(".."); printf("\n"); printf("\n"); printf("\n"); } } else if(status==2){ //指令为 2, 开车离去(如果车在车库里收取停车费;在便道上则免费) printf("请输入客户的车牌号:"); scanf("%d",&car_D.CarNum); printf("请输入现在的时间:"); scanf("%f",&car_D.time); i=i-1; int flag=0; //判断车是否在便道上 if(StackFull(S)){ Car *p=S.top; Car *q=S.base; while(p!=q){ Car car=*(q); if(car.CarNum!=car_D.CarNum){ flag++; } if(car.CarNum==car_D.CarNum){ goto loop; } q++; } //while if(flag>=STACKSIZE){ printf("您的车停在便道上,因此免费!!!"); } printf("\n"); printf("\n"); printf("\n"); } //if else{ loop:do{ //挡在前面的车给要出去的车让路 Pop(S,car_M); //加一个判断,判断是不是停车场里的车 if(car_D.CarNum!=car_M.CarNum){ Push2(S2,car_M); } else{ car_I.time=car_M.time; } }while(car_D.CarNum!=car_M.CarNum); while(!StackEmpty2(S2)){ //让路的车返回去 Pop2(S2,car_M); Push(S,car_M); } while(!QueueEmpty(Q)&&!StackFull(S)){ if(!StackFull(S)){ DeQueue(Q,car_M); //便道上的车离开后进入停车场,那么后面的车的位置都得变。 car_M.flag=1; } Push(S,car_M); printf("车牌为%d的车离开车库,车道上车牌为%d的车进入车库\n",car_D.CarNum,car_M.CarNum); } time=car_D.time-car_I.time; if(time<0.0) { printf("输入时间有错!请重新输入!"); } if(time>0.0&&time<=3.0){ money=time*4; } else money=time*6; printf("你的车牌为%d的车,应收费%5.2f元。",car_D.CarNum,money); printf("欢迎下次光临我们的车库\n"); } printf("\n"); printf("\n"); printf("\n"); } else if(status==3) { //指令为 3 ;查看车库停车情况; StackTraverse(S); } else if(status!=1&&status!=2&&status!=3&&status!=0){ printf("\t指令错误!!! 请在下面重新输入:"); } else if(status==0) break; } }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服