ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:93.37KB ,
资源ID:948762      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-948762.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构课程设计报告_停车场管理系统Word格式文档下载.docx)为本站会员(聆听****声音)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

数据结构课程设计报告_停车场管理系统Word格式文档下载.docx

1、进度要求2012.6.25完成任务的讲解、并接受课程设计任务,选定课程设计的题目2012.6.26了解任务的算法、并画出算法的程序流程图,对任务的关键技术进行验证、并确定解决办法2012.6.27-2012.6.29 程序设计及编码,上机调试2012.7.02对程序进行调试,设计测试用例进行测试2012.7.03整理课程设计的过程、并进行总结,完善程序功能2012.7.04编写课程设计报告初稿2012.7.05完善课程设计报告、并准备答辨2012.7.06提交课程设计报告和程序,进行答辨参考资料1. 严蔚敏 吴伟民, 数据结构,清华大学出版社,2007.32. 程杰 ,大话数据结构,清华大学出

2、版社,2011.63(美)Stephen Prata, C Primer Plus 中文版(第五版),人民邮电出版社,2005.2其它说明1.本表应在每次实施前一周由负责教师填写二份,学院审批后交学院教务办备案,一份 由负责教师留用。2.若填写内容较多可另纸附后。3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。II系主任:雷亮指导教师:黄永文/王双明/熊茜/彭军/王成敏2012 年 6 月 20 日摘要在这个科技发达的时代,汽车对于我们来说越来越普遍,而人们对停车场的管理也更加信息化。本系统主要是对仅有一个门的停车场的简单管理的设计。对汽车进入停车场,若停车场满,进入便道等候,

3、车场中有车离开后,便道上的车依次进入停车场有一定的管理。而且停车场也有合理的收费标准。该系统主要运用的是 C 语言和数据结构的相关知识,用栈(后进先出)来模拟停车场,队列(先进先出)来模拟便道实现对汽车进入和离开的管理,用简单的数据计算对汽车进行收费标准。使车主更清楚了解停车场的信息,车主可以根据系统的提示进行每一项的操作。关键词:停车场管理C 语言数据结构栈队列IV目 录1 设计内容和要求11.1 设计内容11.2 设计要求12 概要设计22.1 栈的抽象数据类型定义22.2 模块的划分43 详细设计53.1 数据类型的定义53.2 主要模块的算法流程图53.3 主要模块的算法描述74 软件

4、的测试135 总结16参考文献17致谢18附录191 设计内容和要求1.1 设计内容当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路, 待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开时必须按它停留的时间长短交纳费用(在便道上停车不收费)。1.2 设计要求汽车“到达” 或“离去”信息、汽车牌照号码、到达或离去的时刻。对每一组输入数据进行操作 后的输出信息为:若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用。222 概要设计2.1 栈的抽象数据类型定义(1)栈的抽象数据类型定义AST Stack数据对象:D=ai|aiElemSet,i=1,

