龙源期刊网的智能停车场管理系统的开发与研究作者:崔旭冉刘娅迪来源:《现代信息科技》2018年第11期摘要:基于Java语言的智能停车场管理系统的研究和开发是在现代高速信息时代的背景下,为使人类交通出行更加便捷高效,利用以Java语言为基础的数据结构中的堆栈、队列作为主要内容而开发。根据数据结构中堆栈、队列的特殊性质,分别模拟该智能停车场系统中的停车场、临时停车场和等候便道,以期实现车辆从进入至离开停车场的整个过程的自动导航、计时收费、查询历史记录等管理系统的多功能一体化。该系统的成功开发,不仅可以惠及百姓生活,同时在刑侦方面有显著意义,是大数据和物联网时代的新兴产品。关键词:数据结构;Java语言;系统开发;软件设计中图分类号:TP391.41;TP311.52文献标识码:A文章编号:2096-4706(2018)11-0069-03DevelopmentandResearchofIntelligentParkingManagementSystemBasedonJavaCUIXuran1,LIUYadi2(1.DepartmentofElectricalEngineeringandInformationTechnology,ShandongUniversityofScienceandTechnology,Jinan250000,China;2.FinanceDepartment,ShandongUniversityofScienceandTechnology,Jinan250000,China)Abstract:TheresearchanddevelopmentofintelligentparkingmanagementsystembasedonJavalanguageisunderthebackgroundofmodernhigh-speedinformationage.Inordertomakehumantravelmoreconvenientandefficient,thestackandqueueinthedatastructurebasedonJavalanguageareusedasthemaincontent.Throughthespecialcharacteristicsofstackandqueueinthedatastructure,theparkinglot,temporaryparkinglotandwaitingrampintheintelligentparkingsystemaresimulatedrespectively,soastorealizethemulti-functionalintegratedmanagementsystemofautomaticparkingnavigation,time-charging,queryinghistoryrecordsandsoon.Thesuccessfuldevelopmentofthissystemcannotonlybenefitthepeople’slives,butalsohaveasignificantsignificanceincriminalinvestigation.Itisanewproductintheeraofbigdataandinternetofthings.Keywords:datastructure;javalanguage;systemdevelopment;softwaredesign龙源期刊网问题提出我国的智能停车场管理系统行业起步较晚,最早追溯到上个世纪八十年代初期,并且其目前的整体实力还与国外发达国家存在着一定的差距,但不能因此就忽视其中国巨大的市场发展潜力[1]。从实际问题出发,假设有一个可以停放n辆汽车的狭长停车场,且只有一个大门可供车辆进出。车辆按到达该停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车停放在停车场的最里面)如果停车场已停满n辆车,则后面到来的车辆只能在停车场门外的便道上等待,一旦停车场内有车辆开走,则安排等候便道上的第一辆车进入停车场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短缴纳相应费用。如果停留在便道上的车辆未进入停车场,则允许其离去,且不收取停车费用,其余车辆仍然保持在便道上等待的车辆的次序。同时,自车辆进入停车场开始,进行历史记录的保存,方便对当前或是已离去车辆的状态进行查询[2]。目前国内一些规模较大的物业公司下属有多个子公司,为保证能够对各个子公司物业项目中的停车收费进行统一管理,故需要一个能够联网的数字化管理系统。在此应用背景的趋势下,开发停车场联网管理系统,使车辆智能统一管理成为可能[3]。2研究内容本系统的开发需运用Java语言进行程序设计,系统开发的主要问题在于如何模拟车辆排队等候、进入、驶出停车场的过程,同时要求系统具有查询每辆车到达后的具体停车位置(停车场或便道上)以及某辆车离开停车场应缴纳的费用和其在停车场内停留的时间的功能。该系统成功开发的标志是通过用户输入车辆信息或指示词实现系统的启动使用。汽车的模拟输入信息格式可以是汽车牌照号码,通过选择不同功能,得到不同的提示与反馈信息。例如,停入停车场为“H1停放在停车场第一个位置”;离开停车场为“H1停放1.0小时,费用为5.00元”;历史查询功能显示当前车辆状态及进入或驶出时刻。3系统设计3.1设计思想运用信息管理与信息系统所学专业知识,结合基于Java语言的数据结构,可以设计两个堆栈,其中一个用来模拟停车场,另一个模拟临时停车场,该临时停车场用来存放当有车辆离开时,原来停车场内为其让路的车辆。当停车场无空闲位置时,临时停放车辆的便道可以用一个链队列来实现,当车辆不进入停车场而直接选择从便道离开时,设计第二个链队列作为临时便道暂时存放原便道车辆,最后直接使临时便道替换成为新的便道,而减少临时便道车辆再次进入便道的重复工作[4]。龙源期刊网实现方法具体实现方法为当停车场内开走一辆车时,便道上便有一辆车进入停车场,此时只需要改变便道上各车辆结点的连接方式,使便道上等候的第一辆车进入模拟停车场的堆栈,并使便道上原来的第二辆车成为现在便道上的第一辆车,同时只需将便道的链队列的头结点连接到原来的第二辆车上即可。对于停车场内车辆根据其停放时间收取相应停车费用的问题,可以通过记录车辆进入以及离开停车场的时间,再用时间差乘以相应的单价得出,最后打印相应的费用即可实现。历史查询功能则是将进入停车场的车辆信息保存到动态数组里,并在调用该方法时返回相应的时刻。3.3主要模块设计该智能停车场管理系统主要包括以下几个模块如图1所示。3.3.1主函数设计首先在自定义PLMS类以及其内部类内定义全局变量包括定义的模拟停车场S1、模拟临时停车场S2、便道Q1、临时便道Q2,以及存储车辆信息的license变量和车辆状态的state变量等[5]。编写主函数,在主函数内实现对下述各个模块的调用。主函数中包括与用户交互的功能界面,在停车场管理人员完成对停车场大小的初始化设置后,通过输入简单指示数字实现各个功能的使用。例如,输入“1”调用进车方法,输入“2”调用出车方法,输入“3”调用历史记录查询方法等,进而实现整个系统的功能。3.3.2各子功能模块设计通过定义initStop()的方法,实现管理人员对停车场大小的设置,从而使该系统应用领域更加智能广泛[6]。进入停车场模块流程如图2所示。用户通过输入“1”执行进车方法的调用,首先创建Car类的info对象并实例化,获取当前车辆的license属性即车牌号。此时判断停车场状态,若停车场不满,则压入模拟停车场堆栈S1,并初始化车辆进入时间及状态,将记录保存在historyList的历史记录存储数组里;如若停车场已满,给出提示,并将其存入便道队列Q1中。最终返回车辆在停车场或便道的当前位置。离开停车场模块流程图如图3所示。首先将Car类的info对象和记录车辆位置location变量置空[7],即离开停车场的车辆为之前进入停车场的车辆而非新车。创建新的堆栈S2表示临时停车场,由于堆栈具有先进后出的特性,倒序遍历停车场的当前车辆。此时可能出现两种情况:当前车辆即为要离开的车辆、当前车辆不是要离开的车辆而需要继续遍历。出栈对象的license属性与用户输入相同,则初始化离开时间,将车辆状态记为离开,车辆位置不为0,退出循环;出栈对象license属性与用户输入不相同,则将不匹配的出栈对象暂龙源期刊网堆栈,一直循环到属性匹配,其他对象再重新进入停车场,并依次补入已离开的车辆位置。记录车辆位置的location变量不为0,则进入计算费用的循环,用车辆离开时刻减去到达时刻,得到车辆在停车场内的总时间,乘以每单位收费,即为所需缴纳的总费用,并保存历史记录。此方法考虑了便道出车的特殊情况,即未进入停车场便离开的情况。若停车场为满,则说明是便道出车的情况,创建临时队列保存暂时出便道的车辆,在license属性匹配后,仍将其他车辆出队列进临时队列,将Q2赋值给Q1即临时队列成为当前便道,并将当前车辆信息打印反馈给用户。记录历史信息模块包括设置保存汽车离开时间和查找车辆信息的两个方法。方法一通过动态数组保存车辆离开的时间记录,通过变量i在方法二中查找是否有需要查找的信息。license属性匹配后,运用条件表达式判断当前车辆状态。若状态为“到达”,则显示到达时间;若车辆已离开,则同时显示到达和离开时间,并运用离开停车场模块的时间处理,得到缴纳的费用。若查询信息错误,则给出提示。4系统主要问题分析4.1停车场、临时停车场、车辆便道、临时便道模拟问题栈是数据结构中的一种仅允许在一端进行插入和删除运算的线性表。栈中允许插入和删除的一端,称为栈顶。在一个栈中插入元素,即把新元素放到当前栈顶元素的上面,使其成为新的栈顶元素,即进栈。从一个栈中删除一个元素,即把栈顶元素删除,使其下面的元素成为新的栈顶元素,称为出栈。栈遵循后进先出的原则,即后进栈的元素必先出栈。其中顺序栈是利用一组地址连续的存储单元依次存放从栈底到栈顶的元素。适用于本系统中解决模拟停车场和临时停车场的问题。队列是一种限定在表的一端进行插人,而另一端进行删除的线性表,与栈的性质相反,队列遵循先进先出的原则。向队列中插入新的元素称为入队,新元素进队后就成为新的队尾元素;从队列中删除元素,称为出队,元素离队后,其后继元素就成为新的队头元素。其中链队列就是用链表表示的队列,需要两个分别指示队头和队尾的指针(分别称为头指针和尾指针)。为了操作方便,给链队列添加一个头结点,并令头指针指向头元素结点,尾指针指向队尾元素结点,判断队列为空的条件是头指针和尾指针均指向头结点。适用于本系统中解决模拟车辆便道和临时便道的问题。4.2模拟车辆各运行过程及计算停留时间和缴纳费用多少问题运用堆栈及队列的自定义方法,如pop、push、offer、poll等模拟过程,调用Java语言中[8]GregorianCalendar子类的getInstance()等方法实现对进入以及离开停车场时间的获取,再通过与单位时间收取费用相乘得到最后的结果。5系统设计总结龙源期刊网语言数据结构完成,在全面分析现代居民生活要求并结合相关知识后,合理添加人性化的系统功能,并设计合理化的模块结构。在开发该智能管理系统的过程中,要详细掌握系统研发的整体思路与过程。本系统的巧妙设计在于利用堆栈的相关性质解决车辆进入停车场的问题,利用队列的相关性质完解决车辆在便道上停放的问题,通过栈和队列的初始化,调用构造的多种方法来模拟实际停车中可能出现的多种问题。参考文献:[1]马利.停车场管理系统