火车票售票系统设计方案


一、软件结构特点

1.1设计模式

在工程实践中,我们选用MVC架构座位本次设计的架构。MVC中M、V和C所代表的含义如下:

  • Model(模型)代表一个存取数据的对象及其数据模型。在MVC架构下,模型用来封装核心数据和功能,它独立于特定的输出表示和输入行为,是执行某些任务的代码,至于这些任务以什么形式显示给用户,并不是模型所关注的问题。模型只有纯粹的功能性接口,也就是一系列的公开方法,这些方法有的是取值方法,让系统其它部分可以得到模型的内部状态,有的则是写入更新数据的方法,允许系统的其它部分修改模型的内部状态。
  • View(视图)代表模型包含的数据的表达方式,一般表达为可视化的界面接口。在MVC架构下,视图用来向用户显示信息,它获得来自模型的数据,决定模型以什么样的方式展示给用户。同一个模型可以对应于多个视图,这样对于视图而言,模型就是可重用的代码。一般来说,模型内部必须保留所有对应视图的相关信息,以便在模型的状态发生改变时,可以通知所有的视图进行更新。
  • Controller(控制器)作用于模型和视图上,控制数据流向模型对象,并在数据变化时更新视图。控制器可以使视图与模型分离开解耦合。在MVC架构下,控制器是和视图联合使用的,它捕捉鼠标移动、鼠标点击和键盘输入等事件,将其转化成服务请求,然后再传给模型或者视图。软件的用户是通过控制器来与系统交互的,他通过控制器来操纵模型,从而向模型传递数据,改变模型的状态,并最后导致视图的更新。

在售票系统中,Model层中存储着用户的个人信息,订票信息,列车调度信息和出售信息等等;View层中是售票系统的前端部分;Controller层中控制着车票的售票管理等信息。在这种架构下,前后端可以很好地分离出来,通过控制器链接模型和视图,让模型层能专注于处理数据的存储,视图层能专注于处理前端方面的业务,让控制器专注于处理数据,并通过制定的方式传输到视图。

 

 1.2软件架构风格与策略

在工程实践中,我们选用B/S风格,即浏览器/服务器模式。

 

B/S的优点如下:

1)客户端无需安装,有Web浏览器即可。
2)BS架构可以直接放在广域网上,通过一定的权限控制实现多客户访问的目的,交互性较强。
3)BS架构无需升级多个客户端,升级服务器即可。

 

二、接口设计

1、注册接口:

{
    "username":"",
    "password":""
}
返回:
{
    "code":"", // 消息代码
    "msg": "", // 消息 说明是否注册成功
    "data":{} // 这里是无
}

2、登录接口:

{
    "username":"",
    "password":""
}

返回:

{
    "code":"", // 消息代码
    "msg": "", // 消息
    "data":{
        "token":""
    }
}

3、查询余票请求:

{
    "startCity":"", // 城市名或站名
    "endCity":"",
    "date":"",
    "type":"" // 0 全类, 1高铁动车票  
}

返回:

{
    "code":"",
    "msg":"",
    "data":{
        "list": [
           {
               "train_number":"", // 列次 字符串
                "start_station":"",
                "end_station":"",
                "start_time":"", // 出发时间
                "arrival_time":"", // 达到时间
                "start_station_type":"", //起始站类型, 是否始发站还是过站, 0, 1
                "end_station_type":"", //到达站类型, 是否是过站还是终点站, 1,2
                "train_type":"", // 列车类型, 
                "business_seats_number": , // 商务座余数
                "first_seats_number": , // 一等座
                "second_seats_number": , // 二等座
                "no_seats_number": , //无座
                "hard_seats_number": , // 硬座数量
                "hard_berth_number": ,// 硬卧
                "soft_berth_number": ,// 软卧
                "senior_soft_berth_number": , // 高软
           }     
        ]
    }
}

4、购票请求:

{
    "username":"",//用户名
    "token":"",//验证信息
    "date":"",//发车日期
    "train_number":"",//车次
    "start_station":"",//上车站
    "end_station":"",//下车站
    "passengers":{//乘客数据
        "passenger_seq":"",//乘客序号
        "seat_class":"",//座位等级
        "seat_type":""//座位类型
    }
}

返回:

{
    "code":"",//返回代码
    "msg":"",//返回的消息
    "data":{//返回的数据
        "order_outer_id":"",//订单外部
        "train_number":"",//车次号
        "start_station":"",//上车站
        "start_time":"",//列车在上车站发出时间
        "end_station":"",//下车站
        "arrival_time":"",//列车到达下车站时间
        "duration":"",//中间用时
        "start_time":"",//发车日期
        "total_money":"",//总金额
        "tickets":{//乘客的票据信息
            "passenger_name":"",//乘车人姓名
            "passenger_id":"",//乘车人身份证号
            "carriage_number":"",//车厢号
            "seat":"",//座位号
            "money":"",//票价
        }
    }
}

  

三、软件系统概念原型的各类视图

1、分解视图

 

 

2、执行视图

 

 

3、用例视图

用户用例视图:

 

管理员用例视图:

 

4、UML图

 

5、实现视图

我们的项目根据模块进行分包,最终的实现视图如下:

四、数据库设计

1、用户表:

变量名称 变量类型 备注
id varchar 账户名
password varchar 密码
name varchar 姓名
nickname varchar 昵称
credential_type varchar 证件类型
credential_number varchar 证件号
telephone varchar 手机号
member varchar 会员信息

 

2、车次表:

变量名称 变量类型 备注
 train_id  int 车次编号
 train_number varchar 车次号
 train_identification varchar  列车编号
 begin_place varchar  起点
 end_place varchar  终点
 begin_time datetime 开车时间
 end_time datetime 到达时间

 

3、列车表:

变量名称 变量类型 备注
train_identification varchar 列车编号
train_type varchar 列车类型
carriage_sum varchar 车厢数量
carriage_type varchar 列车状态

 

4、车厢表:

变量名称 变量类型 备注
carriage_id varchar 车厢编号
train_identification varchar 列车编号
carriage_number int 车厢号
carriage_type varchar 车厢类型
seat_number int 车厢座位数
seat_price double 车厢座位价格系数

 

5、座位表:

变量名称 变量类型 备注
seat_id varchar 座位编号
carriage_id varchar 车厢编号
train_identification varchar 列车编号
seat_number varchar 座位号
seat_use varchar 座位使用情况

 

6、站点表:

变量名称 变量类型 备注
station_id varchar 站点编号
station_name varchar 站点名称
train_id varchar 车次编号
begin_time datetime 列车到站时间
end_time datetime 列车出发时间

 

7、订单表:

变量名称 变量类型 备注
order_id varchar 订单编号
order_time varchar 订单时间
order_person varchar 订单联系人
seat_id varchar 订单座位号
order_status varchar 订单状态

 

 五、运行环境和技术选型

开发语言:Golang

后端框架:Gin

数据库:Mysql

缓存技术:Redis

部署缓解:Linux+Docker

 

 六、系统概念原型核心工作机制

用户可以通过系统注册自己的账户,然后登录自己的账户,完善个人信息。在系统首页选择出发城市、到达城市和日期,然后在筛选出的车次中选择一个具体的车次,选择座位,然后系统生成订单,用户支付订单。用户可以通过订单页面选择改签或退票。

管理员可以登录系统,增加或删除某天的车次、某种车型,还可以增加和删除某个具体的站点及站点信息。

 

 
 
 
 
 
 
 
 
 


免责声明!

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



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