公交智能调度系统的设计与开发

2016-12-15 02:47马自强
软件 2016年11期
关键词:公交公司设计图日志

马自强

(天津市通卡公用网络系统有限公司,天津市 300384)

公交智能调度系统的设计与开发

马自强

(天津市通卡公用网络系统有限公司,天津市 300384)

近年,随着我国公共交通的迅猛发展,公交公司对公交车辆的管理难度却越来越高。如何管理庞大数量的车辆以及如何安排错综复杂的线路,就成为了公交公司的当务之急。通过对公交公司运营模式的理解,进行了系统的需求分析,并按照功能将系统划分为“车辆运营计划生成”、“车辆发车调度”、“统计报表查询”、“基础信息管理”、“系统角色维护”五个功能模块。公交智能调度系统采用B/S开发模式,根据对系统整体架构的设计,系统采用目前JAVA WEB项目中普遍使用的企业级框架SSH(Struts + Hibernate + Spring),完成了系统中不同层次间的集成。通过使用公交智能调度系统,公交调度人员只需要录入一次排班时刻表和轮换规则等数据,则可让系统自动生成每天的车辆计划,调度员无需在每月末集中安排下月的车辆计划。同时,本系统会自动记录车辆每天的运营情况并进行数据汇总,省去了调度员计算运营数据的工作,大大降低了其工作强度。本系统的应用也大大降低了公交公司对纸张的需求,形成无纸化办公,这不仅降低了成本,也间接地进行了环境的保护。

公交智能调度;无纸化办公;JAVA WEB;SSH框架

本文著录格式:马自强. 公交智能调度系统的设计与开发[J]. 软件,2016,37(11):41-46

0 引言

随着我国对公共交通行业的大力发展,我国各个城市的公共交通能力有着大幅度的提高,这其中的一个表现就是公交车数量已有显著的提升。据统计,截止至2014年,上海市共有19900辆公交车。面对这么庞大数量的公交车,随之而来的则是车辆管理的问题,如何能够合理地安排车辆在线路中的发车情况,如何能够有序地进行车辆上班顺序的轮换,这些都是车辆管理的主要问题。在公交公司传统的运营模式中,从发车计划的制定到计划执行情况的统计,再到运营数据的汇总,这些工作全部需

要由公交公司的工作人员手动计算和统计。这不仅需要消耗大量的人力物力,又不可避免的会产生统计的错误。因此,智能调度系统的核心目标在于使用计算机完成公交公司的运营模式,调度人员在系统的页面上即可进行车辆的排班、发车以及公交公司运营报表查询等工作,数据的统计均由计算机来完成,极大地提高了工作人员的工作效率,降低了其工作强度。同时,公交智能调度系统的应用,也减少了公交公司对于纸张的大量需求,间接地促进了对环境的保护。

1 公交智能调度系统的产生背景以及实际价值

城市公共交通作为城市赖以生存的公共设施,因其安全高效、经济舒适、准点和低能耗等优点越来越受到世界各国的重视[1]。随着我国对公共交通行业的大力发展,我国各个城市的公共交通能力有着大幅度的提高,这其中的一个表现就是公交车数量已有显著的提升。据统计,截止至2014年,上海市共有19900辆公交车。面对这么庞大数量的公交车,随之而来的则是车辆管理的问题,如何能够合理地安排车辆在线路中的发车情况,如何能够有序地进行车辆上班顺序的轮换,这些都是车辆管理的主要问题。

公交智能调度系统使用计算机技术来实现公交公司工作人员的诸如车辆排班,车辆调度,报表查询等操作,使工作人员不再需要进行大量重复单一的车辆安排与数据统计,由计算机来完成这些繁琐的操作,工作人员只需要在系统中进行相应操作,即可获得操作的结果。

2 系统需求分析

在传统的公交运营管理模式中,线路下每辆车每个月的发车顺序、发车时间等都需要调度员在前一个月的月末,手动统计出来,然后再打印成纸制形式发送给司机,让司机提前知道每个月的上班时间。这样做的弊端在于,调度员在月末的统计工作量将会非常大,同时,由于不可避免地统计的疏漏,导致有可能部分发车计划的安排不合理。

通过对传统公交运营管理模式的分析,公交智能调度系统主要面对以下几种用户:

