XX 建模练习 要求:

  • 练习文档编写 
    • 选择一个你喜欢的 移动App 或 其中某业务
    • 参考 Asg_RH 文档格式 编写软件描述
    • 文档要包含一个业务的完整过程
  • 建模要求包括(用例图、XX业务或用例的活动图、XX领域模型、XX对象的状态图、XX场景的系统顺序图与操作协议)
  • 建模者答案: 
    • 收集建模者答案URL
    • 建模者不能是本团队成员(至少有一个答案)

    • 给建模者给出评价与建议

携程订火车票.md

一.用例图

Lesson9

二.业务建模流程图

Lesson9

三.领域模型

Lesson9

四.建立订单的状态图

Lesson9

五.下单及支付的系统顺序图

Lesson9

契约1:填写身份信息

  • 操作:setIdentityInfo()
  • 交叉引用:
  • 前置条件:用户已选择具体的车次,坐席种类等
  • 后置条件: 
    • 身份信息被关联到该订单中

契约2:填写取票方式

  • 操作:selectGetTicketWay()
  • 交叉引用:用例:预定车票
  • 前置条件:用户已选择具体的车次,坐席种类等
  • 后置条件: 
    • 取票方式被关联到该订单中

契约3:勾选其他产品

  • 操作:SelectOtherProducts()
  • 交叉引用:用例:预定车票
  • 前置条件:用户已选择具体的车次,坐席种类等
  • 后置条件: 
    • 携程系统返回其他产品供用户选择,若用户选择,则该产品关联到订单中

契约4:提交订单

  • 操作:SubmitOrder()
  • 交叉引用:
  • 前置条件:用户已选择具体的车次,坐席种类,并且填写好必要的购票信息
  • 后置条件: 
    • 携程系统返回相应的支付方式
    • 如支付成功,则该订单成功交易

另外虽然没要求建数据库,但我还是自己尝试着建了:

Lesson9

代码如下:

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

相关文章: