停车场管理系统代码(c++)_第1页
停车场管理系统代码(c++)_第2页
停车场管理系统代码(c++)_第3页
停车场管理系统代码(c++)_第4页
停车场管理系统代码(c++)_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include #include using namespace std;const int MAX_STOP=4; /定义停车场最大停车数const int MAX_PLATE=10; /定义车牌号最大长度/数据结构定义/定义存储汽车信息的结构体typedef structchar license_plateMAX_PLATE;/汽车牌照号码,定义为一个字符指针类型char state; /汽车当前状态,字符p表示停放在停车位上,字符s表示停放在便道上,每辆车的初始状态用字符i来进行表示CAR;/定义模拟停车场的栈结构typedef structCAR STOPMAX_STOP; /汽车信

2、息的存储空间 int top; /用来指示栈顶位置的静态指针SeqStack;/定义模拟便道的队列结构typedef struct nodeCAR WAIT; /汽车信息的存储空问 struct node *next; /用来指示队列位置的动态指针QNode; /链队列节点的类型/定义链队列的收尾指针typedef structQNode *front,*rear;LQueue; /将头尾指针封装在一起的链队/函数声明int Empty_LQueue(LQueue *q); /判队空int LeaveCheck(SeqStack parking,char *license_plate); /检

3、查离开的车是否在停车场中int QueueLength(LQueue *q); /判队长度int Out_LQueue(LQueue *&sidewalk,char *license_plate); /出队操作int StackEmpty(SeqStack parking); /判断栈是否为空int StackFull(SeqStack parking); /判断栈是否为满int StackPop(SeqStack &parking); /出栈操作int StackTop(SeqStack parking, char *license_plate); /取栈项元素void Car_come(S

4、eqStack &parking,LQueue *&sidewalk); /有车到来时的操作void Car_leave(SeqStack &parking,LQueue *&sidewalk); /有车离开的操作void Display(SeqStack parking); /显示停车场内的所有信息调试时用void InitStack(SeqStack &parking); /初始化栈void InitList(LQueue *&sidewalk); /初始化队列void In_LQueue(LQueue *&sidewalk, char *license_plate); /进队操作void

5、 Input_Check(char *license_plate); /检验输入的车牌是否合法void StackPush(SeqStack &parking,char *license_plate); /进栈操作void main()/定义变量SeqStack parking;LQueue *sidewalk= NULL;char *choice= new char;int flag=1; /定义一个变量判断是否退出/初始化一个为空的停乍场InitStack(parking);/初始化一个为空的便道InitList(sidewalk);/运行界面及功能选择while(flag)cout 停车

