停车场管理系统C课程设计报告书_第1页
停车场管理系统C课程设计报告书_第2页
停车场管理系统C课程设计报告书_第3页
停车场管理系统C课程设计报告书_第4页
停车场管理系统C课程设计报告书_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

停车场理统一、需求分析设计一个停车场管理系统,停车场管理系统功能包括:车辆到达,车辆离开,查询车辆信息等。具体要求如下:车辆到达:根据车辆到达查询停车场内是否有空位:若尚有空位,则让车辆进停车场,输入车牌号和车辆进停车场的时间;若停车场已满则可进入通道等候。车辆离开:根据客户提供的情况,为客户办理离开车场手续,并计算和打印该车辆停车需要的费用。然后查询通道是否有车辆排队,首先查询排在第一车辆,若满足则车进场。查询车辆信息:根据客户的要求可以打印停车场内和便道的车辆信息,包括:车牌号,车辆到达时间。根据题目要求可知本题目的是按照从读文件读取的数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。二、概要设计(二)、本程序主要分四个模块实现功能(1)、以栈模拟停车场,以队列模拟车场外的通道,按照从终端读入的输入数据序列进行模拟管理。栈以顺序结构实现,队列以链表实现。InitStack(SqStackCar*s)操作结果:初始化栈,构造空的模拟车站SqStackCar。Push(SqStackCar*s,CarNode*e)操作结果:进站函数,车辆进站。Pop(SqStackCar*s,CarNode*e)操作结果:出站函数,车辆出站。StackEmpty(SqStackCars)操

果:

