课程设计报告-停车场管理系统方案_第1页
课程设计报告-停车场管理系统方案_第2页
课程设计报告-停车场管理系统方案_第3页
课程设计报告-停车场管理系统方案_第4页
课程设计报告-停车场管理系统方案_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机工程学院课程设计报告课程名称:数据结构课程设计设计主题:停车场管理系统目录 TOC o 1-3 h z u HYPERLINK l _Toc312756983 一、需求分析 PAGEREF _Toc312756983 h 1 HYPERLINK l _Toc312756984 课程设计 PAGEREF _Toc312756984 h 课题1 HYPERLINK l _Toc312756986 1.2基本要求 PAGEREF _Toc312756986 h 1 HYPERLINK l _Toc312756987 1.4课程设计理念 PAGEREF _Toc312756987 h 1 HYP

2、ERLINK l _Toc312756988 1.5软件运维工具 PAGEREF _Toc312756988 h 1 HYPERLINK l _Toc312756989 2.外形设计 PAGEREF _Toc312756989 h 1 HYPERLINK l _Toc312756990 2.1方案总体说明 PAGEREF _Toc312756990 h 1 HYPERLINK l _Toc312756991 2.2结构说明 PAGEREF _Toc312756991 h 1 HYPERLINK l _Toc312756992 2.3算法设计思路及流程图 PAGEREF _Toc31275699

3、2 h 2 HYPERLINK l _Toc312756993 3.详细设计 PAGEREF _Toc312756993 h 6 HYPERLINK l _Toc312756994 3.1车辆到港登记 PAGEREF _Toc312756994 h 6 HYPERLINK l _Toc312756995 3.2车辆发车记录 PAGEREF _Toc312756995 h 6 HYPERLINK l _Toc312756996 3.3车辆信息显示 PAGEREF _Toc312756996 h 8 HYPERLINK l _Toc312756997 四、调试及操作说明 PAGEREF _Toc3

4、12756997 h 10 HYPERLINK l _Toc312756998 总结 PAGEREF _Toc312756998 h 12 HYPERLINK l _Toc312756999 到 PAGEREF _Toc312756999 h 12 HYPERLINK l _Toc312757000 参考文献 PAGEREF _Toc312757000 h 121、需求分析课程设计主题设计一个停车场管理系统来模拟停车场的运行。1.2 基本要求利用数据结构的知识,需要用栈来模拟停车场,用队列来模拟停车场外的人行道。需要处理的数据元包括三个数据项:车辆“到站”或“离站”信息、车牌和到站或离站时间;

5、1.3 课程设计的任务系统主要实现以下功能:1、车辆到站信息登记:包括车牌号、到站时间、停车场内停车位置等;2、车辆出发记录:包括出发时间、在停车场停留时间、停车费等;3、信息显示:显示到车时的停车场、到站紧急位置等基本信息;1.4 课程设计理念完成车辆进出停车场的程序应用栈是一个数据进出栈的过程。如果停车场(堆)满了,则将车辆放在人行道(队列)上;使用费在车辆离开时计算,人行道上的第一辆车停在该车辆位置。1.5 软件运行开发工具1 、 Windows 2000或以上操作系统2.Visual C+6.0开发环境2. 外形设计2.1 方案总体说明程序使用了一个类,五个结构(车辆信息,时间信息,栈

6、,链表和队列),两个栈(其中一个是临时栈),以及八个函数(栈和队列初始化,车辆到达)。主要功能。和出发登记,收费系统,车辆和人行道列表,总显示列表)。2.2 结构说明2.2.1 车辆信息的表示车辆可以看成一个节点,设计成一个结构,车辆信息包括:车牌、进站时间和离开停车场的时间。定义如下:结构 CarNode字符数10; /车牌时间到达; / 到达时间时间休假; / 离开时间;2.2.2 时间、栈和队列的定义时间用小时和分钟表示,有两部分数据,所以设计了两个变量分别存储小时和分钟。定义如下:结构时间小时;最小;停车场表示为堆栈:结构 SeqStack节点CarNode*元素 n +1; / 顺序

