共享单车是一种自行车使用权租赁服务,是一种分时租赁方式,一种新型绿色环保共享经济。共享单车车身小巧,方便快捷,为群众的出行带来了很大的便利,解决了公共交通最后一公里的问题。不仅如此,共享单车费用低廉且功能齐全,又低碳环保,减少空气污染,极大的改善了交通拥堵问题。因此,为了人们更加方便的使用和管理共享单车,我开发了一个共享单车管理系统,本文将对该系统进行详细的建模与分析。
首先,在进入共享单车管理系统后,系统会提示用户进行登录,若是第一次使用该系统,需要进行注册。在登录之后,系统会根据用户的位置显示附近可用的共享单车,用户可以根据提示去选择距离自己最近的共享单车。之后用户需要扫码开锁或者输入自行车的编号进行开锁。在骑行的过程中,若用户临时有事,可以进行临时锁车,不过要在规定时间内回来,否则系统会额外收费。此外,共享单车要在规定范围内使用,不能骑出运营区。在归还车辆时,不能将车辆停在小区、学校、公园、医院等禁止停车区域,否则会进行罚款。
系统不仅要对用户进行管理,还要对车辆进行管理。系统要管理用户的登录注册,解决用户在使用过程中遇到的问题,收集用户的反馈信息等。系统会根据车辆的使用情况进行分析,对车辆进行调度,将偏远地区的车辆运送到对车辆需求较高的地方,方便用户使用。此外,系统还要根据用户反馈,安排工作人员对问题车辆进行维修。
本文首先对共享单车管理系统进行了需求分析,对功能需求、性能需求和系统需求等做了详细的分析。其次对系统进行了建模分析,包括用例图分与设计,类图分析与设计、数据建模、时序图分析与设计、协作图分析与设计、状态图分析与设计、活动图分析与设计。之后对整篇文章进行了总结,包括对需求分析、建模分析、设计方案和思路的总结。最后在文章结尾附上了本文的参考文献和资料
共享单车管理系统主要为用户提供登录、注册及单车租赁服务,另外还要负责车辆的维修与管理

图2.1 系统功能模块架构图
(1)登录
对登录的用户进行登录验证,只有验证通过才可以进入共享单车管理系统
(2)注册
为用户提供注册服务,需要登记其个人信息只有注册成为共享单车管理系统的用户之后才可以进行单车租赁服务
(3)借车
为已登录的用户提供借车服务,解锁车辆,并在借车时生成订单,记录租赁信息,包括借车人、车辆、开始时间等
(4)临时锁车
用户正在进行租赁服务,若临时有事,可将车辆暂时锁上,临时锁车有时间限制,若超出该限制将额外收费
(5)还车
用户在使用完车辆之后可进行归还,系统会验证还车位置是否合法并提示用户,在还车成功后,系统会对订单进行结算,并为用户提供支付接口,待用户支付成功后,订单结束,并录入数据库,供用户查看
(6)管理用户
只有进入系统管理员页面才可以进行该项操作,管理用户的登录、注册和身份验证等,对用户的信息进行修改和增删改查操作
(7)管理车辆
系统管理员会对车辆使用情况进行分析,对车辆进行调度以满足用户的需求。若车辆出现故障,安排维修人员对车辆进行维修。
共享单车管理系统对数据的精度要求是根据信息存储的形式、借车还车的结果等量化而制定的。
查询时应保证查全率和查准率,所有相应域包含查询关键字的记录都应能查到,查询的记录应域给定的单项或组合查询条件不完全匹配的模糊查询
由于共享单车管理系统使用频度较高,为防止对信息资料和管理程序的恶意破坏,要求该系统具有较为可靠的安全性能。为避免系统运行时发生故障给用户带来损失,系统应对重要数据进行自行备份,做好数据维护工作。
共享单车管理系统要能适应各种系统的手机,方便用户操作和管理。在操作上要方便简单,界面上要新颖,用户界面要友好。
高效性、可扩展性、便利性、易维护性
(1)用例模型执行者:共享单车用户
(2)包括:注册、登录、借车、还车、临时锁车

图3.1 用户用例图
(1)用例模型执行者:系统管理员
(2)包括:管理用户、管理车辆

