---
# System prepended metadata

title: lab7

---

# 详细设计文档
## 文档修改历史

| 修改人员 | 日期 | 变更原因 | 版本号 |
| -------- | -------- | -------- | -------|
| 刘子恒   | 2023.6 | 初稿（大概框架） | V1.0 |
| 金语盼   | 2023.6 | 画图、体系结构部分 | V2.0 |
| xxx | 2023.7 | 根据框架代码修改 | V3.0 |


## 1. 引言
### 1.1 编制目的
本报告详细完成对l23o6在线铁路购票平台系统的详细设计，达到指导详细设计和开发的⽬的，同
时实现和测试⼈员及⽤户的沟通。
本报告⾯向开发⼈员、测试⼈员及最终⽤户⽽编写，是了解系统的导航。
### 1.2 词汇表
|词汇名称|词汇含义|备注|
|---|---|---|
|l23o6|在线铁路购票平台|无|
### 1.3 参考资料 
(1) IEEE标准

(2) 《软件工程与计算（卷二）软件开发的技术基础》

(3) 需求文档
## 2. 产品概述

参考铁路售票系统的用例文档和软件需求规格说明文档中对产品的概括描述
## 3. 体系结构设计概述

参考铁路售票系统的概要设计文档中对体系结构设计的概述
## 4. 结构视角
### 4.1 业务逻辑层的分解
#### 4.1.1 userbl模块
（1）模块概述

userbl模块承担的需求参见需求规格说明文档功能需求及相关非功能需求


（2）模块内部类的接口规范

Service和data层的接口规范在体系结构文档中已经给出，这里给出Controller层的接口规范。

|提供的服务（供接口）|语法|前置条件|后置条件|
|---|---|---|---|
|UserController.login|public CommonResponse<> login(@Valid @RequestBody LoginRequest request)|已创建一个UserService对象，且输入符合输入规则|调用UserService的login方法|
|UserController.register|public CommonResponse<> register(@Valid @RequestBody RegisterRequest request)|已创建一个UserService对象，且输入符合输入规则|调用UserService的register方法|
|UserController.logout|public CommonResponse<> logout()|已创建一个UserService对象|调用UserService的logout方法|
|UserController.userInfo|public CommonResponse<> userInfo()|已创建一个UserService对象，且输入符合输入规则|调用UserService的userInfo方法|
|UserController.editInfo|public CommonResponse<> editInfo(@Valid @RequestBody EditUserInfoRequest request)|已创建一个UserService对象，且输入符合输入规则|调用UserService的editInfo方法|

需要的服务（需接口）

|服务名|服务|
|---|---|
|UserController.login|客户登陆|
|UserController.register|客户注册|
|UserController.logout|客户登出|
|UserController.userInfo|获取某个用户的信息|
|UserController.editInfo|更改某个用户的信息|


#### 4.1.2 trainbl模块
（1）模块概述

trainbl模块承担的需求参见需求规格说明文档功能需求及相关非功能需求。

（2）模块内部类的接口规范

Service和data层的接口规范在体系结构文档中已经给出，这里给出Controller层的接口规范。

|提供的服务（供接口）|语法|前置条件|后置条件|
|---|---|---|---|
|TrainController.listTrains|public CommonResponse<> listTrains(@Valid ListTrainRequest request)|已创建一个TrainService对象，且输入符合输入规则|调用TrainService的listTrain方法|
|TrainController.getTrain|public CommonResponse<> getTrain(@PathVariable Long trainId)|已创建一个TrainService对象，且输入符合输入规则|调用TrainService的getTrain方法|
|TrainController.addTrain|public CommonResponse<> addTrain(@Valid @RequestBody AddTrainRequest request)|已创建一个TrainService对象|调用TrainService的addTrain方法|
|TrainController.listTrainsAdmin|public CommonResponse<> listTrainsAdmin()|已创建一个TrainService对象，且输入符合输入规则|调用TrainService的listTrainsAdmin方法|
|TrainController.getTrainAdmin|public CommonResponse<> getTrainAdmin(@PathVariable Long trainId)|已创建一个TrainService对象，且输入符合输入规则|调用TrainService的getTrainAdmin方法|
|TrainController.changeTrain|public CommonResponse<> changeTrain(@PathVariable Long trainId, @Valid @RequestBody AddTrainRequest request)|已创建一个TrainService对象，且输入符合输入规则|调用TrainService的changeTrain方法|
|TrainController.deleteTrain|public CommonResponse<> deleteTrain(@PathVariable Long trainId)|已创建一个TrainService对象，且输入符合输入规则|调用TrainService的deleteTrain方法|

