12306APP概念原型
1.序言
这篇博客旨在通过使用最近学习的软件工程上常用的需求分析及建模的方法,对工程实践项目————实现12306app Demo,进行简单需求分析、用例建模、业务领域建模,、数据建模,最终形成概念原型。
2.初步需求分析
简单粗暴的需求分析方法:头脑风暴
一个最基础的订火车票app应当具有以下的功能
-
账户系统,注册,登录功能,记录客户的信息,
-
提供车票查询,包括选取日期、始发地、目的地、只看高铁票、只看学生、给自己/别人定、预定、选座
-
订单查询系统,包括未完成订单、已完成(未出行、已出行)
-
支付页:点击直接支付成功
3.用例设计
简而言之,通过头脑风暴得出的结果,设计出了如下的用例图:

业务类图
-
建模流程
- 第一步,收集应用业务领域的信息。聚焦在功能需求层面,也考虑其他类型的需求和资料。 - 第二步,头脑风暴。列出重要的应用业务领域概念,给出这些概念的属性,以及这些概念之间的关系 - 第三步,给这些应用业务领域概念分类。分别列出哪些是类、哪些属性和属性值、以及列出类之间的继承关系、聚合关系和关联关系。 - 第四步,将结果用 UML 类图画出来。 -
业务说明
1. 用户注册:
功能描述: 用户注册个人账号
处理流程及要点: 用户填写个人基本信息并提交,向服务器发送数据验证用户信息合法性,如果不合法,则返回相应的错误提示信息;否则提示注册成功,将身份信息保存并传递给"我的"-"个人信息"view显示
输入: 账号,密码,性别,年龄,证件类型,证件号码等
输出:(1)成功:身份信息model (2) 失败:nil
2. 用户登录
功能描述: 用户登录火车售票平台
处理流程及要点: 用户输入账号密码并提交,向服务器发送数据进行验证,如果通过则进入主页面;否则登录失败,并返回相应信息
输入: 账号名,密码
输出:(1)成功:登录成功 (2) 失败:nil
3. 日期选择
功能描述: 用户选择查询车票日期
处理流程及要点: 用户点击主面板日历label,进入日历落地页、选择日历、点击日期则返回日期、并在主面板显示日期、日期数据由本地处理
输入: 点击动作
输出: 日期model
4. 车站选择
功能描述: 用户选择始发地、目的地
处理流程及要点: 用户点击主面板车站label,进入车站选择落地页,向服务器发送请求获取车站信息,将车站列表展示、用户选择车站然后返回
输入: 点击动作
输出: 车站信息model
处理流程及要点: 用户点击主面板车站
5. 查票
功能描述: 普通用户查询车票
处理流程及要点: 用户输入筛选信息,点击查询,向服务器发送数据,得到车票信息,展示出车票列表
输入: 起点站,终点站,日期
输出: 车票信息列表
6. 购票
功能描述: 普通用户购买车票
处理流程及要点: 用户点击列表内的车票,服务器判断出票条件进行出票,成功出票则生成订单信息
输入: 车票model
输出: (1)成功:车票信息,包括车次,买票人信息,始发站,终点站,时间,座位号 (2) 失败:失败提示
- UML类图

4.数据建模
用户信息
| 字段名称 | 字段类型 | 字段描述 |
|---|---|---|
| id | long | ID |
| acount | string | 账号 |
| authority | int | 权限 |
| certificateNO | string | 证件号码 |
| certificateType | int | 证件类型 |
| mobilePhoneNO | string | 手机号码 |
| gender | int | 性别 |
| name | string | 姓名 |
| passwd | string | 密码 |
| info | string | 附加信息 |
日历
| 字段名称 | 字段类型 | 字段描述 |
|---|---|---|
| year | int | 年 |
| month | int | 月 |
| day | int | 日 |
| week | int | 星期 |
| lunarCalendar | string | 农历日期 |
| holiday | string | 节假日 |
| presellDay | int | 预售时长 |
车站表
| 字段名称 | 字段类型 | 字段描述 |
|---|---|---|
| normalStation | array | 所有车站集合 |
| hotStation | array | 热门城市车站集合 |
| searchHistory | array | 查询历史记录 |
ticket
| 字段名称 | 字段类型 | 字段描述 |
|---|---|---|
| ID | long | ID |
| arrivalStation | string | 到达车站 |
| startStation | string | 始发车站 |
| arrivalTime | string | 到达时间 |
| startTime | string | 始发时间 |
| trainNO | string | 车次 |
| carriageNO | int | 车厢号 |
| seatNO | int | 座位号 |
| price | int | 价格 |
| quantity | int | 余票量 |
订单
| 字段名称 | 字段类型 | 字段描述 |
|---|---|---|
| Id | long | ID |
| userInfo | user | 用户信息 |
| ticketInfo | ticket | 车票信息 |
| orderTime | string | 预定时间 |
| status | int | 订单状态 |
| info | string | 其他信息 |
5.概念原型
概念是人对能代表某种事物或发展过程的特点及意义所形成的思维结论。
概念原型是一种虚拟的、理想化的软件产品形式。
概念原型 = 用例 + 数据模型
结合以上给出的 3.用例设计 及 4.数据建模 可得到概念原型
概念原型的工作过程:
- 用户首先需要注册账号、输入规定的信息、登录账号
- 然后通过选择车站、日期查询车票信息
- 接着选择车票,或帮助他人选票,系统将自动安排座位,生成订单
- 订单可在一定时间内延迟支付,用户若点击支付,则完成支付
- 用户可根据订单页查询订单信息,可进入“我的”页修改信息、更换账号
浙公网安备 33010602011771号