7、栈诠释顶部;人行道上的车辆由队列表示:struct QueueNode carCarNode *数据; / 临时存储人行道上汽车的链表结构QueueNodecar *next;结构链接队列节点队列节点 *前面; /设置头指针,尾指针队列节点*后;;2.3算法设计思路及流程图2.3.1 主要功能功能说明1. void CarStack(SeqStackNode *s) /车辆节点入栈当堆栈未满时,将到达的车辆推入堆栈。2. void CarQueue(LinkQueueNode *q) /车辆节点入队当堆满时,车辆进入人行道上的队列。3. void Arrival(SeqStackNode *E

8、nterCar,LinkQueueNode *QueueCar) /车辆到达登记当车辆到达时,首先登记车辆牌照。然后判断停车场是否已满,未满入栈,满时停在人行道上,入队。4. voidLeave(SeqStackNode*LeaveCar,SeqStackNodeTempStack,LinkQueueNode *QueueCar) /车辆出站处理通过输入车辆离开车辆的位置,然后调用Charge (CarNode *p)函数进行充电处理。然后判断人行道上是否有车,如果有,将人行道上的车放入停车场。5. void List(SeqStackNode s, LinkQueueNode q) /显示停

9、车场和人行道上车辆的情况使用 switch() 函数选择在停车场或人行道上显示车辆状态。包括对以下两个子函数的调用: void List1(SeqStackNode *s)和void List2(LinkQueueNode *q) /分别显示停车场和人行道上的车辆情况6. void Charge (CarNode *p ) / 车辆离场费该函数由车辆离开的函数调用,费用以分钟为单位计算,但只能计算当天的费用,如果是第二天,账单就会为负数或减少。即只能当天停车,当天开车离开。2.3.2 主要模块算法描述及流程图1、车辆到达:先定义一个stack和queue的结构体指针为:*p和*t,然后申请一个

10、车辆信息的存储空间,赋值给栈指针。车辆到达时,输入车牌号,使用if(Enter Car - top +1 top = 0)保证栈不为空,然后使用while(1 )确保输入车辆离开地点的合法性。如果不合法,则会显示输入错误,需要重新输入。通过if(loc=1&loctop+1)判断离开车辆的位置,如果是中间位置,则使用临时开在栈前的车。待要开的车开出来后,再看临时堆里的车进停车场,调用Charge (p)函数计算停车时间显示费。然后使用if(QueueCar - front != QueueCar - rear) & LeaveCar - top n)语句判断人行道上是否有车。如果有车,应显示进

11、入停车场的汽车的车牌号,并登记进入时间。并执行相应的出列和推送操作。N车辆进停车场是否有车进入停车场记录信息回主菜单进入便道记录信息YN车辆进停车场是否有车进入停车场记录信息回主菜单进入便道记录信息Y图 2.1 车辆进入流程车辆离开车辆离开停车场有车返回主菜单离开计算费用释放车位便道有车第一辆进入停车场记录信息有没有有没有图 2.2 车辆出发流程2.3.3 整体模块流程图开始开始初始化两个栈Enter和Temp与一个队列Wait。进入主菜单车辆到达车辆离开退出loc前车辆进临时栈对loc计费便道车信息车场内信息判便道是否有车车场是否为空列表显示栈EnterCar元素出栈队列中元素进栈对列Wai

12、tCar中元素出队元素进栈EnterCar便道车进车场元素进队列WaitCar判断栈是否为满结束退出列表显示是否否是否是3. 详细设计根据功能模块的描述,主要实现三个功能3.1 车辆到港登记void Arrival(SeqStackNode *EnterCar,LinkQueueNode *QueueCar) /车辆进入车节点 *s; /定义一个指向传入车辆的指针队列节点车 *q; /定义一个指针,指向进入人行道的汽车s = 新汽车节点; /最后一个连接到队列头节点停车场的汽车节点cout s - 数字;if(EnterCar - top+1 顶部+; /初始指针为-1,加1coutn 车辆在

13、 top+1 位置。endl;couts - 到达.小时;cins - 到达.min;EnterCar - 元素EnterCar - top = s; /给栈元素加1返回 1;别的coutn车辆必须在人行道上等候,当有车位时进入停车场! 数据 = s; /链表指针加1q - 下一个 = NULL;QueueCar - 后方 - 下一个 = q; /队列进入一个元素QueueCar - 后方 = q;返回0;3.2 车辆发车记录void Leave(SeqStackNode *LeaveCar,SeqStackNode *TempStack,LinkQueueNode *QueueCar) /车

14、辆离开国际定位;汽车节点 *p,*t; /定义两个车辆信息指针,一个用于存放下车信息; one用于存放人行道上第一辆车的临时节点,存放在栈中队列节点车 *q;if(LeaveCar - top 0) /判断停车场是否为空而(1)coutn请输入汽车在停车场的位置/1- toploc;if(loc = 1 & loc top)休息;别的cout输入错误,请重试! top loc) /驱动要删除的车辆后面的车进入临时栈临时堆栈-顶部+;TempStack - stackTempStack - top = LeaveCar - stackLeaveCar - top;LeaveCar - 堆栈Lea

