XX 建模练习 要求:
- 练习文档编写
- 选择一个你喜欢的 移动App 或 其中某业务
- 参考 Asg_RH 文档格式 编写软件描述
- 文档要包含一个业务的完整过程
- 建模要求包括(用例图、XX业务或用例的活动图、XX领域模型、XX对象的状态图、XX场景的系统顺序图与操作协议)
- 建模者答案:
- 收集建模者答案URL
- 建模者不能是本团队成员(至少有一个答案)
- 给建模者给出评价与建议
一.用例图
二.业务建模流程图
三.领域模型
四.建立订单的状态图
五.下单及支付的系统顺序图
契约1:填写身份信息
- 操作:setIdentityInfo()
- 交叉引用:
- 前置条件:用户已选择具体的车次,坐席种类等
- 后置条件:
- 身份信息被关联到该订单中
契约2:填写取票方式
- 操作:selectGetTicketWay()
- 交叉引用:用例:预定车票
- 前置条件:用户已选择具体的车次,坐席种类等
- 后置条件:
- 取票方式被关联到该订单中
契约3:勾选其他产品
- 操作:SelectOtherProducts()
- 交叉引用:用例:预定车票
- 前置条件:用户已选择具体的车次,坐席种类等
- 后置条件:
- 携程系统返回其他产品供用户选择,若用户选择,则该产品关联到订单中
契约4:提交订单
- 操作:SubmitOrder()
- 交叉引用:
- 前置条件:用户已选择具体的车次,坐席种类,并且填写好必要的购票信息
- 后置条件:
- 携程系统返回相应的支付方式
- 如支付成功,则该订单成功交易
另外虽然没要求建数据库,但我还是自己尝试着建了:
代码如下:
Customer
CREATE TABLE IF NOT EXISTS `mydb`.`Customer` (
`CustomerId` VARCHAR(20) NOT NULL,
`CustomerName` VARCHAR(45) NOT NULL,
`CustomerPwd` VARCHAR(45) NOT NULL,
PRIMARY KEY (`CustomerId`))
ENGINE = InnoDB
Ticket:
CREATE TABLE IF NOT EXISTS `mydb`.`Ticket` (
`TicketId` VARCHAR(20) NOT NULL,
`OneOrTwoWay` INT NOT NULL,
`IfStudent` TINYINT NOT NULL,
`SeatType` VARCHAR(45) NOT NULL,
`BuyWay` VARCHAR(45) NOT NULL,
`TrainId` VARCHAR(20) NOT NULL,
`CustomerId` VARCHAR(45) NOT NULL,
PRIMARY KEY (`TicketId`),
INDEX `TrainId_idx` (`TrainId` ASC),
INDEX `CustomerId_idx` (`CustomerId` ASC),
CONSTRAINT `TrainId`
FOREIGN KEY (`TrainId`)
REFERENCES `mydb`.`Train` (`Trainid`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `CustomerId`
FOREIGN KEY (`CustomerId`)
REFERENCES `mydb`.`Customer` (`CustomerId`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
Train:
CREATE TABLE IF NOT EXISTS `mydb`.`Train` (
`Trainid` VARCHAR(20) NOT NULL,
`SourceCity` VARCHAR(45) NOT NULL,
`DestCity` VARCHAR(45) NOT NULL,
`GoTime` VARCHAR(45) NOT NULL,
`BackTime` VARCHAR(45) NOT NULL,
`TrainType` VARCHAR(45) NOT NULL,
PRIMARY KEY (`Trainid`))
ENGINE = InnoDB
Order:
CREATE TABLE IF NOT EXISTS `mydb`.`Order` (
`OrderId` VARCHAR(20) NOT NULL,
`Identity` VARCHAR(45) NOT NULL,
`GetTicketWay` VARCHAR(45) NOT NULL,
`OtherProducts` VARCHAR(45) NOT NULL,
`SelectSeats` VARCHAR(45) NOT NULL,
`TicketsId` VARCHAR(20) NOT NULL,
`PaymentId` VARCHAR(20) NOT NULL,
PRIMARY KEY (`OrderId`),
INDEX `TicketsId_idx` (`TicketsId` ASC),
INDEX `PaymentId_idx` (`PaymentId` ASC),
CONSTRAINT `TicketsId`
FOREIGN KEY (`TicketsId`)
REFERENCES `mydb`.`Ticket` (`TicketId`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `PaymentId`
FOREIGN KEY (`PaymentId`)
REFERENCES `mydb`.`Payment` (`PaymentId`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
Payment:
CREATE TABLE IF NOT EXISTS `mydb`.`Payment` (
`PaymentId` VARCHAR(20) NOT NULL,
`Amount` INT NOT NULL,
`CreditCardType` VARCHAR(45) NOT NULL,
`CreditCardNumber` VARCHAR(45) NOT NULL,
`CardSecurityCode` VARCHAR(45) NOT NULL,
PRIMARY KEY (`PaymentId`))
ENGINE = InnoDB