汽车租赁系统的需求分析
欧阳光明(2021.03.07)
系统功能需求
系统的功能需求包括以下几个方面。
1) 客户可以通过不同的方式(包括前台、电话、网上)预定车
辆。
2) 能够保存客户的预定申请单。 3) 能够保存客户的历史记录。 4) 工作人员可以处理客户的申请。
5) 技术人员可以保存对车辆检修的结果。
满足以上需求的系统主要包括一下几个模块。
(1)
基本数据维护模块。基本数据维护模块提供了使用者录入、修改并维护基本数据的途径。例如对客户的个人信息、租赁信息、车辆的基本信息等录入和修改。
(2)
基本业务模块。基本业务模块中,客户可以填写汽车租赁申请表,工作人员负责处理这些表格。同时,技术人员还可以提交每辆车的状态,以便工作人员根据这些资料决定是否批准客户的请求。
(3)
数据库管理模块。在汽车租赁系统中,对所有客户、工作人员以及车辆的信息都有进行统一管理,车辆的租赁情况也要进行详细的登记。
(4)
信息查询模块。详细查询模块主要用于查询相关信息,例如
*欧阳光明*创编 2021.03.07
*欧阳光明*创编 2021.03.07
工作人员查询车辆信息和客户信息等。
图1所表示汽车租赁系统的功能需求。
汽车租赁系统 基本数据维护模块 基本业务模块 数据库管理模块 信息查询模块
基本数据维护模块
基本数据维护模块包括图2所示的几个方面。
基本数据维护模块 添加车辆信息 修改车辆信息 添加员工信息 修改员工信息
(1)
添加车辆信息。汽车租赁商的车辆信息需要保存到数据库,车辆信息包括车辆的车型、车牌号码和车辆的状态等。
(2)
修改车辆信息。车辆被租借以后状态会发生变化,要根据具
*欧阳光明*创编 2021.03.07
*欧阳光明*创编 2021.03.07
体情况修改车辆的状态,如预留、租赁和空闲。
(3)
添加员工信息。公司员工的信息应该保存到系统数据库中,以便管理人员根据员工的表现对员工进行考核。
(4)
修改员工数据。交易的任务完成率要保存在员工信息中,员工完成一笔交易,要更新员工的个人信息。
基本业务模块
基本业务模块包括图3所示的几个方面。
基本业务模块 用户填写预定申请 工作人员处理预定请求 技术人员填写服务记录 工作人员处理还车请求
(1)
用户填写预定申请。客户在租赁汽车之前首先要填写预定申请。
(2)
工作人员处理预定请求。工作人员要处理预定申请,可以根据客户租赁的历史记录和目前车辆的状况决定是否同意客户的预定请求。
(3)
技术人员填写服务记录。公司的技术人员在客户归还车辆以后要对车辆进行彻底的检查,以确定车辆目前的状况,检查万要填写服务记录。
*欧阳光明*创编 2021.03.07
*欧阳光明*创编 2021.03.07
(4)
工作人员处理还车请求。工作人员将根据车辆的状况和租赁的时间收取此次租赁的费用,如果车辆有损坏,还要收取一定的罚金。
数据库模块
数据库模块包括如图4所示的几个方面。
数据库模块 客户信息管理 车辆信息管理 租赁系统管理 员工信息管理
(1)
客户信息管理。客户信息除了包括客户的基本信息之外,还包括客户的租赁历史记录。
(2)
车辆信息管理。车辆信息包括车辆的车型,车辆的新旧程度,车辆的状态等。
(3)
租赁信息管理。租赁信息包括客户的租赁申请表记录和技术人员的服务记录等。
(4)
员工信息管理。员工信息包括工作人员、技术人员、管理人员的基本信息以及工作人员的工作记录等。
信息查询模块
信息查询模块主要是查询数据库中的相关信息,如图5所示。
*欧阳光明*创编 2021.03.07
*欧阳光明*创编 2021.03.07
(1) (2) (3) (4)
查询客户信息。负责客户的信息的查询。 查询员工信息。负责公司员工信息的查询。 查询车辆信息。负责车辆信息的查询。
查询客户记录。负责查询客户的车辆租赁历史查询。
信息查询模块 查询客户信息 查询员工信息 查询车辆信息 查询客户记录
系统的用例图
1、 客户参与的用例图
客户参与的用例图主要如下几个,如图7所示。
(1) (2)
预定车辆用例。客户在取车之前应该首先预定车辆。
取车用例。如果客户的车辆预定得到确定,要在确定的日期到前台取车。
(3)
还车用例。客户应该在规定时间还车。
7客户参与的用例图
【用例图说明】
(1) (2)
Reserve the car:预定车辆的用例。
By phone:电话预定用例。这是从预定用例扩展出来的一种
*欧阳光明*创编 2021.03.07
*欧阳光明*创编 2021.03.07
预定方式。
(3)
On the web:网络预定用例。这是从预定用例扩展出来的另一种预定方式,用户可以在公司主页上提交预定申请。
(4)
Fill the order form:填写预定申请表的用例。如果客户在网上预定,也必须完成预定申请表。
(5) (6) (7)
Get the car:取车用例。 Return the car:还车用例。
Return with fine:交纳罚金用例。客户如果不能够按时还车将要交纳罚金。
2、 公司员工参与的用例图
员工参与的用例包括以下几个,如图8所示。
(1) (2)
登陆系统用例。公司员工输入工作号和密码可以登陆系统。 处理预定申请用例。普通工作人员可以处理客户的预定申请。
(3)
将预定的车交付客户的用例。客户预定请求得到确认后,可以在规定的时间来取车,工作人员应该能够提供取车服务。
(4)
结束租赁业务用例。用户还车,技术人员确认车辆无损坏后,工作人员可以确定租赁交易结束。
8公司员工参与的用例图
【用例图说明】
(1) (2) (3)
system login:系统登陆用例。 reserve process:预定处理用例。
Query customer order record:查询客户预定历史记录用例。工
*欧阳光明*创编 2021.03.07
*欧阳光明*创编 2021.03.07
作人员可以把客户的历史记录作为判断是否接受客户请求的一个依据。
(4)
Refuse request:拒绝预定请求用例。工作人员可以根据情况拒绝客户的预定请求,例如客户历史记录不良,没有所需车辆等。
(5)
Accept request:接受预定请求用例。工作人员在核对客户情况及车辆状态后,可以接受客户的请求。
(6) (7)
Give the car to customer:将预定的车交给客户用例。
Check the car:检查车辆状况用例。技术人员可以对车辆进行检查,以确定车辆是否被损坏。
(8)
End the business:结束租赁业务用例。
系统的时序图
汽车租赁系统的时序图主要有如下4个。
(1) (2) (3) (4)
管理人员开展工作的时序图。 客户预定车辆的时序图。 客户取车时序图。 客户还车时序图。
1、 管理人员开展工作的时序图
9管理人员开展工作的时序图
【时序图说明】
(1) (2) (3)
viewRecord():查看记录函数。
viewWorkInfo():查看工作记录函数。
calculate():计算工作人员的任务完成率的函数。
*欧阳光明*创编 2021.03.07
*欧阳光明*创编 2021.03.07
管理人员既可以查看汽车的租赁记录,又可以查看普通工作人员的工作记录和任务完成情况。
2、 客户预定车辆的时序图
10客户预定车辆时序图
【时序图说明】
(1) (2) (3) (4) (5) (6)
fillOrder():填写租赁申请表的函数。 checkRequest():查看申请的函数。 check():检查历史记录的函数。 Inserviced():判断车辆状态的函数。 Allow():允许客户租赁车辆的函数。 Notify():通知客户前来取车的函数。
客户要租赁车辆,首先必须填写申请表。公司员工负责处理申请表,他们根据客户租赁的历史记录以及客户申请的车辆的状态决定是否接受客户请求。如果两个条件都满足,那么将接受请求并且为客户预留该车;否则就拒绝请求,处理过的申请表的状态都设为已处理。如果接受用户的租赁请求,首先为该客户添加一条记录,然后通知客户前来取车。
3、 客户取车时序图
11客户取车时序图
【时序图说明】
(1) (2) (3)
Show-notice():向工作人员出示取车通知。 check():工作人员取车通知的合法性。 pay():客户付款。
*欧阳光明*创编 2021.03.07
*欧阳光明*创编 2021.03.07
(4) (5)
fillWorkRecord():公司员工创建工作记录。 update-carstatus():更新汽车状态信息。
客户在约定的时间到前台取车,公司员工首先验证取车通知,验证通过后,将要求客户付款,然后填写一份工作记录,同时修改车辆状态。
4、 客户还车时序图
12客户还车时序图
【时序图说明】
(1) (2) (3) (4) (5) (6)
check-carstatus():检查车辆状况的函数。 fillRecord():填写车辆检查记录的函数。
notify-payment():通知客户支付租赁款项的函数。 update-carstatus():更新汽车信息的函数。 end():结束交易的函数。
updateRecord():更新工作记录的函数。
客户在规定时间将车返还给租赁商后,技术人员将对车进行检修以确定是否有损坏,并且填写一份服务记录,公司职员将根据记录确定客户应付的款项,与客户交易完成以后,需要修改车辆状态、客户记录以及工作记录等。 系统的协作图
汽车租赁系统的协作图主要有如下几个。
(1) (2) (3)
客户预定车辆的协作图。 客户取车协作图。 客户还车协作图。
*欧阳光明*创编 2021.03.07
*欧阳光明*创编 2021.03.07
1、 客户预定车辆的协作图
13客户预定车辆协作图
【协作图说明】
(1) (2) (3) (4) (5) (6) (7)
fillOrder():申请表类中填写租赁申请表的函数。 checkRequest():普通公司员工类中查看申请的函数。 check():客户租赁历史记录类中的检查历史记录的函数。 InServiced():车辆类中的判断车辆状态的函数。 Allow():允许客户租赁车辆的函数。
isHandled():判断预定表单是否被处理的函数。 notify():通知客户前来取车的函数。
2、 客户取车协作图
14客户取车协作图
【协作图说明】
(1) (2) (3) (4) (5)
show-notice():向工作人员出示取车通知。 check():工作人员检查取车通知的合法性。 take-car():客户取车。
fillWorkRecord():公司员工创建工作记录。 update-carstatus():更新汽车状态信息。
3、 客户还车协作图
15客户还车协作图
【协作图说明】
(1) (2)
return-car():客户还车函数。
check-carstatus():检查车辆状况的函数。
*欧阳光明*创编 2021.03.07
*欧阳光明*创编 2021.03.07
(3) (4) (5) (6)
fillRecord():填写车辆检查记录的函数。 update-carstatus():更新汽车状态信息。 end():结束交易的函数。
updateRecord():更新工作记录的函数。
系统的状态图
由于系统的几个对象,如客户预定申请表类、客户租赁历史记录类、工作记录类、维修记录类和车辆类的状态都很少,不需要用创建状态图,所以将建立整个系统的状态图,如图16所示。
16系统状态图
【状态图说明】
(1) (2) (3) (4) (5) (6) (7) (8) (9)
customer send the request:客户提出租赁申请。
Employee handle the request:公司员工处理申请请求。 Search relating information:查找租赁的相关历史记录。 Accept the request:接受租赁请求。 Store information:存储交易信息。 Customer get the car:客户取车。 Customer return the car:客户还车。 Check the car:检查车辆状况。 Deny the request:拒绝租赁请求。
(10) End the business:接受交易。
从客户填写的预定申请表开始,租赁商收到客户的申请并对其进行处理。根据客户的历史记录以及车辆的状态确定是否接受客户请求。如果某个条件不符合,就向客户发送一个拒绝通知,交易结
*欧阳光明*创编 2021.03.07
*欧阳光明*创编 2021.03.07
束;如果条件都符合,则接受该请求并保存相关数据。客户在约定时间内来取车,取车需要出示相关通知。车辆使用以后,客户必须在规定的时间将车返还给租赁商。还车后,技术人员还会对车辆进行检查,根据车辆状况收取相应费用,如果车辆破损还要收取罚金。最后,交易结束。 系统的活动图
汽车租赁系统的活动图如图17所示
17系统活动图
【活动图说明】
(1) customer request:客户填写租赁申请。 (2) Store the request:存储申请表。
(3) Employee check the request:公司员工查看申请请求。 (4) Handle new request:处理新的租赁申请。
(5) Check the customer’s record:查看客户租赁的历史记录。 (6) Deny the request:拒绝租赁请求。 (7) The car is available:车辆为可用。 (8) Send the message:发送取车通知。 (9)
Customer acquire the car:客户取车。
(10) Customer give the car back:客户还车。
汽车租赁活动的大致流程和系统的状态变化类似,需注意一点,租赁者填写租赁申请表和公司员工处理申请可以并发执行。 类图的生成
1、 客户与公司员工类
*欧阳光明*创编 2021.03.07
*欧阳光明*创编 2021.03.07
系统中公司员工和客户类图如图18所示。
18客户与员工的类图
【类图说明】
(1)
Person类是所有的父类,它包含4个属性:姓名(name),身份证号(ID),地址(address)和电话号码(phoneNo)。它包含的方法都是用来设置和获取这些属性值。
(2)
Customer类是包含客户信息的类,除了继承父类的属性和方法,它包括车辆类型(CarType)和驾驶证号(licenseNo)等属性。
(3)
Employee类是包含员工信息的类,其中包含了员工的聘用日期等信息。同时,它还是Manager、CommonWorker、SkillWorker 3个类的父类。
(4)
Manager类是管理人员的类,管理人员可以查看工作人员的工作记录。CommonWorker类是普通工作人员的类,commissionRate属性是该员工任务完成率;方法calculate()用来计算该工作人员的完成的任务率;checkRequest()用来查询是否有没处理的申请单。SkillWorker类是技术人员的类,Skills属性代表该员工的技术特长,而qualification属性则表示他的技术职称。
各个类之间的关系
类不是一个单独的模块,各个类之间是存在联系。汽车租赁系统各个类之间的联系如图19所示。
19各类之间的关系
*欧阳光明*创编 2021.03.07
*欧阳光明*创编 2021.03.07
【类图说明】
1)
CustomerRecord类表示客户记录。CustomID是客户的身份证号码,rentDate是租车日期,CarType是所租车辆的车型,CarNumber是车牌号码,IsFinish代表该交易是否结束。Check()用来得到该客户的记录,end()用来结束该交易。
2)
Car类代表车辆记录。Type是该车的车型,CarNumber是车牌号码,status是指该车是否被预定、正在使用中或空闲状态,condition是指该车的状态,InServiced()用来判断该车是否空闲,update-carstatus()用来修改车辆所处的状态。
3)
ServiceOrder类表示每一次租赁服务的记录。serviceHistory是服务的历史记录,progressReport是指该过程中的报告。fillRecord()用于填写表格。
4)
RequestOrder类表示的是填写客户申请资料的表格。CarType表示客户申请的车型,RentDate是租车的时间,IsAllow属性表示该客户的申请是否得到批准。Allow()用来接受客户的请求,fillOrder()是指客户填写表格,check()用来检查是否存在这个申请,isHandled()设置该申请已被处理。
5)
WorkRecord 类是职员的工作记录。属性包括交易中涉及的员工、客户、车辆以及租赁信息。FillworkRecord()用来填写这份记录,viewRecord()用来查看这份记录,updateRecord()用来修改这份记录。
从图中可以看出,工作人员(CommonWorker)可以查看所有客户(Customer)的租赁历史记录(CustomerRecord),可以处理几个
*欧阳光明*创编 2021.03.07
*欧阳光明*创编 2021.03.07
客户的租赁申请(RequestOrder)。由于工作人员可以同时处理多个业务,那么他可以拥有多个服务记录(ServiceRcorder)和工作记录(WorkRecord)。技术人员(SkillWorker)需要同时维护多辆车(Car),每辆车也需要多个人员进行维护。经理(Manager)可以查看多个工作人员的工作记录。 系统的配置与实现 系统的组件图
汽车租赁系统是建立在一个含有过去租赁记录、汽车信息、服务记录以及客户和员工信息的中央数据库上。系统组件图如图20所示,包括租赁程序、员工记录、服务记录、工作记录和汽车记录5个组件。
20系统的组件图
系统的配置图
汽车租赁系统由5个节点构成,应用服务器负责整个系统的总体协作工作数据库负责数据管理;前台工作人员负责处理客户请求以及进行租赁交易;管理人员管理界面主要是用来对员工信息进行查询;而技术工人界面则用于技术人员查询、修改汽车的状态。系统配置图如图21所示。
21系统配置图
*欧阳光明*创编 2021.03.07
因篇幅问题不能全部显示,请点此查看更多更全内容