一、项目介绍

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

二、系统架构

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

  

购票系统架构设计 火车票购票系统设计_购票系统架构设计

 

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

 

三、接口API

接口名称

接口功能

传入参数

返回信息

用户注册

 为新用户注册一个账号

 用户名,密码

 注册成功或者失败的信息

用户登录

 使已有账号的用户登录系统

账号,密码,验证码 

登录是否成功 

用户个人信息

 用户查看个人信息

 无

用户个人信息的数据结构指针

修改个人信息

 修改个人信息       

修改字段, 修改信息

修改是否成功 

查看订单

 用户查看自己的订票信息  

无 

用户订单信息数据结构指针

查看车次信息

 查看车次信息

 出发站,终点站

 车次信息数据结构指针

查看车票信息

 查看车票的相关信息 

车次信息数据结构指针

车票信息数据结构指针 

订车票

 用户购买车票

车票信息数据结构 

购买是否成功的信息 

退票

 用户退票

订单信息数据结构指针 

 是否退票成功

改签

 用户改签

订单信息数据结构指针

 是否改签成功

 

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

1. 分解视图

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

                                            

购票系统架构设计 火车票购票系统设计_数据结构_02

 

 

 2. 执行视图

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

  从用户使用的角度

                                            

购票系统架构设计 火车票购票系统设计_数据结构_03

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

购票系统架构设计 火车票购票系统设计_数据_04

 

 

 3. 工作分配视图

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

                                                

购票系统架构设计 火车票购票系统设计_购票系统架构设计_05

 

 五、数据库设计

 

用户账户表

字段

类型

注释

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

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

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

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

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

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