基于SpringBoot的火车票售票管理系统设计

2024-04-28 06:37
无线互联科技 2024年5期
关键词:车次购票乘车

杨 晟

(湖南信息职业技术学院,湖南 长沙 410200)

0 引言

在人们的远程出行中,乘火车出行的交通方式一直占据着首要地位[1],随着铁路运输的发展,特别是高速铁路建设的发展,铁路的运输能力得到大幅提高,人们对铁路出行的依赖性日益增加[1]。购票作为乘客出行的前提,是决定乘客出行体验的重要因素[3]。

传统的车站窗口售票存在车票信息获取不便、购票费时费力等问题[4]。人们希望能方便省时地进行火车票的购票、退票及改签等操作,以便于能合理安排出行规划,满足快捷高效的出行需要。而手机等移动互联网设备的大规模普及,也为人们的在线购票创造了有利条件。相比于传统的售票方式,在线售票系统具有购票成本低、效率高、不受时间和空间限制等优点[5-7],能够帮助乘客实时了解余票情况,节约乘客的时间以及缓解人工售票窗口的压力。

本文设计了一个基于SpringBoot的在火车票售票管理系统。乘客可以方便快捷地进行车票的购买;管理员可以使用系统方便快捷地进行站点信息和车次信息的维护,实现对车票信息的统一管理。

1 需求分析

1.1 功能需求分析

系统总体功能有用户功能模块、站点功能模块、车次功能模块、车厢功能模块、车票功能块理、订单功能模块和乘车人功能模块7个部分。管理员可以执行对用户功能模块、站点功能模块、车次功能模块和车厢功能模块的管理操作;乘客可以进行购票、退票、改签、查询订单信息等操作。

1.2 安全需求

为了使系统能够有效防止非法访问、数据泄露和恶意攻击,必须对系统进行一系列安全性设置。首先,系统应能够对用户的身份进行验证,只有验证通过的用户才能访问系统。其次,系统对用户的操作权限进行控制,防止用户越权使用系统。再次,系统还应该采用参数化查询以及预编译SQL脚本等方式防止SQL注入。最后,系统还应能有效防止跨站脚本攻击(Cross-Site Scripting,XSS)和跨站请求伪造(Cross-Site Request Forgery,CSRF)等网络攻击。

2 系统功能设计与实现

2.1 系统功能设计

2.1.1 用户信息管理模块

用户共有2种不同的角色,分别是管理员和乘客。管理员角色编码为ADMIN,由系统拥有者在数据库中直接创建;乘客角色编码为PASSENGER,需要通过注册才能成为系统用户;管理员可以对用户信息进行维护,包含用户信息的冻结、封禁等功能。

2.1.2 站点信息管理模块

管理员可以对站点信息进行维护,包括添加站点信息、修改站点公告信息、查询站点信息、删除站点信息等操作。

2.1.3 车次信息管理模块

管理员可以对车次信息进行维护,包括对车次信息的添加、修改、查询和删除等操作。管理员在进行车次信息编辑时,可以为车次添加途经的所有站点信息;乘客在购票时,可以根据出发地和目的地查询所有途经的车次信息列表。

2.1.4 车厢信息管理模块

管理员可以对可售票车厢信息进行维护,包含对可售票车厢信息的添加、修改、查询和删除等操作,车厢信息包含不同座位类型的数量、空余座位数量,以此作为车票售票的依据。

2.1.5 乘车人信息管理模块

乘客在购票前需要先完善乘车人信息,包含对乘车人信息的添加、修改、查询和删除等操作,乘车人信息添加完成后即可为其购票。

2.1.6 订单信息管理模块

乘客具有订单的创建、查询、取消等功能,订单在支付前可以取消。创建订单后必须在0.5 h内进行支付,否则订单无效。

2.1.7 车票信息管理模块

车票信息管理包含购票、改签和退票功能。乘客在创建订单时可以同时选择多个乘车人进行车票选购。订单创建完成后,系统将为每个乘车人创建对应的车票信息,即购票成功。乘客还可以在截止时间前进行改签和退票。乘客选购火车票流程如图1所示。

图1 乘客选购火车票过程流程

2.2 安全性能设计

系统采用Spring Security来进行安全性控制。首先,系统通过RBAC模型建立用户、角色、权限的控制方式,将用户的操作权限限制在所需的最小范围内。然后通过注解@PreAuthorize标注所需的操作权限,以便判断用户是否能执行该操作。其次,Spring Security默认会对所有输出的内容进行自动HTML转义,通过将Cookie设置为httpOnly,可以防止通过JavaScript访问Cookie,从而减少XSS攻击的风险。Spring Security通过在表单提交时自动添加一个隐藏字段来验证CSRF令牌,以防止CSRF攻击。该令牌在用户登录时生成,存储在用户的session中。当表单提交时,该令牌将被检查。如果令牌不存在或与session中的令牌不匹配,请求将被拒绝。最后,系统使用MyBatis作为数据库访问层的ORM框架,采用参数化查询以及预编译方式来防止SQL注入,提高系统安全性。

2.3 数据库设计

本系统采用开源的MySQL数据库进行数据存储。数据表包含站点信息表、车次信息表、车厢信息表、车票信息表、订单信息表、乘车人信息表、用户信息表、权限信息表。

站点信息表(站点ID、站点名称、站点编码、所在省编码、所在市编码、所在区/县编码、详细地址、联系电话、站点级别、运营状态);车次信息表(车次ID、车次名称、列车编号、列车型号、始发时间、特等座数量、一等座数量、二等座数量、软卧数量、硬卧数量、软座数量、硬座数量、无座数量);车厢信息表(车厢域ID、车厢编码、车厢类型、特等座数量、一等座数量、二等座数量、软卧数量、硬卧数量、软座数量、硬座数量、无座数量、删除标志位、创建人ID、创建时间、修改人ID、修改时间);车票信息表(车票ID、订单ID、车次ID、车次编号、出发站点编码、出发站点名称、目的站点编码、目的站点名称、出发日期、车厢编码、座位类型、预计出发时间、预计到达时间、乘车人姓名、乘车人身份证号码、乘车人电话、价格);订单信息表(订单ID、订单编号、乘客ID、总价、订单状态);乘车人信息表(乘车人ID、乘车人姓名、乘车人性别、乘车人身份证号码、乘车人电话);用户信息表(用户ID、用户名、密码、昵称、性别、联系电话、邮箱、角色编码);权限信息表(角色编码、权限编码)。系统的E-R如图2所示。

图2 系统E-R

3 结语

本文设计了一款火车票售票系统,利用信息化技术解决铁路出行高峰一票难求的问题,能够有效实现乘客方便快捷地选购火车票、节约出行时间、实现快捷出行的需求,还能减少车站人工售票窗口的压力,减少乘客购票平均等待时间,提升铁道集团服务质量,节约人力成本。同时,系统使用Spring Security进行访问权限控制,确保安全。

猜你喜欢
车次购票乘车
ATS 车次窗显示方法的研究
不同的购票方法
调度集中系统车次号技术的研究
动车所车次号处理逻辑存在问题分析与对策
这一次优步乘车,让我感动了
直击痛点的“候补购票”可多来一些
铁路候补购票服务扩大到全部列车
乘车
CTC系统自动变更折返车次号功能的实现
小淘气乘车