5、2,.,n, n0 数据关系:R1=|ai-1,aiD,i=2,.,n 约定 an 端为栈顶,a1 端为栈底。基本操作:InitStack(&S)操作结果:构造一个空栈 S。DestroyStack(&初始条件:栈 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 的栈顶元

6、素,并用 e 返回其值。StackTraverse(S,visit()从栈底到栈顶依次对 S 的每个数据元素调用函数 visit()。一旦visit()失败,则操作失效。ADT Stack(2)队列的抽象数据类型定义ADT QueueD=ai|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 为空队列,则返回 TR

7、UE,否则 FALSE。QueueLength(Q)返回 Q 的元素个数,即队列的长度。GetHead(Q,&Q 为非空队列。用 e 返回的队头元素。EnQueue(&Q,e)插入元素 e 为 Q 的新的队尾元素。DeQueue(&Q,&删除 Q 的队头元素,并用 e 返回其值。QueueTraverse(Q,visit()Q 已存在且非空。从队头到队尾,依次对 Q 的每个数据元素调用函数 visit()。visit() 失败,则操作失败。ADT Queue2.2 模块的划分该系统主要有 7 个模块,即:主函数模块、栈模块(模拟停车场)、队列模块(模拟便道)、汽车进入模块、汽车离开模块、系统信

8、息保存模块、系统输出显示模块。3 详细设计3.1 数据类型的定义typedef struct timeint hour; int min;Time; /时间结点typedef struct carnodechar num10;Time reach;Time leave;Car; /车辆信息结点typedef struct nodeCar *stack100; int top;SqStack; /定义栈表示车位typedef struct carint num;Car *data;struct car *next;QNode;typedef struct NodeQNode *front;QNo

9、de *rear;LinkQueue; /用队列表示便道道3.2 主要模块的算法流程图输入停车场的最大容量菜单有显退车示出进离程入开场序信息图 4.1 界面显示有汽车进入停车场判断停车场是否有空车位汽车车进入系统结束进入便道进入停车场输入进入车辆的信息是否图 4.2 汽车进入有汽车离开判断它后面是否有车汽车离开并缴费后面的车进入临时停车场输入离开汽车的信息临时停车场的车回到停车场判断便道是否有车车场离开系统结束便道的车进入停车场图 4.3 汽车离开3.3 主要模块的算法描述(1) 汽车进入停车场:int arrive(SqStack *In,LinkQueue *W,int n) /车辆到达

10、(把元素要入栈中)Car *p;QNode *t;p=(Car *)malloc(sizeof(Car);flushall();printf(n 停车场还有%d 个停车位(若停车位为 0,车可先进入便道等待),n- In-top);n 请输入车牌号码:);gets(p-num);if(In-toptop+;n 停车的位置:%d 号停车位。,In-n 请输入车到达的时间格式为“*:*”: scanf(%d:%d,&(p-reach.hour),&reach.min);fprintf(fpout,车牌号为%s 的汽车在%d:%d 时进入停车场的%d 号车位n,p-num,p-reach.hour,

11、p-reach.min,In- In-stackIn-top=p;请按任意键返回getch(); return(1);else /停车场已满,车进便道printf(n 停车位已满,该车须在便道等待!n 停车位已满,车牌号为%s 车须在便道等待!,p-t=(QNode *)malloc(sizeof(QNode);t-data=p;t-next=NULL;W-rear-next=t;rear=t;getch();开始定义汽车节点指针 P 和 t,先判断停车场内是否有空位,若 In-n 则汽车进入停车场,然后停车场的栈顶 In-top加 1 表示增加了新的车辆,接着输入进入车辆的信息。如果停车场没

12、有空位,则车进入便道,就是把元素压入队列中。(2) 汽车离开停车场:void leave(SqStack *In,SqStack *Out,LinkQueue *W) /车辆离开int room;Car *p,*t;QNode *q;/判断车场内是否有车if(In-top0) /有车while(1) /输入离开车辆的信息n 请输入车在停车场的位置(1-%d):room);if(room=1&roomtop) break;while(In-room) /车辆离开Out-Out-stackOut-top=In-top;top=NULL;In-top-;p=In-In- while(Out-=1)t

13、op=Out- Out-Out-feiyong(p,room);/判断通道上是否有车及车站是否已满if(W-front!=W-rear) /便道的车辆进入停车场q=W-front-next;t=q-data;n 现在停车场有空位了,便道的%s 号车将进入停车场第%d 号停车位。,t-num,In-n 请输入现在的时间格式为“*:(t-现在停车场有空位了,便道的%s 号车在%d:%d 时进入停车场第%d 号停车位。nntop,t-reach.hour,t-reach.min);W-next=q- if(q=W-rear);rear=W-front;In-top=t;free(q);else pr

14、intf(n 停车场里没有车n/没车首先定义一个整型变量 room,用来记录要离开的车辆在停车场的位置,定义车辆结点指针 p 和 t 和队列结点指针 q,然后判断停车场内是否有车,如果有车, 就输入要离开的车辆在停车场的位置。若栈顶位置 In-top 大于要离开的车位置room,在要离开的车辆后面的车就要先离开,开到临时停车场,因此 Out 所表示的临时栈的栈顶 top 加 1,用来表示临时停车场增加 1 辆车;接着把该车的信息拷贝到栈 Out 中,然后删除栈 In 的栈顶。直到要离开的车辆后面的车都开到临时停车场之后,该车才离开,离开之后,该车的信息结点 In-top置空,然后栈顶 In-t

15、op 减 1。之后就把临时停车场的车开回停车场里,因此停车场的栈顶 In-top 加 1,然后就把临时停车场的车结点的信息拷贝到停车场的车结点上,接着删除临时停车场车的结点。最后判断(W-rear)即便道上是否有车满,如果便道有车且停车场未满,通道的车便可进入停车场,此时指针 q 指向便道的头,即队头,然后停车场的栈顶 In-top 加 1 以便增加新的车辆,接着输入要进停车场的车的信息,然后便道队列的头结点指向原队列中第二辆车的结点,接着判断刚离开的车是否是最后一辆车,如果是,就把队列置空,即队头等于队尾;之后就把结点t(即要进入停车场的车)的信息拷贝到停车场栈顶的车中,最后释放 p 的空间

16、。(3) 显示停车场的出入信息void xianshi1(SqStack *S) /列表输出车场信息int i;if(S-0) /判断停车场内是否有车n 车场:printf(n 位置 到达时间 车牌号nn车场: fprintf(fpout, for(i=1;itop;i+)%dt,i);%d,S-stacki-reach.hour,S- puts(S-fprintf(fpout,%selse printf(n 停车场里没有车void xianshi2(LinkQueue *W) /显示便道信息QNode *p;p=W-rear) /判断通道上是否有车n 便道中车辆的号码为: while(p!=

17、NULL)puts(p-data- p=p-n 便道里没有车nn 便道里没有车nn先显示停车场的信息,首先判断停车场里是否有车,如果有就输出车辆信息即车位,车牌号和到达时间。如果停车场里没有车,就输出停车场没有车。再判断便 道上是否有车,如果有车就输出便道上车辆的车牌号,若没有就输出便道上没有车。最后按任意键返回。(4) 计算汽车离开时的收费情况void feiyong(Car *p,int room) /输出停车站车的信息int A1,A2,B1,B2;int s,sum;n 请输入车离开的时间格式为“*:leave.hour),&leave.min);n 车牌号码: puts(p-n 车到

18、达的时间是: %d:车离开的时间是:leave.hour,p-leave.min);%d 时离开,num,p-A1=p-reach.hour; A2=p-reach.min; B1=p-leave.hour; B2=p-leave.min; s=(B1*60+B2)-(A1*60+A2);if(s%60=30) sum=(s/60+1)*3; else sum=s/60*3;您所需缴纳的费用为: %d 元n,sum);车主需缴纳的费用为: %d 元nnfree(p);首先让户主输入离开时的时间,然后根据该车到达的时间算出该车总停留的时间,再根据每小时 3 元,不足一小时四舍五入即 s=(B1*

19、60+B2)-(A1*60+A2); if(s%60else sum=s/60*3;算出总的费用。4 软件的测试1. 进入界面输入停车场的最大容量为 6:图 5.1 系统初始化界面图2. 输入 8 辆车进入停车场,并显示停车场的信息:图 4.2 汽车进入停车场的示意图图 4.3 汽车进入便道示意图图 4.4 显示停车场的信息图3. 使 3 号位的车离开车场,离开后便道上的车进入停车场,并显示汽车离开后停车场的信息:图 4.5 汽车离开车场,便道上的车进入车场的示意图图 4.6 显示停车场的信息4. 退出系统:图 4.7 退出系统示意图5. 停车场的所有出入信息保存在 estdout.pc2 文件中:图 4.8 车场信息存入磁盘的部分示意图5 总结通过这次数据结构的程序设计,我更加理解了栈和队列这两种重要的线性结构。知道了栈和队列的抽象数据类型的定义,知道了栈的顺序存储结构和队列的链式存储结构的定义和算法描述,也充分的理解了用栈和队列实现模拟停车场的基本原理。学会了编一些简单的停车场的程序。这次的程序设计总的来说我觉得编写的还可以,但是仍然有一些地方需要完善,如把停车场的信息保存在磁盘上,就有一些困难。后面还是通过和同学一起讨论才有了大概的思路,知道了从哪里下手。刚开始看到这个程序

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

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