15、veCar - top = NULL;离开汽车-顶部-;p = LeaveCar - 堆栈LeaveCar - top; /将要删除的车辆节点分配给pLeaveCar - 堆栈LeaveCar - top = NULL;离开汽车-顶部-;while(TempStack - top = 1) /将临时栈中的车辆放入停车场离开汽车-顶部+;LeaveCar - stackLeaveCar - top = TempStack - stackTempStack - top;TempStack - 堆栈TempStack - 顶部 = NULL;临时堆栈-顶部-;收费(p); /调用计费系统if(Que

16、ueCar - front != QueueCar - rear) & LeaveCar - top 前 - 下一个;t = q - 数据;离开汽车-顶部+;coutn 人行道的“ 号”车在“ top”位置进入停车场。endl;coutn number 车号进入停车场的时间为: leave.hour: leave.分钟 前 - 下一个 = q - 下一个;如果(q = QueueCar - 后部)QueueCar - 后部 = QueueCar - 前部;LeaveCar - 堆栈LeaveCar - top = t;删除q;别的coutn人行道上没有汽车。nendl;别的coutn停车场没有

17、车。顶部 0)coutn 仓库列表:endl;coutn位置到达时间车牌号nendl;for(int i = 1; i top; i+)cout i;coutt stacki -reach.hour:堆栈i - 到达.min;coutt stacki - numberendl;别的coutn停车场没有车。 前面 - 下一个;如果(q - 前!= q - 后)coutn 等待车辆的车牌为:endl;而(p!= NULL)cout 数据 - 数字 下一个;别的coutn人行道上没有车。endl;void List(SeqStackNode s,LinkQueueNode q) /显示选择列表整数选

18、择;诠释条件 = 1;而(条件)cout *endl;coutn 1. 停车场列表n 2. 进入道路列表n 3. 返回主菜单nendl;cout *endl;cout选择;如果(选择 = 1 & 选择 = 3)休息;别的coutn 请输入:1-3:;switch(choice) /列表函数调用情况1:List1(&s);休息;案例2:列表2(&q);休息;案例3:条件 = 0;休息;默认:休息;四、调试及操作说明执行程序后,进入欢迎界面:按1进入车辆到站登记界面,输入车牌号和时间:图 4.1 车辆到站登记流程停车场已满,汽车进入人行道:图 4.2 进出人行道的车辆流向按2下车,输入车辆在停车场

19、的位置和发车时间,显示停车时间并结算费用,人行道上的第一辆车进入停车场,并显示进入时间:图 4.3 车辆出发收费流程按3进入列表显示界面,再按1显示停车场列表:图 4.4 停车场车辆列表显示流程再按2进入显示人行道列表显示:图 4.5 人行道等候车辆列表显示流程摘要我在这门课程的设计中学到了很多知识。将自己在数据结构课程中所学的东西系统地应用起来,将所学的东西综合运用起来,加深了对C+一些知识的应用。在课程设计和分析的过程中,遇到了很多问题,写代码的时候问题就更加明显了。虽然我可以表达我的想法,但我在编程中总是有很多错误和错误。地方。由此可以看出,这门课程的学习过程中存在很多不足,需要掌握的也很多。虽然最终完成了整个程序的分析和设计,但是我还有很多问题需要改进,比如结构体的定义,栈和队列的初始化和使用,也可以通过类的定义来解决.在不断的深入研究中得到了很大的改进和完善。在这门课程的整体设计中,我收获颇丰,包括堆栈和队列的应用,链

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论