停车场管理系统课程设计报告 最终版.docx

上传人:牧羊曲112 文档编号:5034421 上传时间:2023-05-30 格式:DOCX 页数:32 大小:208.03KB
返回 下载 相关 举报
停车场管理系统课程设计报告 最终版.docx_第1页
第1页 / 共32页
停车场管理系统课程设计报告 最终版.docx_第2页
第2页 / 共32页
停车场管理系统课程设计报告 最终版.docx_第3页
第3页 / 共32页
停车场管理系统课程设计报告 最终版.docx_第4页
第4页 / 共32页
停车场管理系统课程设计报告 最终版.docx_第5页
第5页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《停车场管理系统课程设计报告 最终版.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髓入车辆离开的时间=小虾 册中出心藏开车辆的车牌号为=京化场达开用的魂 到高费上

21、入 重X晅输 善应密-P ? 4 2_av- X2 23 UmifiA 2 4兀号车第间 场的图6测试离开方法功能是否成功图(5 )错误原因:没有错误。(6)当前状态:通过6.2测试结果分析经过我们小组一天的调试,我们终于把各模块整合起来了。在这过程中,我们遇到 了很多问题,像数据不匹配、括号不配对、赋值重复等。因为C语言的语法限制不太严 格,对变量的类型约束不严格,对数组下标越界不做检查等原因,所以,我们的修改工 作难度加大。但经过我们这小组共同的努力。此停车管理系统可以基本实现一个小的停 车场的管理,其“到达”与“离开”方法都相对比较完整,费用结算清单直观。在输入 数据时,要按照严格的格式

22、输入,否则有可能出现死去或崩溃。若本系统能加上保存功 能就更好了,因为一个系统在使用过程中总会关机等,而此系统的缺点却是没有保存功 能,关闭之后数据丢失。现受限于各种条件,又因为要求中并未提及,所以本程序暂时 没有加入保存功能。7使用说明(1)运行程序,首先出现主界面。主界面包括四个选项:选项1:车辆到达登记, 选择该项可进行车辆到达停车场情况登记;选项2:车辆离开登记,选择该项可进行车 辆离开停车场情况登记;选项3:车辆列表显示,选择该项可查看车辆列表显示的所有 信息,包括停车场列表和便道列表的全部信息;选项4:退出系统,选择该项将退出程 序。=欢迎使用停车场系统=“=i 1-车辆到达登记;

23、3车辆离开登记1 会3,车辆?U表显示i 女 退出系统欢迎使用停车场系统“说明:宣簟注意正确融入时间,不要输入非数字?请选择醐需要的服图7程序初始界面图(2)车辆列表显示界面包括3个选项:选项1:停车场列表,选择该项可以查看停 车场列表的所有车辆的全部信息;选项2:便道列表,选择该项可以查看便道列表显示 的全部信息;选项3:返回主菜单,可返回主界面。=金双迎使用停车场系统=瞄麟御瓣理不要输入非数对=*欢迎使用停车场系统夫=查看车辆列表显示)会 】停车场列表会 2.便道列表) 口日返回主菜单 【=蕊迎使用停车场系统夫=请选择您所需要的服务1-3:图8车辆列表显示界面图8总结总体来说,这次的课程设

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

25、我知道了怎样去简化程序,减少他的时间复杂度和空间复杂度。还知道了怎样去 完善程序,使其更具健壮性。(2) 巩固和加深了对数据结构相关知识的理解,提高综合运用本课程所学知识的能 力。培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考、深入研究、 分析问题、解决问题的能力。(4) 通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法。(5) 通过课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济 观念和全局观念。根据我在实习中遇到的问题,我将在以后的学习过程中注意以下几点:(1) 认真上好专业实验课,多在实践中锻炼自己。更让我懂得实践是检验和掌握真理 的最好办法。(

26、2) 写程序的过程中要考虑周到、严密。需求分析需要反复思考修正。(3) 在做课程设计的时候要有信心、有耐心,切勿浮躁。(4) 认真学习课本知识,掌握课本中的知识点,并在此基础上学会灵活运用。(5) 在课余时间里多写程序,熟练掌握在调试程序的过程中所遇到的常见错误,以便 能节省调试程序的时间。总之,本次课程设计不仅加深了我们对栈和队列等数据结构的理解和掌握,同时一定 程度上提高了我们程序设计和阅读程序的能力。本次课程设计提高了我们的专业知识, 使自己所学的内容运用到实际中来,也增强了实际操作能力,为以后的工作学习提供了 一个良好的铺垫。参考文献1 严蔚敏,吴伟民.数据结构M.北京:清华大学出版社

27、,2004.2 李春葆.数据结构解析M.北京:清华大学出版社,2001.3 谭浩强.C语言程序设计M.北京:清华大学出版社,2005.4 朱战立,张选平.数据结构学习指导与典型题解M.西安:西安交通大学出版社,2002.5 张玲,席德春,刘晓杰.C语言上机实践指导教程M.北京:机械工业出版社,2004.6 罗文劼,王苗,石强.数据结构习题解答与实验指导M.北京:中国铁道出版社,2004.7 殷人昆,陶永雷,谢若阳等.数据结构M.北京:清华大学出版社,2005.附录系统说明:本系统适应于小型停车场,且停车时间在一天之内的短期停放停车场。在此系统中,车库容量设置为3,便于测试。在实际使用中可以对容

28、量大小按实际情 况设置。#include#include#include#define MAX 3停车场最大容量为3辆,便于观察#define price 0.02定义时间结构体typedef struct time(int hour;int min;Time;/定义车辆信息结构体typedef struct node(char num10;Time reach;Time leave;CarNode;typedef struct NODE(CarNode *stackMAX+1;int top;SeqStackCar;/模拟停车场typedef struct car(CarNode *data

