黄雪颖,牛 丹,李 涛,李 凡,薛裕峰
(1.东南大学自动化学院,江苏 南京 210096)(2.“复杂工程系统测量与控制”教育部重点实验室,江苏 南京 210096)(3.江苏聚力智能机械股份有限公司,江苏 苏州 215212)
随着我国经济的发展和居民生活水平的逐步提高,越来越多的家庭拥有私家车,汽车保有量迅速增加带来的“停车难”问题日益突出[1]。人类社会的不断进步使得城市的规模逐渐扩大,然而城市人口数量的剧增使得人均生存空间越来越小。如何高效、合理利用有限空间解决“停车难”成了一个亟需解决的问题。因此,库容量大且占地面积小的立体车库应运而生[2]。
目前,我国一些经济发达且人口密度较大的城市,如北京、上海,已经开始大力发展具有诸多优势的立体车库[3]。但当前的立体车库大多没有联网,没有把车库的车位信息和运行信息上传服务器,因此车库运营方难以远程控制、管理车库[4],存车用户也无法远程查询和预约车位。随着“互联网+”概念的提出,研发一款集立体车库管理和车位预定查询等功能于一体的立体车库停车系统就显得十分必要。
国内有不少学者对这一问题进行了大量的研究,张志田等[5]提出了一种采用手机 APP预约取车的方式,减少了用户的停车等待时长。刘秀芝等[6]提出通过手机上的APP软件进行车辆存取,方便车主取车,大大缩短了存取车时间。丰宇等[7]设计了一个多口进出货物存放式立体车库,减少了存车和取车时的等待时间,符合现代人的生活节奏。 但是上述研究主要是优化用户的存取车操作,对用户预约车位、导航以及在线支付停车费用,管理员远程管理车库等功能都未涉及。因此对基于手机客户端,集立体车库管理和车位预定、查询等功能于一体的立体车库停车系统进行研究就显得很迫切。本文基于Android操作系统,提出的基于Android的立体车库停车系统的设计与实现,是对现有的基于互联网的立体车库系统的一种扩展和补充,对业界具有一定的参考意义[8]。
Android是Google开发的基于Linux平台的开源手机操作系统,分为应用程序层、应用程序框架层、系统运行库层以及Linux内核层[9]。Android基于Linux内核,其核心系统服务都依赖于Linux内核[10]。
客户端需要请求网络,与服务器端进行交互从而获取数据。OkHttp是一个处理网络请求的轻量级框架,提供了get请求、post请求等功能。使用该框架可以快速实现与数据库的数据交互。
首先创建一个OkHttpClient对象,如果是post请求,需要构建FormBody,传入参数;如果是get请求,不需要构建FormBody。接着构造Request对象,并将Request封装为Call。最后,以异步的方式去执行请求,等待任务执行完成,在Callback中即可得到结果。重写回调方法,对结果进行处理即可。
处理好不同数据模型之间的关系,减少数据冗余,对提高数据库系统性能十分重要[11]。 E-R图就是描述现实世界关系概念模型的有效方法[12]。本系统数据库E-R图如图1所示。
图1 数据库E-R图
通过对系统功能需求进行分析,将立体车库停车系统细分为用户系统和管理员系统。系统功能模块图如图2所示。
图2 功能模块图
用户系统包括4个模块:登录注册模块、订单详情显示模块、预约模块和在线支付模块。
1)登录注册模块。登录注册模块主要实现注册、登录、找回密码、注销等功能。未注册用户可通过可用的手机号码进行注册,通过短信验证后,就可以设置密码并输入用户信息。已注册用户正确输入用户名和密码后就可以成功登录该系统。已注册用户如果忘记密码,可通过该模块重新设置密码。该功能模块的流程图如图3所示,界面截图如图4所示。
图3 登录注册模块流程图
图4 用户系统登录界面
2)订单详情显示模块。订单详情显示模块主要的功能是显示用户当前的订单状态,让用户实现存取车操作。用户在该模块通过点击相关按钮,就可以快速便捷地实现存取车操作。该功能模块的流程图如图5所示,界面截图如图6所示。
3)预约模块。该模块包括预约、查询预约和取消预约功能。用户成功登录后可进入主界面并定位到用户当前位置。主界面的开发是基于百度地图开放的第三方SDK库,使用添加标注的方法,将车库以标注的形式在地图上显示出来,并给标注添加点击事件,用户点击标注,就可以弹出相关的信息框,用以显示车库的具体信息,用户点击想预约的车库,就可以预约车位。同时用户也可以查询到当前所有预约,并可取消预约。预约模块的流程图如图7所示,界面截图如图8所示。
图5 订单详情显示模块流程图
图6 用户系统订单详情界面
图7 预约模块流程
4)在线支付模块。该功能模块通过调用微信和支付宝提供的SDK实现微信支付和支付宝支付,用户可直接在线支付停车费用,十分方便。
管理员系统主要包括4个模块:登录模块、车位剩余情况显示模块、车库运行情况显示模块和所有订单数据显示模块。
1)登录模块。该模块主要实现登录以及修改密码等功能。管理员正确输入用户名和密码后,就可以成功登录管理员系统。管理员登录后可以通过该功能模块进行密码的修改。
2)车位剩余情况显示模块。该模块的功能是在车位剩余情况界面下显示各个车库的车位使用情况,即通过适配器将车库信息表中相应字段的数据显示在ListView界面组件上[13]。在适配器中先设置数据的布局格式,然后将相应的组件实例化,并且设置数据表中的值,从而实现动态地加载显示数据的功能,界面截图如图9所示。
图8 用户系统预约界面 图9 车位剩余情况界面
3)车库运行情况显示模块。通过该功能模块,管理员可以查看车库的运行情况,如果发生故障,可以第一时间发现并做出反应,界面截图如图10所示。
4)所有订单数据显示模块。通过该功能模块,管理员可以查看该车库的所有订单信息,界面截图如图11所示。
图10 车库运行情况界面 图11 所有订单信息界面
本文设计与实现了基于Android的立体车库停车系统,测试表明,该系统的整体性能较好、功能较完善。本文的创新点如下:1)通过调用百度地图、支付宝以及微信等接口,实现了多个功能,为用户和管理员提供了很大的便利。2)实现了基于Android的集用户系统和管理员系统于一身的立体车库停车系统,对解决“停车难”、推进立体车库的大力发展可起到较大的推动作用。