需要的服务（需接口）

|服务名|服务|
|---|---|
|TrainController.listTrains|获取所有列车|
|TrainController.getTrain|获取某辆列车|
|TrainController.addTrain|添加列车|
|TrainController.listTrainsAdmin|管理员身份获取所有列车|
|TrainController.getTrainAdmin|管理员身份获取某辆列车|
|TrainController.changeTrain|更改某辆列车信息|
|TrainController.deleteTrain|删除列车|


#### 4.1.3 stationbl模块
（1）模块概述

stationbl模块承担的需求参见需求规格说明文档功能需求及相关非功能需求。

（2）模块内部类的接口规范

Service和data层的接口规范在体系结构文档中已经给出，这里给出Controller层的接口规范。

|提供的服务（供接口）|语法|前置条件|后置条件|
|---|---|---|---|
|StationController.listStartions|public CommonResponse<> listStations()||调用StationController中的listStartions方法|
|StationController.getStation|public CommonResponse<> getStation(@PathVariable Long stationId)||调用StationController中的getStation方法|
|StationController.addStation|public CommonResponse<> addStation(@Valid @RequestBody AddStationRequest request)||调用StationController中的addStation方法|
|StationController.editStation|public CommonResponse<> editStation(@PathVariable("stationId") Long stationId, @Valid @RequestBody AddStationRequest request)||调用StationController中的editStation方法|


#### 4.1.4 routebl模块
（1）模块概述

routebl模块承担的需求参见需求规格说明文档功能需求及相关非功能需求。

（2）模块内部类的接口规范
Service和data层的接口规范在体系结构文档中已经给出，这里给出Controller层的接口规范。

|提供的服务（供接口）|语法|前置条件|后置条件|
|---|---|---|---|
|RouteController.addRoute|public CommonResponse<> addRoute(@Valid @RequestBody AddRouteRequest request)||调用RouteController中的addRoute方法|
|RouteController.getRoutes|public CommonResponse<> getRoutes()||调用RouteController中的getRoutes方法|
|RouteController.getRoute|public CommonResponse<> getRoute(@PathVariable("routeId") Long routeId)||调用RouteController中的getRoute方法|
|RouteController.editRoute|public CommonResponse<> editRoute(@PathVariable("routeId") Long routeId, @Valid @RequestBody AddRouteRequest request)||调用RouteController中的editRoute方法|

#### 4.1.5 orderbl模块
（1）模块概述

orderbl模块承担的需求参见需求规格说明文档功能需求及相关非功能需求。

（2）
Service和data层的接口规范在体系结构文档中已经给出，这里给出Controller层的接口规范。

|提供的接口（供接口）|语法|前置条件|后置条件|
|---|---|---|---|
|OrderController.createOrder|public CommonResponse<> createOrder(@Valid @RequestBody CreateOrderRequest request)||调用OrderController中的createOrder方法|
|OrderController.listOrders|public CommonResponse<> listOrders()||调用OrderController中的listOrders方法|
|OrderController.getOrder|public CommonResponse<> getOrder(@PathVariable("orderId") Long orderId)||调用OrderController中的getOrder方法|
|OrderController.patchController|public CommonResponse<> patchOrder(@PathVariable("orderId") Long orderId, @Valid @RequestBody PatchOrderRequest request)||调用OrderController中的patchController方法|

# 5. 依赖视角