




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课序号 091001-06 程序设计实验报告 题目:关于停车场管理系统的报告 姓 名 贾雨飞 学 号 2010434096 年级专业 10数电类(四班) 指导教师 王苗 2011年10月13日一:需求分析1、主菜单中已给出程序功能所对应的键盘操作的提示,用户可以根据提示选择操作,有车到来、有车离开、查询、操作结束。车辆到来和离开操作中,会提示用户输入相应的车牌号信息,车辆离开中输入应缴纳停车费的金额才缴费,然后离开,便道中的车辆就会自动移动到停车场内。查询功能中,不需再输入和选择信息,直接输出目前停车场内的车辆信息和便道上的车辆信息。2、输入功能中只需要按照提示输入即可,输出功能中会按照其需要
2、输出相应的车辆信息、停车场信息、和提示信息等。3、当停车场容量为2时,(a、“f001”、5),(a、“a002”、10),(b、“f001”、15),(a、“f003”、20),(a、“c004”、25),(a、“b005”、30),(b、“a002”、35),(b、“c004”、40),(d、0、0)。当停车场容量为5时,连续有7辆车到来,牌照号分别为f001、f002、f003、f004、f005、f006、f007,前5辆车应该进入停车位15车位,第6、7辆车应停入便道的1、2位置上。牌照号为f003的汽车从停车厂开走,应显示f005、f004的让路动作和f006从便道到停车位上的动作
3、。(到达和离开时间请自行设定)二、 整体设计1、typedef structchar license_plate6 ;/*汽车牌照号码,定义为一个字符指针类型*/ float time; /*汽车进入停车场的时刻*/ char state; /*汽车当前状态,字符p表示停放在停车位上,字符q表示停放在便道上*/car; typedef struct /停车场的顺序栈car packmax_park; /*各汽车信息的存储空间*/ int top; /*用来指示栈顶位置的指针*/parkstack;typedef struct qnode /便道队列car data; /*各汽车信息的存储空间*
4、/ struct qnode *next;qnode;typedef structqnode *front, *rear; /*用来指示队头和队尾位置的指针*/roadqueue;typedef struct /辅助栈car bufermax_park;/*各汽车信息的存储空间*/ int top; /*用来指示栈顶位置的静态指针*/buffer; 2、主菜单中可选择车辆到来、车辆离开、查询、输入结束等操作指令,车辆到来和离开功能中,会提示用户输入车牌号和到来或离开时间,输入后即可按照执行操作。车辆到来操作中,输入车牌号和到达的时间后,车辆会停入相应的位置,停车场内有空位置则停在停车场内,否则
5、会停在便道中去。而离开的车辆输入车牌号和离开时间后还要输入缴费金额来完成缴费后离开,此时如果便道上有等候的车辆则把第一个转入停车场内。关于查询函数,首先查找停车场内的信息,并输出各车位上的车辆信息,然后查找便道上的车辆信息并且输出。3、主模块中,已经申请好了停车场、便道及辅助栈的空间,车辆到来的时候,把停车场空间和便道空间地址分别代入到函数中,则车会停在相应的位置上。车辆离开的时候则将停车场、辅助栈及便道空间地址代入,然后根据车辆进出的规则让车辆离开停车场并缴纳停车费。查询模块中只需将停车场和便道地址代入,逐个查找并输出车辆信息即可。三、 详细设计1、 数据类型的自定义类型已经在整体设计中给出
6、,数据类型的定义在需要的时候自行定义即可。 2、 主模块: void main()do cout<<endl;cout<<" *"<<endl;cout<<" *_欢迎使用停车场管理系统_*"<<endl; cout<<" *"<<endl; cout<<" a:车辆到达 b:车辆离开 c:场内及便道状态查询 d:输入结束"<<endl;cout<<" (注意:区分大小写)"&
7、lt;<endl<<endl;cout<<"请输入操作指令、车牌号、此时时刻:_"cin>>a;while(!(a>='a'&&a<='d')cout<<"指令输入错误,请重新输入!"<<endl;cin>>a;switch(a) case 'a': q=arrival(&p,&q); break; case 'b': q=depart(&p,&q,&am
8、p;f); break;case 'c': search(&p,&q); break;case 'd': return;while(1); 车辆到来模块:roadqueue arrival(parkstack *p,roadqueue *q)cin>>d.license_plate;cin>>d.time;if(p->top=(max_park-1)int i=0; /记录汽车在便道上的位置temp=new qnode;temp->next=null;temp->data=d;temp->data.
9、state='q'q->rear->next=temp;q->rear=q->rear->next;n=q->front;while(n!=q->rear)n=n->next;i+;return *q;elsep->packp->top+1=d; p->top+;p->packp->top.state='p'return *q;车辆离开模块: roadqueue depart(parkstack *p,roadqueue *q,buffer *f)cin>>a;for(in
10、t i=0;i<=p->top;i+)if(strcmp(a,p->packi.license_plate)=0) for(int j=p->top;j>i;j-)f->top+;f->buferf->top=p->packj;p->top-;cin>>l;w=price*(l-p->packi.time);cout<<"您的停车费用为"<<w<<"元人民币。t=p->packi;p->top-;while(f->top!=-1)p-
11、>packi=f->buferf->top;i+;p->top+;f->top-;if(q->front->next=null)cout<<"便道上没有车辆等候,停车场内有空位!"return *q;elseq->front=q->front->next;p->pack+p->top=q->front->data;p->packp->top.state='p'return *q;return *q; 查询模块: void search(parkstac
12、k *p,roadqueue *q) qnode *b;if(p->top=(max_park-1)cout<<"停车场内已经没有车位了,谢谢"<<endl;for(int i=0;i<=max_park-1;i+)cout<<"第"<<i+1<<"个车位,车牌号:"<<p->packi.license_plate;cout<<"停车时间为:"<<p->packi.time<<endl
13、;elsecout<<"停车场内还有"<<max_park-1-p->top<<"个车位,"for(int i=0;i<=p->top;i+)cout<<"第"<<i+1<<"个车位,车牌号:"<<p->packi.license_plate;cout<<"停车时间为:"<<p->packi.time<<endl;b=q->front->
14、;next;if(b=null)cout<<"便道上没有车辆等候,谢谢!"elsewhile(b)k+;cout<<"便道第"<<k<<"的位置,车牌号:"<<b->data.license_plate;b=b->next;3、 函数的调用很简单,只需要在主函数中调用车辆到来、车辆离开、查询函数即可。四、 调试分析1、刚开始测试时候,查询函数中,会输出便道上车辆数为一个随机数字,于是知道肯定是记录车辆数的变量k的原因,查找k的变化过程,原来刚开始定义k的时候未对k
15、进行赋值。对k赋值0以后问题自然解决了。2、时间复杂度为o(n),空间复杂度也为o(n)。五、 使用说明及测试结果本系统的使用只需根据提示信息输入即可,停车场内无空位的时候车辆自动停到便道上,停车场内有车辆离开后,便道上第一位置上的车辆自动停进停车场内。车辆离开的时候会有缴纳停车费的操作,只需按照提示输入要缴纳的金额即可缴费成功并离开。查询功能,只需选择查询功能,自动查找停车场内和便道上的车辆情况,不需要再进行其他操作。输入结束后,选择d即可退出系统。当停车场容量为2时,(a、“f001”、5),(a、“a002”、10),(b、“f001”、15),(a、“f003”、20),(a、“c004”、25),(a、“b005”、30),(b、“a002”、35),(b、“c004”、40),(d、0、0)。下面是调试的部分截图: f001和a002都停入了停车场。下图:f001成功离开停车场。b005停入停车场。 c004成功离开!当停车场容量为5时,连续有7辆车到来,牌照号分别为f001、f002、f003、f004、f005、f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年无纺布锁绳袋项目投资价值分析报告
- 个体工商户股东合作协议书【汇集15篇】
- 区块链技术在医疗信息管理中的创新应用
- 医院培训课件:《新生儿复苏》
- 儿童活动场地景观概念设计方案文本
- 2025年心理健康教育专项考试试卷及答案
- 2025年初中生物学习考试试卷及答案
- 利用宏指令编程及加工
- 第六单元 第1课时 两位数加、减两位数(不进退位)(教学课件)-一年级下册数学(北京版•2024)
- 物理自我小测第十二章波的图象
- 24春国家开放大学《离散数学》大作业参考答案
- 2024年1月普通高等学校招生全国统一考试适应性测试(九省联考)化学试题(适用地区安徽)(试卷)
- 警示片制作策划方案
- 掌握认知重构的基本技巧
- 新能源综合能源系统的设计与优化
- 中国居民膳食指南(全)
- 《数据可视化》期末考试复习题库(含答案)
- 乳腺结节课件
- 小学综合实践活动课二年级上册《彩蛋不倒翁》公开课教学课件
- 2023发电企业运行管理办法
- 医院劳务派遣投标方案(技术方案)
评论
0/150
提交评论