1. 调度员用户。调度人员工作使用的用户,具有车辆排班、发车调度、基础报表查询等功能。

2. 系统管理员用户。该用户具有系统最全面的功能,并可以设置其他角色所具有的功能。该用户一般为系统维护人员使用。

3. 基础信息维护用户。该用户具有基础信息查询与设置的功能,用于维护人员维护公司、线路、车辆、站点跑法等基础信息。

4. 公交公司领导用户。该用户下只有查看公交公司领导所关心的报表的权限。通过查看这些报表可以查询到公交公司一段时间内的整体运营情况。

5. 报表审计用户。该用户可以看到系统的全部报表,用于统计人员根据相关报表数据计算每月驾驶员的工资等。

3 系统模块设计

将公交智能调度系统按照功能划分,系统可分为“车辆运营计划生成”、“车辆发车调度”、“统计报表查询”、“基础信息管理”及“系统角色维护”这五大功能,每项大功能下均具有相关的子功能。具体功能模块设计图如图3.1所示。

3.1 车辆运营计划生成

该模块主要包含五个子模块:“班次模板导入”、“车辆轮换设置”、“模板使用日期设置”、“车辆计划生成”和“运营计划查询”。具体模块设计图如图3.2所示。

调度用户在使用系统生成车辆排班时,首先从系统中下载班次时刻表模板,然后将公交公司下发的时刻表填写成至模板的发车时间中,并使用系统的班次模板导入功能上传时刻表。班次时刻表上传成功后,在系统中则记录了时间表中每个班次的发车时间。这时,还需要设置该模板的使用日期和车辆的轮换规则。

经过上述操作后,系统则可以根据使用模板的日期和轮换规则来自动生成车辆上班计划。与此同时,系统也允许在指定日期不使用系统自动生成的排班,而是使用调度员手动设置的车辆排班。此时,需要进行车辆排班的手动设定,设定指定日期下车辆与班次的绑定情况。设置成功后,则可以进行手动生成计划,生成指定日期的车辆运营计划。

在车辆计划生成结束后,调度人员可以使用系统的“车辆排班报表”进行查询,查询车辆在指定日期的运营计划,可以查询到每个班次对应的车辆、发车趟次等信息。

3.2 车辆发车调度模块

图3.1 系统功能模块设计图

图3.2 车辆运营计划生成模块设计

图3.3 车辆发车调度模块设计图

本模块共分为三个子模块:“发车时间调整”、“发车顺序调整”、“增加删除计划”。模块设计图如图3.3所示。

调整车辆发车是调度人员的主要工作。调度人员可以在发车调度模块中,针对当天线路的车辆发车情况,进行车辆后续发车计划的调整。发车顺序调整功能主要用于调整在始发站或终点站等待发车车辆的发车顺序。同时,调度人员还可以使用增加删除计划功能,为车辆临时增加或删除需要执行的计划。

3.3 统计报表查询

本模块用于车辆运营情况的报表查询,根据报表使用者的不同,本模块共包分为两个子模块:“公里查询报表模块”和“趟次查询报表模块”。

公里查询报表模块:该模块的报表查询主要用于公交公司领导查看,可以查看车辆、线路及分公司在一段日期内的运营情况。公里查询报表模块设计图如图3.4所示。

图3.4 公里查询报表模块设计图

趟次查询报表模块:该模块主要用于调度人员查询车辆每趟的运营情况,包括发车准点、发车间隔、运营公里等。趟次查询报表模块的模块设计图如图3.5所示。

3.4 基础信息管理模块

该模块主要用于基础信息维护人员对系统中的公司、线路、车辆、员工、站点及跑法等基础信息进行查询、添加、修改、删除操作。该模块共分为:“公司管理模块”、“线路管理模块”、“车辆管理模

块”、“员工管理模块”和“站点跑法管理模块”。

(1)公司管理模块:维护人员可以在该页面下完成公司的查询、添加、修改和删除功能。该模块的设计图如图3.6所示。

(2)线路、车辆、员工管理模块:模块的设计方式与公司管理模块相似,同样是分为相应基础信息的查询、添加、修改和删除功能,此处则不再赘述。