图3.2 系统管理员用例图
(1)用例规约Login
| 用例名称 | Login |
|---|---|
| 用例描述 | 系统验证用户合法性身份后进入系统 |
| 参与者 | 共享单车用户 |
| 前置条件 | 无 |
| 后置条件 | 用户登录成功,进入系统主页面 |
| 基本路径 | 1.进入系统登录页面 2.用户填写用户名和密码 3.系统验证用户身份的合法性 4.验证成功,进入系统主页面 |
| 扩展路径 | 1.登陆信息填写不充分,返回登录页面 2.用户身份不合法,返回登录页面 |
(2)用例规约Register
| 用例名称 | Register |
|---|---|
| 用例描述 | 注册之后获得单车租赁的权限 |
| 参与者 | 未注册的共享单车用户 |
| 前置条件 | 无 |
| 后置条件 | 注册成功,进入系统主页面 |
| 基本路径 | 1.进入系统注册页面 2.填写用户名和密码 3.系统验证注册信息的合法性 4.注册成功,进入系统主页面 |
| 扩展路径 | 注册信息填写不充分,返回注册页面 |
(3)用例规约Borrow
| 用例名称 | Borrow |
|---|---|
| 用例描述 | 用户租赁共享单车 |
| 参与者 | 共享单车用户 |
| 前置条件 | 用户已经登录系统 |
| 后置条件 | 返回是否借车成功信息 |
| 基本路径 | 1.用户提出借车请求 2.系统验证用户身份合法性 3.验证成功,同意用户借车,给车辆远程解锁 4.车辆解锁成功,用户收到借车成功信息 |
| 扩展路径 | 1.若未登录,系统会提示未登录,提示用户先注册或登录 2.车辆故障,系统会返回车辆故障信息,并为用户推荐距离最近的车辆 |
(4)用例规约Lock
| 用例名称 | Lock |
|---|---|
| 用例描述 | 用户在借车过程中临时锁车 |
| 参与者 | 共享单车用户 |
| 前置条件 | 用户正在进行租赁服务 |
| 后置条件 | 返回临时锁车成功的信息,并开始计时 |
| 基本路径 | 1.租车服务正在进行 2.用户提出临时锁车请求 3.系统验证临时锁车区域是否合法 4.验证通过,系统远程锁车 5.系统返回临时锁车成功的信息 |
| 扩展路径 | 临时锁车地点在禁停区域内,系统会提示此地不能临时锁车,请求用户更换锁车地点 |
(5)用例规约Return
| 用例名称 | Return |
|---|---|
| 用例描述 | 用户在租赁服务结束后归还车辆 |
| 参与者 | 共享单车用户 |
| 前置条件 | 用户正在进行租赁服务 |
| 后置条件 | 返回还车成功的信息,并进入结算页面 |
| 基本路径 | 1.正在进行租赁服务 2.用户提出还车请求 3.系统验证还车区域是否合法 4.验证成功,同意用户还车请求 5.系统返回还车成功的信息 6.进入支付页面进行结算 |
| 扩展路径 | 还车地点在禁停区域内,系统会提示此地不能还车,否则会进行罚款,请求用户更换还车地点 |
(6)用例规约ManageUser
| 用例名称 | ManageUser |
|---|---|
| 用例描述 | 管理用户的登录、注册及基本信息修改 |
| 参与者 | 系统管理员 |
| 前置条件 | 以系统管理员的身份登录系统 |
| 后置条件 | 返回对用户的操作结果 |
| 基本路径 | 1.系统管理员登录系统 2.接收用户的请求 3.对用户的请求进行相关操作 4.返回操作成功与否的相关信息 5.返回给用户操作相关与否的相关信息 |
| 扩展路径 | 1.对用户的操作不合法,返回相关信息 2.用户的请求不合法,返回给用户相关信息 |
(7)用例规约ManageBike
| 用例名称 | ManageBike |
|---|---|
| 用例描述 | 对车辆进行管理 |
| 参与者 | 系统管理员 |
| 前置条件 | 以系统管理员的身份登录系统 |
| 后置条件 | 返回对车辆管理的相关操作 |
| 基本路径 | 1.对车辆分布情况进行分析或接收到用户的反馈 2.派遣工作人员调度车辆或维修车辆 3.接收到工作人员对车辆的处理反馈 4.返回车辆管理的相关信息 |
| 扩展路径 |
(1)User
用户可以对自己的个人信息进行修改,包括用户名、密码和其他个人信息,还可以查看自己的帐单记录
(2)Bike
车辆实体类,描述车辆的具体信息。包括车辆id、车辆编码、车辆状态和车辆位置
(3)Admin
系统管理员实体类,包括管理员id、账户名、密码
(4)Order
订单实体类,包括订单id、订单编号、车辆id、用户id、订单详细信息

图3.3 类图
根据3.3的类图进行数据建模

图3.4 数据建模图
用户首先登录系统,登录成功之后查看自己附近的车辆信息,然后选择自己要租赁的车辆,扫码请求解锁,之后系统生成订单并解锁车辆,用户借车成功

