1. 系统概述
本智能停车场系统旨在为停车场提供高效、便捷的管理解决方案,涵盖车辆进出管理、车位预订、停车费用计算、用户信息管理等功能,同时提供管理员操作界面和用户移动端应用,提升停车场运营效率和用户体验。
1.1目标
实现停车场自动化管理,提高车位利用率,减少人工成本,为用户提供便捷停车服务,提升停车场收益和管理水平。
1.2范围
包括停车场管理系统的后端服务开发,涉及车辆信息、车位信息、用户信息、订单信息、停车记录、费用规则等管理,以及与前端界面和移动端应用的数据交互。
1.3系统架构
采用分层架构,包括数据持久层、业务逻辑层、控制层和视图层。数据持久层使用MyBatis与数据库交互,业务逻辑层处理核心业务,控制层接收前端请求并调用业务逻辑,视图层负责展示数据。
1.4技术选型
后端基于Spring Boot框架开发,数据库使用MySQL,MyBatis用于数据持久化,前端采用Vue.js,移动端应用使用React Native,通过RESTful API实现前后端数据交互,使用Redis进行缓存优化,消息队列(如RabbitMQ)用于异步处理。
2. 数据库设计
2.1实体关系图(ER图)
2.2表结构设计
- 车辆信息表(CarInfo):记录车辆基本信息,如车牌号、车型等。
- 车位信息表(CarPlace):存储车位相关信息,包括车位编号、所在车库、状态等。
- 用户信息表(User):包含用户账号、密码、姓名、联系方式等。
- 订单信息表(ParkingOrder):记录订单详情,如订单编号、车辆信息、车位信息、订单状态、支付状态等。
- 停车记录表(ParkingRecord):用于记录车辆停车信息,如停车开始时间、结束时间、停车时长等。
- 费用规则表(PayRules):定义不同车位类型、时间段的收费标准。
- 编码表(Coder):存储系统中各类状态码和描述信息。
- 停车场信息表(Parking):包含停车场名称、地址、车位数量、状态等。
- 上传文件表(UploadFile):用于存储与系统相关的文件信息。
- 角色表(Role):定义用户角色,如管理员、普通用户等。
- 资源表(Resource):存储系统资源信息,如菜单、按钮等。
- 角色资源绑定表(RoleResourceBind):关联角色和资源,实现权限控制。
- 用户车牌绑定表(UserPlateBind):记录用户与车牌的绑定关系。
- 评论表(Comment):用于用户发表评论和反馈。
- 信息表(Information):存储系统通知、消息等信息。
- 日志表(Logger):记录系统操作日志。
2.3数据库操作类设计
每个实体对应一个DAO接口和实现类,负责数据库的基本操作(增删改查)。例如,CarInfoDao负责车辆信息的数据库操作,ParkingOrderDao负责订单信息的操作等。
3. 功能模块设计
3.1车辆信息管理
- 车辆信息录入:管理员录入车辆基本信息,如车牌号、车型、车主信息等。
- 车辆信息查询:根据车牌号、车型等条件查询车辆信息。
- 车辆信息修改:管理员修改车辆信息,如更新车主联系方式等。
- 车辆信息删除:删除不再需要的车辆信息。
3.2车位管理
- 车位状态查询:实时查询车位的使用状态(空闲、占用、预约等)。
- 车位预订:用户预订指定时间段的车位,系统自动计算费用。
- 车位分配:管理员手动分配车位给车辆。
- 车位释放:车辆离开后释放车位,更新车位状态。
3.3用户管理
- 用户注册:用户填写基本信息注册账号。
- 用户登录:用户输入账号密码登录系统,获取个性化服务。
- 用户信息修改:用户修改个人信息,如密码、联系方式等。
- 用户权限管理:管理员为不同用户分配角色和权限,控制操作范围。
3.4订单管理
- 订单生成:用户预订或现场停车时生成订单,记录订单信息。
- 订单查询:用户和管理员根据订单编号、时间等条件查询订单状态和详情。
- 订单支付:用户完成停车后支付费用,支持多种支付方式。
- 订单取消:用户在规定时间内可取消订单,退还费用或扣除违约金。
3.5停车记录管理
- 停车记录生成:车辆进出停车场时自动记录停车开始和结束时间、车位信息等。
- 停车记录查询:用户和管理员查询历史停车记录,用于统计和分析。
3.6费用管理
- 费用规则设置:管理员设置不同车位类型、时间段的收费标准。
- 费用计算:根据停车时长和费用规则自动计算停车费用。
- 费用统计报表:生成各类费用统计报表,如日收入、月收入等,辅助财务管理。
3.7数据统计与分析
- 车位利用率统计:统计不同时间段车位的使用情况,为停车场规划提供数据支持。
- 用户停车习惯分析:分析用户停车频率、时长等习惯,优化服务。
- 收入统计分析:分析停车场收入趋势,制定营销策略。
3.8系统管理
- 用户管理:包括用户信息维护、权限分配等。
- 数据备份与恢复:定期备份数据库,确保数据安全,在需要时可恢复数据。
- 系统日志管理:记录系统操作日志,便于故障排查和安全审计。
- 参数设置:设置系统运行参数,如停车场基本信息、支付配置等。
4. 接口设计
4.1内部接口
- 业务逻辑层与数据持久层接口:定义数据操作方法,如CarInfoService与CarInfoDao之间的接口,用于业务逻辑层调用数据持久层方法实现车辆信息的增删改查。
- 服务层之间接口:如ParkingService与CarPlaceService之间的接口,用于在处理停车场相关业务时调用车位服务的方法,实现业务协同。
4.2外部接口
- 前端界面接口:提供RESTful API接口供前端页面调用,如获取车位列表、提交订单等接口,采用JSON格式传输数据。
- 移动端接口:为移动端应用提供接口,实现用户注册登录、车位预订、查看停车记录等功能,接口遵循安全规范,确保数据传输安全。
4.3接口安全设计
- 身份认证:使用JWT(JSON Web Token)进行用户身份认证,用户登录成功后获取token,后续请求携带token进行身份验证。
- 权限控制:基于角色的访问控制(RBAC)模型,根据用户角色分配不同权限,在接口层面进行权限校验,确保用户只能访问其有权限的资源。
- 数据加密:对敏感数据(如用户密码、支付信息等)进行加密存储和传输,防止数据泄露。
5. 系统部署
5.1服务器环境配置
- 硬件配置:根据停车场规模和业务量,选择合适的服务器配置,包括CPU、内存、硬盘等。
- 软件环境:安装JDK、MySQL、Redis、RabbitMQ等软件,并进行相应配置。
5.2部署步骤
- 项目打包:使用Maven或Gradle将项目打包成可执行的JAR文件。
- 部署到服务器:将打包后的文件上传到服务器,通过命令行启动项目。
- 配置反向代理:使用Nginx等反向代理服务器,配置域名映射和负载均衡,提高系统性能和安全性。
5.3性能优化
- 缓存优化:使用Redis缓存常用数据,如车位信息、费用规则等,减少数据库查询次数,提高响应速度。
- 数据库优化:创建合适的索引,优化查询语句,定期进行数据库优化和维护,确保数据库性能。
- 异步处理:对于耗时操作(如订单处理、消息推送等),使用消息队列进行异步处理,提高系统吞吐量。
5.4监控与维护
- 系统监控:使用监控工具(如Prometheus、Grafana等)实时监控系统运行状态,包括服务器性能、接口响应时间、数据库连接等。
- 故障处理:建立故障预警机制,及时发现和处理系统故障,确保系统稳定运行。
- 系统升级:定期对系统进行升级和优化,修复漏洞,提升功能和性能。
6. 测试计划
6.1测试策略
采用黑盒测试和白盒测试相结合的方法,对系统功能、性能、安全等方面进行全面测试。功能测试验证系统各项功能是否符合需求规格说明书;性能测试评估系统在不同负载下的性能表现;安全测试检查系统的安全性,包括身份认证、权限控制、数据加密等方面。
6.2测试用例
测试用例编号 | 测试功能 | 测试步骤 | 预期结果 | 实际结果 | 测试人员 | 测试时间 |
---|---|---|---|---|---|---|
1 | 车辆信息录入 | 在车辆信息管理页面,输入合法的车辆信息(车牌号、车型等),点击保存按钮 | 系统提示保存成功,数据库中新增车辆信息记录 | |||
2 | 车位预订 | 用户登录后,选择停车场、车位和预订时间段,点击预订按钮 | 系统提示预订成功,订单状态为预订中,车位状态变为已预订 | |||
3 | 用户登录 | 在登录页面,输入正确的用户名和密码,点击登录按钮 | 系统登录成功,跳转到用户首页,显示用户相关信息 | |||
4 | 订单支付 | 在订单详情页面,选择支付方式,点击支付按钮,输入支付密码(模拟) | 系统提示支付成功,订单状态变为已支付,更新用户余额和停车场收入记录 | |||
5 | 车位利用率统计 | 管理员登录后,进入数据统计页面,选择车位利用率统计功能,选择统计时间段 | 系统显示该时间段内车位的使用情况统计图表,包括使用率、空闲时长等信息 |
6.3测试环境
- 硬件环境:测试服务器配置与生产环境相似,包括CPU、内存、硬盘等。
- 软件环境:安装与生产环境相同版本的JDK、MySQL、Redis、RabbitMQ等软件,以及测试工具(如JMeter、Postman等)。
6.4测试进度安排
测试阶段 | 开始时间 | 结束时间 | 负责人 |
---|---|---|---|
功能测试 | |||
性能测试 | |||
安全测试 | |||
回归测试 |
6.5测试报告
测试完成后,编写详细的测试报告,包括测试过程中发现的问题、缺陷严重程度、修复情况等,为系统上线提供依据。
7. 风险评估与对策
7.1技术风险
- 技术选型风险:若所选技术框架或工具不适合项目需求,可能导致开发效率低下、系统性能不佳等问题。对策是在项目前期进行充分的技术调研和评估,结合项目特点选择合适的技术,并进行技术预研和验证。
- 系统集成风险:与第三方系统(如支付平台、地图服务等)集成时,可能出现接口不兼容、数据传输问题。在集成前,详细了解第三方系统接口规范,进行充分的联调测试,建立异常处理机制。
7.2部分功能页面