汽车租赁系统 UML建模与设计.docx
《汽车租赁系统 UML建模与设计.docx》由会员分享,可在线阅读,更多相关《汽车租赁系统 UML建模与设计.docx(22页珍藏版)》请在冰豆网上搜索。
汽车租赁系统UML建模与设计
1需求分析
这里介绍一个简单汽车租赁系统的需求分析。
1.1需求获取
本系统的功能性需求包括以下几个方面:
(1)客户可以通过不同的方式〔包括、前台、网上〕预订车辆;
(2)能够保存客户的预订申请单;
(3)能够保存客户的历史记录;
(4)工作人员可以处理客户申请;
(5)技术人员可以保存对车辆的检修结果;
为了满足上述需求,那么系统主要包括以下几个模块:
(1)根本数据维护模块。
根本数据维护模块提供了使用者录入、修改并维护根本数据的途径。
例如,对客户的个人信息、租赁信息、车辆的根本信息等的录入和修改。
(2)根本业务模块。
根本业务模块中,客户可以填写汽车租赁申请表,工作人员负责处理这些表格。
同时,技术人员还可以提交每辆车的状态,以便工作人员根据这些资料决定是否批准客户的请求。
(3)数据库管理模块。
在汽车租赁系统中,对所有客户、工作人员以及车辆的信息都要进展统一管理,车辆的租赁情况也要进展详细的登记。
(4)信息查询模块。
信息查询模块主要用于查询相关信息,例如工作人员查询车辆信息和客户信息等。
图1所示表示汽车租赁系统的功能需求。
图1功能需求
1.2业务建模
系统业务用例图如图2所示。
图2系统业务用例图
1.3业务规那么建模
汽车租赁系统的顺序图主要有如下4个:
(1)管理人员开展工作的顺序图。
(2)客户预订车辆的顺序图。
(3)客户取车顺序图;
(4)客户还车顺序图;
1.3.1管理人员开展工作顺序图
图3管理人员开展工作的顺序图
顺序图说明:
(1)viewRecord〔〕:
查看记录函数。
(2)viewWorkInfo〔〕:
查看工作记录函数。
(3)calculate〔〕:
计算工作人员的任务完成率的函数。
管理人员既可以查看汽车的租赁记录,又可以查看普通工作人员的工作记录和任务完成情况。
1.3.2客户预订车辆的顺序图
图4客户预订车辆的顺序图
顺序图说明:
(1)fillOrder〔〕:
填写租赁申请表的函数。
(2)checkRquest〔〕:
查看申请的函数。
(3)check〔〕:
检查历史记录的函数。
(4)InServiced〔〕:
判断车辆状态的函数。
(5)allow〔〕:
允许客户租赁车辆的函数。
(6)isHandled〔〕:
说明请求已处理。
(7)notify〔〕:
通知客户前来取车的函数。
客户要租赁车辆,首先必须填写申请表。
公司员工负责处理申请表,他们根据客户租赁的历史记录以及客户申请的车辆的状态决定是否承受客户请求。
如果他们两个条件都满足,那么将承受请求并且为客户预留该车;否那么就拒绝请求,处理过的申请表的状态都设为已处理,如果承受用户的租赁请求,首先为该客户添加一条记录,然后通知客户前来取车。
1.3.3客户取车顺序图
图5客户取车顺序图
顺序图说明:
(1)show_notice〔〕:
向工作人员出示取车通知。
(2)check〔〕:
工作人员检查取车通知的合法性。
(3)pay〔〕:
客户付款。
(4)fillWorkRecord〔〕:
公司员工创立工作记录。
(5)update_carstatus〔〕:
更新汽车状态信息。
客户在约定的时间到前台取车,公司员工首先验证取车通知,验证通过后,将要求客户付款,然后填写一份工作记录,同时修改车辆状态。
1.3.4客户还车顺序图
图6客户还车顺序图
顺序图说明:
(1)check_carstatus〔〕:
检查车辆状况的函数。
(2)fillRecord〔〕:
填写车辆检查记录的函数。
(3)notify_payment〔〕:
通知客户支付租赁款项的函数。
(4)update_carstatus〔〕:
更新车辆信息的函数。
(5)end〔〕:
完毕租赁交易的函数。
(6)updateRecord〔〕:
更新工作记录的函数。
客户在规定时间将车返还给租赁商店,技术人员将对车辆进展检修以确定是否有损坏,并且填写一份效劳记录,公司职员将根据记录确定客户应付的款项。
与客户交易完成后,需要修改车辆的状态、客户记录以及工作记录等。
1.3.5客户预订车辆的协作图
图7客户预订车辆的协作图
协作图说明:
(1)fillOrder〔〕:
申请表类中填写租赁申请表的函数。
(2)checkRequest〔〕:
普通公司员工类中查看申请的函数。
(3)check〔〕:
客户租赁历史记录类中的检查历史记录的函数。
(4)InServiced〔〕:
车辆类中的判断车辆状态的函数。
(5)Allow〔〕:
允许客户租赁车辆的函数。
(6)isHandled〔〕:
判断预订表单是否被处理的函数。
(7)notify〔〕:
通知客户前来取车的函数。
1.3.6客户取车协作图
图8客户取车协作图
协作图说明:
(1)show_notify〔〕:
向工作人员出示取车通知。
(2)check〔〕:
工作人员检查取车通知的合法性。
(3)take_car〔〕:
客户取车。
(4)fillWorkRecord〔〕:
公司员工创立工作记录。
(5)update_carstatus〔〕:
更新汽车状态信息。
1.3.7客户还车协作图
图9客户还车协作图
协作图说明:
(1)return_car〔〕:
客户还车的函数。
(2)check_carstatus〔〕:
检查车辆状况的函数。
(3)fillRecord〔〕:
填写车辆检查记录的函数。
(4)update_carstatus〔〕:
更新车辆信息的函数。
(5)show_payment〔〕:
通知客户相关费用。
(6)pay_money〔〕:
客户付款。
(7)end〔〕:
完毕租赁交易的函数。
(8)updateRecord〔〕:
更新工作记录的函数。
1.4业务过程建模
1.4.1系统的状态图
由于系统的几个对象,如客户预订申请表类、客户租赁历史记录类、工作记录类、维修记录类和车辆类的状态都很少,不需要用创立状态图,所以此处将建立整个系统的状态图,如图10所示。
图10系统状态图
状态图说明:
(1)customersendtherequest:
客户提出租赁申请。
(2)employeehandletherequest:
公司员工处理申请请求。
(3)searchrelatinginformation:
查找租赁的相关历史记录。
(4)accepttherequest:
承受租赁请求。
(5)storeinformation:
存储交易信息。
(6)customergetthecar:
客户取车。
(7)customerreturnthecar:
客户还车。
(8)checkthecar:
检查车辆状况。
(9)denytherequest:
拒绝租赁请求。
(10)endthebusiness:
完毕交易。
从客户填写预订申请表开场,租赁商收到客户的申请并对其进展处理。
根据客户的历史记录以及车辆的状态确定是否承受客户请求。
如果某个条件不符合,就向客户发送一个拒绝通知,交易完毕;如果条件都符合,那么承受该请求并保存相关数据。
客户在约定时间来取车,取车需出示相关通知。
车辆使用以后,客户必须在规定的时间将车返还给租赁商。
还车后技术人员还会对车辆进展检查,根据车辆状况收取相应费用,如果车辆破损还要收取罚金。
最后,交易完毕。
1.4.2系统的活动图
汽车租赁系统的活动图如图11所示。
要注意的一点就是,租赁者填写租赁申请表和公司员工处理申请可以并发执行。
图11系统的活动图
活动图说明:
(1)customerrequest:
客户填写租赁申请。
(2)storetherequest:
存储申请表。
(3)employeechecktherequest:
公司员工查看租赁申请。
(4)handlenewrequest:
处理新的租赁申请。
(5)checkthecustomer’srecord:
查看客户租赁的历史记录。
(6)denyrequest:
拒绝租赁请求。
(7)thecarisavailable:
车辆为可用。
(8)sendthemessage:
发送取车通知。
(9)customeracquirethecar:
客户取车。
(10)customergivethecarback:
客户还车。
2系统分析
2.1概念用例
2.1.1客户参与的用例图
图12客户参与的用例图
用例图说明:
(1)reservethecar:
预订车辆的用例。
(2)byphone:
预订用例。
这是从预订用例扩展出来的一种预订方式。
(3)ontheweb:
网络预订用例。
这是从预订用例扩展出来的另一种预订方式,用户可以在公司主页上提交预订申请。
(4)filltheorderform:
填写预订申请表的用例。
如果客户在网上预订,也必须完成预订申请表。
(5)getthecar:
取车用例。
(6)returnthecar:
还车用例。
(7)returnwithfine:
交纳罚金用例。
客户如果不能够按时还车将要交纳罚金。
2.1.2公司员工参与的用例图
图13公司员工参与的用例图
用例说明:
(1)systemlogin:
系统登录用例。
(2)reserveprocess:
预订处理用例。
(3)querycustomerorderrecord:
查询客户预订历史记录用例。
工作人员可以把客户的历史记录作为判断是否承受客户请求的一个依据。
(4)refuserequest:
拒绝预订请求用例。
工作人员可以根据情况拒绝客户的预订请求,例如客户历史记录不良,没有所需车辆等。
(5)acceptrequest:
承受预订请求用例。
工作人员在核对客户情况及车辆状态后,可以承受客户的请求。
(6)givethecartocustomer:
将预订的车交付客户用例。
(7)checkthecar:
检查车辆状况用例。
技术人员可以对车辆进展检查,以确定车辆是否被损坏。
(8)endthebusiness:
完毕租赁业务用例。
2.2分析类模型
系统中各实体类、边界类、控制类之间的交互如图14、15、16所示。
图14查询的分析类类图
图15编辑根本信息的分析类类图
图16业务处理的分析类类图
2.3组件模型
汽车租赁系统是建立在一个含有过去租赁记录、汽车信息、效劳记录以及客户和员工信息的中央数据库上。
系统组件图如图17所示,包括租赁程序、员工记录、效劳记录、工作记录和汽车记录5个组件。
图17汽车租赁系统的组件图
2.4软件构架和框架建模
本系统采用CS架构的三层体系构造,如图18所示,应用JAVA语言辅以SQLServer数据库进展开发。
图18系统CS三层架构图
3系统设计
3.1设计类模型
类图的设计是系统设计最核心的局部,明确根本类以及根本类之间的相互的关系有助于开发的后续设计。
此处将详细介绍汽车租赁系统的类图设计。
3.1.1客户和公司员工类
系统中客户和公司员工类图如图19所示。
另外,这里省略了一些普通方法,例如get和set方法。
图19客户和公司员工类图
类图说明:
(1)Person类是所有类的父类,它包含4个属性:
〔name〕,号〔ID〕,地址〔address〕和〔phoneNO〕。
它包含的方法都是用来设置和获取这些属性值。
(2)Customer类是包含客户信息的类,除了继承父类的属性和方法,它包括车辆类型〔CarType〕和驾驶证号〔licenseNo〕等属性。
(3)Employee类是包含员工信息的类,其中包含了员工的聘用日期等信息。
同时,它还是Manager、monWorker、SkillWorker3个类的父类。
(4)Manager类是管理人员的类,管理人员可以查看工作人员的工作记录。
monWorker类是普通工作人员类,missionRate属性是该员工完成任务率;方法calculate〔〕用来计算该工作人员完成的任务率;checkRequest〔〕用来查询是否有没处理的申请单。
SkillWorker类是技术人员的类,skills属性代表该员工的技术特长,而qualifications属性那么表示他的技术职称。
3.1.2一些其他的类
其他的类图如图20和图21所示。
图20其他类图1
图21其他类图2
类图说明:
(1)CustomerRecord类表示客户记录。
customerID是客户的,rentDate是租车日期,CarType是所组车辆的车型,CarNumber是该车的车牌,IsFinish代表该交易是否完毕。
check〔〕用来得到该客户的记录,end〔〕用来完毕该交易。
(2)Car类代表车辆记录。
Type是该车的车型,CarNumber是车牌,status是指该车是否被预订、正在使用中或空闲状态,condition是指该车的状态。
InServiced〔〕用来判断该车是否空闲,update_carstatus〔〕用来修改车辆所处的状态。
(3)ServiceRecord类表示每一次租赁效劳的记录。
serviceHistory是效劳的历史记录,progressReport是指该过程中的报告。
fillRecord〔〕用于填写表格。
(4)RequestOrder类表示的是填写客户申请资料的表格。
CarType表示客户申请的车型,RentDate是租车的时间,IsAllow属性表示该客户的申请是否得到批准。
Allow〔〕用来承受客户的请求,fillOrder〔〕是指客户填写表格,check〔〕用来检查是否存在这个申请,isHandled〔〕设置该申请已被处理。
(5)WorkRecord类是职员的工作记录。
属性包括交易中涉及的员工、客户、车辆以及租赁信息。
fillWorkRecord〔〕用来填写这份记录,viewRecord〔〕用来查看这份记录,updateRecord〔〕用来修改这份记录。
3.2接口设计模型
类不是单独一个模块,各个类之间是存在联系的,本系统中不存在接口的实现。
汽车租赁系统各个类之间的联系如图22所示。
图22类之间的关系
类图说明:
从图中可以看出,工作人员〔monWorker〕可以查看所有客户〔Customer〕的租赁历史记录〔CustomerRecord〕,可以处理几个客户的租赁申请〔RequestOrder〕。
由于工作人员可以同时处理多个业务,那么他可以拥有多个效劳记录〔ServiceRecord〕和工作记录〔WorkRecord〕。
技术人员〔SkillWorker〕需要同时维护多辆车〔Car〕,每辆车也需要多个人员进展维护。
经理〔Manager〕可以查看多个职员的工作记录。
3.3包设计模型
这个系统可以看成页面显示〔webPages〕、业务逻辑〔Business〕、数据访问〔DataAccess〕三块,分别控制不同的应用。
整体包图如下:
图23系统包图
各层的职责:
(1)页面显示包
包含了系统所涉及到的所有页面显示,这样做的好处是再添加新的页面显示时就不会影响到别的包。
(2)业务逻辑包
包含了所有的事务,如果在管理过程中需要增加某事务,那么只需在本包中添加相应的类即可。
(3)数据访问包
包含了系统访问数据库的所有类操作。
这样,当修改数据访问时就不会影响到界面或事务操作。
3.4部署模型
汽车租赁系统由5个节点构成,应用效劳器负责整个系统的总体协调工作;数据库负责数据管理;前台工作人员负责处理客户请求以及进展租赁交易;管理人员管理界面主要是用来对员工信息进展查询;而技术人员界面那么是用于技术人员查询、修改汽车的状态,系统配置图如图24所示。
图24汽车租赁系统的部署图