首页 > 其他分享 >UML相关3

UML相关3

时间:2024-06-16 14:57:14浏览次数:7  
标签:void 信息 用例 客户 相关 UML Operation 技术人员

  • 实验内容及要求:

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

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

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

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

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

要求:

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() {

}

标签:void,信息,用例,客户,相关,UML,Operation,技术人员
From: https://blog.csdn.net/m0_55709044/article/details/139678685

相关文章

  • 接下来的一系列育种相关会议。。。
    4月在南京参加了第七届全国玉米生物学学术研讨会,诚如大会名字所言的“学术研讨”,邀请了国内外相关领域具有重要学术影响力的专家学者和优秀青年科学家进行学术报告及成果展示,与育种产业相关的内容很少。但能够看到的是,接地气的研究越来越多(最多的还是功能基因组学研究),学术与产业......
  • 水稻遗传育种相关生物信息数据库和工具
    本综述系统梳理了近20年来开发的水稻生物信息数据库和在线分析工具,并基于内置数据集和功能对它们进行了分类和总结。水稻基因组数据库水稻转录和转录后调控数据库水稻基因网络数据库水稻种质资源信息数据库水稻常用的基因编辑系统水稻基因编辑生物信息工具与数据库......
  • LOXL1与TGF-β相关分子作用路径的预测
    盆腔器官脱垂(POP)是一种盆底支持结构功能障碍性疾病,而现有的手术手段并不能根治这种疾病,因此探究POP的发病机制是一项比较有意义的研究。已有的资料表明,类氨酰氧化酶——LOXL1的敲除能够导致小鼠在分娩之后发生POP。同时TGF-β的表达量高低与POP的严重程度相关。在已经掌......
  • 129文章解读与程序——电 力 建 设CSCD\北大核心《计及风-光出力时变相关特性的输电可
    ......
  • 算法02 递归算法及其相关问题【C++实现】
    递归在编程中,我们把函数直接或者间接调用自身的过程叫做递归。递归处理问题的过程是:通常把一个大型的复杂问题,转变成一个与原问题类似的,规模更小的问题来进行求解。递归的三大要素函数的参数。在用递归解决问题时,要合理地去设计函数的参数,达到当前问题与子问题之间的变化,可......
  • Sigir2024 ranking相关论文速读
    简单浏览一下Sigir2024中与ranking相关的论文。不得不说,自从LLM大热后,传统的LTR方向的论文是越来越少了,目前不少都是RAG或类似场景下的工作了,比如查询改写、rerank等。目录TheSurprisingEffectivenessofRankersTrainedonExpandedQueriesCanQueryExpansionImproveGene......
  • 爬虫相关面试题
    一,如何抓取一个网站?1,去百度和谷歌搜一下这个网站有没有分享要爬取数据的API2, 看看电脑网页有没有所需要的数据,写代码测试调查好不好拿,如果好拿直接开始爬取3,看看有没有电脑能打开的手机网页,一般格式为http://m.xxx.com或http://mobile.xxx.com, 有的话用F12检查抓一下包,......
  • Python基础教程(十三):file文件及相关的函数
    ......
  • 2024年,计算机相关专业还值得选择吗?
    随着2024年高考的结束,数百万高三毕业生将迎来人生中的一个重要转折点——选择大学专业。计算机科学与技术、人工智能、网络安全、软件工程等专业,长期以来一直是热门选择。但在行业竞争加剧和市场饱和度提高的今天,这些专业是否仍具有强大的发展潜力和良好的就业前景呢?作为高......
  • JVM运行时数据区(线程相关)
    一、JVM运行时数据区JVM运行时数据区是一个抽象概念,主要依赖于寄存器、高速缓存、主内存几个部分组成。计算机运行=指令+数据,指令用于执行方法,数据用于指向存放的数据和对象。虚拟机栈---用于执行java方法本地方法栈---执行本地方法(通常时c语言实现的)程序计数......