29、;struct car *next;QueueNode;typedef struct Node(QueueNode *head;QueueNode *rear;LinkQueueCar;/模拟便道方法声明void InitStack(SeqStackCar *);/初始化栈int InitQueue(LinkQueueCar *);/初始化便道int Arrival(SeqStackCar *,LinkQueueCar *); /车辆到达void Leave(SeqStackCar *,SeqStackCar *,LinkQueueCar *);/车辆离开void PRINT(CarNode

30、*p,int room);/车辆收费void List1(SeqStackCar *S);/显示车场里的车辆情况void List2(LinkQueueCar *W);/显示便道上的车辆情况void List(SeqStackCar,LinkQueueCar);/显示信息/void savecar(CarNode *);/保存车辆信息自定义函数/*void savecar(CarNode *p1)/保存车辆信息(FILE *fp1;if(fp1=fopen(car1.txt,w)=NULL)(printf(nt不能保存车辆信息n); return;while(pl)(fwrite(p1,siz

31、eof(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(sizeof(QueueNode);if(Q-head!二NULL)(Q-head-next=NULL;Q-rear=Q-head;return(1);elsereturn(-1);车辆收费void PRINT(CarNode *p,int ro

32、om)(int A1,A2,B1,B2;printf(n请输入车辆离开的时间:(小时:分钟);scanf(d:%d,&(p-leave.hour),&(p-leave.min);while(p-leave.hourleave.hour23)(printf(您的输入有误!);printf(”请重新输入离开时间的时(0-23):);scanf(d,&(p-leave.hour);if(p-leave.minleave.min59)(printf(您的输入有误!);printf(”请重新输入离开时间的分(0-59):);scanf(%d”,&(p-leave.min);printf(n 离开车辆的车

33、牌号为:);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.hour;B2=p-leave.min;printf(n应交费用为:%2.1f 元! ,(B1-A1)*60+(B2-A2)*price);free(p);车辆的到达登记int Arrival(SeqStackCar *Enter,LinkQueueCar *W)(/char num

34、10;/int a;CarNode *p;QueueNode *t;p=(CarNode *)malloc(sizeof(CarNode);flushall();/清空缓存输入的作用printf(n请输入车牌号(例:豫B1234):);gets(p-num);/*a=Enter-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车

35、辆在车场第d 位置.,Enter-top);printf(n车辆到达时间:);scanf(d:%d,&(p-reach.hour),&(p-reach.min);while(p-reach.hourreach.hour23) 控制时间格式正确(printf(您的输入有误!);printf(”请重新输入到达时间的时(0-23):);scanf(d,&(p-reach.hour);while(p-reach.minreach.min59) /控制分钟输入正确(printf(您的输入有误!);printf(”请重新输入到达时间的分(0-59):);scanf(%d”,&(p-reach.min);E

36、nter-stackEnter-top=p;printf(n 恭喜您登记成功!);/savecar(?);printf(n);return(1);else/车场已满,车进便道(printf(侦您好,停车场车位已满,请该车在便道上等待!有空余车位时才能 进入停车场!/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)

37、int room;CarNode *p,*t;QueueNode *q;if(Enter-top0)/判断停车场是否为空(while(1)/输入离开车辆的信息(printf(n请输入车在车场的位置/1-%d/:”,Enter-top);scanf(d,&room);if(room=1&roomtop) break;elseprintf(n 您的输入有误,请重新输入:);while(Enter-toproom)/把要离开车辆前面的车开出来,进临时栈。(Temp-top+;/临时通道的栈顶指针Temp-stackTemp-top=Enter-stackEnter-top;Enter-stackEn

38、ter-top=NULL;Enter-top-;p=Enter-stackEnter-top;/把要删除的车辆节点赋给p。Enter-stackEnter-top=NULL;Enter-top-;while(Temp-top=1)/判断临时通道上是否有车。(Enter-top+;Enter-stackEnter-top=Temp-stackTemp-top;Temp-stackTemp-top=NULL;Temp-top-;PRINT(p,room);/调用计费函数计费。if(W-head!二W-rear)&Enter-tophead-next;t=q-data;Enter-top+;prin

39、tf(n 便道上的s号车进入停车场内第d位 置.,t-num,Enter-top);printf(n请输入%,号车进入停车场的时间:,t-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(”请重新输入到达时间

40、的分(0-59):);scanf(%d”,&(t-reach.min);W-head-next=q-next;if(q=W-rear)W-rear=W-head;Enter-stackEnter-top=t;printf(n 恭喜您登记成功!); free(q);elseprintf(n 您好,便道上没有车!n);printf(n);elseprintf(n 您好,停车场内没有车!”);printf(n);显示停车场里的车辆情况void List1(SeqStackCar *S)(int i;printf(t您请求的查看停车场内停车情况为:);if(S-top0)/判断停车场内是否有车(for

41、(i=1;itop;i+)(printf(nt 车位位置:%d ,i);printf(nt 到 达 时 间 :%d:%d,S-stacki-reach.hour,S-stacki-reach.min);printf(nt 车牌号:%sn,S-stacki-num);elseprintf(n 您好,停车场内没有车!无法进行车辆离开登记操作!n); printf(n);/显示便道上的车辆情况void List2(LinkQueueCar *W)QueueNode *p;int i;printf(您所请求的查看便道上停车的情况为:);p=W-head-next;if(W-head!=W-rear)/判断便道上是否有车(printf(n 等待车辆的车牌号码为:);for(i=1;p!=NULL;i+)(printf(n第 %d 车辆.,i

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号