停车场管理系统课程设计报告 最终版.docx
《停车场管理系统课程设计报告 最终版.docx》由会员分享,可在线阅读,更多相关《停车场管理系统课程设计报告 最终版.docx(32页珍藏版)》请在三一办公上搜索。
1、1实习目的12问题描述13.1设计基本要求13.2停车场管理系统的主要功能 24概要设计24.1设计思想24.2函数及功能要求35详细设计45.1数据结构的设计45.2算法的设计思想及流程图 55.2.1主要函数的功能说明55.2.2停车场管理系统流程图65.2.3主要模块算法描述76测试分析86.1测试用例86.1.1第一组测试用例86.1.2第二组测试用例96.1.3第三组测试用例 116.2测试结果分析117使用说明128总结13参考文献15附录16停车场管理系统1实习目的通过本次课程设计,了解并初步掌握设计、实现系统的完整过程,包括系统分析、 编码设计、以及调试分析,熟练掌握数据结构的
2、选择、设计、实现以及操作方法,为进 一步的应用开发打好基础。2问题描述停车场是一条可以停放n辆车的狭窄通道,且只有一个大门。汽车停放安到达时间 的先后依次由北向南排列(大门在最南端,最先到达的第一辆车停在最北端)若停车场 已经停满n辆车,后来的汽车在便道上等候,一旦有车开走,排在便道上的第一辆车可 以开入;当停车场的某辆车要离开时,停在他后面的车要先后退为他让路,等它开出后 其他车在按照原次序开入车场,每两停在车场的车要安时间长短缴费。3需求分析停车场是一条可以停放n辆车的狭窄通道,且只有一个大门。汽车停放按到达时间 的先后排列。若停车场已经停满n辆车,后来的汽车在便道上等候。一旦有车开走,排
3、 在便道上的第一辆车可以开入;当停车场的某辆车要离开时,停在他后面的车要先后退 为他让路。等它开出后,其他车再按照原次序开入车场,每辆停在车场的车要按时间长 短缴费。3.1设计基本要求(1) 以栈模拟停车场,以队列模拟车场外的便道,按照从终端输入的数据序列进行 模拟管理。每一组数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码、 以及到达或离去的时刻。对每一组数据进行操作后的信息为:若是车辆到达,则输出汽 车在停车场的内或便道上的位置:若是车辆离去则输出汽车在停车场内的停留时间和应 缴纳的费用(在便道上的停留时间不收费)。栈以顺序结构实现,队列以链表结构实现。(2) 友好性:界面要友
4、好,输入有提示,尽量展示人性化。(3) 可读性:源程序代码清晰、有层次,必要时给出注释。(4) 健壮性:用户输入非法数据时,系统要及时给出警告信息。(5) 测试数据:要求使用全部合法数据、整体非法数据、局部非法数据进行程序测 试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明。3.2停车场管理系统的主要功能(1) 根据车辆到达停车场到车辆离开停车场时所停留的时间进行计时收费。(2) 该程序设计能够通过车牌号查到该车辆在停车场或便道中的位置。(3) 当有车辆从停车场离开时,等待的车辆按顺序进入停车场停放。实现停车场的 调度功能。该程序设计可以完整的模拟停车场的管理过程。4概要设计4.1
5、数据库设计(1) 栈的抽象数据类型定义AST Stack(数据对象:D=ai|aiEElemSet,i=1,2,.,n, nN0数据关系:R1=|aiT,aiED, i=2,.,n约定an端为栈顶,a1端为栈底。基本操作:InitStack(&S)操作结果:构造一个空栈S。DestroyStack(&S)初始条件:栈S已存在。操作结果:栈S被销毁。ClearStack(&S)初始条件:栈S已存在。操作结果:将栈S清为空栈。tackEmpty(S)初始条件:栈S已存在。操作结果:若栈S为空栈,则返回TRUE,否则FALSE。StackLength(s)初始条件:栈S已存在。操作结果:返回S的元素
6、个数,既栈的长度。GetTop(S,&e)初始条件:栈S已存在且非空。操作结果:用e返回S的栈顶元素。Push(&S,e)初始条件:栈S已存在。操作结果:插入元素e为新的栈顶元素。Pop(&S,&e)初始条件:栈S已存在且非空。操作结果:删除S的栈顶元素,并用e返回其值。StackTraverse(S,visit()初始条件:栈S已存在且非空。操作结果:从栈底到栈顶依次对S的每个数据元素调用函数visit()。一旦visit()失 败,则操作失效。ADT Stack(2) 队列的抽象数据类型定义ADT Queue(数据对象:D=ai|ai EElemSet,i=1,2,.,n,nN0数据关系:
7、R1=(|ai-1,ai ED,i=2,.,n约定其中a1端为队列头,an为队列尾。基本操作:InitQueue(&Q)操作结果:构造一个空队列Q。DestroyQueue(&Q)初始条件:队列Q已存在。操作结果:队列Q被销毁,不再存在。ClearQueue(&Q)初始条件:队列Q已存在。操作结果:将Q清为空队列。QueueEmpty(Q)初始条件:队列Q已存在。操作结果:若Q为空队列,则返回TRUE,否则FALSE。QueueLength(Q)初始条件:队列Q已存在。操作结果:返回Q的元素个数,即队列的长度。GetHead(Q,&e)初始条件:。为非空队列。操作结果:用e返回的队头元素。En
8、Queue(&Q,e)初始条件:队列Q已存在。操作结果:插入元素e为Q的新的队尾元素。DeQueue(&Q,&e)初始条件:。为非空队列。操作结果:删除Q的队头元素,并用e返回其值。QueueTraverse(Q,visit()初始条件:Q已存在且非空。操作结果:从队头到队尾,依次对Q的每个数据元素调用函数visit()。一旦visit() 失败,则操作失败。ADT Queue4.2函数及功能要求(1)此停车场管理系统,主要分为以下若干模块:首先定义用来模拟停车场的堆栈以及用来模拟通道的链队列为全局变量,然后编写主函数,在此主函数中实现对其它各个模块的调用。在主函数中首先调用option()函
9、数, 出现欢迎用户使用的主界面,然后提示用户进入此停车场管理系统后,再出现一个供用 户选择的界面,在用户的选择过程中,程序又分别调用车辆的到达、车辆的离开、停车 场内停放车辆的信息以及退出程序这四个函数模块。其中,在车辆的离开那个模块函数 中又调用了打印离开车辆信息的函数,在停车场内停放车辆信息的那个模块函数中,又 分别调用了显示停车场上车辆信息的函数以及显示便道上车辆信息的函数。最后,从调用的这四个函数中回到主函数结束整个程序的运行。(2)在以上各个模块中,出现的调用的函数为:void InitStack(SeqStackCar *s);int InitQueue(LinkQueueCar
10、*Q);option();int Arrival(SeqStackCar *Enter,LinkQueueCar *W);void Leave(SeqStackCar *Enter,SeqStackCar *Temp,LinkQueueCar *W);void PRINT(CarNode *p);void List(SeqStackCar S,LinkQueueCar W);void List1(SeqStackCar *S);void List2(LinkQueueCar *W);5详细设计5.1数据结构的设计程序中使用了一个类,五个结构体,两个栈(模拟停车场,其中一个为临时栈)一 个队列(
11、模拟便道)。(1) 车辆信息的表示车辆可看成是一个节点,设计成一个结构体,车辆信息包括:车牌号码,车辆的进 站时间和离开停车场的时间,定义如下:typedef struct node(char num10;/车牌号码Time reach;到站时间Time leave;/离开时间CarNode;(2) 时间、栈和队列的定义时间是由小时和分钟表示的,有两部分数据,设计两个变量分别存储小时和分钟,定义如下:typedef struct time( int hour;int min;Time;停车场内用栈表示:typedef struct NODE(CarNode *stackMAX+1;/栈用顺序表
12、示int top;SeqStackCar;SeqStackCar Enter,Temp; InitStack(&Temp)在车辆离开时,应用temp临时栈把将要离开的车辆后续车辆压入,等车辆离开后压 回原栈stack。便道上的车辆表示:typedef struct car(CarNode *data; /便道上的车用链表表示struct car *next;QueueNode;typedef struct Node(QueueNode *head;/设置头指针、尾指针QueueNode *rear;LinkQueueCar;5.2算法的设计思想及流程图5.2.1主要函数的功能说明(1) voi
13、d InitStack(SeqStackCar *);/车辆节点进栈。即当栈未满时,就把到达 的车辆进栈。(2) int InitQueue(LinkQueueCar *);/车辆节点进队列。即当栈已满时,车辆就 进入便道上的队列中(3) int Arrival(SeqStackCar *,LinkQueueCar *);/车辆到达登记。即车辆到达 时,先登记车辆车牌号码。然后再判断停车场有没有停满,没停满就进栈,停满了就停 在便道上,即进队列。(4) void Leave(SeqStackCar *,SeqStackCar *,LinkQueueCar *);/车辆离开处 理。即通过输入离开
14、车辆的位置处理,然后调用P RINT(CarNode *p,int room);函数进 行收费。然后再判断便道上有没有车,如果有,就把便道上的车进停车场内。(5) void List(SeqStackCar,LinkQueueCar);/显示车场内和便道上的车辆情况。利用switch();函数选择显示车场内或是便道上的车辆情况,包括对下面两个子函数的 调用:void List1(SeqStackCar *S);void List2(LinkQueueCar *W);/ 分别用来显示 车场和便道上的车辆情况(6) void PRINT(CarNode *p,int room);/车辆离开时的收费
15、。即这个函数由车辆 离开的函数调用,以分钟计时算费,但只能计算当天之内的费用,如果第二天的话会导 致计费为负或减少。即只能当天停,当天开走。5.2.2停车场管理系统流程图经过对车辆的进出分析以及对该系统的详细设计,绘制停车场管理系统流程图图1停车场管理系统流程图5.2.3主要模块算法描述本程序最主要的算法就是车辆到达登记的和车辆离开时的登记。(1) 车辆到达:int Arrival(SeqStackCar *Enter,LinkQueueCar *W)/首先定义一 个栈和队列的结构体指针为:*p , *t。然后申请一个车辆信息的内存空间,并把它 赋给栈指针。车辆到达时就输入车牌号,并通过if(
16、Enter-toptop0)确保栈不空,然后用个while(1)确保输入的车辆离开位 置的合法性。如果不合法,显示输入有误,要重新输入。通过while(Enter-toproom) 判断离开车辆的位置,如果是中间位置,就要再用一个临时栈放置前面临时开出来的车, 等要开出的车开出后,再把临时栈内的车开进停车场内,并调用PRINT(p,room);这个函 数计算显示费用。然后还要用if(W-head!二W-rear)&Enter-topMAX)语句判断便 道上有没有车,如果有车就要显示进停车场的车的车牌号,并登记进入时间。并要进行 相应的出队列和进栈操作。6测试分析6.1测试用例说明:测试用例要合
17、理并且足够,既要有正确用例,也要有错误用例,同时检验程 序的正确性和强壮性。6.1.1第一组测试用例测试输入:停车场的车辆离开,如表1所示:表1:车辆离开测试服务选择车牌号/车位到达/离开时间1京 A121212:121津 S121212:131鲁 D121212:142114:122125: 65 (错误)(2) 测试目的:测试离开方法时间格式控制以及费用计算是否正确。时,(3) 正确输出:第一次离开的是京A1212,应交费2.4元。第二次时,当在输入65 应该提示输入错误,重输。(4) 实际输出:=薮迎使用停车场系统=请输人车在车场的位置一3人1清输夹车辆离开的时间I小时瓒钟脾:12骚离开
18、车辆的车牌号为;京fi!212该车到达时间加12:12该军离开肘间为:4:12应父费用为;2.4/L?图2测试离开方式时间格式及费用计算图=*欢迎使用停车场系统女=要输入非数字请输入车在车场的位置一3/:. i程请输入车堑离开的时闯- 小时粉钟25 = 65密的输矣有误? 请重新输入髀开时可的,时,图3测试车辆离开错误图(5) 错误原因:第一个正确,第二个错误,原因是没有对时间格式控制。(6) 当前状态:已改正6.1.2第二组测试用例测试输入:连续5辆车到达,如表2所示:表2:连续5辆车到达测试服务选择车牌号/车位到达时间1京 A121212:121津 S121212:131鲁 D121212
19、:141豫 F121212:151沪 G121212:162114:12(2) 测试目的:测试到达方法与列表显示方法能否正确完成。(3) 正确输出:先到达的三辆车先进入停车场,最后到达的两辆在便道等候。(4) 实际输出:表4车辆到达方式测试=欢迎使用停车场系统*说明:请您注意正确物人时间,不要输衣非数字? 请选择感谛需要的服矣顷必:L请输人车牌号例:豫B12M:豫F1212个您物、傍圭也生壑斗请该车在便道上等待?有空余车校时才能进入停车场,小图5车辆进入提示图(5 )错误原因:没有错误。(6)当前状态:通过。6.1.3第三组测试用例(1)测试输入:接上一步输入离开信息,如表3所示:表3:接上一
20、步离开信息测试服务选择离开车位离开时间便道车进入时间2114:1214:13(2) 测试目的:测试离开方法功能是否成功以及便道进入车场是否正确。(3) 正确输出:输出1号车位的车辆离开信息清单,便道1号车进入停车场。(4) 实际输出:黄眺迎使用停车场系统* *t女六杏杏率辆到达登记也女女女;t女a.车柄离开登记!5女女虫3,车精列表显示责E六*退出系统六女:| 1*( jm? n+tmfrMTfrw mmrtnWMim mtim; urt me m :金欢迎便用停车场系统金瞄麟麟源Wf清辎入车在车场的位单i一玖1i髓入车辆离开的时间=小虾 册中出心藏开车辆的车牌号为=京化场达开用的魂 到高费上
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 停车场管理系统课程设计报告 最终版 停车场 管理 系统 课程设计 报告
链接地址:https://www.31ppt.com/p-5034421.html