1、数据结构停车场模拟管理程序的设计与实现停车场模拟管理程序的设计与实现一、简介设计停车场模拟管理程序,要求实现4个大的功能模块1.程序功能介绍和操作提示2.汽车进入停车位的管理模块3.汽车离开停车位的管理模块查看停车厂停车状态的的查询模块二、数据结构的设计:(1)停车场停放收费是按照时间来计算,首先要定义一个时间的结构体,并定义出一个最短时间。typedef struct time int hour; int min;Time;(2)为了便于区分每辆汽车并了解每辆车当前所处的位置,需要记录汽车的牌照号码,停放地址和到达时间。typedef struct car int num; int posi
2、tion; Time t; double money;Car;(3)创建栈来构建停车场。typedef struct Car elemN+1; int top;Stack;(4)创建队列来构建便道,方便汽车出入。typedef struct Node Car data; struct Node *next;QueueNode;(5)当停车场的停车位上都已停满了汽车,又有新的汽车到来时要把它调度到便道上,便道上的车辆要按照进入便道的先后顺序顺次序放在便道上。当有车从停车位上离开后,便道上的第一辆汽车就立即进入停车位上的某个车位。typedef struct QueueNode *front; Q
3、ueueNode *rear;LinkQueue; 三、功能(函数)设计: 本程序从总体上分为四个功能模块,分别为: (1)程序功能介绍,和操作提示模块 (2)汽车进入停车位的管理模块 (3)汽车离开停车位的管理模块 (4)查看停车场状态的查询模块 函数功能:(1)进入停车位函数:输入1后进入“进入停车场”函数,然后输入车牌号、到达时间。然后程序自动提示停放位置,若车位已满,程序将提示“车库已满,请稍等!”。(2)进入离开停车场函数:输入2后进入“离开停车场”函数,然后车牌号、离开时间。若有此车牌号的车,程序自动显示要收取的费用,如果停车时间没超过最小时间,将提示“未使用车位,不收费”。若没有
4、此车牌号的车,程序将显示“没有这车”。序将显示整个停车场情况,有车显示车的数据,无车显示“无车”。四、界面设计:(1)用“*”和“n”(回车)来构出上下界。(2)在界内显示出程序功能介绍,和操作提示,用1234的序号区分。(3)用“t”(空格)对齐。五、程序设计:(1)void InitQueue 函数:便道初始化程序,使malloc返回的指针转化为指向QueueNode类型数据的指针。(2)int EnterQueu函数:给便道申请空间。(3)void InitStack函数:确保堆栈为空。(4)void Push函数:便道中的车入库。(5)int IsEmpty函数:判断车库是否为空。(6
5、)int IsFull函数:判断车库是否为满。(7)int GetTop函数:车离开车库。(8)int DeleteQueue函数:将便道中的车放入车库。(9)void In函数:汽车进入停车位的管理模块 。(10)void Money函数:计算停车花费。(11)void Out函数:汽车离开停车位的管理模块。(12)void print1函数:查看停车场状态的查询模块。 (13)void print2函数:查看通道状况。(14)void print函数:界面输出。函数的调用关系图 主函数流程图“到达函数”流程图“离开函数”程序图“显示函数”流程图描述编写代码期间遇到的问题及其解决办法。(1)
6、Declaration missing 经常漏“;”号,和打出中文标点符号。在编译后发现错误,一一改正。(2)访问结构体时,拼错结构体中的定义。(3)Call of non-function 调用未定义函数。由于不正确的函数声明或函数名拼错造成的。更改函数名正常。(4)Compound statement missing复合语句漏掉了大括号“”。补上后正常。(5)还有各种小错误。六、运行与测试:1、测试的数据及其结果:1)连续有7辆汽车到来,牌照号分别为001、002、003、004、005、006、007,前5辆车应该进入停车位15车位,第6、7辆车应停入便道的1、2位置上。 (2)上面(1
7、)中的情况发生后,让牌照003的汽车从停车场开走,应显示005、004的让路动作和006从便道到停车位的动作。 (3)随时检查停车位和便道的状态,不应该出现有空位而便道上还有车的情况。 (4)其它正常操作的一般情况。2、运行与测试期间遇到的问题及其解决办法。(1)问题1:输入一样的牌照号,程序不提示错误。解决:增加个输出错误的程序。(2)问题2:车辆离开后,便道中的车不入车位。 解决:队列的指针指向栈。(3)问题3:程序陷入死循环。 解决:while(1)的使用出错,更改位置。七、设计后的思考:通过本次课程设计,谈谈对数据结构课程设计的体会。初次进行数据结构课程设计,我深刻感受到了程序在实际生
8、活中的应用,各种函数分工明确,在主函数的调用下,有条不紊的运行着,就像人在社会中,每个人的有自己的职业一样。函数也是这样的。不得不说,课程设计是一项工作量大,繁琐枯燥,并且要求思维要高度集中的事,在最初的时候,我也是特别厌倦,不想打代码,看见代码就烦,但是经过这一星期的程序设计在这次程序设计课中,我突然发现写程序还挺有意思的。每当程序完美运行的时候,就感觉干成了一件大事,并且受益匪浅。讲道理,其实上学期的C语言加上本学期的数据结构,我其实都算不上真正的懂,还是处于懵懂的状态,老师讲的知识点也是听的马马虎虎,对程序的理解也是只言片语。但是经过这一星期的程序设计,我发现一个程序设计就是算法与数据结构的结合体,自己也开始对程序产生了前所未有的兴趣,其实想要在程序上有所突破,就是要多写代码,多多练习,在练习中才会发现自己的弱点和对知识点的不了解之处。真正坐下来,用心去处理程序,就会发现其实这些字母、符号并不是死的,他们是有生命力的,一个程序设计就像造物主在创造生命,每一个函数就像一个器官,每一个字符就像一个细胞。归根结底,还是一个练字,熟能生巧,我准备在接下来的暑假里,多做几次类似的程序设计,增强自己的能力。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1