1.架构设计

1. 系统架构选型

从软件架构角度,本系统采用了MVC分层的设计思想,各层级只需要关注本身的设计,而不需要关注其他层级的内部细节,层与层之间定义了良好的交互方式。具体而言,本系统可以分为三个水平层,分别是展示层,业务服务层和数据库层;系统总体结构如下图所示。

2. 软件架构风格

本系统采用浏览器-服务模式(B/S模式),该模式是Web兴起后的一种网络结构模式。相比较传统的C/S模式,B/S结构的重要特征就是分布性强、开发简单、共享性强、总体拥有费用低。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。

BS架构优势总结如下:

● 分布性强,客户端零维护。只需有网络、浏览器,能够随时随地实行查询、浏览等业务处理。

● 业务扩展简单便利,通过添加网页就可以添加服务器功能。

● 维护简单便利,只须要更改网页,就可以完成全部用户的同步更新。

● 开发简单,共享性强。

2. 业务概念原型

1. 用例设计

用户主要功能:用户注册、用户信息维护、查找车票、购买车票、改签及退票

后台管理员主要功能:列车信息维护、站点信息维护、车次设置

2. UML类图设计

根据业务需求描述,结合面向对象的思想,抽象出类、属性、方法,同时确定概念之间的关系,构建UML类图:

3. 数据库设计

采用关系数据库mysql进行设计

(1)用户表

字段名称

字段类型

字段描述

userId

int

主键

account

varchar

账号

password

varchar

密码

name

varchar

姓名

sex

varchar

性别

phonenum

number

电话号码

certificate_type

varchar

证件类型

certificate_num

number

证件号码

authority

varchar

权限

info

varchar

其它信息

(2)角色表

字段名称

字段类型

字段描述

roleId

int

主键

role_type

varchar

角色类型

authority

varchar

权限

descr

varchar

描述

(3) 用户角色关联表

字段名称

字段类型

字段描述

urId

int

主键

userId

int

用户主键【外键】

roleId

int

角色主键【外键】

(4) 车次表

字段名称

字段类型

字段描述

trainSequenceId

int

主键

trainNum

number

车次号

trainId

int

列车号

start_station

varchar

起点站

end_station

varchar

终点站

launch_time

datetime

启动时间

(5) 列车表

字段名称

字段类型

字段描述

trainId

int

主键

trainName

varchar

列车名称【外键】

type

varchar

列车类型

carriage_num

int

车厢数

status

int

状态

(6) 车厢表

字段名称

字段类型

字段描述

carriageId

int

主键

trainId

int

列车主键【外键】

carriage_number

int

车厢号

carriage_type

int

车厢类型

price_coef

int

价格系数

(7) 座位表

字段名称

字段类型

字段描述

seatId

int

座位主键

carriageId

int

车厢主键【外键】

trainId

int

列车主键【外键】

seat_number

int

座位号

bitmap

int

座位站点状态位图

(8) 站点表

字段名称

字段类型

字段描述

stationId

int

站点主键

name

varchar

站点名称

descr

varchar

站点级别

(9) 车次站点表

字段名称

字段类型

字段描述

train_sta_Id

int

车次站点主键

trainSequenceId

int

车次主键【外键】

station_sequence

int

站点序列

arrive_time

datetime

到达时间

lanch_time

datetime

启动时间

(10) 订单表

字段名称

字段类型

字段描述

orderId

int

订单主键

userId

int

用户主键【外键】

seatId

int

座位主键【外键】

order_time

datetime

时间

status

varchar

订单状态

descr

varchar

订单描述

(11) 字典表

字段名称

字段类型

字段描述

dictionaryId

int

字典表主键

attributes

varchar

属性名称

value

varchar

属性取值

4. 分解视图

针对业务模块进行分解

5. 实现视图

项目的目录结构设计

本项目采用MVC分层架构,其中,主流的目录结构设计是按照controller、service、dao层来进行分包。然而,考虑到本项目业务模块较少,且Go web中忌讳包名后缀重复(例如import service.userService),我们根据业务模块进行分包,如图所示:

6. 执行视图

时序图:以用户购票业务为例

7. 部署视图

