欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    基于栈和队列的停车场管理系统设计与实现设计毕设论文Word文档格式.docx

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

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

    基于栈和队列的停车场管理系统设计与实现设计毕设论文Word文档格式.docx

    1、第2章 概要设计 - 3 -21抽象数据类型定义 - 3 -22模块划分 - 5 -第3章 详细设计 - 7 -31数据类型的定义 - 7 -32主要模块的算法描述 - 8 -第4章 系统测试 - 12 -第4章 系统测试 - 13 -4.1 调试分析 - 13 -第5章 测试结果 - 14 -5.1 测试数据及结果 - 14 -5.2 结果分析 - 17 -第6章 课程设计总结 - 18 -第1章 绪 论引言:课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。课程设计是让同学们对所学的课程更全面的学习和应用,理解和掌握课程

    2、的相关知识。数据结构是一门重要的专业基础课,是计算机理论和应用的核心基础课程。数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。1.1 设计目的1、掌握栈和队列的建立。2、掌握栈和队列的基本操作。3、深入了解栈和队列的特性,以便在解决实际问题中灵活运用它们。4、加深对栈和队列的理解和认识。1.2 设计内容停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。停车场内已停了n辆汽车,后来的汽车只能在门外的便道上等候,一旦有

    3、车开走,排在通道上的第一辆车即可开入;当停车场内每辆车要离开时,在它之后进入的车辆必须先退出停车场为其让路,待该辆车开出大门,其他车辆再按原次序进入停车场。为停车场编写按上述要求进行管理的模拟程序。1.3 设计要求(1)根据车辆到达停车场到车辆离开停车场时所停留的时间进行计时收费。(2)当有车辆从停车场离开时,等待的车辆按顺序进入停车场停放。实现停车场的调度功能。(3)用顺序栈来表示停车场,链队表示停车场外的便道。(4)显示停车场信息和便道信息。(5)程序执行的命令为:车辆进入停车场车辆离开停车场显示停车场的信息。1.4 设计思想1.当车辆要进入停车场时,检查停车场是否已满,如果未满则车辆进入

    4、停车场;如果停车场已满,则车辆进入便道等候。2.当车辆要求出栈时,先让在它之后进入停车场的车辆退出停车场为它让路,再让该车退出停车场,让路的所有车辆再按其原来进入停车场的次序进入停车场。之后,再检查在便道上是否有车等候,有车则让最先等待的那辆车进入停车场。3.用顺序结构实现栈,用链表实现队列。第2章 概要设计21抽象数据类型定义(1)栈的抽象数据类型定义AST Stack数据对象:D=ai|aiElemSet,i=1,2,.,n, n0数据关系:R1=|ai-1,aiD,i=2,.,n约定an端为栈顶,a1端为栈底。基本操作:InitStack(&S)操作结果:构造一个空栈S。DestroyS

    5、tack(&初始条件:栈S已存在。栈S被销毁。ClearStack(&将栈S清为空栈。StackEmpty(S)若栈S为空栈,则返回TRUE,否则FALSE。StackLength(s)初始条件:返回S的元素个数,既栈的长度。GetTop(S,&e)栈S已存在且非空。用e返回S的栈顶元素。Push(&S,e)插入元素e为新的栈顶元素。Pop(&S,&删除S的栈顶元素,并用e返回其值。StackTraverse(S,visit()从栈底到栈顶依次对S的每个数据元素调用函数visit()。一旦visit()失败,则操作失效。ADT Stack(2)队列的抽象数据类型定义ADT QueueD=ai|

    6、aiElemSet,i=1,2,.,n,n0|ai-1,aiD,i=2,.,n约定其中a1端为队列头,an为队列尾。InitQueue(&Q)构造一个空队列Q。DestroyQueue(&队列Q已存在。队列Q被销毁,不再存在。ClearQueue(&将Q清为空队列。QueueEmpty(Q)若Q为空队列,则返回TRUE,否则FALSE。QueueLength(Q)返回Q的元素个数,即队列的长度。GetHead(Q,&Q为非空队列。用e返回的队头元素。EnQueue(&Q,e)插入元素e为Q的新的队尾元素。DeQueue(&Q,&删除Q的队头元素,并用e返回其值。QueueTraverse(Q,

    7、visit()Q已存在且非空。从队头到队尾,依次对Q的每个数据元素调用函数visit()。一旦visit()失败,则操作失败。ADT Queue 22模块划分本程序包括六个模块:(1)主程序模块void main()初始化停车站;初始化让路的临时栈;初始化通道;输出主菜单:车辆到达、车辆离开与计费、查看停车场信息;(2)入场模块int arrive(SqStack *In,LinkQueue *W)车辆进入停车场;计算停车费用(3)出场模块void leave(SqStack *In,SqStack *Out,LinkQueue *W)车辆离开停车场;(4)输出模块void info(SqSt

    8、ack S,LinkQueue W) 输出停车场信息;(5)栈模块实现栈的抽象数据类型(6)队列模块实现队列的抽象数据类型第3章 详细设计31数据类型的定义int MAX; /*定义一个全局变量用来存储车库最大容量*/ float price;/* 定义一个全局变量用来存储每车每小时的费用*/ typedef struct time int hour; int min;Time; /*时间结点*/ typedef struct node char num10; Time reach; Time leave;Car; /*车辆信息结点*/ typedef struct NODE Car *sta

    9、ck100; int top;SqStack; /*停车站*/ typedef struct car Car *data; struct car *next;QNode;typedef struct Node QNode *head; QNode *rear; LinkQueue; /*通道*/ 32主要模块的算法描述本程序主要分为四部分:(1)主函数及程序框架、(2)车辆到达模块、(3)车辆离开模块、(4)显示车辆信息模块,由梁伟明、段庆龙、丁磊和我合作编写,我主要负责leave(车辆离开)函数部分。(1)主函数void main() SqStack In,Out; LinkQueue Wa

    10、it;int ch; InitStack(&In); /*初始化停车站*/ Out); /*初始化让路的临时栈*/ InitQueue(&Wait); /*初始化通道*/ while(1) printf(-欢迎使用停车场管理系统-n);t本系统由5011工作室开发,作者:邓春国、段庆龙、梁伟明、丁磊。nn请输入停车场的容量:scanf(%d,&MAX);请输入停车场的收费标准(元/小时): scanf(%fprice);您输入的停车场容量为%d位,费用为%2.1f元/小时。n,MAX,price);n(1)车辆到达n(2)车辆离开n(3)停车场信息n(4)退出系统n请选择n while(1)

    11、ch=getch(); switch(ch) case 49:arrive(&In,&break; /*车辆到达*/ case 50:leave(&Out,& /*车辆离开*/ case 51:info(In,Wait); /*输出车站信息*/ case 52:printf(谢谢使用!exit(0); /*退出主程序*/ default:printf(n按键无效,请重新按键选择! /*49-52分别表示“1”-“4”这四个按键的键值*/ system(CLS printf(t本系统由CG工作室开发,作者:nnn (2)车辆离开模块算法分析void leave(SqStack *In,SqSta

    12、ck *Out,LinkQueue *W) /*车辆离开*/ int room; Car *p,*t;QNode *q;/*开始定义一个整型变量room,用来记录要离开的车辆在停车场的位置,定义车辆结点指针p和t和队列结点指针q。*/ if(In-top0) /*有车*/ n请输入车在停车场的位置(1-%d):,In-top); scanf(room); if(room=1&roomtop) break; /*判断停车场内是否有车,如果有车,就输入要离开的车辆在停车场的位置,否则就提示停车场没车。这里用了while循环语句,如果输入的车辆位置超出范围,就要重新输入。 while(In-room

    13、) /*车辆离开*/ Out-top+;stackOut-top=In-stackIn-top; In-top=NULL;In-top-;/*如果栈顶位置In-top大于要离开的车位置room(即要离开的车不在停车场的门口)的话,在要离开的车辆前面的车就要先离开,开到临时停车场,即临时栈中,因此Out所表示的临时栈的栈顶top加1,用来表示临时停车场增加1辆车;接着把该车的信息拷贝到栈Out中,然后删除栈In的栈顶(即这辆车开走)。 p=In- In- while(Out-=1) top=Out- Out-/*直到要离开的车辆前面的车都开到临时停车场之后,该车才离开,离开之后,该车的信息结点I

    14、n-top置空,然后栈顶In-top减1。之后就判断临时停车场是否有车,有车就一辆一辆的开回停车场里面,因此停车场的栈顶In-top 加1,然后就把临时停车场的车结点的信息拷贝到停车场的车结点上,接着删除临时停车场车的结点 (即Out-Out-)。 PRINT(p,room); if(W-head!=W-rear)&tophead-next;t=q-data;n便道的%s号车进入车场第%d号停车位。,t-num,In-n请输入现在的时间(格式“*:*”):%d:(t-reach.hour),&reach.min); W-next=q- if(q=W-rear) W-rear=W-head;to

    15、p=t; free(q);/*判断(W-MAX(即通道上是否有车及停车场是否已满),如果便道有车且停车场未满,通道的车便可进入停车场,此时指针q指向便道的头,即队头,然后停车场的栈顶In-top 加1以便增加新的车辆,接着输入队头的车辆信息,即要进去停车场的车的信息,然后便道队列的头结点指向q(即刚进入停车场的车的结点)的后继结点,即原队列中第二辆车的结点,接着判断刚离开的车是否是最后一辆车,如果是,就把队列置空,即队头等于队尾;之后就把结点t(即要进入停车场的车)的信息拷贝到停车场栈顶的车中,最后释放p的空间,即原队头结点。*/ else printf(n停车场里没有车n /*没车*/ pr

    16、intf(请按任意键返回 getch();leave函数流程图如图3.1所示:图3.1 leave函数流程图否是第4章 系统测试4.1 调试分析 调试过程中的主要问题由于此停车场管理系统是分模块设计的,而且在程序的实现过程中又使用了清屏函数,所以,运行时用户选择任务并且执行完任务后,又会回到供用户选择功能的主界面,因此整个程序从整体上来讲结构清晰,使用方便。本程序的调试运行,总体上情况良好,但中间也出现了一些小问题。其中比较有代表性的主要问题有:(1)当停车场已经达到最大容量,但仍有车辆进入停车场的时候,运行界面上没有出现或者说出现了但又跳掉了“车站已满!车辆已经入通道!”的提示信息。在查阅了

    17、多种资料后,在那一个printf语句后加了一个getch(),此时,程序运行结果就符合要求了,看起来也比较清晰了。(2)使用getch()语句必须使用头文件#include刚开始因为没有使用这个头文件,所以会出现getch()这个无法辨别图5.1错误报告1(3)在对字符型的数据进行赋值的时候,要用strcpy,而不能直接用pcar.num=pnum这样的赋值形式,这样子会产生如下的错误:图5.2错误报告2正确的形式应该是这样的:strcpy(pcar.num,pnum);第5章 测试结果5.1 测试数据及结果输入停车场的容量4,收费5元/小时,接着查看停车场的信息,如图5.1所示:图5.1 停

    18、车场系统初始化示意图接着输入4辆车的信息,然后查看停车场信息,如图5.2所示:图5.2 车辆进入停车场示意图再输入1辆车的信息,然后查看停车场信息,如图5.3(a)和图5.3(b)所示:图5.3(a) 车辆进入便道示意图图5.3(b) 车辆进入便道示意图最后选择车辆离开,输入第2辆车离开,再查看停车场信息,如图5.4(a)和图5.4(b)所示:图5.4(a) 车辆离开示意图图5.4(b) 车辆离开示意图5.2 结果分析 通过这次数据结构课程设计,我认识到从课本上学到的知识是远远不够的。本次设计使我深入的了解了栈与队列的建立、插入、删除和在实际问题下灵活运用它们,另一方面使我对栈和队列的抽象数据

    19、类型有了进一步的认识。虽然经过努力终于把该系统完成,可是该系统还是不完善,程序中的一些算法还不是很清楚,只不过把简单的功能实现了出来,这些缺憾归根结底都是因为我的C+语言和数据结构的水平还不是很高 ,还需要经过不懈的努力才能做出比较完善的系统。这次课程设计让我明白要真正的掌握一门编程语言需要的不仅仅是课本上的东西,还要在实际的编程过程中慢慢的掌握其中的奥妙。同时我明白了,要成为一名优秀的编程人员所要具备的各种条件(坚实的编程语言基础、熟练的调试程序的技能、重要的是要有耐心、同时细心也是不可缺少的)。所以为了自己的梦想,在以后的学习过程中,我要不断的充实自己,努力的学习。通过这次课程设计,对数据结构的特点以及存储表示方式的认识有了明显的提高,同时还对在具体应用中选择合适的数据结构和存储结构的能力有


    注意事项

    本文(基于栈和队列的停车场管理系统设计与实现设计毕设论文Word文档格式.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开