UML相关3

  • 实验内容及要求:

按照面向对象技术分析汽车租赁系统并建立相应的模型。

客户注册、登录、找回密码、查询车辆信息(包括所有车辆信息、已借车辆信息、租赁历史信息)、修改个人信息、网上预订车辆、电话预定车辆、查询还车时间、取消预定的车辆、可以通过支付宝、微信和网银交订金。

系统维护人员登录系统、查询用户基本信息、注销用户、删除信用不良好的用户、同意用户的预订申请、同意用户的借车信息、同意用户的还车信息、清算用户的费用、催缴到期未还的用户、管理员工信息、分配操作权限给员工和客户

技术人员登录系统、修改个人信息,增加、删除、修改、查询车辆信息。

在汽车租赁系统中:车辆对象的初始状态是可用的车,添加到系统后,是可租借状态; 可租金状态下的车如果被租借,进入租借状态;可租借状态的汽车可以被卖掉;租借状态的汽车可以到期归还,也可能超期;归还的汽车必须先对于汽车进行检测评估,如果检车汽车不能使用则报废;如果汽车可以使用,则加入租借队列等待租赁;如果检测需要维修,则对于车辆进行维修,维修好后再加入租借队列。

要求:

1)建立系统用例模型,要有对于用例图的分析说明,用例描述至少写5个。

2)分析汽车租赁系统功能需求,完成下面顺序图和通信图。

客户注册

客户管理个人信息

客户借车

客户还车

3)画出汽车的状态图。

4)画出电话预订、还车的活动图。

5)完成系统的类图,并对于主要类和类之间的关系进行描述。

6)根据类图导出代码结构,代码结构放到附录

四、实验过程

4.1用例图

  • 汽车租赁系统中的用例图简述(10分)

本系统根据功能可以分为三个用例图:

  1. 客户用例图:主要描述客户注册、登录、找回密码、查询车辆信息(包括所有车辆信息、已借车辆信息、租赁历史信息)、修改个人信息、网上预订车辆、电话预定车辆、查询还车时间、取消预定的车辆、可以通过支付宝、微信和网银交订金。
  2. 系统维护人员用例图:主要描述系统维护人员登录系统、查询用户基本信息、注销用户、删除信用不良好的用户、同意用户的预订申请、同意用户的借车信息、同意用户的还车信息、清算用户的费用、催缴到期未还的用户、管理员工信息、分配操作权限给员工和客户。
  3. 技术人员用例图:主要描述技术人员登录系统、修改个人信息,增加、删除、修改、查询车辆信息

  • 汽车租赁系统相关用例图(20分,文字描述5分,图15分)

客户相关的用例图中,客户注册、登录、找回密码、查询车辆信息、修改个人信息、网上预订车辆、电话预定车辆、查询还车时间、取消预定的车辆、交订金都是客户可以在系统中完成的操作,因此这十个用例跟读者是关联关系;同时,系统提供了三种不同的查询方式,每一种查询方式都可以继承查询车辆信息的行为和含义,因此,这三种查询方式和查询书籍是泛化关系。系统提供了三种不同的交订金方式,每一种交订金方式都可以继承交订金的行为和含义,因此,这三种交订金方式和交订金是泛化关系,如下图所示

四:用例描述(每个用例10分)

(1)客户注册

用例编号

UC0001

用例名称

客户注册

用例说明

注册新用户,并保存到系统中

前置条件

基本事件流

1、客户向系统发出“客户注册”请求;

2、系统要求客户填写信息

3、系统自动保存。

其他事件流

异常事件流

如果客户输入的信息错误,则要求客户重新填写;

如果客户取消输入,则结束用例,不存入到系统。

后置条件

完成客户信息的录入和存储

其他说明

(2)客户登录

用例编号

UC0001

用例名称

客户登录

用例说明

客户进入系统

前置条件

客户注册

基本事件流

1、客户向系统发出“登录”请求;

2、系统比对客户信息

其他事件流

异常事件流

如果客户输入信息错误,则要求客户重新填写信息或者取消;

如果客户取消输入,则结束用例

后置条件

登录系统

其他说明

(3)技术人员登录系统

用例编号

UC0001

用例名称

技术人员登录系统

用例说明

技术人员进入系统

前置条件

技术人员注册

基本事件流

1、技术人员向系统发出“登录”请求;

2、系统比对技术人员信息

其他事件流

异常事件流

如果技术人员输入信息错误,则要求技术人员重新填写信息或者取消;

如果技术人员取消输入,则结束用例

后置条件

登录系统

其他说明

(4)技术人员修改个人信息

用例编号

UC0001

用例名称

技术人员修改个人信息

用例说明

技术人员修改个人信息

前置条件

技术人员登录系统

基本事件流

