欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    数据结构--停车场管理(共6页).docx

    • 资源ID:15115215       资源大小:44.34KB        全文页数:6页
    • 资源格式: DOCX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构--停车场管理(共6页).docx

    精选优质文档-倾情为你奉上实习报告题目:停车场管理 姓名:袁韬博 学号: 完成日期: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=<ai>|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=<ai>|aiD, i=1,2,3,······,n *SQTypeInit()操作结果:建立一个空队列InSQType(*q, &data)初始条件:队列已存在操作结果:将data压入队列之中*OutSQType( *q)初始条件:队列已存在操作结果:弹出队列,返回其指针。3. 程序包含6个模块1) 主程序模块:包含栈与队列的对象建立,输入值的判断以及函数的实现 2) 栈模块:实现停车场抽象数据类型3) 队列模块:实现便道抽象数据类型4) 函数模块:实现数据的输入,进入和离开的弹栈与压栈及输出操作三、 详细设计#include<stdio.h>#include<iostream>#include<malloc.h> 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<<"队列已满!操作失败!"<<endl; return 0; else /如果队列不满将data入队列并设置该车的停车位置 data.d=1-q->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) /输入数据操作cin>>e.a; /输入操作cin>>e.b; /输入车牌号cin>>e.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+; /将数据存入数组cout<<e.b<<"车停在停车场的"<<e.d<<"位置"<<endl ;/打印停车位置else /如果栈满将e入队列 InSQType(wait,e);e.e=0; /将判断数据数值为0ay=e;y+; /将数据存入数组cout<<e.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;i<y;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"<<" "<<"费用为0"<<endl; /如果未进入停车场,打印停车时间与费用while(e.d-wait->head>1) /将e之前的数据出队列再入队列kl=OutSQType(wait);InSQType(wait,*kl);if(wait!=NULL)OutSQType(wait); /将e出队列while(wait->tail-e.d-wait->head>1&&wait!=NULL)/ 将e之后的数据出队列再入队列mn=*OutSQType(wait);InSQType(wait,mn);if(e.e=1)cout<<"该车在停车场停车时间为:"<<o<<" "<<"费用为:"<<o*rt<<endl; /如果在停车场之中,计算费用并输出while(ui<n-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;i<y;i+) if(q->b=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;cout<<"输入停车场长度:" /输入ncin>>n;cout<<"请输入每小时停车费用:" /输入m cin>>m;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位置输入:A 2 10 输出:2车停在停车场 2位置输入:D 1 15 输出:该车在停车场停车时间为:10 费用为:30输入:A 3 20 输出:3车停在停车场 3位置输入:A 4 25 输出:4车停在便道1位置输入:A 5 30 输出:5车停在便道2位置输入:D 2 35 输出:该车在停车场停车时间为:25 费用为:75输入:D 4 40 输出:该车在停车场停车时间为:5 费用为:15输入:E 0 0 输出:结束专心-专注-专业

    注意事项

    本文(数据结构--停车场管理(共6页).docx)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开