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

加入VIP,免费下载资源
 

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

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

下载须知

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

版权提示 | 免责声明

本文(停车场管理系统课程设计报告通用资料.pptx)为本站会员(芳黎)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(发送邮件至2622162128@qq.com或直接QQ联系客服),我们立即给予删除!

停车场管理系统课程设计报告通用资料.pptx

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 主要模块算法描述.86 测试分析.86.1 测试用例.86.1.1 第一组测试用例.86.1.2 第二组测试用例.106.1.3 第三组测试用例.116.2 测试结果分析.127 使用说明.128 总结.13参考文献.15附录.16数据结构课程设计停停车车场场管管理系理系统统1实

2、习目的通过本次课程设计,了解并初步掌握设计、实现系统的完整过程,包括系统分析、编码设计、以及调试分析,熟练掌握数据结构的选择、设计、实现以及操作方法,为进 一步的应用开发打好基础。2问题描述停车场是一条可以停放 n 辆车的狭窄通道,且只有一个大门。汽车停放安到达时间 的先后依次由北向南排列(大门在最南端,最先到达的第一辆车停在最北端)若停车场 已经停满 n 辆车,后来的汽车在便道上等候,一旦有车开走,排在便道上的第一辆车可 以开入;当停车场的某辆车要离开时,停在他后面的车要先后退为他让路,等它开出后 其他车在按照原次序开入车场,每两停在车场的车要安时间长短缴费。3需求分析停车场是一条可以停放

3、n 辆车的狭窄通道,且只有一个大门。汽车停放按到达时间 的先后排列。若停车场已经停满 n 辆车,后来的汽车在便道上等候。一旦有车开走,排 在便道上的第一辆车可以开入;当停车场的某辆车要离开时,停在他后面的车要先后退 为他让路。等它开出后,其他车再按照原次序开入车场,每辆停在车场的车要按时间长 短缴费。1.设计基本要求(1)以栈模拟停车场,以队列模拟车场外的便道,按照从终端输入的数据序列进行 模拟管理。每一组数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码、以及到达或离去的时刻。对每一组数据进行操作后的信息为:若是车辆到达,则输出汽 车在停车场的内或便道上的位置:若是车辆离去则输出汽

4、车在停车场内的停留时间和应 缴纳的费用(在便道上的停留时间不收费)。栈以顺序结构实现,队列以链表结构实现。(2)友好性:界面要友好,输入有提示,尽量展示人性化。(3)可读性:源程序代码清晰、有层次,必要时给出注释。(4)健壮性:用户输入非法数据时,系统要及时给出警告信息。(5)测试数据:要求使用全部合法数据、整体非法数据、局部非法数据进行程序测 试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明。1数据结构课程设计2.停车场管理系统的主要功能(1)根据车辆到达停车场到车辆离开停车场时所停留的时间进行计时收费。(2)该程序设计能够通过车牌号查到该车辆在停车场或便道中的位置。(3)当有车

5、辆从停车场离开时,等待的车辆按顺序进入停车场停放。实现停车场的 调度功能。该程序设计可以完整的模拟停车场的管理过程。4概要设计1.数据库设计(1)栈的抽象数据类型定义 AST Stack数据对象:D=ai|aiElemSet,i=1,2,.,n,n0 数据关系:R1=|ai-1,aiD,i=2,.,n 约定 an 端为栈顶,a1 端为栈底。基本操作:InitStack(&S)操作结果:构造一个空栈 S。DestroyStack(&S)初始条件:栈 S 已存在。操作结果:栈 S 被销毁。ClearStack(&S)初始条件:栈 S 已存在。操作结果:将栈 S 清为空栈。tackEmpty(S)初

