论文案例分享-快巴运营信息管理系统的设计与实现-CNKI知网查重网站

论文案例分享-快巴运营信息管理系统的设计与实现

2021-06-07 15:59:00
作者:杭州千明

  历经几十年的沧海桑田,数据库与计算机技术已经融入人类的生产生活。本文所论述的“快巴运营信息管理系统”也是学习并运用了数据库等计算机技术所编写的一个实际案例,通过对系统后台与前端代码的编写,让本人完善了所学的专业知识体系,获得了学习编程开发的新思路。本系统将信息数据网络化后使用应用软件进行管理,与传统的人工管理模式相比较,其设计优势在于,网络信息管理系统拥有更便捷、更高效、更安全等特性,因为网络数据库拥有强大的数据存取能力与数据备份能力,能快速完成信息数据的维护工作,且能保证数据存取的准确性,数据库还可以设置了账号与密码的验证,提高了数据信息管理的安全性。本系统将网络数据库与编程开发框架相结合,在综合信息管理系统实现了人员与站点的综合信息管理,在购票查询系统实现了旅客登入选座买票。

  “快巴营运信息管理系统”采用B/S架构模式。使用IDEA作为开发工具,使用Java编程语言,使用HTML+CSS+Js作为前端WEB可视化界面,后台会选用SpringBoot作为开发的基本框架,MyBaits作持久化映射,数据库选用MySql作数据存储。

  互联网的发展在斗转星移间已然融入人类的生产生活,计算机技术的广泛应用也正在改变人们的管理模式,所以企业的信息管理手段正在向网络化管理的方向转变。从超市引入收银系统到如今的无人超市,从纸币支付到如今的互联网支付,从动车纸质票验证到如今的身份证、人脸验证等例子可以看出,网络化的信息数据的准确度以及其效率都很高,网络化的数据管理及其应用的实用性非常强,不仅推动企业发展,还能提高工作效率,最重要的是,它让企业和用客户双方都感受到了便利。

  所以,信息管理系统的网络化在现代化的管理工作中的作用巨大,它不仅是实现企业现代化管理的捷径,更是使高新科技企业屹立不倒的生存堡垒。企业发展得越大,就越需要科学的管理,所以信息系统化是企业发展的一条必经之路。计算机信息化这样的科学管理是时代进步的标志,也是社会发展的标志。在网络数据信息量爆炸的21世纪互联网时代,我们会发现,仅凭借一台服务器、一个数据库是不足以支撑庞大的数据服务的,我们甚至要开始用集群来解决,大量的集群支撑起庞大的数据服务的同时,也成为了企业成功的基石。

  1.2开发意义

  而本系统将数据信息网络化后,相比于传统的人工管理系统模式而言,优点有五个:

  其一,数据安全。传统的数据,是靠笔墨纸砚,文字记录在册。常常会害怕天灾人祸,如火灾、水灾、被撕毁、被偷窃、被虫咬......等等。而数据网络化之后,是没有实体的,所以无惧这些灾祸,而且由于数据库高保密性,只有拥有账号密码,验证通过的人才可以操作数据。这就相比于传统管理模式中的那把管理库房的钥匙要安全的多。

  其二,数据易存储。传统数据由于其拥有实体的特性。比如承载信息的纸张越来越多,然后需要装订成一册册文件,用一个个专门的柜子、一排排专门的标签、一册册专门的文件夹,再通过来回一道道认真反复的审查,确认无误后才放到指定位置。如果数据足够庞大,比如图书馆里的资料,是被一栋建筑来存储的,这无疑是耗费了巨大的空间,而管理图书也非常费劲。而数据网络化后,只需要在指定的新增页面填入对应的数据,便能有条不紊的存储在库,而这个库在云端,我们只需要一台手机或者一台电脑就可以轻松处理,不占用我们身边一丝一毫的现实空间。

  其三,数据易查改。传统的数据,由于其记录在纸上。查找需要进存放数据的库房,找到存放的书架、找到对应的册子,再翻开册子,从目录找。数据量越大,找的效率越低。而且修改这一块,若是要修改势必涂改纸张、改的越多越乱,若是重新抄录更是耗费大量时间成本和人力成本。而再我们所设计的管理系统里面。只需要从网页点进去,再修改页面更改数据即可,不仅更方便而且效率高。

  其四,数据更具备安全性。对于一些需要公信力的数据,需要给旅客或者更多人看的。如公益机构展示资金流向。我们的系统就可以设置权限等级。开放数据权限,给拥有权限的用户提供对应的数据。

  其五,数据管理更便捷。数据管理的便捷最大的体现在了——只要用户有移动设备,就可以实现对数据的管理。

  1.3设计思想

  “快巴营运信息管理系统”是为了方便企业管理而开发设计的web项目。管理系统通过HTML+CSS+Js实现简洁美观的可视化操作的页面,通过Java编程实现系统后台功能,前后端调试成功完成一个完整的系统。以验证登陆以及权限访问的形式保证系统的安全性,以清晰的功能描述保证用户能直接上手使用系统功能,以毫秒级别的响应速度保证用户体验。后台的信息维护功能和前台查询购票功能,确保了整个系统的完整性和实用性。都“快巴营运信息管理系统”将传统的人工管理转换为数字信息化的管理,不仅仅是形式上的转变,它会更方便,比如搜索查找,我们会直接检索数据库,这极大的提高了我们的查询效率,数据库的好处不仅在于查找方便快捷,更在于它庞大的存储能力,更可贵的是它的可靠性高、安全性好、可做备份而且成本非常低。

  2开发概述

  2.1系统特点

  本系统选择当前软件主流开发框架整合开发,与传统Java EE开发相对比,框架开发的效率更高,优秀的封装性让代码变得精简,项目的整体结构也更为直观。而在实现的层面,布局比传统的web页面增加了响应式的功能,传统的网页制作方法并不能良好的适应屏幕尺寸。而功能层面,保持了传统管理系统实用特性的同时,使用了ajax技术做了列表的数据交互。并使用pageHelper做了列表分页,使用模糊查询做了数据查找,界面色彩简洁美观,清晰完整,保证了用户体验。

  本系统的设计开发所使用的开发工具为IDEA,对比与Eclipse,同样支持git、maven。但是个人觉得IDEA对于项目的管理更加清晰,特别是依赖管理这一块。而且Idea占用CPU比Eclipse少,两个开发工具相比,Eclipse较为卡顿。Idea的开发页面也更清爽,代码提示功能非常好用,在Test目录下可以对功能模块调取参数快速测试,通过直接使用接口达到测试目的,快捷且高效。本系统使用虚拟机配置的MySql,在Windows系统通过MySql管理工具来操作。而Tomcat服务器是Idea内置的,测试浏览器为谷歌浏览器。

  对于系统的开发者而言,Idea的项目管理功能非常清晰有序,比如Java的类文件是蓝色图标,Java的接口文件是绿色图标,而启动类带开关和播放图标。不管是导入jar包还是补全语,Idea都非常迅捷。而在处理业务的时候,会用到关系型数据库MySql。因为它的安装相比于SqlServer而言更加简单快捷,而且MySql的性能同样很棒,MySql的数据服务非常稳定,读写快速,而且对于开发配置要求不高,所以选择了MySql作为本项目的数据存储工具。谷歌浏览器在调试程序的时候作用重大。选用它取决于它在F12进入开发者模式后可以用来调整页面布局,查看html、Js、css在项目服务启动后的报错信息,方便开发者及时修改Bug。

  对于系统的用户而言,本系统的界面简洁美观。而系统的功能模块描述清晰,输入框有输入提示,这便于用户的理解和操作。综合管理系统对用户提供了信息录入以及信息的维护的功能,而购票系统对用户提供了查询车程信息、下单购票、订单管理的功能,各功能模块的使用流畅且无卡顿,查询响应迅速,数据交互准确。为了提高系统安全性,综合信息管理系统和购票系统都使用了账户和密码的验证登陆,而综合信息管理系统里还设置了功能模块的访问权限,让用户的数据更安全。

  2.2系统分析

  系统名:快巴运营信息管理系统

  设计目的:让数据管理更加方便、准确、高效、安全。

  功能目标:

  (1)后台综合信息维护;前台用户购票管理

  (2)后台管理员注册登陆;前台用户注册登陆

  (3)后台管理人员、站点等信息;前台查询站点、购票

  界面目标:

  美观简洁且实用,匹配屏幕尺寸,避免布局错乱,适当调节动画色彩提升用户体验。

  后台系统逻辑模型:

  图1后台注册登录

  图2管理信息

  图3班车管理

  图4旅客管理

  图5司机管理

  图6车票管理

  前台系统逻辑模型:

  图7前台登陆注册

  图8购票

  3系统开发过程

  3.1数据库设计

  在开始写实现代码之前。我们需要对系统的功能模块做需求分析。我们需要根据软件的生命周期去划分原则并设计方法,这涉及到数据库系统设计的逻辑性、组织性、策略性以及控制性等知识。需要根据业务需求,完成需求分析,再通过数据模型的创建、结构功能设计、数据库设计、运行以及维护而画出系统的概念模型与E-R图,这能帮助我们更清晰的理清系统结构,设计出清晰好用的数据库。通过提出需求、分析需求来掌握这个系统模块的功能状况,然后考虑技术支持,选用恰当的技术手段对其加以实现。在分析出系统的功能之后也要考虑到将来的迭代工作。

  3.1.1需求分析

  后台信息管理系统的用户需求分析

  用户需求:

  1.输入相关信息,完成系统用户的注册。

  2.输入账号密码,在验证通过后登陆系统,验证失败后不可登陆系统,并提示错误信息。

  3.班车信息管理,要实现班车信息列表的自动展示,能加入和更改班车信息,能通过按钮删除某一行的信息数据,根据班车名查询某辆班车信息,实现列表分页。

  4.司机信息管理,要实现司机信息列表的自动展示,能加入和更改司机信息,能通过按钮删除某一行的信息数据,根据司机名查询某位司机的个人信息,实现列表分页。

  5.旅客信息管理,要实现旅客信息列表的自动展示,能加入和更改旅客信息,能通过按钮删除某一行的信息数据,根据旅客名查询某位旅客的个人信息,实现列表分页。

  6.旅程信息管理,要实现旅程信息列表的自动展示,能加入和更改旅程信息,能通过按钮删除某一行的信息数据,根据起始地查询旅程信息,实现列表分页。

  前台购票查询系统的用户需求分析

  用户需求:

  1.输入账号密码,确认密码,完成账号注册。

  2.输入账号密码,登陆购票系统。

  3.首次登陆要填写完整的个人信息,提交成功才能进入主页。

  4.个人信息的管理,要能修改个人信息,修改用户账号密码

  5.查询车程,要能通过起始地、目的地以及日期查询出当日的车程信息。

  6.购买车票,查出车程信息后,点击购票,购票信息会被显示在下面的文本框内,核对文本框中的内容是否正确就可以点击购票,购票成功,票数减一。

  7.订单管理,订单页显示订单列表,购买的车程订单显示为已支付状态,点击退票后,显示为已退票,票数加一。

  3.1.2概念模型设计

  实体确定:后台账户、前台账户、权限、司机、旅客、班车、旅程、订单、座位。

  实体联系:

  1.后台账户(1:N)权限。

  2.后台账户(1:N)司机、旅客、班车、旅程。

  3.前台账户(1:1)旅客、座位。

  4.前台账户(1:N)订单、旅程。

  概念模型CDM如图:

  图10数据库概念模型图

  3.1.3系统的E-R图

  (1)班车信息E-R图

  图11班车信息E-R图

  (2)旅客信息E-R图

  图12旅客信息E-R图

  (3)司机信息E-R图

  图13司机信息E-R图

  (4)后台管理系统权限E-R图

  图14后台关系E-R图

  (5)前台购票系统E-R图

  图15前台关系E-R图

  3.1.4数据库设计表

  表1后台系统用户表

  字段名类型长度小数点不能为空是否主键注释

  id int 10 0是是唯一ID

  username varchar 20 0否否用户名

  realname varchar 20 0否否真名

  password varchar 50 0否否密码

  createDate date 0 0否否创建日期

  lastLoginTime date 0 0否否最后登录时间

  enabled int 1 0否否可用验证

  accountNonExpired int 1 0否否过期验证

  accountNonLocked int 1 0否否锁定验证

  credentialsNonExpired int 1 0否否过期验证

  表2角色中间表

  字段名类型长度小数点不能为空是否主键注释

  role_id int 10 0否否角色ID

  perm_id int 10 0否否用户ID

  表3角色表

  字段名类型长度小数点不能为空是否主键注释

  id int 10 0是是唯一ID

  roleName varchar 20 0否否角色名

  roleDesc varchar 20 0否否角色描述

  表4权限中间表

  字段名类型长度小数点不能为空是否主键注释

  role_id int 10 0否否角色ID

  perm_id int 10 0否否权限ID

  表5权限表

  字段名类型长度小数点不能为空是否主键注释

  id int 10 0是是唯一id

  permName varchar 20 0否否权限名

  permTag varchar 20 0否否权限目标

  url varchar 20 0否否拦截链接

  表6班车信息表

  字段名类型长度小数点不能为空是否主键注释

  bus_id int 11 0是是唯一id且自增

  bus_name varchar 20 0否否车名

  bus_load_number int 20 0否否载客量

  bus_driver_permit varchar 20 0否否行驶证

  bus_route_code int 20 0否否路线码

  bus_type varchar 20 0否否车类型

  bus_check_code varchar 20 0否否维护码

  bus_info_code varchar 20 0否否信息码

  表7司机信息表

  字段名类型长度小数点不能为空是否主键注释

  driver_id int 11 0是是唯一id

  driver_name varchar 20 0否否司机名

  driver_sex varchar 20 0否否性别

  driver_age int 11 0否否年龄

  driver_number varchar 20 0否否驾驶证

  driver_phone_number varchar 20 0否否电话

  driver_user int 20 0否否账号ID

  表8旅客信息表

  字段名类型长度小数点不能为空是否主键注释

  c_id int 10 0是是唯一id且自增

  name varchar 20 0否否名字

  age int 11 0否否年龄

  sex varchar 10 0否否性别

  telephone varchar 20 0否否电话

  address varchar 20 0否否地址

  remark varchar 20 0否否备注

  idcard varchar 20 0否否身份证

  contactPerson varchar 20 0否否联系人

  cpNumber varchar 20 0否否联系人电话

  表9前台用户表

  字段名类型长度小数点不能为空是否主键注释

  id int 11 0是是唯一id且自增

  customer_id int 11 0否否旅客ID

  username varchar 20 0否否用户名

  password varchar 20 0否否密码

  表10旅程表

  字段名类型长度小数点不能为空是否主键注释

  id int 10 0是是唯一id且自增

  orgin_location varchar 20 0否否起始地

  destination_location varchar 20 0否否目的地

  start_time varchar 20 0否否起始日期

  reach_time varchar 20 0否否到达日期

  car_num varchar 20 0否否车号

  ticket_price int 11 0否否票价

  ticket_num int 11 0否否票数

  表11座位表

  字段名类型长度小数点不能为空是否主键注释

  id int 11 0是否

  seatName varchar 20 0否否用户名

  status int 11 0否否状态

  表12订单表

  字段名类型长度小数点不能为空是否主键注释

  id int 11 0是是唯一id且自增

  car_info_id int 11 0否否班车ID

  customer_id int 11 0否否旅客ID

  change_times int 11 0否否操作时间

  status int 11 0否否状态

  stauts_msg varchar 20 0否否状态消息

  seatName varchar 20 0否否座位名

  3.2综合信息维护系统与购票查询系统的功能模块设计

  综合信息维护系统与购票查询系统都是使用网页对接后台数据服务的构架模式,通过后台代码创建Tomcat服务,在前端调用数据接口,通过界面操作数据库数据。要想完成系统业务的模块设计,首先需要完成一个整体的系统构架,通过构建出来的整体框架来创建功能模块。

  3.2.1 SpringBoot+MyBaits+SpringSecurity开发框架的整合

  开发JAR包如图:

  图16开发JAR包

  在填写之后,IDEA会自动导入,这样,我们就有了开发环境。

  创建文件包如图:

  图17项目目录结构

  config包内写配置层;controller是控制层;dao是接口层、entity是实体类层、handler控制类层、security权限层、service服务层、utils工具层、test编写测试接口。

  (3)整合SpringBoot跟MyBaits。创建实体类,配置好类中字段的映射关系。创建接口,并在mapper下新增一个.xml文件。在xml文件里将数据库字段与实体属性匹配后,配置一条查询语句。在test包下新建类,引用 Test注解进行接口测试。如果数据查询成功,则springboot整合mybaits完成。

  (4)整合SpringSercurity。通过重写配置方法,验证用户信息,并通过MD5工具类对密码加密。还可以配置拦截与放行。

  3.2.2综合管理系统的登陆与注册功能模块

  登陆注册页面如图:

  图18后台登陆界面

  图19后台注册页面

  登陆页面引用了大量的css样式并加入了Js动画作为背景,而注册页面是没有做样式处理的表单。这一比较,css与Js对于html的作用显而易见。

  登陆注册的代码实现逻辑:

  (1)通过系统账户信息表从角色表和权限表中拿到对应信息。

  (2)在包名为Entity的包下新建映射数据库的实体类。

  (3)创建操作数据的接口。我们需要通过三个接口,编写三个数据库操作语句,第一个根据用户名查询用户信息,第二个根据用户名查询权限信息,第三个插入用户。在这里,有两种方法,一种是注解,另外一种是在mapper包下创建.xml文件,在xml里配置sql语句。

  (4)编写好接口,我们要去test包下创建一个接口的测试类,用System.out.printIn输出一下。当接口测试通过,数据显示成功,再进行下一步,这是为了防止后期代码出现一些不明显的数据调用异常的bug。

  (5)接口测试通过,就要编写服务层,创建服务接口,实现服务接口,代码如图:

  图20用户权限接口代码

  代码实现了权限控制,通过数据库接口,根据用户名查询数据后定义权限,用遍历接口查询出来的数据列表分配权限。

  (6)在权限的配置类里设置拦截资源,通过遍历获取拦截url,并分配权限,然后要设置放行的静态资源。代码如下:

  图21配置放行URL代码

  如图所示,我们分配完权限后,放行了登录注册页面还有一些静态路径。然后设置登陆路径为“/login”并让它判断登陆成功或失败跳转不同页面。登陆成功效果图:

  图22后台主页

  3.2.3班车、站点、旅客、司机的信息维护功能模块

  班车信息列表页如图:

  图23后台班车信息列表

  旅客信息列表如图:

  图24后台旅客信息列表

  司机信息列表如图:

  图25权限不足页面

  路程信息列表如图:

  图26路程信息列表

  如上图,当用户登陆后,只有司机列表是无权限查看。与数据库中角色关联的权限ID一致,说明SpringSecurity权限设置成功。接下来则是数据库业务操作的实现。由于业务操作逻辑都是一样的,所以我们以班车信息列表为例。

  首先,是添加数据功能,如图所示:

  图27添加班车信息

  功能实现逻辑:通过班车实体类,创建一条添加数据数据操作接口,代码如图:

  实体:

  图28班车实体类

  接口:

  图29添加班车接口

  XML:

  图30添加班车SQL配置

  完成上面步骤,一个添加数据的接口就写完了,然后去Test测试接口是否能用,如图:

  插入代码:

  图31测试添加接口代码

  测试成功:

  图32执行添加接口测试输出的日志

  可以看到,测试代码只插入了一个班车名字段,所以测试结果插入了“娃哈哈”,而其他字段都为空,插入结果正确,接口调通可用。

  接下来,就要创建控制层,控制层是负责创建数据接口供页面调用的。代码如图:

  图33添加班车控制层

  用Map键值对来存储对象,通过Post请求传递成功失败的信息。创建了“/add”的URL路径,而整体的数据接口调用应该是localhost:8080/add。

  ajax使用了控制层的接口获取数据,Js代码如下:

  图34添加班车信息接口调用代码

  先通过id拿到文本框的值,再通过ajax请求回传递数据列表,然后controller层拿到回传的数据,使用Dao层数据接口操作数据库。

  删除功能,如图所示:

  图35删除班车记录

  删除的实现过程则是通过列表item.id的方式去获得当前列表数据的唯一ID,调用删除接口,执行SQL删除这个ID的数据记录。

  3.2.4购票系统的登陆注册功能模块

  注册成功页面如图:

  图36前台登陆注册

  前台系统和后台系统是分开独立的,所以端口号不同,前台系统的登陆没有权限处理,只是对数据库进行了身份验证。注册是使用Sql添加语句创建了一条注册接口,而登陆是通过查询用户信息的账号密码与文本框中的账号密码作对比,相同则登陆成功,不同则登陆失败。

  登陆成功如图:

  图37前台个人信息填写

  登陆成功需要填写个人信息,这也是一个添加数据提交表单。把数据存到旅客表中。提交完毕自动跳转主页。

  填写个人信息后跳转的主页:

  图38前台首页

  3.2.5个人信息功能模块

  旅客个人信息管理的效果如图:

  图39前台个人信息修改

  3.2.6购票选座功能模块

  点击车票进入查询购票页面,如图:

  图40班车票查询

  输入始发地、目的地、日期查询车程信息。在这里使用的SQL语句:

  图41班车票查询sql

  通过条件查询出当日车程数据,封装成服务接口供控制层调用。最后前端通过ajax拿到数据完成列表显示。

  点击购票,效果如图:

  图42购票

  车程信息就都被读取在表单里面,我们确认信息无误后就要选座了。选座的效果如图:

  图43选座

  点击选座可以看到一个列表,但是其实如果你不点击购票,是没有选座信息的,应为选座是读取车程信息,车程信息关联了座位表,为了实现选座功能,我做了这么一个设计,使用关联ID的方式绑定座位,加入状态码来判断座位状态。比如,空座状态码为0,有人的状态码为1。我们点击购票,获得订单关联的空座位信息,当下单选座后操作数据库调整该单状态码为1,这样就实现了选座功能。

  点击付款,来实现下单。下单后,票数会减一张。而订单是有一个状态码来管理付款,如果付款成功,该订单应该是已支付然后订单数据会存到订单表,供旅客查看。

  3.2.7订单功能模块

  在主页点击订单后跳转订单页面,效果如图:

  图44订单列表

  图45退票

  可以看到列表里会有订单信息,而订单状态是已支付,说明已经付款成功。而退票操作测试将已支付的状态码更改为已退票的状态码,并将票数加一。

  图46订单状态改变

  4系统调试

  在完成系统后的软件测试工作是必不可少的,因为初代的项目可能存在许多Bug,为了保障系统质量,让系统可靠的运行迭代,系统调试是每个开发者都要去深入的一件事。我们通过对模块、页面的测试,以用户的角度去思考,把用户体验放在第一位是人性化系统设计的首要前提。所以我们要将系统的流畅性、模块功能的准确性、完整性测试,将出现的Bug修正。以确保用户体验。

  浏览器的适应性测试:使用当前应用市场热门的浏览器进行系统的适应性测试,如百度浏览器、QQ浏览器、windows自带浏览器。

  结果:只有windows自带浏览器无法显示。

  问题:验证错误,网页报错404,无法打开。

  原因:服务链接未签名

  解决办法:在IDEA设置调试器允许未签名的请求。

  系统流畅性测试:所有页面响应速度顺畅。

  后台系统模块功能测试:

  流程:

  1.注册后登陆,输入空值以及错误信息后,系统反馈错误页面。输入正确信息后,成功进入主页面。测试通过。

  2.点击班车、司机、旅客、旅程信息,显示信息列表;添加信息,提交成功,列表刷新;点击删除,更新列表,删除成功;点击修改,修改数据,返回后数据更新成功。班车、司机、旅客、旅程信息模块测试通过。

  前台系统模块功能测试:

  流程:

  1.注册登陆,测试通过。

  2.填写个人信息,保存。测试通过。

  3.在车票页,输入起始地、目的地、发车日期,点击查询,查询成功。点击购票,查看信息,信息无误通过,点击付款,付款成功,测试通过。

  4.单击订单信息的功能,订单列表展示无误,测试通过。

  5.选择订单,退票,退票成功。测试通过。

  测试结果:系统各功能模块测试无异常,数据交互准确无异常,页面跳转准确无异常,响应速度迅速无异常。运行稳定可靠,页面精简好看。