序言
本次工程实践的题目是设计一个类似12306的售票系统,运用高软课上所学,对改题目进行分析
需求分析
用户需求分析:
- 用户可以注册账号并登录12306客户端软件;
- 用户可以查看自己的相关信息,包括待出行订单、历史订单等;
- 用户还可以查看自己未支付的订单,和正在抢票的订单;
- 用户可以通过多种条件进行查询车票情况,比如起始站点、目的站点、时间和购票类型(高铁和学生票)这些信息来查询车次有无余票;
- 不仅可以查询余票,用户还可以通过出发地+目的地+时间查询相关的车次但是不显示余票、通过车次+时间查询该车次经过的车站和到达的时间、通过车站+时间查询当天在车站停留的车次
- 用户查询余票之后可以选择还有余票的车次,选择车位和乘车人然后支付票价进行购票
- 用户通过选择没有余票的车次来进行候补票
- 用户可以退票或者改签
用例建模
基于以上的需求分析,可以画出用例图
业务建模
简介
业务领域建模是开发团队用于获取业务领域知识的过程。因为软件工程师往往需要工作在不同的业务领域或者不同项目中,他们需要业务领域知识来开发软件系统。软件工程师往往来自不同的专业背景,这可能会影响他们对业务领域的认知。因此业务领域建模有助于开发团队获取业务领域知识形成统一的业务认知。
基本步骤
- 收集应用业务领域的信息。聚焦在功能需求层面,也考虑其他类型的需求和资料;
- 头脑风暴。列出重要的应用业务领域概念,给出这些概念的属性,以及这些概念之间的关系;
- 给这些应用业务领域概念分类。分别列出哪些是类、哪些属性和属性值、以及列出类之间的继承关系、聚合关系和关联关系;
- 将结果用 UML 类图画出来。
UML图
数据模型
由以上分析可得数据库表:
用户表
字段名 |
字段类型 |
字段描述 |
id |
int |
用户id |
username |
varchar |
用户名 |
password |
varchar |
密码 |
name |
varchar |
姓名 |
sex |
varchar |
性别 |
birthday |
datetime |
出生日期 |
telephone |
varchar |
手机号 |
email |
varchar |
邮箱 |
address |
varchar |
地址 |
identification_type |
varchar |
证件类型 |
identification_number |
varchar |
证件号 |
乘车人表
字段名 |
字段类型 |
字段描述 |
id |
int |
乘车人id |
name |
varchar |
乘车人姓名 |
identification_type |
varchar |
证件类型 |
identification_number |
varchar |
证件号码 |
passenger_type |
varchar |
乘客类型(成人、学生等) |
用户_乘车人表
字段名 |
字段类型 |
字段描述 |
id |
int |
用户_乘车人表id |
passengerid |
int |
乘车人id |
userid |
int |
用户id |
列车表
字段名 |
字段类型 |
字段描述 |
id |
int |
列车id |
traintypeid |
int |
列车类型id |
trainNumber |
int |
列车编号 |
start_stationid |
int |
始发站id |
dest_stationid |
int |
终点站id |
starttime |
datetime |
发车时间 |
arrivetime |
datetime |
到达时间 |
列车类型表
字段名 |
字段类型 |
字段描述 |
id |
int |
列车类型表id |
trainType |
string |
列车类型(动车、火车等) |
车厢表
字段名 |
字段类型 |
字段描述 |
id |
int |
车厢id |
carriageType |
varchar |
车厢类型 |
seatnumber |
int |
座位数量 |
列车_车厢表
字段名 |
字段类型 |
字段描述 |
id |
int |
列车_车厢表id |
trainid |
int |
列车id |
carriageid |
int |
车厢id |
carriagenumber |
int |
车厢编号,用于表示该车厢是列车的几号车厢 |
车站表
字段名 |
字段类型 |
字段描述 |
id |
int |
车站id |
stationname |
varchar |
车站名称 |
列车_车站表
字段名 |
字段类型 |
字段描述 |
id |
int |
列车_车站表id |
stationid |
int |
车站id |
trainid |
int |
列车id |
arrivetime |
datetime |
列车到达时间 |
starttime |
datetime |
列车发车时间 |
车票表
字段名 |
字段类型 |
字段描述 |
id |
int |
车票id |
trainid |
int |
该车票对应的列车id |
start_stationid |
int |
车票出发站id |
dest_stationid |
int |
车票目的站id |
starttime |
datetime |
开车时间 |
carriageid |
int |
车厢id |
seat |
int |
座位号 |
passengerid |
int |
乘车人id |
ticketstatus |
varchar |
车票状态 |
订单表
字段名 |
字段类型 |
字段描述 |
id |
int |
订单id |
userid |
int |
创建该订单的用户id |
ticketid |
int |
订单购买的车票id |
amountmoney |
float |
订单金额 |
createtime |
datetime |
创建时间 |
paytime |
datetime |
支付时间 |
orderstatus |
varchar |
订单状态(未支付、已支付..) |
总结
本文从用例建模、业务领域建模和数据模型的角度,分析了仿12306购票系统的需求。从这些分析中体会到了软件产品的概念原型。概念原型是一种虚拟的、理想化的软件产品形式。概念原型=用例+数据模型。在本文中得到了12306购票系统的概念原型。