图3.5 用户借车顺序图
用户进入还车页面,可以浏览自己的订单信息,请求还车结束订单,进入支付页面进行付款,付款成功,系统锁车,用户还车成功

图3.6 用户还车顺序图
系统管理员登录系统后,对用户和车辆进行管理并返回管理结果信息

图3.7 系统管理员管理用户、车辆顺序图

图3.8 用户借车协作图

图3.9 用户还车协作图

图3.10 系统管理员管理用户车辆协作图
用户状态图主要包括登录状态、借车状态、还车状态、临时锁车状态

图3.11 用户状态图
车辆状态图主要包括空闲状态、被借状态、临时锁车状态和故障状态

图3.12 车辆状态图
管理员状态主要包括登录状态、管理用户状态、管理车辆状态

图3.13 管理员状态图
订单状态主要包括订单生成状态、记录信息状态、订单完成状态、订单支付状态

图3.14 账单状态图

图3.15 用户借车、还车活动图

图3.16 系统管理员活动图
在共享单车管理系统中,我们为用户提供借车服务、临时锁车服务和还车服务,这些服务我们运用了外观模式,将一系列复杂的流程封装成一个接口提供给用户使用。通过这种模式,使得客户端和系统之间解耦,让系统内部的模块更容易扩展和维护。此外,还更好的划分了访问层次。在系统中,有些方法是对外的,有些方法是内部相互交互使用的,通过外观模式,把那些暴露给外部的更能集中到门面中,这样可以实现客户端的调用,隐藏了系统内部的细节。
当用户进行借车、还车和锁车时,调用的数据都是同一个,但是它们又是以不同的方式来遍历对象的,所以该系统使用了迭代器模式,提供一种方法顺序的访问各个元素,从而遍历整个对象,而又无需暴露该对象的内部表示。迭代器模式简化了聚合类,支持以不同的方式来遍历一个聚合对象。
用户进行单车租赁服务是一个长时间的过程,而在这个过程中如何处理用户的请求则用到了责任链模式。用户在进行借车或锁车时,只需要将请求发送到责任链上即可,无需关心请求的处理细节和请求的传递。通过责任链模式可以解耦请求的发送者和请求的处理者。
当用户由借车状态进入临时锁车状态时或进入还车状态时会进行相应的操作,这些操作会通过复制借车状态的实例来创建一个新的实例而无需知道相应类的信息。原型模式的本质就是clone,可以解决构建复杂对象的资源消耗问题,能再某些场景中提升构建对象的效率;还有一个重要的用途就是保护性拷贝,可以通过返回一个拷贝对象的形式,实现只读的限制。
车辆在借车状态下和临时锁车状态下其费用计算方式是不同的,所以它们使用的算法也是不同的,所以共享单车管理系统使用了策略模式,把不同状态下的的费用算法封装起来,使他们在适当的时候进行相互替换。这样不仅避免使用多重条件判断,而且算法可以自由切换。
在该系统中,用户和车辆需要在多种状态之间转换,所以使用了观察者模式,定义对象间的一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于他的对象都得到通知并被自动更新。观察者和被观察者时抽象耦合的,并建立了一套触发机制来实现广播通知。
共享单车不仅打通了“最后一公里”,减少了汽车的使用量,改变了人们的出行方式,也使我们的生活变的更加绿色环保。已经推出便收到广大人民的欢迎。所以我设计了共享单车管理系统对单车租赁服务进行统筹管理,并在本文中对该系统进行需求分析和软件建模分析,详细介绍该系统的设计思路和具体功能。
在实践过程中,我遇到了很多问题,这些问题之前在单独学习每一个部分的时候是没有遇到的,当统筹起来,对一个软件进行系统的建模分析的时候,很多问题都暴露了出来,包括知识点不够熟悉、设计模式没有深刻理解、PowerDesign使用不够熟练等,之后我通过重新回顾课本、在网上搜索学习教程等方法成功的解决了这些问题,完成了此次实践。
通过本次实践,我对软件建模与分析这门课程有了一个系统的认识,将理论与实践联合起来,加深了对软件建模的理解,掌握了用例图、类图等多种UML图的画法,熟练的掌握了PowerDesign建模工具使用方法,也让我明白了软件建模与分析对软件开发的重要性和意义。
1 邹盛荣.UML面向对象需求分析与建模教程(第二版).北京:科学出版社,2019.1
2 弗里曼(美).Head First设计模式(中文版).中国电力出版社
3 促进共享单车与城市空间融合发展.王光荣.管理工程学报
4 共享单车深入发展面临的问题及对策.刘力.2021.7
5 共享单车管理系统的设计与实现.李志伟.电脑知