1、技术人员向系统发出“修改个人信息”请求;

2、系统要求技术人员选择修改的信息

3、技术人员录入完成后,选择保存到系统

其他事件流

异常事件流

如果技术人员输入的信息重复,则要求技术人员填写新的信息或者取消;

如果技术人员取消输入,则结束用例,不存入到系统

后置条件

完成修改信息的录入和存储

其他说明

(5)客户修改个人信息

用例编号

UC0001

用例名称

客户修改个人信息

用例说明

客户修改个人信息

前置条件

客户登录系统

基本事件流

1、客户向系统发出“修改个人信息”请求;

2、系统要求客户选择修改的信息

3、客户录入完成后,选择保存到系统

其他事件流

异常事件流

如果客户输入的信息重复,则要求客户填写新的信息或者取消;

如果客户取消输入,则结束用例,不存入到系统

后置条件

完成修改信息的录入和存储

其他说明

4.2 动态行为模型

4.2.1 顺序图

(1)客户注册

内容

说明

用例编号

UC-1

用例名称

客户注册

用例说明

客户参与者通过注册获得进入彬使用系统的权限

参与者

客户

前置条件

后置条件

系统正确接收用户信息并保存到数据库

基本路径

  1. 发布注册申请
  2. 系统显示注册页面
  3. 客户填写相应信息并提交
  4. 注册成功后可以进行其他操作

扩展路径

当信息填写不符合要求时不能注册,并给出提示信息

内容

说明

用例编号

UC-1

用例名称

  1. 客户管理个人信息

用例说明

客户参与者通过管理个人信息获得进入使用系统的权限

参与者

客户

前置条件

后置条件

系统正确接收用户信息并保存到数据库

基本路径

  1. 发布填写申请
  2. 系统显示填写页面
  3. 客户填写相应信息并提交
  4. 修改成功后可以进行其他操作

扩展路径

当信息填写不符合要求时不能提交,并给出提示信息

内容

说明

用例编号

UC-1

用例名称

客户借车

用例说明

客户参与者通过请求借车获得进入使用系统的权限

参与者

客户

前置条件

后置条件

系统正确接收用户信息并保存到数据库

基本路径

  1. 发布请求借车
  2. 系统显示借车页面
  3. 客户填写相应信息并提交
  4. 借车成功后可以进行其他操作

扩展路径

当信息填写不符合要求时不能借车,并给出提示信息

表1.1 客户注册事件流

内容

说明

用例编号

UC-1

用例名称

客户还车

用例说明

客户参与者通过请求还车获得进入使用系统的权限

参与者

客户

前置条件

客户借车

后置条件

系统正确接收用户信息并保存到数据库

基本路径

  1. 发布还车请求
  2. 系统显示还车页面
  3. 客户填写相应信息并提交
  4. 还车成功后可以进行其他操作

扩展路径

当信息填写不符合要求时不能还车,并给出提示信息

出发状态

动作

到达状态

新车入库

登记入库

可租借

可租借

借车

已借出

可租借

出售

已卖出

借出

还车

还车

借出

超期未还

超期

超期

还车

还车

还车

汽车可使用

可租借

还车

需维修

维修

还车

汽车报废

销毁

维修

维修完毕,入库

可租借

4.3类图(类图必须导出对应的代码框架)

      1. 汽车租赁系统中类如表4-2所示。

表4-2汽车租赁系统中的类

编号

类名称

类说明

1

Maintenance

系统维护人员基本信息

2

Technical

技术人员基本信息

3

Customer

客户基本信息

4

Car

汽车基本信息

5

B Or R Car

客户的借车还车记录

6

M Operation

系统维护人员操作

7

T Operation

技术人员操作

8

C Operation

客户操作

      1. 汽车租赁系统中类的属性和操作
  1. Maintenance类

记录与查询系统维护人员基本信息

属性

S1id: 账号,类型为字符串String,private属性

S1password: 密码,类型为int,private属性

S1name: 姓名,类型为字符串String,private属性

S1data: 注册日期,类型为日期Date,private属性

S1phone: 联系电话,类型为int,private属性

方法

Add1(): 增加系统维护人员信息

Delete1(): 删除系统维护人员信息

Update1(): 更改系统维护人员信息

Query1(): 查看个人信息