6、场模拟管理系统 endl; cout*endl; coutt有车到来时请按C键endlendl; coutt有车要走时请按l键endlendl; coutt查看停车场请按D键endlendl; coutt要退出系统请按Q键endlendl; cout*endl; cout请选择操作:;gets(choice);if(1!=strlen(choice)cout请正确输入选项!;continue;elseswitch(*choice)case c:case C:Car_come(parking,sidewalk);break;casel :caseL:Car_leave (parking,side

7、walk);break;caseq:case Q:flag=0;break;case d:case D:Display(parking);break;default:cout选择不正确!请重新选择endl;/有车到来时的操作void Car_come(SeqStack &parking, LQueue *&sidewalk)/定义变量char license_plateMAX_PLATE; cout请输入车辆的车牌号码:; Input_Check(license_plate); /判断停车场是否已满,满则进入便道,不满进入停车场 if(StackFull(parking)In_LQueue(s

8、idewalk,license_plate); /进入便道cout停车场已满清在便道等候,您的位置为QueueLength(sidewalk)endl;elseStackPush(parking,license_plate); /进入停车场cout请进入停车场中的parking.top+1号停车位endl;/有车离开时的操作void Car_leave(SeqStack &parking, LQueue *&sidewalk)/定义变量SeqStack tmpparking; /定义临时停车场char leave_license_plateMAX_PLATE;/要离开的车牌号char lice

9、nse_plateMAX_PLATE; /存放从停车场中读出来的车牌信息InitStack(tmpparking); /初始化临时停车场/判断停车场中是否有车if(StackEmpty(parking)cout当前停车场中没有车endl;return; /退出子函数 cout请输入要离开的车牌照:; Input_Check(leave_license_plate);cout当前停车场中有parking.top+1辆车endl;if(LeaveCheck(parking,leave_license_plate)/判断车是否在停车场中/车在停车场中cout您的车在 LeaveCheck(parki

10、ng,leave_license_plate)号车位上endl;while(StackTop(parking,license_plate)& (strcmp(parking.STOPparking.top.license_plate, leave_license_plate)!=0)strcpy(parking.STOPparking.top.license_plate, license_plate);cout牌照为license_plate的车暂时退出停车场parking.top+1号位endl;StackPush(tmpparking,license_plate); /停车场中的车暂时退出

11、进入临时停车场StackPop(parking); /出栈cout牌照为license_plate的车离开停车场parking.top+1号位endl;StackPop(parking); /出栈/将临时停车场巾的车停回停车场while(StackEmpty(tmpparking)!=1)StackTop(tmpparking, license_plate);StackPush(parking, license_plate);cout牌照为license_plate的车进入停车场parking.top+1号位endl;license_plate0=0;StackPop(tmpparking);

12、if(parking.top+1=MAX_STOP-1)/判断车离开前停车场是否停满if(QueueLength(sidewalk)/如果停满则判断便道上是否有车/便道中有车则从便道中停入停车场Out_LQueue(sidewalk, license_plate); /出队StackPush(parking, license_plate);/入栈cout在便道中牌照为license_plate的车进入停车场parking.top+1号endl;else/车不在停车场中cout您的车不在停车场中!endl;/初始化顺序栈void InitStack(SeqStack &parking)parki

13、ng.top= -1;int StackEmpty(SeqStack parking)if(parking.top = -1)return 1;elsereturn 0;/判栈满int StackFull(SeqStack parking) if(parking.top = MAX_STOP-1) return 1; else return 0;/入栈void StackPush(SeqStack &parking , char *license_plate )parking.top+;strcpy(parking.STOPparking.top.license_plate,license_p

14、late);parking.STOPparking.top.state =p;/出栈返回栈顶指针int StackPop(SeqStack &parking)if(StackEmpty(parking)return 0;elsereturn parking.top-;int StackTop(SeqStack parking, char *license_plate )if(StackEmpty(parking)return 0;elsestrcpy(license_plate, parking.STOPparking.top.license_plate);return 1;/显示所有void

15、 Display(SeqStack parking)if(parking.top=-1)cout停车场为空endl;elsewhile(parking.top!=-1)cout车牌号为:parking.STOPparking.top.license_plate;cout,停在parking.top+1号车位上front=sidewalk-rear=NULL;/入队void In_LQueue(LQueue *&sidewalk,char *license_plate)QNode *car_on_sidewalk;car_on_sidewalk= (QNode *)malloc(sizeof(Q

16、Node); /为新节点开辟新空问strcpy(car_on_sidewalk-WAIT.license_plate,license_plate);/将数据写入节点car_on_sidewalk-WAIT.state= s; /写入停车信息car_on_sidewalk-next= NULL;if(Empty_LQueue(sidewalk) /队空则创建第一个节点sidewalk-front= sidewalk-rear=car_on_sidewalk;else/队非空插入队尾sidewalk-rear-next = car_on_sidewalk;sidewalk-rear = car_o

17、n_sidewalk;/判队空int Empty_LQueue(LQueue *q)if(q-front = NULL)return 1;elsereturn 0;/判队长度返回队长int QueueLength(LQueue *q) QNode *p=q-front; int i=0; while(p!=NULL) i+;p=p-next;return i;/出队成功返回l队空返回0int Out_LQueue(LQueue *&sidewalk,char *license_plate)QNode *car_on_sidewalk;if(Empty_LQueue(sidewalk) /如果队

18、空返回0return 0;car_on_sidewalk= sidewalk-front;strcpy(license_plate,car_on_sidewalk-WAIT.license_plate);/取出队头元素if(sidewalk-front=sidewalk-rear) /队中只有一个元素sidewalk-front=sidewalk-rear=NULL; /删除元素elsesidewalk- front= sidewalk- front-next;/队头指针后移free(car_on_sidewalk); /释放指针return 1;/检查离开的车是否在停车场中返同车在停车场中位置不在则返同0int LeaveCheck(SeqStack parking,char *license_plate)int flag= parking.top+1;/定义变量记录当前车在停车场中位置if(StackEmpty(parking)return 0;else/查找离开车所在位置while(parking.top!=-1&strcmp(parkin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论