部署图描述的是系统运行时的结构,展示了硬件的配置及其软件如何部署到网络结构中。

一个系统模型只有一个部署图,部署图通常用来帮助理解分布式系统。部署视图有助于设计人员分析一个设计的质量属性,比如软件处理网络高并发的能力、软件对处理器的计算需求等。

8. API接口

1. 用户注册:

功能描述:用户注册个人账号

处理流程及要点:用户填写个人基本信息并提交,系统验证用户信息合法性,如果不合法,则返回相应的错误提示信息;否则提示注册成功,向表中插入数据

输入:账号,密码,性别,年龄,证件类型,证件号码

输出:(1)成功:注册成功 (2) 失败:失败原因

2. 用户登录

功能描述:用户登录火车售票平台

处理流程及要点:用户输入账号密码并提交,系统进行验证,如果通过则进入主页面;否则登录失败,并返回相应信息

输入:账号名,密码

输出:(1)成功:登录成功 (2) 失败:失败原因

3. 查票

功能描述:普通用户查询车票

处理流程及要点:用户输入筛选信息,系统返回满足条件的查找结果

输入:起点站,终点站,(可选项:时间,座次,车次)

输出:(1)成功:返回查找结果 (2) 失败:返回失败原因

4. 购票

功能描述:普通用户购买车票

处理流程及要点:用户输入筛选信息进行查票,选择车票购买,系统判断出票条件进行出票,成功出票则生成订单信息

输入:车次,座位号

输出:(1)成功:车票信息,包括车次,买票人信息,始发站,终点站,时间,座位号 (2) 失败:失败原因

5. 改签、退票

功能描述:普通用户改签车票或退票

处理流程及要点:用户选择要改签/退票的车票,系统重置该车票的信息及状态

输入:车次,座位号,若改签则还需输入改签时间

输出:(1)成功:返回车票信息或状态 (2) 失败:返回失败原因

6. 站点信息维护

功能描述:管理员用户维护站点信息

处理流程及要点:管理员用户维护站点表,主要包括增删改查等操作

输入:增删改查相应参数

输出:(1)成功:成功信息 (2) 失败:失败原因

7. 列车信息维护

功能描述:管理员用户维护列车信息

处理流程及要点:管理员用户维护列车表、车厢表、座位表,主要包括增删改查等操作

输入:增删改查相应参数

输出:(1)成功:成功信息 (2) 失败:失败原因

8. 车次设置

功能描述:管理员用户添加车次信息

处理流程及要点:管理员用户输入车次信息,系统进行判断和验证,并执行对应业务逻辑

输入:列车ID,始末站点,中途站点,各站点区间票价,发车日期和时间

输出:(1)成功:该车次信息 (2) 失败:失败原因

9. 技术选型

1. 开发技术

编程语言:GoLang

后端框架:Gin

持久化层:Gorm,Mysql

缓存层:Redis

部署环境:Linux,Docker

2. 设计模式

单例模式:数据库连接池。创建数据库连接是一个很耗时的操作,也容易对数据库造成安全隐患。所以,在程序初始化的时候,集中创建多个数据库连接,并把他们集中管理,供程序使用,可以保证较快的数据库读写速度,还更加安全可靠。

管道模式:消息中间件。通过中间件实现业务的解耦,在代码实现时,我们只需要关注各个阶段的实现,最后通过管道方式拼接起来。

享元模式:运用共享技术来有效地支持大量细粒度对象的复用,比如线程池。

10. 系统概念原型工作机制

以用户注册和查票为例进行说明

用户注册:用户填写注册信息【用户数据模型:账号,密码,姓名,性别,电话号码,证件号码...】,系统进行校验,并返回相应信息。

查票:用户输入或选择筛选条件,系统返回车票信息【车票数据模型:车次号,座位号,起点站,终点站,发车时间,到达时间,票价...】

mysql售票系统设计文档_售票系统设计方案相关推荐

  1. mysql数据库更改文档_更改MySQL数据库目录位置

    更改MySQL数据库目录位置 MySQL默认的数据文档存储目录为/var/lib/mysql.假如要把MySQL目录移到/home/data下需要进行下面几步: 1.home目录下建立data目录 c ...

  2. 基于java与mssql的合同管理系统设计文档_合同管理系统的设计与实现

    合同管理系统的设计与实现 合同管理系统的设计与实现 摘 要 本文描述了一个基于web的同管理系统的开发过程,依据面向对象程序设计的开发理念,本系统选用Browser/Server(B/S)模式搭建,并 ...

  3. mysql存储word文档_使用MySQL存储和检索word文档

    我需要使用Servlet将MS Word文档存储和检索到MySQL 5.1中.我有上传文件的代码,但我不知道我可以加入表格.我已经在我要插入.doc文件的字段中使用了BLOB. 这是我上传文件的代码片 ...

  4. 将mysql 导出word文档_将数据库的内容生成WORD文档

    毕业设计需要从库里取纪录生成word文档,我找了半天,主要有这么几种方法: 1.改头,就是象excel似的Response.Buffer = TRUE Response.ContentType = & ...

  5. java支付系统设计文档_中国邮政储蓄银行网上支付平台商户开发指南Java版V2.1

    网上支付平台商户开发指南 第12页,共76页 上图中一共有6个条目,包括生产用的网关证书(paygate_cert )和生产证书链(operation_ca, operation_ca2, polic ...

  6. mysql怎么设计抽奖表_抽奖系统设计方案

    软件结构特点 软件架构风格和策略 本系统主要是对数据库进行操作,所以对于本系统的架构风格和策略采用CURD的比较适合. CRUD 是创建(Create). 读取(Read).更新(Update)和删除 ...

  7. 计算机毕业设计Java电影售票系统(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java电影售票系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java电影售票系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 开发语 ...

  8. 计算机毕业设计Python+django的火车票售票系统(源码+系统+mysql数据库+Lw文档)

    项目介绍 随着现代火车售票管理的快速发展,可以说火车售票管理已经逐渐成为现代火车售票管理过程中最为重要的部分之一.但是一直以来我国传统的火车售票管理并没有建立一套完善的行之有效的火车售票管理系统,传统 ...

  9. 计算机毕业设计Java某日杂商店进销存管理系统设计(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java某日杂商店进销存管理系统设计(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java某日杂商店进销存管理系统设计(源码+系统+mysql数据库+lw文档) 本源码技术栈 ...

最新文章

  1. 数据结构之【栈】的基本操作C语言实现
  2. 手把手教你重构乱糟糟的代码
  3. About Firefox
  4. python3爬虫系列教程-Python3爬虫视频学习教程
  5. 中国锂电池行业运营态势分析与投资前景研究报告2022-2028年版
  6. OpenSUSE下支持托盘的邮件客户端Sylpheed
  7. 基于uniapp开发的适用于微信小程序,头条小程序
  8. 逆向project第003篇:跨越CM4验证机制的鸿沟(上)
  9. 二分查找算法(Java版)
  10. 科立捷默认频率_TETRA对讲机简介
  11. storm和vgj vgj_风暴很忙:VGJ.Storm新阵容亮相DAC预选赛
  12. 设计模式----仲裁者模式(Mediator Pattern)例题
  13. 人工智能 α-β剪枝
  14. R语言实战 input+结果——ROC曲线的绘制 auc 时量下曲线面积
  15. 开始读《C专家编程》
  16. Delphi线程同步
  17. 骨传导耳机优缺点?哪些骨传导耳机值得推荐
  18. Ensemble+GAN:对抗式生成网络遇上集成学习
  19. Allegro 17.4完整教学内容+视频
  20. 外星人Aurora R15 intel版本原厂win11系统带Support Assist OS Recevory恢复功能

热门文章

  1. C语言中用stop,C语言中It stop with signal SIGSEGV ,segmentation fault.解决方法
  2. Plugin ‘‘maven-dependency-plugin“ not found
  3. Js数组灵魂拷问之indexof 和sort
  4. jPlayer使用指南
  5. Exclusive or
  6. 我的一天我做主(Enjoy)- 1
  7. 知识图谱存储与查询:自然语言记忆模块(NLM)
  8. 2005年3月27日
  9. 产品与运营之冷启动期间种子用户运营
  10. APICloud云推送问题