Lock1(): 保存系统维护人员个人信息

  1. Technical类

   记录技术人员基本信息

   属性

   S2id: 账号,类型为字符串String

   S2password: 密码,类型为字符串int

   S2name: 姓名,类型为字符串String

   S2data: 注册日期,类型为日期Date

   S2phone: 联系电话,类型为int

   S2power: 权限,类型为字符串String

   方法

 Add2(): 增加技术人员信息

 Delete2(): 删除技术人员信息

 Update2(): 更改技术人员信息

 Query2(): 查看个人信息

 Lock2(): 保存技术人员个人信息                              

  1. Customer类

   记录客户基本信息

   属性

   Cid: 账号,类型为字符串String

   Cpassword: 密码,类型为int

   Cname: 姓名,类型为字符串String

   Cdata: 注册日期,类型为日期Date

   Cphone: 联系电话,类型为int

   Cpower: 权限,类型为字符串String

   方法

 Add3(): 添加客户信息

 Delete3(): 删除客户信息

 Update3(): 更改客户个人信息

 Query3(): 查看个人信息

   Lock3(): 保存客户个人信息

  1. Car类

   记录汽车基本信息

   属性

   number: 汽车数量,类型为int

   cid: 汽车型号,类型为String

   cname: 汽车品牌,类型为String

   cdata: 汽车购买时间,类型为Date

   cstate: 汽车当前状态,类型为String

   方法

 Add4(): 增加汽车信息

 Delete4(): 删除汽车信息

 Update4(): 更改汽车信息

 Query4(): 查询信息

   Lock4(): 保存汽车信息

  1. B Or R Car类

   记录客户的借车还车信息

   属性

   Cid: 账号,类型为字符串String

   Cname: 客户姓名,类型为String

   Cphone: 客户联系电话,类型为int

   cname: 汽车品牌,类型为String

   cid: 汽车型号,类型为String

   Cstate1: 汽车被借时状态,类型为String

   Cstate2: 汽车归还时状态,类型为String

   borrow: 该车被借用时间,类型为Date

   back: 该车归还时间,类型为Date

   方法

 Add5(): 增加客户的借车还车信息

 Delete5(): 删除客户的借车还车信息

 Update5(): 更改客户的借车还车信息

 Query5(): 查询客户的借车还车信息

   Lock5(): 保存客户的借车还车信息

  1. M Operation类

   系统维护人员的相关操作

   属性

   S1id: 系统维护人员账号,类型为字符串String,private属性

   S1password: 密码,类型为int,private属性

   S2id: 技术人员账号,类型为字符串String

   Cid: 客户账号,类型为字符串String

   cid: 汽车型号,类型为String

   方法

   S1_1():登录系统

   S1_2():查询用户基本信息(包括技术人员、客户、系统维护人员)

   S1_3():注销用户(包括技术人员、客户、系统维护人员)

   S1_4():删除信用不良好的用户(客户)

   S1_5():同意用户的预订申请(客户)

   S1_6():同意用户的借车信息(客户)

   S1_7():同意用户的还车信息(客户)

   S1_8():清算用户的费用(客户)

   S1_9():催缴到期未还的用户

   S1_10():管理员工信息

   S1_11():分配权限

  1. T Operation类

   技术人员的相关操作

   属性

   S2id: 账号,类型为字符串String

   S2password: 密码,类型为字符串int

   cid: 汽车型号,类型为String

   方法

   S2_1(): 登录系统

   Update2(): 更改技术人员信息

   Add4(): 增加汽车信息

   Delete4(): 删除汽车信息

   Update4(): 更改汽车信息

   Query4(): 查询信息

   Lock4(): 保存汽车信息

  1. C Operation类

   客户的相关操作

   属性

   Cid: 账号,类型为字符串String

   Cpassword: 密码,类型为int

   方法

   C_1():客户注册

   C_2():登录系统

   C_3():找回密码

   C_4():查询车辆信息

   C_5():网上预订车辆

   C_6():电话预订车辆

   C_7():查询还车时间

   C_8():取消预订的车辆

   C_9():交付订金

   Update3(): 更改客户个人信息

   Query3(): 查看个人信息

  

      1.  类之间的关系如表4-3所示:

表4-3类之间的关系

编号

类A

类B

关系

1

M Operation

Maintenance

关联

2

M Operation

Technical

关联

3

M Operation

Customer

关联

4

M Operation

Car

关联

5

M Operation

B Or R Car

关联

6

T Operation

Technical

关联

7

T Operation

Car

关联

8

C Operation

Customer

关联

9

C Operation

Car

关联

10

C Operation

B Or R Car

关联

重数性分析:

1)一个系统维护人员只能对应自己的信息,一个系统维护人员的信息只能对应一个系统维护人员;因此,M Operation和Maintenance类之间的重数性为1.。。。。1;

2)

一个客户只能对应自己的信息,一个客户的信息只能对应一个客户;因此,C Operation和Customer类之间的重数性为1.。。。。1;

3)

一个技术人员只能对应自己的信息,一个技术人员的信息只能对应一个技术人员;因此,T Operation和Technical类之间的重数性为1.。。。。1;

4)

