停车场管理系统C语言实现.doc
《停车场管理系统C语言实现.doc》由会员分享,可在线阅读,更多相关《停车场管理系统C语言实现.doc(18页珍藏版)》请在咨信网上搜索。
1、一问题描述1.实验题目: 设停车场是一个可停放 n 辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列大门在最南端,最先到达的第一辆车停放在车场的最北端。假设停车场内已经停满 n辆车,那么后来的车只能在门外的便道上等候。一旦有车开走,那么排在便道上的第一辆车即可开入。当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场。每辆停放在车场的车在它离开停车场时必须按它停留的时间长短缴纳费用。试为停车场编制按上述要求进展管理的模拟程序。要求:根据各结点的信息,调用相应的函数或者语句,将结点
2、入栈入队,出栈或者出队。二 需求分析1.程序所能到达的根本可能:程序以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入数据的序列进展模拟管理。栈以顺序构造实现,队列以链表构造实现。同时另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车。输入数据按到达或离去的时刻有序。当输入数据包括数据项为汽车的“到达A表示信息,汽车标识牌照号以及到达时刻时,应输出汽车在停车场内或者便道上的停车位置;当输入数据包括数据项为汽车的“离去D表示信息,汽车标识牌照号以及离去时刻时,应输出汽车在停车场停留的时间和应缴纳的费用便道上停留的时间不收费;当输入数据项为P,0,0时,应输出停车场的车数;当输入数
3、据项为W, 0, 0时,应输出候车场车数;当输入数据项为E, 0, 0,退出程序;假设输入数据项不是以上所述,就输出ERROR!。2.输入输出形式及输入值范围: 程序运行后进入循环,显示提示信息:“Please input the state,number and time of the car:,提示用户输入车辆信息“到达或者“离开,车牌编号,到达或者离开的时间。假设车辆信息为“到达,车辆信息开场进栈模拟停车场,当栈满,会显示栈满信息:“The parking place is full!,同时车辆进队列模拟停车场旁便道,并显示该进入便道车辆的车牌编号,让用户知道该车的具体位置;假设车辆信息
4、为“离开,会显示该车进入停车场的时间以及相应的停车费用,假设该车较局部车早进停车场,这局部车需先退出停车场,暂时进入一个新栈为其让道,会显示进入新栈的车辆的车牌编号及其入停车场的时间,当待离开车离开停车场后,这局部车会重新进入停车场,同时便道上的第一辆车进入停车场;假设输入P,0,0,会显示停车场的车数;假设输入W,0,0,会显示便道上的车数;假设输入E,0,0,程序会跳出循环,同时程序完毕;假设输入为其他字母,程序会显示“ERROR!报错。假设便道上没有车辆停靠,会显示便道为空的信息:用户每输入一组数据,程序就会根据相应输入给出输出。输入值第一个必须为字母,后两个为数字。3.测试数据要求:用
5、户输入字母时,输入大写或小写,都可以被该程序识别,正常运行。但要求用户输入数据时,三个数据项之间必须用逗号相分隔开。三概要设计 为了实现上述功能,该程序以栈模拟停车场以及临时停放为给要离去的汽车让路而从停车场退出来的汽车的场地,以队列模拟车场外的便道,因此需要栈和队列这两个抽象数据类型。1. 栈抽象数据类型定义:ADT SqStack 数据对象:D=, i=1,2,3.,n,n 数据关系:R=()|D,struct car; 根本操作: Judge_Output(s,q,r);/根据r中车辆信息控制车辆是入栈s还是 入队q以及相关操作 A_cars(s,q, a);/将到达车辆a的信息入栈s或
6、者入队q D_cars(s,q, d);/将待离开车辆d出栈s,并将q中相应车辆 入栈并进展相关的操作ADT SqStack2.队列抽象数据类型定义:ADT LinkQueue 数据对象:D=Qnode *,Qnode *,i=1,2,3.,n,n; 数据关系:R=; 根本操作: Judge_Output(s,q,r);/根据r中车辆信息控制车辆是入栈s 还是入队q以及相关操作 A_cars(s,q, a);/将到达车辆a的信息入栈s或者入队q D_cars(s,q, d);/将待离开车辆d出栈s,并将q中相应车 辆入栈并进展相关的操作ADT LinkQueue 3.主要算法流程图:IJudg
7、e_Output算法流程图:IIA_cars算法流程图:IIID_cars算法流程图:4.本程序保护模块:主函数模块栈单元模块:实现栈的抽象数据类型队列单元模块:实现队列的抽象数据类型调用关系:四详细设计1.相关头文件库的调用说明:#include #include#define MAXSIZE 14#define n 2#define fee 102.元素类型、结点类型和结点指针类型:struct car char bb; int num; int time; ;struct rangweicarint num; int time;typedef struct stackkstruct ra
8、ngweicar HMAXSIZE; int topp;SqStackk;#define QNODE struct QnodeQNODE int data; QNODE *next; ;3.栈类型和队列类型:typedef struct stackstruct car Gn; int top;SqStack;typedef struct linkqueueQNODE *front,*rear; int geshu;LinkQueue;/局部根本操作的伪码实现void Judge_Output(SqStack *s,LinkQueue *q,struct car *r) if(*r).bb=E|
9、(*r).bb=e) printf(STOP!n); else if(*r).bb=P|(*r).bb=p)printf(The number of parking cars is %dn,(s-top)+1);else if(*r).bb=W|(*r).bb=w)printf(The number of waiting cars is %dn,q-geshu);else if(*r).bb=A|(*r).bb=a)A_cars(s,q,*r);else if(*r).bb=D|(*r).bb=d)D_cars(s,q,*r);elseprintf(ERROR!n);A_cars(SqStac
10、k *s,LinkQueue *q,struct car a)QNODE *t;if(s-top!=n-1) (s-top)+; (s-Gs-top).bb=a.bb;(s-Gs-top).num=a.num;(s-Gs-top).time=a.time;elseprintf(The parking place is full!n); t=(QNODE *)malloc(sizeof(QNODE); t-data=a.num; t-next=NULL; q-rear-next=t; q-rear=t; printf(the number of the car in the access roa
11、d is:%dn,q-rear-data); q-geshu+;int D_cars(SqStack *s,LinkQueue *q,struct car d)int i,j,l;float x,y;QNODE *p;SqStackk *k;if(d.num=(s-Gs-top).num)x=d.time-(s-Gs-top).time;y=fee*x; printf(The time is %.2f hours,the fee is %.2f yuann,x,y); if(q-geshu=0) printf(The queue is empty!n); return 0; else p=q-
12、front-next; q-front-next=p-next; (s-Gs-top).num=p-data; (s-Gs-top).time=d.time; free(p); q-geshu-; if(q-front-next=NULL) q-rear=q-front; return 1; else for(i=0;itop);i+) if(s-Gi).num!=d.num) continue;else break; if(i=(s-top) printf(ERROR!n); return -1; x=d.time-(s-Gi).time; y=fee*x; printf(The time
13、is %.2f hours,the fee is %.2f yuann,x,y); k=(SqStackk *)malloc(sizeof(SqStackk); k-topp=-1; for(j=(s-top);ji;j-) k-topp+; (k-Hk-topp).num=(s-Gj).num; (k-Hk-topp).time=(s-Gj).time; s-top-; for(l=0;ltopp);l+) printf(the information(number and time) in the new stack is:n); printf(%d,%dn,(k-Hl).num,(k-H
14、l).time); s-top-; while(k-topp=0) s-top+; (s-Gs-top).bb=A; (s-Gs-top).num=(k-Hk-topp).num; (s-Gs-top).time=(k-Hk-topp).time; k-topp-; if(q-geshu=0) printf(The access road is empty!n); return 2; else s-top+; p=q-front-next; q-front-next=p-next; (s-Gs-top).num=p-data; (s-Gs-top).time=d.time; free(p);
15、q-geshu-; if(q-front-next=NULL) q-rear=q-front; return 3; 4.主函数的伪码:main() SqStack *s; LinkQueue *q; QNODE *p; struct car aaMAXSIZE; int i; s=(SqStack *)malloc(sizeof(SqStack); s-top=-1; q=(LinkQueue *)malloc(sizeof(LinkQueue); p=(QNODE *)malloc(sizeof(QNODE); p-next=NULL; q-front=q-rear=p; q-geshu=0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 停车场 管理 系统 语言 实现
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。