(3)站点跑法管理模块:站点跑法模块用于设置线路下的站点和跑法信息。“跑法”的定义为线路从起始站至终点站之间,经过的站点的顺序。该模块的设计图如图3.7所示。

图3.5 趟次查询报表模块设计图

图3.6 公司管理模块设计图

3.5 系统角色维护模块

系统角色维护模块用于维护系统中每个角色可以使用的功能以及每个角色可以访问的线路。该模块主要共分为以下两个子模块:“角色权限管理”和“角色线路管理”。

图3.7 站点跑法模块设计图

图3.8 角色权限管理模块设计图

(1)角色权限管理:维护人员进入角色权限管理页面,选中需要修改权限的角色,再设置该角色需要访问和不能访问的功能。设置完成后,点击“保存”即可完成对角色权限的设定。该模块的设计图如图3.8所示。

(2)角色线路管理:该模块与“角色权限管理模块”的设计相同,此处则不再赘述。

4 系统实现的关键技术

4.1 SPRING集成STRUTS和HIBERNATE

本系统使用JAVA语言进行开发,是JAVA WEB项目。系统的核心框架使用的是Spring + Struts + Hibernate框架。整个架构利用Spring的核心思想—IoC和AOP,整合Struts和Hibernate,达到层次和组件之间的松散耦合,提高系统的可重用性和可维护性[2]。Struts处于系统的控制层,用于集中处理用户的请求并根据请求地址和Strtus的配置文件将请求分发给具体的Action类进行业务逻辑的处理。Action类在收到处理业务逻辑的请求并处理完成后,需要使用数据库访问层,进行与数据库的交互

(例如查询、修改数据表等操作),此时则需要使用由Hibernate代表的数据库访问层的程序(即系统的DAO类)。那么,如何能让两个相对独立的模块进行通信则是一个关键的问题。在Action类中直接依赖DAO类,创建DAO类的实例会使程序过于僵硬,因此使用Spring的一个主要目的则是用于集成Struts和Hibernate这两层模块。

集成的思路为:设计Action类关联DAO类,拥有DAO类的实例。将创建Action的责任从Struts的控制器改为Spring的代理控制器,即可在创建时进行DAO类属性的依赖注入。由Spring去创建Aciton类实例的方法为:将Struts的控制器转换为Spring的代理控制器。同时,向Struts中添加Spring的加载容器插件。这样,在收到用户请求后,Spring代理控制器负责进行Action的创建,那么则可以根据配置,对Action类中的DAO类的实例变量进行依赖注入。这样,在Action创建完毕后,则可以直接使用关联的DAO类的实例进行数据库的访问。

Spring集成Struts与Hibernate的核心配置如图4.1、4.2、4.3所示。

图4.1 Struts配置中增加Spring容器插件

图4.2 使用Spring向Action实例注入DAO实例的配置

图4.3 Spring生成DAO实例的配置

4.2 使用SPRING完成事务管理

在系统中,经常会有对数据库中数据的添加、修改、删除等操作。例如修改车辆基础信息、添加跑法基础信息等操作。因此,一旦产生对数据库的DDL操作,必然会涉及到事务并发的问题。

在数据库运行中,多个事务并发执行会产生的常见问题为丢失更新、脏读、不可重复读和幻读。为了解决相应的问题,数据库中共有四种事务隔离机制,分别为未提交读、提交度、可重复读和序列化。通过控制隔离,每个事务在其行动时间里都像

是修改数据库的惟一事务[3]。事务隔离级别越高,数据库并发处理事务的能力越低。通常情况下,使用提交读隔离级别既可以满足系统对数据库并发执行事务能力的需要,又可以保证数据的一致性。

本系统中使用Spring管理事务,配置事务的隔离级别与事务的传播。Spring提供了多样化的事务编程支持,包括编程式事务和声明式事务[4]。本系统使用声明式的事务管理,既节省了代码的开发量,又使得事务的管理配置更为直观。

事务管理的核心配置如图4.4所示。

图4.4 使用Spring进行事务管理的配置

4.3 使用LOG4J和SPRING AOP技术完成日志记录