一个技术人员可以增加、删除、修改、查询多条汽车的信息,而一条汽车信息可以被一个技术人员增加、删除、修改;因此T Operation和Car类之间的重数性为1.。。。。0..n;

5)一个系统维护人员可以管理多个客户信息,一个客户信息只能被一个系统维护人员删除;因此,M Operation和Customer类之间的重数性为1.。。。。0..n;

6)

一个客户可以对应多条或者0条借车和还车记录,一条还车或者借车记录只能对应一个客户;因此,C Operation和Borrow类之间的重数性为1.。。。。0..n;

  1. 类图如图1-1所示。

图1-1 汽车租赁系统类图

五、总结与分析

在本次实验中遇到了很多问题,比如不能正确将整个系统分好类,而且每个类之间的关系也不能很好保证其是否正确,重数性的计算也有些不确定。同时对类图也有了更深的认识,对之前的知识也有了更深的理解。

  • 附录

代码框架

//

//

//  Generated by StarUML(tm) C++ Add-In

//

//  @ Project : Untitled

//  @ File Name : Customer.cpp

//  @ Date : 2022/5/15

//  @ Author :

//

//

#include "Customer.h"

void Customer::Add3() {

}

void Customer::Delete3() {

}

void Customer::Update3() {

}

void Customer::Query3() {

}

void Customer::Lock3() {

}

//

//

//  Generated by StarUML(tm) C++ Add-In

//

//  @ Project : Untitled

//  @ File Name : B Or R Car.cpp

//  @ Date : 2022/5/15

//  @ Author :

//

//

#include "B Or R Car.h"

void B Or R Car::Add5() {

}

void B Or R Car::Delete5() {

}

void B Or R Car::Update5() {

}

void B Or R Car::Query5() {

}

void B Or R Car::Lock5() {

}

//

//

//  Generated by StarUML(tm) C++ Add-In

//

//  @ Project : Untitled

//  @ File Name : Technical.cpp

//  @ Date : 2022/5/15

//  @ Author :

//

//

#include "Technical.h"

void Technical::Add2() {

}

void Technical::Delete2() {

}

void Technical::Update2() {

}

void Technical::Query2() {

}

void Technical::Lock2() {

}

//

//

//  Generated by StarUML(tm) C++ Add-In

//

//  @ Project : Untitled

//  @ File Name : M Operation.cpp

//  @ Date : 2022/5/15

//  @ Author :

//

//

#include "M Operation.h"

void M Operation::S1_1() {

}

void M Operation::S1_2() {

}

void M Operation::S1_3() {

}

void M Operation::S1_4() {

}

void M Operation::S1_5() {

}

void M Operation::S1_6() {

}

void M Operation::S1_7() {

}

void M Operation::S1_8() {

}

void M Operation::S1_9() {

}

void M Operation::Operation10() {

}

void M Operation::Operation11() {

}

//

//

//  Generated by StarUML(tm) C++ Add-In

//

//  @ Project : Untitled

//  @ File Name : C Operation.cpp

//  @ Date : 2022/5/15

//  @ Author :

//

//

#include "C Operation.h"

void C Operation::C_1() {

}

void C Operation::C_2() {

}

void C Operation::C_3() {

}

void C Operation::C_4() {

}

void C Operation::C_5() {

}

void C Operation::C_6() {

}

void C Operation::C_7() {

}

void C Operation::C_8() {

}

void C Operation::C_9() {

}

void C Operation::Update3() {

}

void C Operation::Query3() {

}

//

//

//  Generated by StarUML(tm) C++ Add-In

//

//  @ Project : Untitled

//  @ File Name : Maintenance.cpp

//  @ Date : 2022/5/15

//  @ Author :

//

//

#include "Maintenance.h"

void Maintenance::Add1() {

}

void Maintenance::Delete1() {

}

void Maintenance::Update1() {

}

void Maintenance::Query1() {

}

void Maintenance::Lock1() {

}

//

//

//  Generated by StarUML(tm) C++ Add-In

//

//  @ Project : Untitled

//  @ File Name : Car.cpp

//  @ Date : 2022/5/15

//  @ Author :

//

//

#include "Car.h"

void Car::Add4() {

}

void Car::Delete4() {

}

void Car::Upate4() {

}

void Car::Query4() {

}

void Car::Lock4() {

}

//

//

//  Generated by StarUML(tm) C++ Add-In

//

//  @ Project : Untitled

//  @ File Name : T Operation.cpp

//  @ Date : 2022/5/15

//  @ Author :

//

//

#include "T Operation.h"

void T Operation::S2_1() {

}

void T Operation::Update2() {

}

void T Operation::Add4() {

}

void T Operation::Delete4() {

}

void T Operation::Update4() {

}

void T Operation::query4() {

}

void T Operation::Lock4() {

}

  • 20
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-Initiation

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值