火车售票软件系统的设计方案


一、项目介绍

  项目是模仿实现12306的部分功能,主要是售票系统的实现。这个系统的面向两类人,一是用户,二是系统管理员,其中系统设计主体部分是车次车票等信息的存储方式以及用户与系统的交互对后台数据的影响。车次信息与车票信息以一种什么样的形式相互关联尤其重要,用户做出自己的行为后(购买车票,查看车票订单信息,退票,改签等)怎么影响着后台数据是本次博客讨论的重点。

二、系统架构

  本系统的设计架构是MVC架构,即Model-View-Controller(模型-视图-控制器),其中Model代表一个存储数据的对象及数据模型;View代表模型包含的数据的表达方式,一般表达为可视化的界面接口;Controller作用于模型和视图之上,控制数据流向模型对象,并在数据变化时更新视图。控制器可以使视图和模型分离开解耦合。

  

 

在本项目中,Model保存一些数据模型,如用户的信息,用户的订单信息,系统中的车次信息,车次的对应车票信息,系统中的总的订单信息等等;控Controller则处理用户做出行为后后端数据信息的变更,还有前端数据信息可视化的变更;View则是软解界面的可视化,主要是面向用户设计的UI。可以看到这种架构的一个显著的好处就是前后端分离,数据模型和视图的关联是要通过控制器来进行,模型只要关心怎么让别人取值,怎么根据控制器的信息修改内部状态,不用关系它的数据怎么展现出来;视图也不用受限于数据模型,而且同一个数据模型可以对应多个视图,比如说用户的历史订单信息里会显示所有的订单,而当前订单信息里只显示当前生效的车票信息的等等。

 

三、接口API

接口名称 接口功能 传入参数 返回信息
用户注册  为新用户注册一个账号  用户名,密码  注册成功或者失败的信息
用户登录  使已有账号的用户登录系统 账号,密码,验证码  登录是否成功 
用户个人信息  用户查看个人信息  无 用户个人信息的数据结构指针
修改个人信息  修改个人信息        修改字段, 修改信息 修改是否成功 
查看订单  用户查看自己的订票信息   无  用户订单信息数据结构指针
查看车次信息  查看车次信息  出发站,终点站  车次信息数据结构指针
查看车票信息  查看车票的相关信息  车次信息数据结构指针 车票信息数据结构指针 
订车票  用户购买车票 车票信息数据结构  购买是否成功的信息 
退票  用户退票 订单信息数据结构指针   是否退票成功
改签  用户改签 订单信息数据结构指针  是否改签成功

 

四、软件系统概念原型的不同视图

1. 分解视图

  分解是构建软件架构模型的关键步骤,分解视图也是描述软件架构模型的关键视图,一般分解视图呈现为较为明晰的分解结构(breakdown structure)特点。分解视图用软件模块勾划出系统结构,往往会通过不同抽象层级的软件模块形成层次化的结构。

                                            

 

 

 2. 执行视图

  执行视图展示了系统运行时的时序结构特点,比如流程图、时序图等。执行视图中的每一个执行实体,一般称为组件(Component),都是不同于其他组件的执行实体。如果有相同或相似的执行实体那么就把它们合并成一个。执行实体可以最终分解到软件的基本元素和软件的基本结构,因而与软件代码具有比较直接的映射关系。在设计与实现过程中,我们一般将执行视图转换为伪代码之后,再进一步转换为实现代码。

  从用户使用的角度

                                            

  从软件系统模块执行的角度:实线表示用户在ui界面执行了某个操作后这个操作在软件系统中的影响的传递过程, 虚线表示软件系统对用户操作的响应的过程。

 

 

 3. 工作分配视图

  工作分配视图将系统分解成可独立完成的工作任务,以便分配给各项目团队和成员。工作分配视图有利于跟踪不同项目团队和成员的工作任务的进度,也有利于在个项目团队和成员之间合理地分配和调整项目资源,甚至在项目计划阶段工作分配视图对于进度规划、项目评估和经费预算都能起到有益的作用。

                                                

 

 五、数据库设计

 

用户账户表

字段 类型 注释
id unsigned int 主键
username varchar 用户名称
password varchar 口令
id_0 varchar 身份证号
phone varchar 手机号
state unsigned int 账号状态
createtime timestamp 创建时间
deletetime timestamp 删除账户时间

添加乘客表(联系人表)

字段 类型 注释
id unsigned int 乘客id
id_0 varchar 身份证号
phone varchar 手机号
user_id unsigned int 所属用户
state unsigned int 状态

订单表

字段 类型 注释
order_id unsigned int 订单id(主键)
id unsigned int 联系人id(外键)
outer_id unsigned int 对外订单号(如果用支付宝支付,会生成支付宝订单号)
cost varchar 金额
ticket_id unsigned int 车票表id

车站表

字段 类型 注释
station unsigned int 车站id
name varchar 车站名称
city  varchar 城市名称

列车表

字段 类型 注释
train_id unsigned int 列车id
start_station unsigned int 出发车站id
end_station unsigned int 目的车站id
train_type unsigned int 列车类型id

列车类型表

字段 类型 注释
train_type_id unsigned int 列车类型id
code char 类型字母
seat_num unsigned int 座位数

车票表

字段 类型 注释
ticket_id unsigned int 车票id
user_id unsigned int 购买人
start_station unsigned int 出发站
end_station unsigned int 目的站
start_time timestamp 出发时间
train_id unsigned int 列车id
passenger_id unsigned int 乘客id
state unsigned int 状态

 


六、源代码的目录文件结构

|---src
   |---main
        |---model 数据库中的数据模型
        |---service 业务逻辑
        |---util 主要用于处理对车票的操作
        |---view 视图
        |---resources 配置文件
   |---test 测试文件
        |---java
        |---resources

七、项目概念原型的核心工作机制

用户可以不登陆进入系统,也可以注册后登录系统,不登录就不显示个人信息。

可以在主页面根据首末地点查询车票,或者点击车次汇总信息查看车站对用车次。

用户可以在查询车票后购买车票,然后可以在个人的订单信息中查看或者退票改签。

用户可以添加乘客,可以帮同行的人买车票。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM