




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实习报告题目:停车场管理 姓名:袁韬博 学号:16030120021 完成日期:2017.10.23一、 需求分析1. 本题目要求建立一个可指定长度的栈,和长度可变化的队列,以当作停车场和便道的车的存放。2. 本题目要求在停车场的车离开时,便道的车按照先后顺序进入一辆,并开始于此时记录时间。3. 在本题目之中在便道的停车不计费用,在此题中应判断在停车场还是在便道的信息。4. 本题目要求根据数据的第一位数据判断进入还是离开,根据要求输出信息。5. 程序执行命令为:1.存入车辆时输出停车信息2.车辆离开时输出停车时间和应缴纳费用 3.输入E时表示结束。6. 测试数据:n=2,m(每小时停车费用)=3,(A,1,5)(A,2,10)(D,1,15)(A,3,20)(A,4,25)(A,5,30)(D,2,35)(D,4,40)(E,0,0)其中A表示为Arrival(到达),D表示为Departure(离开),E表示为End(结束)。二、 概要设计1. 设定栈的抽象数据类型定义数据对象 :D=ai|aiSStop,i=1,2,3,n数据关系 :R=|aiD, i=1,2,3,n 基本操作:initStack(&S,d)操作结果:建立一个长度为d的空栈Push(&S, &e, &d)初始条件:栈已存在,长度为d操作结果:如栈已满返回false,否则将e,压入栈中,返回truePop(&S, e)初始条件:栈已存在操作结果:如栈为空返回false,否则弹栈入e,返回true2. 设定队列的抽象数据类型定义数据对象 :D=ai|aiSStop,i=1,2,3,n数据关系 :R=|aiD, i=1,2,3,n *SQTypeInit()操作结果:建立一个空队列InSQType(*q, &data)初始条件:队列已存在操作结果:将data压入队列之中*OutSQType( *q)初始条件:队列已存在操作结果:弹出队列,返回其指针。3. 程序包含6个模块1) 主程序模块:包含栈与队列的对象建立,输入值的判断以及函数的实现 2) 栈模块:实现停车场抽象数据类型3) 队列模块:实现便道抽象数据类型4) 函数模块:实现数据的输入,进入和离开的弹栈与压栈及输出操作三、 详细设计#include#include#include using namespace std;typedef struct /定义车辆的结构体char a; /进入与离开信息int b; /车牌号int c; /进入或离开时间int d; /在停车场或便道的序号int e; /在停车场为1,在便道为0SStop;typedef struct /定义栈结构体SStop *base; /定义栈底指针SStop *top; /定义栈顶指针SStop a; /定义栈元素Stop; struct SQType /定义队列结构体 SStop data100; /分配队列neicun int head; /定义队列头 int tail; /定义队列尾;SQType *SQTypeInit()/建立空队列 SQType * q; /定义队列指针 if(q=new SQType) /建立队列 q-head=0; /将队列的头的定为0 q-tail=0; /将队列的尾的定为0 return q; /返回队列指针 else return NULL; /建立不成功返回NULL int InSQType(SQType *q,SStop &data)/入队列操作 if(q-tail=100) /如果队列满返回队列已满!操作失败! cout队列已满!操作失败!head+q-tail; q-dataq-tail+=data; return 1; SStop *OutSQType(SQType *q)/出队列操作 if(q-tail=q-head) /如果队列为空返回NULL return NULL; else /如果队列不为空出队列并返回此数据指针 return &(q-dataq-head+); bool initStack(Stop &S,int d) /建立空栈S.base=(SStop*)malloc(d*sizeof(SStop); /分配长达d的内存if(!S.base)return false; /分配不成功返回falseS.top=S.base; /是栈顶指针等于栈底指针return true; /建立成功返回turebool Push(Stop &S,SStop &e,int &d) /压栈操作if(S.top-S.base=d)return false; /如果栈满返回falseif(S.top=S.base)e.d=1; /如果栈为空将e的停车位置设为1else e.d=1+S.top-S.base; /设置e的停车位置*S.top+=e; /将e压入栈中return true; /返回truebool Pop(Stop &S,SStop &e) /弹栈操作if(S.top=S.base)return false; /如果栈为空返回falsee=*-S.top; /弹栈并将其值赋给ereturn true; /返回trueint Scanf(SStop &e) /输入数据操作cine.a; /输入操作cine.b; /输入车牌号cine.c; /输入进入或离开时间e.d=0; return 0;int Arrival(Stop &stop,SQType *wait,SStop &e,int &n,SStop a,int &y)/进入操作if(Push(stop,e,n) /如果栈不满将e压入栈e.e=1; /将判断数据设置为1ay=e;y+; /将数据存入数组coute.b车停在停车场的e.d位置endl ;/打印停车位置else /如果栈满将e入队列 InSQType(wait,e);e.e=0; /将判断数据数值为0ay=e;y+; /将数据存入数组coute.b车停在便道的e.d位置endl; /打印停车位置int Departure(Stop &stop,SStop a,Stop &wait1,SQType *wait,SStop &e,int &n,int &y,int &rt)/离开操作int o=0;SStop *q,u,mn,*kl;for(int i=0;iy;i+) /应用循环判断停车时间if(e.b=ai.b)e.e=ai.e;e.d=ai.d;o=e.c-ai.c; int ui=0;if(e.e=0)cout该车在停车场停车时间为:0 费用为0head1) /将e之前的数据出队列再入队列kl=OutSQType(wait);InSQType(wait,*kl);if(wait!=NULL)OutSQType(wait); /将e出队列while(wait-tail-e.d-wait-head1&wait!=NULL)/ 将e之后的数据出队列再入队列mn=*OutSQType(wait);InSQType(wait,mn);if(e.e=1)cout该车在停车场停车时间为:o 费用为:o*rtendl; /如果在停车场之中,计算费用并输出while(uin-e.d) /将e之后的数据出栈Pop(stop,u);Push(wait1,u,n);ui+;Pop(stop,mn); /将e出栈while(wait1.top!=wait1.base)/将先前出栈数据压入栈中Pop(wait1,u);Push(stop,u,n);q=OutSQType(wait); /从队列中出一个数据if(q!=NULL) Push(stop,*q,n); /将q压入栈中for(int i=0;ib=ai.b)ai.e=1; /用循环将q的判断数据设置为1ai.c=e.c; /用循环将q的如停车场时间设为e离开时间return 0;int main() /主函数模块SStop as100; /定义一个数组存储车辆信息Stop stop,wait1; /定义两个栈SQType *wait; /定义队列int n,m,y=0;coutn;coutm;initStack(stop,n); /建立空栈stopinitStack(wait1,n); /建立空栈wait1wait=SQTypeInit(); /建立空队列waitSStop a; loop:cout请输入数据:; Scanf(a); /应用函数输入数据if(a.a=A) /如果为进入执行进入操作Arrival(stop,wait,a,n,as,y);if(a.a=D) /如果为离开执行离开操作Departure(stop,as,wait1,wait,a,n,y,m);if(a.a!=E)goto loop; cout结束endl; /如果为E结束return 0;四、 调试分析1. 在此程序之中,一开始在栈与队列的建立是出现指针的错乱,检查后更改。2. 在一开始未曾考虑过对车辆的停车位置的判断,在发现问题后将判断数据加上。3. 在编写时为曾判断从何处出车,造成费用的计算混乱。4. 在车队列的操作中未曾判断出队列指针是否为NULL,调试后改正。5. 出队列的while循环操作的判断依据搞错致使陷入死循环,调试后改正。五、 用户手册1. 本程序在DOS命令界面下执行stop_port.exe2. 按照提示语输入数据3. 程序界面如下六、 测试结果输入:n=2输入:m=3输入:A 1 5 输出:1车停在停车场1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025保定医疗岗事业编考试真题及答案
- 芒果加工产业园项目社会稳定风险评估报告
- 数字基础设施建设与乡村振兴的互动关系
- 高职化学翻转课堂模式的创新探索
- 2025年初中数学贵州试卷及答案
- 2025安徽往年考试真题试卷及答案
- 2024年阜阳市消防救援支队政府专职消防员招聘考试真题
- 2025年青海历史高考真题及答案
- 阳离子改性除臭机理-洞察与解读
- 药技医技考试试题及答案
- 城镇排水管道检测与评估技术规程
- 药品储存与养护技术
- GB/T 18445-2025水泥基渗透结晶型防水材料
- 成都工勤转管理办法
- 基于深度学习的心电图诊断心律失常的研究
- 基金会专项基金管理办法
- 物业承接查验表格
- 行政管理专科经济法考试实务试题及答案
- spa馆卫生管理制度
- 2025年高考湖南省物理真题(含解析)
- 基于分子表征的马齿苋多糖抗紫外及美白功效的实验验证研究
评论
0/150
提交评论