6、始条件:栈 S 已存在。操作结果:若栈 S 为空栈,则返回 TRUE,否则 FALSE。StackLength(s)初始条件:栈 S 已存在。操作结果:返回 S 的元素个数,既栈的长度。GetTop(S,&e)初始条件:栈 S 已存在且非空。操作结果:用 e 返回 S 的栈顶元素。Push(&S,e)初始条件:栈 S 已存在。操作结果:插入元素 e 为新的栈顶元素。Pop(&S,&e)初始条件:栈 S 已存在且非空。操作结果:删除 S 的栈顶元素,并用 e 返回其值。StackTraverse(S,visit()初始条件:栈 S 已存在且非空。2信息管理学院 计算机科学与技术数据结构课程设计操

7、作结果:从栈底到栈顶依次对 S 的每个数据元素调用函数 visit()。一旦 visit()失 败,则操作失效。ADT Stack(2)队列的抽象数据类型定义 ADT Queue数据对象:D=ai|aiElemSet,i=1,2,.,n,n0 数据关系:R1=|ai-1,aiD,i=2,.,n 约定其中 a1 端为队列头,an 为队列尾。基本操作:InitQueue(&Q)操作结果:构造一个空队列 Q。DestroyQueue(&Q)初始条件:队列 Q 已存在。操作结果:队列 Q 被销毁,不再存在。ClearQueue(&Q)初始条件:队列 Q 已存在。操作结果:将 Q 清为空队列。Queue

8、Empty(Q)初始条件:队列 Q 已存在。操作结果:若 Q 为空队列,则返回 TRUE,否则 FALSE。QueueLength(Q)初始条件:队列 Q 已存在。操作结果:返回 Q 的元素个数,即队列的长度。GetHead(Q,&e)初始条件:Q 为非空队列。操作结果:用 e 返回的队头元素。EnQueue(&Q,e)初始条件:队列 Q 已存在。操作结果:插入元素 e 为 Q 的新的队尾元素。DeQueue(&Q,&e)初始条件:Q 为非空队列。操作结果:删除 Q 的队头元素,并用 e 返回其值。QueueTraverse(Q,visit()初始条件:Q 已存在且非空。操作结果:从队头到队尾

9、,依次对 Q 的每个数据元素调用函数 visit()。一旦 visit()失败,则操作失败。ADT Queue4.2 函数及功能要求(1)此停车场管理系统,主要分为以下若干模块:首先定义用来模拟停车场的堆栈以及用来模拟通道的链队列为全局变量,然后编写 主函数,在此主函数中实现对其它各个模块的调用。在主函数中首先调用 option()函数,出现欢迎用户使用的主界面,然后提示用户进入此停车场管理系统后,再出现一个供用3信息管理学院 计算机科学与技术数据结构课程设计户选择的界面,在用户的选择过程中,程序又分别调用车辆的到达、车辆的离开、停车 场内停放车辆的信息以及退出程序这四个函数模块。其中,在车辆

10、的离开那个模块函数 中又调用了打印离开车辆信息的函数,在停车场内停放车辆信息的那个模块函数中,又 分别调用了显示停车场上车辆信息的函数以及显示便道上车辆信息的函数。最后,从调用的这四个函数中回到主函数结束整个程序的运行。(2)在以上各个模块中,出现的调用的函数为:void InitStack(SeqStackCar*s);int InitQueue(LinkQueueCar*Q);option();int Arrival(SeqStackCar*Enter,LinkQueueCar*W);void Leave(SeqStackCar*Enter,SeqStackCar*Temp,LinkQue

11、ueCar*W);void PRINT(CarNode*p);void List(SeqStackCar S,LinkQueueCar W);void List1(SeqStackCar*S);void List2(LinkQueueCar*W);5详细设计1.数据结构的设计程序中使用了一个类,五个结构体,两个栈(模拟停车场,其中一个为临时栈),一 个队列(模拟便道)。(1)车辆信息的表示车辆可看成是一个节点,设计成一个结构体,车辆信息包括:车牌号码,车辆的进 站时间和离开停车场的时间,定义如下:typedef struct nodechar num10;/车牌号码Time reach;/到站

12、时间Time leave;/离开时间CarNode;(2)时间、栈和队列的定义时间是由小时和分钟表示的,有两部分数据,设计两个变量分别存储小时和分钟,4信息管理学院 计算机科学与技术数据结构课程设计定义如下:typedef struct timeint hour;int min;Time;停车场内用栈表示:typedef struct NODECarNode*stackMAX+1;/栈用顺序表示int top;SeqStackCar;SeqStackCar Enter,Temp;InitStack(&Temp)在车辆离开时,应用 temp 临时栈把将要离开的车辆后续车辆压入,等车辆离开后压 回

13、原栈 stack。便道上的车辆表示:typedef struct carCarNode*data;/便道上的车用链表表示 struct car*next;QueueNode;typedef struct NodeQueueNode*head;/设置头指针、尾指针 QueueNode*rear;LinkQueueCar;2.算法的设计思想及流程图1.主要函数的功能说明1void InitStack(SeqStackCar*);/车辆节点进栈。即当栈未满时,就把到达 的车辆进栈。2int InitQueue(LinkQueueCar*);/车辆节点进队列。即当栈已满时,车辆就 进入便道上的队列中3

14、int Arrival(SeqStackCar*,LinkQueueCar*);/车辆到达登记。即车辆到达 时,先登记车辆车牌号码。然后再判断停车场有没有停满,没停满就进栈,停满了就停 在便道上,即进队列。4void Leave(SeqStackCar*,SeqStackCar*,LinkQueueCar*);/车辆离开处 理。即通过输入离开车辆的位置处理,然后调用 PRINT(CarNode*p,int room);函数进5信息管理学院 计算机科学与技术数据结构课程设计行收费。然后再判断便道上有没有车,如果有,就把便道上的车进停车场内。5void List(SeqStackCar,LinkQ

15、ueueCar);/显示车场内和便道上的车辆情况。利用 switch();函数选择显示车场内或是便道上的车辆情况,包括对下面两个子函数的 调用:void List1(SeqStackCar*S);void List2(LinkQueueCar*W);/分别用来显示 车场和便道上的车辆情况6void PRINT(CarNode*p,int room);/车辆离开时的收费。即这个函数由车辆 离开的函数调用,以分钟计时算费,但只能计算当天之内的费用,如果第二天的话会导 致计费为负或减少。即只能当天停,当天开走。5.2.2 停车场管理系统流程图经过对车辆的进出分析以及对该系统的详细设计,绘制停车场管理

16、系统流程图6信息管理学院 计算机科学与技术数据结构课程设计图 1 停车场管理系统流程图7信息管理学院 计算机科学与技术数据结构课程设计3.主要模块算法描述本程序最主要的算法就是车辆到达登记的和车辆离开时的登记。(1)车辆到达:int Arrival(SeqStackCar*Enter,LinkQueueCar*W)/首先定义一 个栈和队列的结构体指针为:*p,*t。然后申请一个车辆信息的内存空间,并把它 赋给栈指针。车辆到达时就输入车牌号,并通过 if(Enter-toptop0)确保栈不空,然后用个 while(1)确保输入的车辆离开位 置的合法性。如果不合法,显示输入有误,要重新输入。通过

17、 while(Enter-toproom)判断离开车辆的位置,如果是中间位置,就要再用一个临时栈放置前面临时开出来的车,等要开出的车开出后,再把临时栈内的车开进停车场内,并调用 PRINT(p,room);这个函 数计算显示费用。然后还要用 if(W-head!=W-rear)&Enter-topMAX)语句判断便 道上有没有车,如果有车就要显示进停车场的车的车牌号,并登记进入时间。并要进行 相应的出队列和进栈操作。6测试分析1.测试用例说明:测试用例要合理并且足够,既要有正确用例,也要有错误用例,同时检验程 序的正确性和强壮性。1.第一组测试用例(1)测试输入:停车场的车辆离开,如表 1 所

18、示:8信息管理学院 计算机科学与技术数据结构课程设计表 1:车辆离开测试服服务务选择选择车车牌牌号号/车车位位到达到达/离离开开时间时间1京 A121212:121津 S121212:131鲁 D121212:142114:122125:65(错误)(2)测试目的:测试离开方法时间格式控制以及费用计算是否正确。(3)正确输出:第一次离开的是京 A1212,应交费 2.4 元。第二次时,当在输入 65 时,应该提示输入错误,重输。(4)实际输出:图 2 测试离开方式时间格式及费用计算图图 3 测试车辆离开错误图(5)错误原因:第一个正确,第二个错误,原因是没有对时间格式控制。(6)当前状态:已改

19、正9信息管理学院 计算机科学与技术数据结构课程设计2.第二组测试用例(1)测试输入:连续 5 辆车到达,如表 2 所示:表 2:连续 5 辆车到达测试服服务务选择选择车车牌牌号号/车车位位到到达达时间时间1京 A121212:121津 S121212:131鲁 D121212:141豫 F121212:151沪 G121212:162114:12(2)测试目的:测试到达方法与列表显示方法能否正确完成。(3)正确输出:先到达的三辆车先进入停车场,最后到达的两辆在便道等候。(4)实际输出:表 4 车辆到达方式测试10信息管理学院 计算机科学与技术数据结构课程设计图 5 车辆进入提示图(5)错误原因

20、:没有错误。(6)当前状态:通过。3.第三组测试用例(1)测试输入:接上一步输入离开信息,如表 3 所示:表 3:接上一步离开信息测试服服务务选择选择离离开开车车位位离离开开时间时间便便道道车车进进入入时间时间2114:1214:13(2)测试目的:测试离开方法功能是否成功以及便道进入车场是否正确。(3)正确输出:输出 1 号车位的车辆离开信息清单,便道 1 号车进入停车场。(4)实际输出:图 6 测试离开方法功能是否成功图11信息管理学院 计算机科学与技术数据结构课程设计(5)错误原因:没有错误。(6)当前状态:通过6.2 测试结果分析经过我们小组一天的调试,我们终于把各模块整合起来了。在这

21、过程中,我们遇到 了很多问题,像数据不匹配、括号不配对、赋值重复等。因为 C 语言的语法限制不太严 格,对变量的类型约束不严格,对数组下标越界不做检查等原因,所以,我们的修改工 作难度加大。但经过我们这小组共同的努力。此停车管理系统可以基本实现一个小的停 车场的管理,其“到达”与“离开”方法都相对比较完整,费用结算清单直观。在输入 数据时,要按照严格的格式输入,否则有可能出现死去或崩溃。若本系统能加上保存功 能就更好了,因为一个系统在使用过程中总会关机等,而此系统的缺点却是没有保存功 能,关闭之后数据丢失。现受限于各种条件,又因为要求中并未提及,所以本程序暂时 没有加入保存功能。7 使用说明(

22、1)运行程序,首先出现主界面。主界面包括四个选项:选项 1:车辆到达登记,选择该项可进行车辆到达停车场情况登记;选项 2:车辆离开登记,选择该项可进行车 辆离开停车场情况登记;选项 3:车辆列表显示,选择该项可查看车辆列表显示的所有 信息,包括停车场列表和便道列表的全部信息;选项 4:退出系统,选择该项将退出程 序。图 7 程序初始界面图12信息管理学院 计算机科学与技术数据结构课程设计(2)车辆列表显示界面包括 3 个选项:选项 1:停车场列表,选择该项可以查看停 车场列表的所有车辆的全部信息;选项 2:便道列表,选择该项可以查看便道列表显示 的全部信息;选项 3:返回主菜单,可返回主界面。

23、图 8 车辆列表显示界面图8 总结总体来说,这次的课程设计比去年的 c 语言的课程设计稍难。我这次的课程设计题 目:停车场问题。相比其他课题来说,这个题目还是比较简单的,主要是运用了数据结 构中栈和队列的知识和操作。程序能够实现基本的车辆到达、离开、收费、遍历显示等 主要功能。但我觉得这个程序还有很多小的地方是可以完善的,比如:在计算收费时如果离开 时间是到了第二天,这样就会导致收费是负的或减少很多。也就是说,该程序限制于只 能规定当天停,当天开走。至于加算天数的功能我改了几次改不好,又鉴于程序要求中 也没有提及并且时间紧张,所以也就没再去研究实现。只要能实现主要的功能就好了。当然,这次的课程

24、设计、编程实践还是收获颇丰的。通过实习我的收获如下:(1)我知道了怎样去简化程序,减少他的时间复杂度和空间复杂度。还知道了怎样去 完善程序,使其更具健壮性。13信息管理学院 计算机科学与技术数据结构课程设计(2)巩固和加深了对数据结构相关知识的理解,提高综合运用本课程所学知识的能 力。(3)培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考、深入研究、分析问题、解决问题的能力。(4)通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法。(5)通过课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济 观念和全局观念。根据我在实习中遇到的问题,我将在以后的学习过程中注

25、意以下几点:(1)认真上好专业实验课,多在实践中锻炼自己。更让我懂得实践是检验和掌握真理 的最好办法。(2)写程序的过程中要考虑周到、严密。需求分析需要反复思考修正。(3)在做课程设计的时候要有信心、有耐心,切勿浮躁。(4)认真学习课本知识,掌握课本中的知识点,并在此基础上学会灵活运用。(5)在课余时间里多写程序,熟练掌握在调试程序的过程中所遇到的常见错误,以便 能节省调试程序的时间。总之,本次课程设计不仅加深了我们对栈和队列等数据结构的理解和掌握,同时一定 程度上提高了我们程序设计和阅读程序的能力。本次课程设计提高了我们的专业知识,使自己所学的内容运用到实际中来,也增强了实际操作能力,为以后

26、的工作学习提供了 一个良好的铺垫。14信息管理学院 计算机科学与技术数据结构课程设计参考文献1严蔚敏,吴伟民.数据结构M.北京:清华大学出版社,2004.2李春葆.数据结构解析M.北京:清华大学出版社,2001.3谭浩强.C 语言程序设计M.北京:清华大学出版社,2005.4朱战立,张选平.数据结构学习指导与典型题解M.西安:西安交通大学出版社,2002.5张玲,席德春,刘晓杰.C 语言上机实践指导教程M.北京:机械工业出版社,2004.6罗文劼,王苗,石强.数据结构习题解答与实验指导M.北京:中国铁道出版社,2004.7殷人昆,陶永雷,谢若阳等.数据结构M.北京:清华大学出版社,2005.1

27、5信息管理学院 计算机科学与技术数据结构课程设计附录/系统说明:本系统适应于小型停车场,且停车时间在一天之内的短期停放停车场。/在此系统中,车库容量设置为 3,便于测试。在实际使用中可以对容量大小按实际情 况设置。#include#include#include#define MAX 3/停车场最大容量为 3 辆,便于观察#define price 0.02/定义时间结构体 typedef struct timeint hour;int min;Time;/定义车辆信息结构体 typedef struct nodechar num10;Time reach;Time leave;CarNode

28、;typedef struct NODECarNode*stackMAX+1;int top;SeqStackCar;/模拟停车场16信息管理学院 计算机科学与技术数据结构课程设计typedef struct carCarNode*data;struct car*next;QueueNode;typedef struct NodeQueueNode*head;QueueNode*rear;LinkQueueCar;/模拟便道/方法声明void InitStack(SeqStackCar*);/初始化栈 int InitQueue(LinkQueueCar*);/初始化便道int Arrival

29、(SeqStackCar*,LinkQueueCar*);/车辆到达void Leave(SeqStackCar*,SeqStackCar*,LinkQueueCar*);/车辆离开 void PRINT(CarNode*p,int room);/车辆收费void List1(SeqStackCar*S);/显示车场里的车辆情况 void List2(LinkQueueCar*W);/显示便道上的车辆情况 void List(SeqStackCar,LinkQueueCar);/显示信息/void savecar(CarNode*);/保存车辆信息/自定义函数/*void savecar(Ca

30、rNode*p1)/保存车辆信息FILE*fp1;if(fp1=fopen(car1.txt,w)=NULL)printf(nt不能保存车辆信息n);return;17信息管理学院 计算机科学与技术数据结构课程设计while(p1)fwrite(p1,sizeof(struct node),1,fp1);p1=p1-next;*/栈的初始化void InitStack(SeqStackCar*s)int i;s-top=0;for(i=0;istacks-top=NULL;/队列的初始化int InitQueue(LinkQueueCar*Q)Q-head=(QueueNode*)malloc

31、(sizeof(QueueNode);if(Q-head!=NULL)Q-head-next=NULL;Q-rear=Q-head;return(1);elsereturn(-1);/车辆收费void PRINT(CarNode*p,int room)18信息管理学院 计算机科学与技术数据结构课程设计int A1,A2,B1,B2;printf(n请输入车辆离开的时间:(小时:分钟);scanf(%d:%d,&(p-leave.hour),&(p-leave.min);while(p-leave.hourleave.hour23)printf(您的输入有误!);printf(请重新输入离开时间

32、的时(0-23):);scanf(%d,&(p-leave.hour);if(p-leave.minleave.min59)printf(您的输入有误!);printf(请重新输入离开时间的分(0-59):);scanf(%d,&(p-leave.min);printf(n离开车辆的车牌号为:);puts(p-num);printf(n该车到达时间为:%d:%d,p-reach.hour,p-reach.min);printf(n该车离开时间为:%d:%d,p-leave.hour,p-leave.min);A1=p-reach.hour;A2=p-reach.min;B1=p-leave.h

33、our;B2=p-leave.min;printf(n应交费用为:%2.1f 元!,(B1-A1)*60+(B2-A2)*price);free(p);/车辆的到达登记int Arrival(SeqStackCar*Enter,LinkQueueCar*W)/char num10;19信息管理学院 计算机科学与技术数据结构课程设计/int a;CarNode*p;QueueNode*t;p=(CarNode*)malloc(sizeof(CarNode);flushall();/清空缓存输入的作用 printf(n请输入车牌号(例:豫 B1234):);gets(p-num);/*a=Ente

34、r-top;loop:scanf(%s,&num);if(a=0)strcpy(p-num,num);a+;while(a)if(strcmp(num,Enter-stacka-num)=0)printf(您输入的车牌号重复,请重新输入!);goto loop;*/if(Enter-toptop+;printf(n车辆在车场第%d 位置.,Enter-top);printf(n车辆到达时间:);scanf(%d:%d,&(p-reach.hour),&(p-reach.min);while(p-reach.hourreach.hour23)/控制时间格式正确20信息管理学院 计算机科学与技术数

35、据结构课程设计printf(您的输入有误!);printf(请重新输入到达时间的时(0-23):);scanf(%d,&(p-reach.hour);while(p-reach.minreach.min59)/控制分钟输入正确printf(您的输入有误!);printf(请重新输入到达时间的分(0-59):);scanf(%d,&(p-reach.min);Enter-stackEnter-top=p;printf(n恭喜您登记成功!);/savecar(?);printf(n);return(1);else/车场已满,车进便道printf(n您好,停车场车位已满,请该车在便道上等待!有空余车

36、位时才能 进入停车场!/n);t=(QueueNode*)malloc(sizeof(QueueNode);t-data=p;t-next=NULL;W-rear-next=t;W-rear=t;return(1);/车辆的离开void Leave(SeqStackCar*Enter,SeqStackCar*Temp,LinkQueueCar*W)21信息管理学院 计算机科学与技术数据结构课程设计int room;CarNode*p,*t;QueueNode*q;if(Enter-top0)/判断停车场是否为空while(1)/输入离开车辆的信息printf(n请输入车在车场的位置/1-%d/

37、:,Enter-top);scanf(%d,&room);if(room=1&roomtop)break;elseprintf(n您的输入有误,请重新输入:);while(Enter-toproom)/把要离开车辆前面的车开出来,进临时栈。Temp-top+;/临时通道的栈顶指针Temp-stackTemp-top=Enter-stackEnter-top;Enter-stackEnter-top=NULL;Enter-top-;p=Enter-stackEnter-top;/把要删除的车辆节点赋给 p。Enter-stackEnter-top=NULL;Enter-top-;while(Te

38、mp-top=1)/判断临时通道上是否有车。Enter-top+;Enter-stackEnter-top=Temp-stackTemp-top;Temp-stackTemp-top=NULL;Temp-top-;22信息管理学院 计算机科学与技术数据结构课程设计PRINT(p,room);/调用计费函数计费。if(W-head!=W-rear)&Enter-tophead-next;t=q-data;Enter-top+;printf(n 便 道 上 的%s号 车 进 入 停 车 场 内 第%d位 置.,t-num,Enter-top);printf(n请输入%s 号车进入停车场的时间:,t

39、-num);scanf(%d:%d,&(t-reach.hour),&(t-reach.min);while(t-reach.hourreach.hour23)/控制时间格式正确printf(您的输入有误!);printf(请重新输入到达时间的时(0-23):);scanf(%d,&(t-reach.hour);while(t-reach.minreach.min59)/控制分钟输入正确printf(您的输入有误!);printf(请重新输入到达时间的分(0-59):);scanf(%d,&(t-reach.min);W-head-next=q-next;if(q=W-rear)W-rear=

40、W-head;Enter-stackEnter-top=t;printf(n恭喜您登记成功!);free(q);23信息管理学院 计算机科学与技术数据结构课程设计elseprintf(n您好,便道上没有车!n);printf(n);elseprintf(n您好,停车场内没有车!);printf(n);/显示停车场里的车辆情况 void List1(SeqStackCar*S)int i;printf(t您请求的查看停车场内停车情况为:);if(S-top0)/判断停车场内是否有车for(i=1;itop;i+)间:%d:%dprintf(nt车位位置:%d,i);printf(nt到达时 ,S

41、-stacki-reach.hour,S-stacki-reach.min);printf(nt车牌号:%sn,S-stacki-num);elseprintf(n您好,停车场内没有车!无法进行车辆离开登记操作!n);printf(n);/显示便道上的车辆情况void List2(LinkQueueCar*W)24信息管理学院 计算机科学与技术数据结构课程设计QueueNode*p;int i;printf(您所请求的查看便道上停车的情况为:);p=W-head-next;if(W-head!=W-rear)/判断便道上是否有车printf(n等待车辆的车牌号码为:);for(i=1;p!=N

42、ULL;i+)printf(n第%d 车辆.,i);puts(p-data-num);p=p-next;elseprintf(n您好,便道上没有车!);printf(n);/列表界面void List(SeqStackCar S,LinkQueueCar W)int flag,tag;flag=1;while(flag)/列表显示循环控制printf(nt=欢迎使用停车场系统=n);printf(nt查看车辆列表显示);printf(nt|*|n);printf(nt|1.停车场列表|n);25信息管理学院 计算机科学与技术数据结构课程设计printf(nt|2.便道列表|n);printf(

43、nt|3.返回主菜单|n);printf(nt|*|n);printf(nt=欢迎使用停车场系统=n);printf(n请选择您所需要的服务(13):);while(1)scanf(%d,&tag);if(tag=1&tag=1&ch=4)27信息管理学院 计算机科学与技术数据结构课程设计break;elseprintf(n 您的输入有误!请您重新选择(14):);scanf(%d,&ch);switch(ch)case 1:Arrival(&Enter,&Wait);break;/车辆到达 case 2:Leave(&Enter,&Temp,&Wait);break;/车辆离开 case 3:List(Enter,Wait);break;/列表显示车辆信息 case 4:exit(0);/退出主程序default:break;28

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922