空。InitQueue(LinkQueueCar*Q)操作结果:初始化通道,构造空的队列。QueueEmpty(LinkQueueCarQ)操作结果:判断通道是否为空。EnQueue(LinkQueueCar*Q,CarNode*e)操作结果:车辆进队列,即进通道。DeQueue(LinkQueueCar*Q,CarNode*e)操作结果:车辆出对列,即出通道。SqStackCarpart,temp操作结果:声明停车场和临时停车场。InitStack(&temp)操作结果:建临时车场。(2)、车辆达到和离开。以读文件的法式输入数据,数据包括:车辆到达或离开,车牌号码,车辆到达时间。Arrive(SqStackCar*In,LinkQueueCar*Wait,charj[10],inthour,intmin)操作结果:显示车辆到达信息。Arrive(&part,&road,&j,hour,min)初始条件:有车进站操作结果;车场未满车进站,并显示车辆信息;已满则进通道等候。Departure(SqStackCar*In,SqStackCar*temp,LinkQueueCar*Wait,charj[10],inthour,intmin)操作结果:显示车辆离开信息。Departure(&part,&temp,&road,&j,hour,min)初始条件:有车离开。操作结果:显示车辆信息,包括:车牌号,车辆到达和离开时间。StackEmpty(*In)操作结果:判断停车场是否为空。StackEmpty(*temp)操作结果:判断临时车场是否为空。FILE*fp1操作结果:创建一个“车辆信息.txt”读文件。fp1=fopen("c:\\车辆信息.txt","r");操作结果:读取“车辆信息.txt”里面的信息。(3)、查询功能。Print(SqStackCar*In,SqStackCar*Temp,LinkQueueCar*Wait)操作结果:查询停车场内和通道内车辆的信息。StackEmpty(*In)操作结果:判断停车场是否为空,若不为空,输出车辆信息;否则输出“停车场里没有车!”语句。StackEmpty(*Temp)操作结果:判断临时车场是否为空。三、详细设计(1)、栈类型typedefstructtime{inthour;intmin;}Time;/*时间结点*/typedefstruct{charnum[10];Timereach;Timeleave;}CarNode;/*车辆信息结点*/typedefstruct{CarNode*base;CarNode*top;intstacksize;}SqStackCar;/*模拟车站*/voidInitStack(SqStackCar*s)/*始化栈*/{*)malloc(MAXSTACKSIZE*sizeof(CarNode));if(!s->base)exit(0);/*分配失败/s->top=s->base;s->stacksize=MAXSTACKSIZE;}

s->base=(CarNodeintPush(SqStackCar*s,CarNode*e)/*站函数*/{if(s->top-s->base>=s->stacksize)return0;else*s->top++=*e;return1;}intPop(SqStackCar*s,CarNode*e)/*站函数*/{if(s->top==s->base)return0;*e=*--s->top;return1;}intStackEmpty(SqStackCars)/*空函数*/{if(s.base==s.top)return1;elsereturn0;}(2)、队列类型typedefstructcar{CarNode*data;structcar*next;}QueueNode;typedefstruct{QueueNode*front;QueueNode*rear;}LinkQueueCar;/*模拟通道*/intQueueEmpty(LinkQueueCarQ)/*便道判空函数*/{if(Q.front==Q.rear)return1;elsereturn0;}intStackEmpty(SqStackCars)/*空函数*/{if(s.base==s.top)return1;elsereturn0;}intInitQueue(LinkQueueCar*Q)/*始化便道*/{Q->front=Q->rear=(QueueNode*)malloc(sizeof(QueueNode));if(!Q->front)exit(0);Q->front->next=NULL;return1;}intEnQueue(LinkQueueCar*Q,CarNode*e)/*道插入函数*/{QueueNode*p;p=(QueueNode*)malloc(sizeof(QueueNode));if(!p)exit(0);p->data=e;p->next=NULL;Q->rear->next=p;Q->rear=p;return1;}intDeQueue(LinkQueueCar*Q,CarNode*e)/*道删除函数*/{QueueNode*p;if(Q->front==Q->rear)return0;p=Q->front->next;e=p->data;Q->front->next=p->next;if(Q->rear==p)Q->rear=Q->front;free(p);return1;}(3)、车辆到达函数intArrive(SqStackCar*In,LinkQueueCar*Wait,charj[10],inthour,intmin){CarNode*i;QueueNode*w;i=(CarNode*)malloc(sizeof(CarNode));flushall();strcpy(i->num,j);if(In->top-In->base<MAXSTACKSIZE)/*场未满,车辆进栈*/{i->reach.hour=hour;i->reach.min=min;Push(In,i);printf("\n车牌号码是s的车进场成功!!",i->num);return1;}else/*停车场已满,车进便道/{w=(QueueNode*)malloc(sizeof(QueueNode));w->data=i;w->next=NULL;Wait->rear->next=w;Wait->rear=w;printf("停车场已满,必须在通道里等");return1;}return0;}(4)、车辆离开函数intDeparture(SqStackCar*In,SqStackCar*temp,LinkQueueCar*Wait,charj[10],inthour,intmin)/*辆离开函数*/{intflag=0,a1,a2,b1,b2;floatmoney;CarNode*p,*t;QueueNode*q;p=(CarNode*)malloc(sizeof(CarNode));flushall();strcpy(p->num,j);while(!StackEmpty(*In)){t=(CarNode*)malloc(sizeof(CarNode));Pop(In,t);if(strcmp(p->num,t->num)==0)比较车场中有无这辆车,有即出站*/{p->leave.hour=hour;p->leave.min=min;printf("车牌号是");printf("%s",p->num);printf("的车已出停车场!");a1=p->leave.hour;2=t->reach.hour;1=p->leave.min;b2=t->reach.min;moneyb2+60)%60))*price;/*计算

=((float)((a1-a2+24)%24*60+(b1-车辆需要的费用*/printf("\n车辆到达时间:%d:%d",t->reach.hour,t->reach.min);printf("\n车辆离开时间:%d:%d",p->leave.hour,p->leave.min);printf("\n所需费用%5.2fyuan",money);flag=1;free(t);break;}elsePush(temp,t);}/*while*/if(!flag){printf("停车场已满,必须在通道等!");getch();}while(!StackEmpty(*temp)){Pop(temp,p);Push(In,p);}free(p);if(flag&&Wait->front!=Wait->rear)/*站中有空位,便道有车,车入站*/{q=(QueueNode*)malloc(sizeof(QueueNode));q=Wait->front->next;t=q->data;if(q!=NULL){t->reach.hour=hour;t->reach.min=min;Push(In,t);printf("\n车牌号是");printf("%s",t->num);printf("的车进入停车场!");}Wait->front->next=q->next;if(q==Wait->rear)Wait->rear=Wait->front;free(q);}return1;}(5)车辆查询函数voidPrint(SqStackCar*In,SqStackCar*Temp,LinkQueueCar*Wait)/*打印函数*/{intc=0;intcount=1;CarNode*p,*t;QueueNode*q;q=(QueueNode*)malloc(sizeof(QueueNode));p=(CarNode*)malloc(sizeof(CarNode));t=(CarNode*)malloc(sizeof(CarNode));while(1&&c!='3'){clrscr();gotoxy(1,10);printf("1.通道里的车辆信息!");gotoxy(1,11);printf("2.停车场里得车辆信息!");gotoxy(1,12);printf("3.返回");do{printf("\n请输入你的选择");c=getche();printf("\n");}while(c!='1'&&c!='2'&&c!='3');if(c=='2')/*打印停车场*/{count=1;if(StackEmpty(*In)){printf("\n停车场里没有车!\n");printf("\n请按任意键继续..");getch();}else{printf("\n停车场里车辆信息!\n");while(!StackEmpty(*In)){Pop(In,t);Push(Temp,t);}while(!StackEmpty(*Temp)){Pop(Temp,t);printf("\n车牌号码");count++;puts(t->num);printf("车辆间%d:%d\n",t->reach.hour,t->reach.min);Push(In,t);}printf("\n请按任意键继续..");getch();}}if(c=='1')/*印便道*/{count=1;q=Wait->front->next;if(Wait->front!=Wait->rear)/**/{printf("\n通道里车辆信息!\n");while(q!=NULL){p=q->data;printf("\n通道里车牌号码是:");puts(p->num);q=q->next;count++;}}elseprintf("\n通道里没有车\n");printf("\n请按任意键继续..");getch();}}}(6)、程序设计原理图:以堆栈来模拟停车场和以堆栈里的数据元素我设计成汽车的车牌号初始化车站

温馨提示

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

评论

0/150

提交评论