在编程时,经常会使用到一些日志操作,在开发阶段需要大量的调试语句,在开发完成时需要查找并移除[5]。LOG4J是Apache公司开发的日志记录的开源包,具有读写效率高,使用方便和配置简单等优点。本系统则使用了LOG4J包进行日志的记录工作。在确定了记录日志的工具后,还需要确定何时进行日志的记录。在传统的使用上,日志的记录是由DAO层在执行完成数据库的交互后,主动进行日志记录,但是此种方式的DAO类与日志记录类的联系过于僵硬。

Spring AOP模块直接将面向切面的编程功能集成到了Spring框架中,所以可以很容易的使Spring框架管理的任何对象支持AOP[6]。因此,可以使用Spring的AOP功能,当执行到DAO类的不同方法时,执行织入切面的对应日志记录方法。使用此种方式,实现了DAO类与日志记录类的脱耦,DAO类只需要进行数据库操作即可,不需要关心日志何时记录,何时记录日志取决于AOP的配置。

5 结论

本文通过对公交公司运营模式的分析,给出了公交智能调度系统的需求分析、模块设计以及系统开发所使用的核心技术。公交智能调度系统的实现使公交公司脱离了传统的运营模式,公交各部门间不再只能使用纸张作为信息传递的载体。通过使用本系统,公交调度员可以在计算机中完成包括车辆每天运营计划的生成、线路运营情况的调度等的调度工作,而这些工作在以往的运营模式中往往需要使用大量纸张并且使用电话通知司机的方式才能完成。与此同时,为了满足公交公司不同层面对报表数据的需求,本系统提供了查询车辆每趟运营数据、公司每月运营数据等多种形式的报表,使用人员仅需要访问系统中相应报表页面即可查看,无需人工统计。因此,通过对智能调度系统的使用,既降低了公交工作人员的工作强度,提高了调度员的工作效率,也减少了公交公司对纸张的过度依赖,从而间接地进行了环境的保护。

[1] 许文娟. 城市公共交通与城市发展的适应性评价研究[D].北京: 北京交通大学, 2014.

[2] 廖胜军. 基于SSH整合架构的应用研究[D]. 武汉: 武汉理工大学, 2008.

[3] 程建坤. 数据库隔离级别研究与应用[J]. 金融电子化, 2008, 01: 68-70.

[4] 丁振凡. Spring 3.x的事务处理机制的研究比较[J]. 微型机与应用, 2012, 10: 4-6.

[5] 李军, 闻红华. JAVA编程下的日志管理[J]. 电脑知识与技术, 2006, 08: 141-143.

[6] 王晓君, 张佃龙. AOP在Spring框架中的应用[J]. 电脑知识与技术, 2009, 26: 7420-7421.

Design and Development of Intelligent Dispatcher System of Public Transportation

MA Zi-qiang
(Tianjin ic card public network system co., LTD., Tianjin 30038, China)

In recent years, It becomes more and more difficult for public transportation companies to manage the public traffic vehicles with the fast development. How to manage the huge amount vehicles and intricate traffic routes has been the urgent affairs for public transportation companies. The system was devided into 5 function modules—“schedule generation”, “departure dispatch”, “statistic report inquiry”, “basic information management” and “system roles maintenance”—through understanding the mode of public transportation companies’ operation and analysis of the demands. The system utilised B/S developing mode. According to the design of overall structure, the system used enterprise framework SSH (Struts + Hibernate + Spring), which is utilised normally in JAVA WEB projects nowadays and help to combine different level of the system. Public transport intelligent dispatching system can generate daily vehicles schedules automatically after dispatcher inputs the schedule and rotation rules for one time, and there is no need to arrange next month’s schedule at the end of the month. Meanwhile, the system will record and summarize everyday's operational data automatically, thus lower the workload of management officers. The system can also decrease the public transportation companies' demand for paper, forms paperless office which not only reduces cost but also protects the environment indirectly.

Public transportation intelligent operation; Paperless office; Java web; SSH framework

TP311

A

10.3969/j.issn.1003-6970.2016.11.010

猜你喜欢
公交公司设计图日志
一名老党员的工作日志
焊缝符号在机械设计图上的标注
为一人设一站
扶贫日志
设计图失窃案
坐公交车受伤 应该由谁赔偿
游学日志
西夏的“炮”设计图
考虑满意度的公交财政补贴绩效评价
只存在于设计图上的虚幻建筑