


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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附录16word范文停车场管理系统1实习目的通过本次课程设计,了解并初步掌握设计、实现系统的完整过程,包括系统分析、 编码设计、以及调试分析,
2、熟练掌握数据结构的选择、设计、实现以及操作方法,为进 一步的应用开发打好基础。2问题描述停车场是一条可以停放n辆车的狭窄通道,且只有一个大门。汽车停放安到达时间 的先后依次由北向南排列(大门在最南端,最先到达的第一辆车停在最北端)若停车场 已经停满n辆车,后来的汽车在便道上等候,一旦有车开走,排在便道上的第一辆车可 以开入;当停车场的某辆车要离开时,停在他后面的车要先后退为他让路,等它开出后 其他车在按照原次序开入车场,每两停在车场的车要安时间长短缴费。3需求分析停车场是一条可以停放n辆车的狭窄通道,且只有一个大门。汽车停放按到达时间 的先后排列。若停车场已经停满n辆车,后来的汽车在便道上等候
3、。一旦有车开走,排 在便道上的第一辆车可以开入;当停车场的某辆车要离开时,停在他后面的车要先后退 为他让路。等它开出后,其他车再按照原次序开入车场,每辆停在车场的车要按时间长 短缴费。3.1设计基本要求(1) 以栈模拟停车场,以队列模拟车场外的便道,按照从终端输入的数据序列进行 模拟管理。每一组数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码、 以及到达或离去的时刻。对每一组数据进行操作后的信息为:若是车辆到达,则输出汽 车在停车场的内或便道上的位置:若是车辆离去则输出汽车在停车场内的停留时间和应 缴纳的费用(在便道上的停留时间不收费)。栈以顺序结构实现,队列以链表结构实现(2)
4、友好性:界面要友好,输入有提示,尽量展示人性化。(3) 可读性:源程序代码清晰、有层次,必要时给出注释。(4) 健壮性:用户输入非法数据时,系统要及时给出警告信息。(5) 测试数据:要求使用全部合法数据、整体非法数据、局部非法数据进行程序测 试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明。3.2停车场管理系统的主要功能(1) 根据车辆到达停车场到车辆离开停车场时所停留的时间进行计时收费。(2) 该程序设计能够通过车牌号查到该车辆在停车场或便道中的位置。(3) 当有车辆从停车场离开时,等待的车辆按顺序进入停车场停放。实现停车场的 调度功能。该程序设计可以完整的模拟停车场的管理过程。
5、4概要设计4.1数据库设计(1) 栈的抽象数据类型定义AST Stack数据对象:D=ai|ai ElemSet,i=1,2,.,n, n> 0数据关系:R1=<ai-1,ai>|ai-1,ai D, i=2,.,n约定an端为栈顶,a1端为栈底。基本操作:In itStack(&S)操作结果:构造一个空栈SoDestroyStack(&S)初始条件:栈S已存在。操作结果:栈S被销毁。ClearStack(&S)初始条件:栈S已存在。操作结果:将栈S清为空栈。tackEmpty(S)初始条件:栈S已存在。操作结果:若栈S为空栈,则返回TRUE否则FAL
6、SEStackLe ngth(s)初始条件:栈S已存在。操作结果:返回S的元素个数,既栈的长度。GetTop(S,&e)初始条件:栈S已存在且非空。操作结果:用e返回S的栈顶元素。Push(&S,e)初始条件:栈S已存在。操作结果:插入元素e为新的栈顶元素。Pop(&S,&e)初始条件:栈S已存在且非空。操作结果:删除S的栈顶元素,并用e返回其值。StackTraverse(S,visit()初始条件:栈S已存在且非空。操作结果:从栈底到栈顶依次对 S的每个数据元素调用函数 visit()。一旦visit() 失 word范文败,则操作失效。ADT Stack(
7、2) 队列的抽象数据类型定义ADT Queue数据对象:D=ai|ai ElemSet,i=1,2,.,n,n>0数据关系:R1=<ai-1,ai>|ai-1,ai D,i=2,.,n约定其中al端为队列头,an为队列尾。基本操作:Ini tQueue(&Q)操作结果:构造一个空队列QDestroyQueue(&Q)初始条件:队列Q已存在。操作结果:队列Q被销毁,不再存在。ClearQueue(&Q)初始条件:队列Q已存在。操作结果:将Q清为空队列。QueueEmpty(Q)初始条件:队列Q已存在。操作结果:若Q为空队列,则返回TRUE否则FALSEQ
8、ueueLe ngth(Q)初始条件:队列Q已存在。操作结果:返回Q的元素个数,即队列的长度。GetHead(Q,&e)初始条件:Q为非空队列。操作结果:用e返回的队头元素。En Queue(&Q,e)初始条件:队列Q已存在。操作结果:插入元素e为Q的新的队尾元素。DeQueue(&Q,&e)初始条件:Q为非空队列。操作结果:删除Q的队头元素,并用e返回其值。QueueTraverse(Q,visit()初始条件:Q已存在且非空。操作结果:从队头到队尾,依次对Q的每个数据元素调用函数 visit()。一旦visit()失败,则操作失败。ADT Queue4.2函
9、数及功能要求(1)此停车场管理系统,主要分为以下若干模块:首先定义用来模拟停车场的堆栈以及用来模拟通道的链队列为全局变量,然后编写 主函数,在此主函数中实现对其它各个模块的调用。在主函数中首先调用option()函数, 出现欢迎用户使用的主界面,然后提示用户进入此停车场管理系统后,再出现一个供用 户选择的界面,在用户的选择过程中,程序又分别调用车辆的到达、车辆的离开、停车 场内停放车辆的信息以及退出程序这四个函数模块。其中,在车辆的离开那个模块函数 中又调用了打印离开车辆信息的函数,在停车场内停放车辆信息的那个模块函数中,又 分别调用了显示停车场上车辆信息的函数以及显示便道上车辆信息的函数。最
10、后,从调用的这四个函数中回到主函数结束整个程序的运行。(2)在以上各个模块中,出现的调用的函数为:void In itStack(SeqStackCar *s);int Ini tQueue(Li nkQueueCar *Q);optio n();int Arrival(SeqStackCar *En ter,Li nkQueueCar *W);void Leave(SeqStackCar *En ter,SeqStackCar *Temp,L in kQueueCar *W);void PRINT(CarNode *p);void List(SeqStackCar S,Li nkQueueC
11、ar W);void List1(SeqStackCar *S);void List2(L in kQueueCar *W);5详细设计5.1数据结构的设计程序中使用了一个类,五个结构体,两个栈(模拟停车场,其中一个为临时栈) 个队列(模拟便道)。(1) 车辆信息的表示车辆可看成是一个节点,设计成一个结构体,车辆信息包括:车牌号码,车辆的进 站时间和离开停车场的时间,定义如下:typedef struct no dechar num10; /车牌号码Time reach; / 到站时间Time leave; / 离开时间CarNode;(2) 时间、栈和队列的定义时间是由小时和分钟表示的,有两
12、部分数据,设计两个变量分别存储小时和分钟, 定义如下:typedef struct timeint hour;int min;Time;停车场内用栈表示:typedef struct NODECarNode *stackMAX+1; /栈用顺序表示int top;SeqStackCar;SeqStackCar En ter,Temp; In itStack(&Temp)在车辆离开时,应用temp临时栈把将要离开的车辆后续车辆压入,等车辆离开后压回原栈stack。便道上的车辆表示:typedef struct car CarNode *data; /便道上的车用链表表示struct ca
13、r *n ext;QueueNode;typedef struct NodeQueueNode *head;设置头指针、尾指针QueueNode *rear;Lin kQueueCar;5.2算法的设计思想及流程图5.2.1主要函数的功能说明(1) void InitStack(SeqStackCar *);/ 车辆节点进栈。即当栈未满时,就把到达 的车辆进栈。(2) int InitQueue(LinkQueueCar *);/ 车辆节点进队列。即当栈已满时,车辆就 进入便道上的队列中(3) int Arrival(SeqStackCar*,LinkQueueCar *);/ 车辆到达登记。
14、即车辆到达 时,先登记车辆车牌号码。然后再判断停车场有没有停满,没停满就进栈,停满了就停在便道上,即进队列。(4) void Leave(SeqStackCar *,SeqStackCar *,LinkQueueCar *);/车辆离开处 理。即通过输入离开车辆的位置处理,然后调用 PRINT(CarNode *p,i nt room);函数进 行收费。然后再判断便道上有没有车,如果有,就把便道上的车进停车场内。(5) void List(SeqStackCar,L in kQueueCar);/显示车场内和便道上的车辆情况。 利用switch();函数选择显示车场内或是便道上的车辆情况,包括
15、对下面两个子函数的调用:void List1(SeqStackCar *S);void List2(LinkQueueCar *W);分别用来显示车场和便道上的车辆情况(6) void PRINT(CarNode*p,int room);/车辆离开时的收费。即这个函数由车辆 离开的函数调用,以分钟计时算费,但只能计算当天之内的费用,如果第二天的话会导 致计费为负或减少。即只能当天停,当天开走。5.2.2停车场管理系统流程图经过对车辆的进出分析以及对该系统的详细设计,绘制停车场管理系统流程图图1停车场管理系统流程图523主要模块算法描述本程序最主要的算法就是车辆到达登记的和车辆离开时的登记 车辆
16、到达:int Arrival(SeqStackCar *Enter,LinkQueueCar *W)/首先定义一个栈和队列的结构体指针为:*p , *t。然后申请一个车辆信息的内存空间,并把它赋给栈指针。车辆到达时就输入车牌号,并通过if(Enter->top<MAX)来判断该车是进车 场内还是进便道上,如果是进车场内就把top加1,显示 在车场内的位置,还要输入进车场的时间,然后把该节点进栈。如果是else就显示该车要停在便道上,并进行进队列的操作。(2) 车辆离开:void Leave(SeqStackCar *Enter,SeqStackCar *Temp,LinkQueue
17、Car *W)/定义一个整型变量room记录要离开车辆的位置,定义两个栈指针和一个队列指 针,用个if(Enter->top>0)确保栈不空,然后用个 while确保输入的车辆离开位置的合法性。如果不合法,显示输入有误,要重新输入。通过while(E nter->top>room)判断离开车辆的位置,如果是中间位置,就要再用一个临时栈放置前面临时开出来的车, 等要开出的车开出后,再把临时栈内的车开进停车场内,并调用PRINT(p,room);这个函 数计算显示费用。然后还要用if(W->head!=W->rear)&&En ter->t
18、op<MAX)语句判断便道上有没有车,如果有车就要显示进停车场的车的车牌号,并登记进入时间。并要进行 相应的出队列和进栈操作。6测试分析6.1测试用例说明:测试用例要合理并且足够,既要有正确用例,也要有错误用例,同时检验程 序的正确性和强壮性。6.1.1第一组测试用例(1) 测试输入:停车场的车辆离开,如表 1所示:表1:车辆离开测试服务选择车牌号/车位到达/离开时间1京 A121212:121津 S121212:131鲁 D121212:142114:122125: 65 (错误)(2) 测试目的:测试离开方法时间格式控制以及费用计算是否正确。(3) 正确输出:第一次离开的是京 A12
19、12,应交费2.4元。第二次时,当在输入65 时,应该提示输入错误,重输。(4) 实际输出:说明脸旻费用药欢迎使用停车场系统六* 餉入时间不要输入非数字请输入车在车场的位置/I3/请输入车辆离开的时间= 小时:分申14:12离开车辆的车牌号为:京图2测试离开方式时间格式及费用计算图word范文欢迎使用停车场系统翳蠶翩加要输W说明请选请输入车在车场的位置理一"1鬆黔曙爵聶舉題雷霍$间抑at 0-23: 址图3测试车辆离开错误图(5) 错误原因:第一个正确,第二个错误,原因是没有对时间格式控制(6) 当前状态:已改正6.1.2第二组测试用例(1) 测试输入:连续5辆车到达,如表2所示:表
20、2:连续5辆车到达测试服务选择车牌号/车位到达时间1京 A121212:121津 S121212:131鲁 D121212:141豫 F121212:151沪 G121212:162114:12(2) 测试目的:测试到达方法与列表显示方法能否正确完成。正确输出:先到达的三辆车先进入停车场,最后到达的两辆在便道等候。(4) 实际输出:表4车辆到达方式测试=*欢迎使用停车场系境*X说明诸您註証确够入时间不要输入非数字?请选择務需貓畛宀请输入车牌号(例:琢班豫F1212您好;、停车场生位比满-请该车在便道上等待侑空余车位时才首滋入停车场I加图5车辆进入提示图(5) 错误原因:没有错误。当前状态:通过
21、。6.1.3第三组测试用例(1)测试输入:接上一步输入离开信息,如表3所示:表3 :接上一步离开信息测试服务选择离开车位离开时间便道车进入时间2114:1214:13(2) 测试目的:测试离开方法功能是否成功以及便道进入车场是否正确。(3) 正确输出:输出1号车位的车辆离开信息清单,便道 1号车进入停车场(4) 实际输出:*=“" *女林迎便用停车场系统衣舍:1-车朋达4(记2-车辆高开豊记i! ! 3-车辆列表显示=退出系统i凸:位3第闾 场的 车场 戻亠十 入停121 2进入2 4!:元号车 * * 4- 2 3? hjhj - 1 £z 2 2 2 间阖:F121 爵
22、醫Fl岂 达开用的稼4: 到离5上人 车圭X道帝 该该应1S请;BMWTWW1就迎使用停车场系统*益谿翳蠶騷勲嘅严叭跻"谓输入车在车场的位置m: 1 超fi入车辆离开的时阖江小时吩钟高开车辆的车牌号为京肮2许图6测试离开方法功能是否成功图(5) 错误原因:没有错误(6) 当前状态:通过6.2测试结果分析经过我们小组一天的调试,我们终于把各模块整合起来了。在这过程中,我们遇到 了很多问题,像数据不匹配、括号不配对、赋值重复等。因为C语言的语法限制不太严 格,对变量的类型约束不严格,对数组下标越界不做检查等原因,所以,我们的修改工 作难度加大。但经过我们这小组共同的努力。此停车管理系统可
23、以基本实现一个小的停 车场的管理,其“到达”与“离开”方法都相对比较完整,费用结算清单直观。在输入 数据时,要按照严格的格式输入,否则有可能出现死去或崩溃。若本系统能加上保存功 能就更好了,因为一个系统在使用过程中总会关机等,而此系统的缺点却是没有保存功 能,关闭之后数据丢失。现受限于各种条件,又因为要求中并未提及,所以本程序暂时 没有加入保存功能。7使用说明(1)运行程序,首先出现主界面。主界面包括四个选项:选项1:车辆到达登记,选择该项可进行车辆到达停车场情况登记;选项 2:车辆离开登记,选择该项可进行车 辆离开停车场情况登记;选项 3:车辆列表显示,选择该项可查看车辆列表显示的所有 信息
24、,包括停车场列表和便道列表的全部信息;选项 4:退出系统,选择该项将退出程 序。=-*欢迎使用停车场系统-车辆到达登记:<2.车納离开登记®3.车辆列表显示!#4.退出系统*迎使用停车场系统*»綁磁辭翩滞神入槪字2图7程序初始界面图(2)车辆列表显示界面包括3个选项:选项1:停车场列表,选择该项可以查看停 车场列表的所有车辆的全部信息;选项 2:便道列表,选择该项可以查看便道列表显示 的全部信息;选项3:返回主菜单,可返回主界面。£*查看车辆列表显示* 丄.停车场列表 欢迎使用停车场系统*请选择您所需要的服务“® ; ? 便道列表左盘去缶茁.遲叵三
25、菜牟 吹出去盘= =*欢迎使用停车场系统 说明;谬爆注意正确够人时间不要输入非数字?谙选择愈崭需要的= = 欧迎使用停车场系统;,="图8车辆列表显示界面图8总结总体来说,这次的课程设计比去年的c语言的课程设计稍难。我这次的课程设计题 目:停车场问题。相比其他课题来说,这个题目还是比较简单的,主要是运用了数据结 构中栈和队列的知识和操作。程序能够实现基本的车辆到达、离开、收费、遍历显示等 主要功能。但我觉得这个程序还有很多小的地方是可以完善的,比如:在计算收费时如果离开时间是到了第二天,这样就会导致收费是负的或减少很多。也就是说,该程序限制于只 能规定当天停,当天开走。至于加算天数的
26、功能我改了几次改不好,又鉴于程序要求中 也没有提及并且时间紧张,所以也就没再去研究实现。只要能实现主要的功能就好了。当然,这次的课程设计、编程实践还是收获颇丰的。通过实习我的收获如下:(1) 我知道了怎样去简化程序,减少他的时间复杂度和空间复杂度。 还知道了怎样去 完善程序,使其更具健壮性。(2) 巩固和加深了对数据结构相关知识的理解,提高综合运用本课程所学知识的能 力。(3) 培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考、深入研究、分析问题、解决问题的能力。(4) 通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法。(5) 通过课程设计,培养了我严肃认真的工作作风,逐
27、步建立正确的生产观念、经济 观念和全局观念。根据我在实习中遇到的问题,我将在以后的学习过程中注意以下几点:(1) 认真上好专业实验课,多在实践中锻炼自己。更让我懂得实践是检验和掌握真理 的最好办法。(2) 写程序的过程中要考虑周到、严密。需求分析需要反复思考修正。(3) 在做课程设计的时候要有信心、有耐心,切勿浮躁。(4) 认真学习课本知识,掌握课本中的知识点,并在此基础上学会灵活运用。(5) 在课余时间里多写程序,熟练掌握在调试程序的过程中所遇到的常见错误,以便 能节省调试程序的时间。总之,本次课程设计不仅加深了我们对栈和队列等数据结构的理解和掌握,同时一定程度上提高了我们程序设计和阅读程序
28、的能力。本次课程设计提高了我们的专业知识, 使自己所学的内容运用到实际中来,也增强了实际操作能力,为以后的工作学习提供了 一个良好的铺垫。参考文献1 严蔚敏,吴伟民数据结构M.北京:清华大学出版社,2004.2 李春葆数据结构解析M.北京:清华大学出版社,2001.3 谭浩强.C语言程序设计M.北京:清华大学出版社,2005.4 朱战立,张选平.数据结构学习指导与典型题解M.西安:西安交通大学出版社,2002. 张玲,席德春,刘晓杰.C语言上机实践指导教程M.北京:机械工业出版社,2004. 罗文劼,王苗,石强.数据结构习题解答与实验指导M.北京:中国铁道出版社,2004.7殷人昆,陶永雷,谢
29、若阳等.数据结构M.北京:清华大学出版社,2005.附录/系统说明:本系统适应于小型停车场,且停车时间在一天之内的短期停放停车场。/在此系统中,车库容量设置为3,便于测试。在实际使用中可以对容量大小按实际情况设置。#i nclude<stdio.h>#in clude<stdlib.h>#i ncludevstri ng.h>#define MAX 3/停车场最大容量为3辆,便于观察#defi ne price 0.02/定义时间结构体typedef struct timeint hour;int min;Time;/定义车辆信息结构体typedef struct
30、 nodechar num10;Time reach;Time leave;CarNode;typedef struct NODECarNode *stackMAX+1;int top;SeqStackCar;模拟停车场typedef struct carCarNode *data;struct car *n ext;QueueNode;typedef struct NodeQueueNode *head;QueueNode *rear;LinkQueueCar;/ 模拟便道/方法声明void In itStack(SeqStackCar *);/初始化栈int Ini tQueue(L in
31、 kQueueCar *);/初始化便道int Arrival(SeqStackCar *,Li nkQueueCar *); /车辆到达void Leave(SeqStackCar *,SeqStackCar *,Li nkQueueCar *);/车辆离开void PRINT(CarNode *p,i nt room);/ 车辆收费void List1(SeqStackCar *S);/显示车场里的车辆情况void List2(L in kQueueCar *W);/显示便道上的车辆情况void List(SeqStackCar,Li nkQueueCar);/显示信息/void save
32、car(CarNode *);/ 保存车辆信息/自定义函数/*void savecar(CarNode *p1)/保存车辆信息FILE *fp1;if(fp 1=fope n("car1.txt","w")=NULL)prin tf("nt不能保存车辆信息 n");return;while(pl)fwrite(p1,sizeof(struct no de),1,fp1); p1=p1- >n ext;*/栈的初始化void In itStack(SeqStackCar *s)int i;s->top=0;for(i=0;i
33、v=MAX;i+)s->stacks->top=NULL;/队列的初始化int Ini tQueue(L in kQueueCar *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,i nt room)int A1,A2,B1,B2;printf("n请输入车辆离开的时间:(小时:
34、分钟门;scan f("%d:%d",&(p->leave.hour),&(p->leave.mi n);while(p->leave.hour<0|p->leave.hour>23)printf("您的输入有误!");printf("请重新输入离开时间的时'(0-23):");scan f("%d",&(p->leave.hour);if(p->leave. minv 0|p->leave. min> 59)printf(
35、"您的输入有误!");printf("请重新输入离开时间的分'(0-59):");sca nf("%d",&(p->leave.mi n);printf("n离开车辆的车牌号为:");puts(p->nu m);printf("n该车到达时间为:%d:%d",p->reach.hour,p->reach.min);printf("n该车离开时间为:%d:%d",p->leave.hour,p->leave.min);A1=p
36、->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 *En ter,Li nkQueueCar *W)/char num10;int a;CarNode *p;QueueNode *t;p=(CarNode *)malloc(sizeof(CarNode);flushall();清空缓存输入的
37、作用printf("n请输入车牌号(例:豫B1234):");gets(p->nu m);/*a=E nter->top;loop:sca nf("%s",&nu m);if(a=0)strcpy(p->num,nu m);a+;while(a)if(strcmp( nu m,E nter->stacka->num )=0)prin tf("您输入的车牌号重复,请重新输入!");goto loop;*/if(En ter->top<MAX)车辆未满,车进车场En ter->top
38、+;printf("n车辆在车场第 d位置.",Enter->top);printf("n车辆到达时间:");sca nf("%d:%d",&( p->reach.hour),&( p->reach. min);while(p->reach.hour<0|p->reach.hour>23) /控制时间格式正确printf("您的输入有误!");printf("请重新输入到达时间的时'(0-23):");sea nf("%
39、d",&(p->reach.hour);while(p->reach.mi n<0|p->reach.mi n>59) /控制分钟输入正确printf("您的输入有误!");printf("请重新输入到达时间的分'(0-59):");sca nf("%d",&(p->reach.mi n);En ter->stackE nter->top=p;printf("n恭喜您登记成功!");savecar(?);prin tf("n
40、");return(1);else/车场已满,车进便道printf("n您好,停车场车位已满,请该车在便道上等待!有空余车位时才能进入停车场!/n");t=(QueueNode *)malloc(sizeof(QueueNode);t->data=p;t->n ext=NULL;W->rear- >n ext=t;W->rear=t;return(1);/车辆的离开void Leave(SeqStackCar *En ter,SeqStackCar *Temp,Li nkQueueCar *W)int room;CarNode *p,
41、*t;QueueNode *q;if(E nter->top>0)判断停车场是否为空while(1) 输入离开车辆的信息printf("n请输入车在车场的位置 /1-%d/ : ",Enter->top);sea nf("%d",&room);if(room>=1 &&roo m<=E nter->top) break;elseprintf("n您的输入有误,请重新输入:");while(E nter->top>room)把要离开车辆前面的车开出来,进临时栈。Te
42、mp->top+;临时通道的栈顶指针Temp->stackTemp->top=E nter->stackE nter->top;En ter->stackE nter->top=NULL;En ter->top-;p=E nter->stackE nter->top;把要删除的车辆节点赋给 p。En ter->stackE nter->top=NULL;En ter->top-;while(Temp->top>=1) 判断临时通道上是否有车。En ter->top+;En ter->stack
43、E nter->top=Temp->stackTemp->top;Temp->stackTemp->top=NULL;Temp->top-;PRINT(p,room); 调用计费函数计费。if(W->head!=W->rear)&&Enter->top<MAX)/停车场未满,如果便道上有车,则再开进停车场q=W->head->n ext;t=q->data;En ter->top+;prin tf("n 便道上的s号车进入停车场内第 %d位置.",t- >nu m,E
44、nter->top);printf("n请输入$号车进入停车场的时间:",t->num);sca nf("%d:%d",&(t->reach.hour),&(t->reach.mi n);while(t->reach.hour<0|t->reach.hour>23) /控制时间格式正确printf("您的输入有误!");printf("请重新输入到达时间的时'(0-23):");sca nf("%d",&(t->
45、;reach.hour);while(t->reach.mi n<0|t->reach.mi n>59) /控制分钟输入正确printf("您的输入有误!");printf("请重新输入到达时间的分'(0-59):");sca nf("%d",&(t->reach.mi n);W->head->n ext=q->n ext;if(q=W->rear)W->rear=W->head;En ter->stackE nter->top=t;prin
46、tf("n恭喜您登记成功!");free(q); elseprintf("n您好,便道上没有车!n");prin tf("n");elseprintf("n 您好,停车场内没有车!");prin tf("n");/显示停车场里的车辆情况void List1(SeqStackCar *S)int i;prin tf("t您请求的查看停车场内停车情况为:");if(S->top>0)判断停车场内是否有车for(i=1;i<=S->top;i+)printf
47、("nt车位位置:%d ",i);%d:%dprin tf("nt到 达 时 间 :",S->stacki->reach.hour,S->stacki->reach.mi n);printf("nt车牌号:%sn",S->stacki->num);elseprintf("n 您好,停车场内没有车!无法进行车辆离开登记操作!n");prin tf("n");/显示便道上的车辆情况void List2(Li nkQueueCar *W)QueueNode *p;int i;printf(”您所请求的查看便道上停车的情况为:");p=W->head->n ext;if(W->head!=W->rear)判断便道上是否有车printf("n等待车辆的车牌号码为:");for(i=1;p!=NULL;i+)prin tf("n第 %d 车辆.",i);puts(p->data->nu m);p=p->n ext ;elseprintf("n您好,便道上没有车!");prin tf(&quo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 花店出入库管理制度
- 茶包装标识管理制度
- 重要接待车管理制度
- 落地式卸料平台施工方案的专家验证
- 课外读物进校园管理实施方案
- 江门市房地产市场调研分析报告(案例)
- 财经英语华为手机
- 视觉感知行业发展历程分析
- 山东省德州市宁津县育新中学等2024-2025学年七年级下学期5月期中考试数学试题(含部分答案)
- 试题【python二级】知识点-题型练习
- 2025年行政能力测验考试真题及答案
- 2024年宁夏中卫沙坡头区招聘社区专职工作者真题
- 2025年江苏省南京市中考物理模拟练习卷(含答案)
- 人教部编版三年级下册语文各单元【习作范文】
- 教师普法考试题及答案
- 水冷空调项目可行性研究报告
- 2025年小产权房的买卖合同5篇
- 清运垃圾污水合同范本
- 夫妻婚内财产财产协议书
- 天耀中华合唱简谱大剧院版
- 戴尔电脑培训课件
评论
0/150
提交评论