SSM无人机租赁系统 无人机租赁平台

SSM无人机租赁系统摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻

概括

在信息社会中,需要有获取信息的途径,但基本目标是扩大手段,并且获取的信息类型往往会因观点的偏差而有所不同。技术最难克服的问题。针对无人机租赁管理等问题,我们对无人机租赁管理进行研究分析,并开发设计无人机租赁系统来解决问题。

无人机租赁系统主要功能模块包括主页、个人信息、公共管理、用户管理、信息管理、无人机租赁管理、租赁信息管理、消息反馈管理、退货信息管理等,面向对象开发。正在招聘。软件开发和硬件建设均采用MySQL作为后台数据和Java的主要存储单元,完全可以满足实际使用的需求。我们将对业务系统进行编码和开发,并实现该系统的所有功能。本报告首先分析了研究的背景、作用和意义,为研究工作的合理性奠定了基础。为了证明无人机租赁系统的需求和技术可行性,分析了无人机租赁系统的各种需求和技术问题,进而介绍了设计系统应采用的技术软件和设计思路。实现无人机和部署旅行的飞机租赁系统。

关键词:无人机租赁系统、MySQL数据库。

无人机租赁系统

抽象的

在信息社会中,有针对性的获取信息的渠道是必要的,但渠道的拓展基本上是人类努力的方向,而且由于观点的偏差,我们往往获取不同类型的信息也是最困难的。需要解决的技术问题我们对无人机租赁管理等问题进行调查分析,并开发设计解决该问题的无人机租赁系统。

无人机租赁系统主要功能模块包括主页、个人信息、公共管理、用户管理、信息管理、无人机租赁管理、租赁信息管理、消息反馈管理、退货信息管理等。采用面向对象的开发模型。软件开发和硬件安装能够充分满足实际使用需求,完善相应的软件安装和程序编码工作。采用MySQL作为后端数据的主要存储单元,采用SSM框架、Java技术以及业务友好的Ajax技术。本系统的所有功能都是通过系统的编码和开发来实现的。本报告首先分析了研究的背景、作用和意义,为研究工作的合理性奠定了基础。我们将证明租赁系统的必要性和可行性,对设计该系统所需的技术软件和设计思路进行基本介绍,最后实施和运营无人机租赁系统。

关键词:无人机租赁系统,MySQL数据库。

目录

第1 章;

1.1 研究背景及意义

1.2 发展现状

1.3 研究方法

第二章相关技术介绍

2.1 HTTP协议

2.2 Java语言和JDK开发环境

2.3 HTML网络技术

2.4 JSP脚本语言

2.5 MySQL数据库

2.6 企业级架构

第三章系统分析

3.1 可行性分析

3.2 功能需求分析

3.2.1 前端用户功能

3.2.2 后台管理员功能

3.3 非功能需求分析

3.4 安全需求分析

3.4.1 系统安全

3.4.2 数据安全

3.5 数据处理分析

第四章系统设计

4.1 系统架构设计

4.2 系统总体设计

4.3 系统功能设计

4.4 数据库设计

4.4.1 分析数据需求

4.4.2 数据库概念设计

4.4.3 设计数据库表

表Drone_leasing(无人机租赁)

表release_information(租赁信息)

表message_feedback(消息反馈)

通知(通知)

表达赞美(喜欢)

表registered_users(注册用户)

表return_information(返回信息)

桌面幻灯片(旋转木马)

第五章系统介绍

5.1 数据库访问层的实现

5.2 实现注册模块

5.3 实现登录模块

5.4 用户数据修改模块的实现

5.5 租赁信息数据管理模块的实现

5.6 实现消息反馈模块

5.7 无人机租赁模块的实现

5.8 退货信息管理模块的实现

第六章系统测试

6.1 测试目的

6.2 功能测试

6.3 性能测试

第七章总结与展望

参考

致谢

介绍

研究背景及意义

无人机是一种具有自主程序控制和无线遥控功能的机器。与有人驾驶飞机相比,无人机的主要优势体现在:中。首先,它体积小、重量轻、易于维修和保养。其次,对环境的适应性强,不需要专用的飞行器。即使在起飞场地和需要气相条件的场地,低空和出色的低空性能也让云下作业变得更加轻松,大大提高了工作效率。

近年来,无人机以其优异的性能和载人飞机无法比拟的多项优势,被广泛应用于遥感航拍、抗震救灾、农林、环境监测、通信中继、快递服务等领域。 2010年以来,航模爱好者和普通大众日益成为无人机的客户群体。然而,对于一般消费者来说,无人机往往要花费数万甚至数十万美元,而且购买后的检查和维护也需要时间、金钱和精力。由于手机价格较高,目前还很难被普通消费者广泛采用。如果我们能够以租赁的形式为广大消费者提供无人机的使用权,不仅可以满足消费者使用无人机的需求,还可以提高便利性。

发育状况

随着国内经济形势的不断发展,中国互联网迎来了难得的发展高峰期,这使得中外资本家将目光转向了互联网市场。 但由于很多管理领域的结构不合理、人员缺乏、管理需求不断增加,越来越多的人开始意识到互联网管理。

在信息高度发达的今天,信息管理改革已成为更广泛、更全面的趋势。 “无人机租赁系统”基于MySQL数据库,基于SSM的Java技术编程实现。为保证中国经济可持续发展,信息时代日益更新、充满活力。同时,随着信息社会的快速发展,招聘系统面临的信息越来越多,借助方便快捷的方法能够进行查询和存储信息,高效的信息需求变得越来越难以获取。它能够有效地管理和共享信息,对我们的工作和生活具有重要的实际意义。因此,国内外学术界对此进行了深入、广泛的研究,一个新的研究领域————无人机租赁系统诞生了。

研究方法

首先,我们通过引擎搜索和相关文献了解系统开发的背景和系统设计的意义,并收集用户请求信息。其次,在开发工具方面,最终确定系统采用Java平台进行设计和开发,数据库设计工具是MySQL。这意味着使用Java语言来实现用户界面并与数据库连接以实现完整的通信功能。然后我们设计了系统的总体功能模块。我们主要从方便系统用户和系统管理员的角度进行分析,明确系统应具备的功能。最后一步是测试系统,通过用例测试发现存在的问题,并找到解决方案。利用现有的开发平台,结合所学知识,在老师指导下完成设计,保证系统的易用性和实用性。

相关技术介绍

HTTP协议

超文本传输协议(HTTP) 是在万维网上交换信息的协作和分布式通信协议的先决条件。 HTTP是IEIF国际标准索引,W3C在相关标准的制定和实施中发挥着积极的参与者和不可估量的作用。您可以使用超文本标记语言在服务器和浏览器之间传输文档。 HTML 是一种用于构建文档的标记语言。这些文档包含相关信息的链接,允许用户只需单击其中一个链接即可访问多媒体对象和图像,同时获得有关链接项目的附加信息。 [2]。

Java语言和JDK开发环境

Java是美国Sun公司推出的编程语言,具有独特的优势,适用于多种平台,兼容性强,适合在数据中心、个人PC、科技超级计算机等领域使用,平台广泛使用。它目前拥有最大的专业开发者社区[3]。

JDK是美国Sun公司为Java开发人员发布的新产品。如果没有JDK,安装的Java程序就无法运行。

HTML网络技术

HTML 是创建网页的常用语言,并且常用于创建静态页面。其命令可以反映文本信息、链接信息、图形信息、表格信息等。现在它已被普遍接受并在互联网上广泛使用[5]。

JSP 脚本语言

JSP 可以在HTML 中使用,也可以单独使用,是Web 脚本技术的先驱。现代编程语言(如C、Java和Perl)的一些最好的特性被集成到JSP中,并且Web服务器的一些配置标准由JSP、Tomcat和数据库结合起来[6]。

MySQL数据库

MySQL更新频繁,从MySQL版本4到版本5经历了比较大规模的更新,功能变得极其丰富,在实际商业使用中有着良好的记录。最新版本的MySQL支持信息压缩和加密,更好地满足您的信息安全需求。同时,经过系统的多次更新,数据库本身的镜像功能也得到了大幅增强,使得操作更加流畅、更加易用,使得驱动程序的使用和创建更加高效、快捷。最大的变化是空间信息显示的优化,使得在应用地图上标注和计算坐标变得更加容易。强大的备份功能让用户更加安心,支持的Office功能帮助用户自行安装和使用。信息格式也进行了大幅更新,增加了两个常用的显示区域,对表格和文本进行了分类,提供了更清晰的界面显示。二是设备信息控制,可以在设备信息区域显示信息,同时对多条信息进行比较,这给用户在实际使用中带来了很大的便利。[7][8]。

在本文设计的无人机租赁系统的实际实施过程中,最终选择MySQL数据库的主要原因是企业应用系统的应用和开发过程中存在大量频繁操作的数据库,安全性得到保证;数据性要求也很高。基于这些原因,最终选择了安全系数较高的MySQL来存储无人机租赁系统的后台数据[9][10]。

下图展示了数据库管理系统的整体配置。

图2-1 数据库结构

企业级架构

SpringMVC属于MVC架构,需要JavaEE作为前提,采用JSP和servlet技术来实现。日益良好的性能吸引了开发商的青睐和关注。使用起来非常方便,反应迅速、灵敏。通过将JSP、消息资源、servlet、自定义标签有机结合起来,程序员无需编写任何代码就可以实现MVC格式,提高了程序创建的效率[11]。

Spring 是一个非常强大的JavaEE 框架架构。它不仅标准化和统一了监督项目的关键措施,而且以独特的设计引导程序员专注于编辑界面流程而不是编程类。应用程序的核心依赖于JavaBean 控制反转容器。它为组件框架层提供了整体规划,提供了独特的信息访问抽象,并提供了精简的JDBC 架构,有效降低了出错的可能性,提高了效率。此外,还集成了许多信息访问框架,例如Hibernate [12]。

Mybatis属于一种主题关系映射架构,使源代码开放,并基于JDBC实现超轻量级封装的目标,让程序员按照自己的想法用特定主题的方法来操作数据库变得更加容易。它可以与任何JDBC 集成,可以在用户端或Web 端使用,并且可以提供信息持久化[13]。

系统分析

可行性分析

技术方面,我们使用目前主流的SSM框架来构建系统的主框架,前台使用jquery和ajax来调整首页的设计和美观。在课程设计中得到实践,让开发更加便捷、系统化。从技术角度来看,这个系统是完全可行的。

在实用性方面,本次设计的主要任务是提供无人机租赁、租赁信息、归还信息、新闻信息的确认、消息和反馈等,符合当前无人机租赁系统的发展趋势。趋势。我们从用户的角度出发,考虑系统运营成本和人力资源,利用互联网上便捷的手段,实现业务流程更系统、更易用、更实用的在线业务。

从经济角度来看,本项目设计的无人机租赁系统的主要目的是为了更加方便快捷地提供信息查询管理和搜索服务,即提供可以直接使用的信息软件。系统的主要成本主要集中在后续的维护和使用数据的更新上。但该系统一旦投入使用,将显着提高信息查询和检索的效率。同时,还必须有效保障查询者信息的安全。该无人机租赁系统的实际效益具有远远超过开发和维护实际系统的成本的应用价值,使得该软件的开发在经济上可行。

功能需求分析

无人机租赁系统的功能主要分为前端用户根据需要注册登录、查看无人机信息、租赁选定的无人机。后台系统管理员因职责不同分为普通管理员和超级管理员,普通管理员主要处理租赁订单处理和用户的消息反馈,超级管理员主要处理处理注册用户、租赁信息数据、详细信息回复、 ETC。并留言进行处理。

该系统的用例图如下所示。

图3-1 系统使用示例图

前端用户功能

前端用户可以分为未注册用户需求和注册用户需求。

未注册用户的功能包括:

账户注册:用户输入个人信息并确认手机号码。

浏览无人机租赁:用户可以根据无人机租赁列表浏览无人机信息,选择一架无人机,查看产品型号、产品名称、产品库存、租赁价格、计费单位、产品状态、产品总重量等详细信息。最大信号有效距离、视频拍摄能力、传感系统类型、最大飞行时间、电池容量、功能介绍等。

注册用户可以使用以下功能:

登录:根据您的账号和密码登录。

个人信息管理:用户可以随时通过更改个人信息来更改其注册信息。

无人机租赁:用户根据自己的需求选择租赁无人机。

查看过去的租赁信息:用户可以查看过去的租赁信息。

新闻:查看管理员发布的新闻和信息。

归还信息:您可以查看租赁无人机的归还信息。

留言反馈:用户可以编辑内容并留言反馈。

后台管理员功能

后台管理员分为普通管理员和超级管理员。

常见的管理员功能包括:

修改密码:为了保证系统的安全,管理员可以随时修改访问系统的登录密码。

处理租赁信息:查看租赁信息、处理租赁审核等。

超级管理员功能包括:

修改密码:为了保证系统的安全,管理员可以随时修改访问系统的登录密码。

处理租赁信息:处理租赁审核等。

普通管理员管理:对普通管理员进行管理。当相关人员调动时,可以添加或删除普通管理员。

无人机信息管理:维护无人机信息,添加、删除、修改信息。

查看并回复用户的留言和反馈信息。

信息管理:管理首页显示的新闻信息。

公共管理:维护和管理前台展示的轮播和公告信息。

非功能性需求分析

首先主要考虑的是系统功能软件在特定的设计过程中是否能够更好的满足不同用户的基本功能需求,如果不能更好的满足用户的需求,那么这个系统就没有价值。软件系统的非功能分析从七个方面进行:基于系统的性能分析、基于系统的安全分析、基于系统的完整性分析。一是系统的可维护性分析,二是系统的可扩展性分析,三是适应业务的性能分析。通过对无人机租赁系统的性能、安全性、可扩展性、完备性七个方面进行综合对比分析,发现有必要对相应的非功能需求进行分析。

安全需求分析

系统安全

安全性对于任何系统都非常重要。安全良好的系统可以防止公司和用户信息被盗。提高系统安全性是企业和用户的责任。尤其是无人机租赁系统,需要良好的安全性来保护整个系统。

系统具有用户权限控制,根据不同的角色限制用户的权限,保证系统的安全。

数据安全

当外部输入数据库中的数据时,由于各种原因输入的数据会变得无效或脏。因此,如何保证输入数据符合规定成为数据库系统尤其是多用户关系数据库系统的主要关注点。

因此,在写入数据库时,必须保证数据的完整性、准确性和一致性。

数据流分析

在分析系统的数据流时,系统用户分为普通用户和管理员。该系统主要处理发送接口信息、验证登录信息、接收注册信息以及响应各种用户操作。

下图展示了系统的顶层数据流图。

图3-2 顶层数据流图

为了确定用户的身份,我们根据登录数据来确定用户的身份,并跳转到相应的功能界面。系统中的用户可以操作数据,数据库中心可以接收系统发送的有效数据流,并对数据SQL语句执行相应的操作。

系统底层数据流图如下图所示。

图3-3 底层数据流图

系统可分为前端和后端两部分,每次操作后,系统返回操作结果。前端和后端之间的数据连接主要是通过数据库来完成的。这意味着每个操作都对数据库执行不同的操作。

系统设计

系统架构设计

该无人机租赁系统的架构设计主要分为三层:Web层、业务层、模型层。 Web层还包括视图层和控制器层,模型层包括元数据扩展层和数据访问层。

系统架构如下图所示。

图4-1 系统架构

系统总体设计

无人机租赁系统一般分为前端用户模块和后端管理员模块。

尽管这两个模块看似独立存在,但它们访问相同的数据库。每个模块的功能都是根据之前完成的需求分析和相关信息的审查来编译和创建的。

综上所述,系统的功能框图如下图所示。

图4-2 系统功能配置图

系统功能设计

登录模块:登录模块要求所有用户在访问系统之前必须先登录。要登录,您必须输入用户名和密码。如果您尝试多次登录,则需要输入验证码。登录时,必须选择用户角色,例如普通用户或管理员登录。如果登录成功,则通过数据库检索用户的权限,并跳转到用户的主页。

留言板模块:留言反馈方便用户之间的沟通,表达个人意见、建议、意见等。留言板允许您查看现有的消息记录、发布新消息、查看消息回复等。您可以显示您的个人动态头像。个人匿名昵称等

出租信息数据模块:分为出租信息数据查看、出租信息数据查询、出租信息数据维护三个模块,管理员可以对出租信息数据进行维护、发布新的出租信息数据、更新现有出租信息等权限。所以。数据等

无人机租赁管理模块:无人机租赁管理分为添加、修改、删除无人机租赁信息。管理员可以更改、添加、删除无人机租赁信息,但一般用户可以申请无人机租赁。

数据库设计

数据需求分析

从前面的分析我们可以看到,数据库中最重要的就是无人机租赁信息、用户信息、租赁信息,以及归还信息和消息反馈信息。通过分析,您可以获得以下数据的描述:

平台用户:用于记录各种用户信息,包括用户名、密码、姓名、性别、年龄、电子邮件、联系方式等数据项。

管理员:记录管理员的登录信息。包含用户名、密码、权限和其他数据项。

无人机租赁:存储为无人机信息的内容,如产品型号、名称、照片、库存、状态、总重量、租赁价格、计费单位、最大信号有效距离、视频拍摄能力、感知系统类型、最大飞行时间和电池容量。

租赁信息:存储用户的无人机租赁信息。无人机租赁信息的数据项包括租赁用户、用户名、产品型号、产品名称、租赁价格、计费单位、租赁数量、租赁日期等。

留言反馈:保存用户反馈信息。包含消息用户、用户名、消息标题、类型、时间、信息、审核状态等数据项。

归还信息:存储用户租赁无人机的归还信息。包含租赁用户、用户名、产品型号、产品名称、租赁价格、计费单位、租赁数量、归还日期、付款状态等数据项。

数据库概念设计

按照前面的数据流程图,结合系统的功能模块设计,设计出适合系统的各个信息实体。

系统ER图如下所示。

图4-3 系统ER图

设计数据库表

无人机租赁系统保存的数据表为用户信息表、房屋租赁表、房屋信息表、看房申请表、故障维修报告表、合同表。

由于数据表较多,仅展示系统主要数据表,如下表所示。

表drone_leasing (无人机租赁)

序列号

姓名

数据类型

长度


小数位
允许空值
主键
默认值
说明
1
drone_leasing_id
int
10
0
N
Y

无人机租赁ID
2
product_model
varchar
64
0
Y
N

商品型号
3
product_name
varchar
64
0
Y
N

商品名称
4
product_image
varchar
255
0
Y
N

商品图片
5
inventory_of_goods
varchar
64
0
Y
N

商品库存
6
lease_price
varchar
64
0
Y
N

租赁价格
7
billing_unit
varchar
64
0
Y
N

计费单位
8
product_status
varchar
64
0
Y
N

商品状态
9
gross_weight_of_goods
varchar
64
0
Y
N

商品毛重
10
maximum_signal_effective_distance
varchar
64
0
Y
N

最大信号有效距离
11
video_shooting_ability
varchar
64
0
Y
N

视频拍摄能力
12
perception_system_type
varchar
64
0
Y
N

感知系统类型
13
maximum_flight_time
varchar
64
0
Y
N

最大飞行时间
14
battery_capacity
varchar
64
0
Y
N

电池容量
15
introduction_to_features
text
65535
0
Y
N

特点简介
16
hits
int
10
0
N
N
0
点击数
17
praise_len
int
10
0
N
N
0
点赞数
18
recommend
int
10
0
N
N
0
智能推荐
19
create_time
datetime
19
0
N
N
CURRENT_TIMESTAMP
创建时间
20
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间

表lease_information (租赁信息)

编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
lease_information_id
int
10
0
N
Y

租赁信息ID
2
rental_users
int
10
0
Y
N
0
租赁用户
3
user_name
varchar
64
0
Y
N

用户姓名
4
product_model
varchar
64
0
Y
N

商品型号
5
product_name
varchar
64
0
Y
N

商品名称
6
lease_price
varchar
64
0
Y
N

租赁价格
7
billing_unit
varchar
64
0
Y
N

计费单位
8
number_of_leases
varchar
64
0
Y
N

租赁数量
9
lease_date
date
10
0
Y
N

租赁日期
10
remarks
text
65535
0
Y
N

备注信息
11
recommend
int
10
0
N
N
0
智能推荐
12
create_time
datetime
19
0
N
N
CURRENT_TIMESTAMP
创建时间
13
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间

表message_feedback (留言反馈)

编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
message_feedback_id
int
10
0
N
Y

留言反馈ID
2
message_users
int
10
0
Y
N
0
留言用户
3
user_name
varchar
64
0
Y
N

用户姓名
4
message_title
varchar
64
0
Y
N

留言标题
5
message_type
varchar
64
0
Y
N

留言类型
6
message_time
date
10
0
Y
N

留言时间
7
message_information
text
65535
0
Y
N

留言信息
8
examine_state
varchar
16
0
N
N
未审核
审核状态
9
examine_reply
varchar
16
0
Y
N

审核回复
10
recommend
int
10
0
N
N
0
智能推荐
11
create_time
datetime
19
0
N
N
CURRENT_TIMESTAMP
创建时间
12
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间

表notice (公告)

编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
notice_id
mediumint
8
0
N
Y

公告id:
2
title
varchar
125
0
N
N

标题:
3
content
longtext
2147483647
0
Y
N

正文:
4
create_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
创建时间:
5
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间:

表praise (点赞)

编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
praise_id
int
10
0
N
Y

点赞ID:
2
user_id
int
10
0
N
N
0
点赞人:
3
create_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
创建时间:
4
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间:
5
source_table
varchar
255
0
Y
N

来源表:
6
source_field
varchar
255
0
Y
N

来源字段:
7
source_id
int
10
0
N
N
0
来源ID:
8
status
bit
1
0
N
N
1
点赞状态:1为点赞,0已取消

表registered_users (注册用户)

编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
registered_users_id
int
10
0
N
Y

注册用户ID
2
user_name
varchar
64
0
Y
N

用户姓名
3
user_gender
varchar
64
0
Y
N

用户性别
4
user_age
varchar
64
0
Y
N

用户年龄
5
examine_state
varchar
16
0
N
N
已通过
审核状态
6
recommend
int
10
0
N
N
0
智能推荐
7
user_id
int
10
0
N
N
0
用户ID
8
create_time
datetime
19
0
N
N
CURRENT_TIMESTAMP
创建时间
9
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间

表return_information (归还信息)

编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
return_information_id
int
10
0
N
Y

归还信息ID
2
rental_users
int
10
0
Y
N
0
租赁用户
3
user_name
varchar
64
0
Y
N

用户姓名
4
product_model
varchar
64
0
Y
N

商品型号
5
product_name
varchar
64
0
Y
N

商品名称
6
lease_price
varchar
64
0
Y
N

租赁价格
7
billing_unit
varchar
64
0
Y
N

计费单位
8
number_of_leases
varchar
64
0
Y
N

租赁数量
9
return_date
date
10
0
Y
N

归还日期
10
detailed_remarks
text
65535
0
Y
N

详情备注
11
pay_state
varchar
16
0
N
N
未支付
支付状态
12
pay_type
varchar
16
0
Y
N

支付类型: 微信、支付宝、网银
13
recommend
int
10
0
N
N
0
智能推荐
14
create_time
datetime
19
0
N
N
CURRENT_TIMESTAMP
创建时间
15
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间

表slides (轮播图)

编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
slides_id
int
10
0
N
Y

轮播图ID:
2
title
varchar
64
0
Y
N

标题:
3
content
varchar
255
0
Y
N

内容:
4
url
varchar
255
0
Y
N

链接:
5
img
varchar
255
0
Y
N

轮播图:
6
hits
int
10
0
N
N
0
点击量:
7
create_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
创建时间:
8
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间:

系统实现
数据库访问层的实现
该系统是通过jdbc和MySQL达成连接的,新建一个jdbc.properties文件来填写与数据库连接所需要的驱动和参数。

  @RequestMapping(value = \”/del\”)

    @Transactional

    public Map<String, Object> del(HttpServletRequest request) {

        service.delete(service.readQuery(request), service.readConfig(request));

        return success(1);

}

第一个参数代表MySQL数据库的驱动,第二个参数代表要连接的数据库,第三个和第四个参数代表数据库连接名和密码。

后台与数据库访问主要是通过HQL语句来进行查询的,查询语句中的表名是表格的实体类名,在这种查询语句中*是不允许使用的,除非适合聚合函数一起使用才可以。

注册模块的实现
用户在填写数据的时候必须与注册页面上的验证相匹配否则会注册失败,注册页面的表单验证是通过JavaScript进行验证的,用户名的长度必须在6到18之间,邮箱必须带有@符号,密码和密码确认必须相同,你输入的密码,系统会根据你输入密码的强度给出指定的值,电话号码和身份证号码必须要求输入格式与生活相符合,当你前台验证通过的时候你点击注册,表单会将你输入的值通过name值传递给后台并保存到数据库中。

用户注册流程图如下图所示。

图5-1用户注册流程图

用户注册界面如下图所示。

图5-2用户注册界面

用户注册的关键代码如下。

   /**

     * 注册

     * @return

     */

    @PostMapping(\”register\”)

    public Map<String, Object> signUp(HttpServletRequest request) throws IOException {

        // 查询用户

        Map<String, String> query = new HashMap<>();

        Map<String,Object> map = service.readBody(request.getReader());

        query.put(\”username\”,String.valueOf(map.get(\”username\”)));

        List list = service.selectBaseList(service.select(query, new HashMap<>()));

        if (list.size()>0){

            return error(30000, \”用户已存在\”);

        }

        map.put(\”password\”,service.encryption(String.valueOf(map.get(\”password\”))));

        service.insert(map);

        return success(1);

}

    public Map<String,Object> readBody(BufferedReader reader){

        BufferedReader br = null;

        StringBuilder sb = new StringBuilder(\”\”);

        try{

            br = reader;

            String str;

            while ((str = br.readLine()) != null){

                sb.append(str);

            }

            br.close();

            String json = sb.toString();

            return JSONObject.parseObject(json, Map.class);

        }catch (IOException e){

            e.printStackTrace();

        }finally{

            if (null != br){

                try{

                    br.close();

                }catch (IOException e){

                    e.printStackTrace();

                }

            }

        }

        return null;

    }

    public void insert(Map<String,Object> body){

        E entity = JSON.parseObject(JSON.toJSONString(body),eClass);

        baseMapper.insert(entity);

        log.info(\”[{}] – 插入操作:{}\”,entity);

}

登录模块的实现
主要由两部分组成,登录前的登录界面以及登录后的用户功能界面。登录界面,要求用户输入用户名和密码,当用户名和密码其中一个输入为空时,给出提示“用户名,密码不能为空”。获取用户名和密码后到数据库中查找,如果用户名存在,以及对应的密码正确,则登录成功,否则登录失败。登录失败后给出提示,并把焦点停在文本框中。登录成功后将该次会话的全局变量username设置为用户名。登录成功后进入会员的功能模块,主要有会员基本信息修改,已经发布房源信息管理,发布信息,和退出功能。退出功能是清除全局变量username的值,并跳回到首页。

登录流程图如下图所示。

图5-4登录流程图

用户登录界面如下图所示

图5-5用户登录界面

用户登录的关键代码如下。

  /**

     * 登录

     * @param data

     * @param httpServletRequest

     * @return

     */

    @PostMapping(\”login\”)

    public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {

        log.info(\”[执行登录接口]\”);

        String username = data.get(\”username\”);

        String email = data.get(\”email\”);

        String phone = data.get(\”phone\”);

        String password = data.get(\”password\”);

        List resultList = null;

        QueryWrapper wrapper = new QueryWrapper<User>();

        Map<String, String> map = new HashMap<>();

        if(username != null && \”\”.equals(username) == false){

            map.put(\”username\”, username);

            resultList = service.selectBaseList(service.select(map, new HashMap<>()));

        }

        else if(email != null && \”\”.equals(email) == false){

            map.put(\”email\”, email);

            resultList = service.selectBaseList(service.select(map, new HashMap<>()));

        }

        else if(phone != null && \”\”.equals(phone) == false){

            map.put(\”phone\”, phone);

            resultList = service.selectBaseList(service.select(map, new HashMap<>()));

        }else{

            return error(30000, \”账号或密码不能为空\”);

        }

        if (resultList == null || password == null) {

            return error(30000, \”账号或密码不能为空\”);

        }

        //判断是否有这个用户

        if (resultList.size()<=0){

            return error(30000,\”用户不存在\”);

        }

        User byUsername = (User) resultList.get(0);

        Map<String, String> groupMap = new HashMap<>();

        groupMap.put(\”name\”,byUsername.getUserGroup());

        List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));

        if (groupList.size()<1){

            return error(30000,\”用户组不存在\”);

        }

        UserGroup userGroup = (UserGroup) groupList.get(0);

        //查询用户审核状态

        if (!StringUtils.isEmpty(userGroup.getSourceTable())){

            String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());

            if (res==null){

                return error(30000,\”用户不存在\”);

            }

            if (!res.equals(\”已通过\”)){

                return error(30000,\”该用户审核未通过\”);

            }

        }

        //查询用户状态

        if (byUsername.getState()!=1){

            return error(30000,\”用户非可用状态,不能登录\”);

        }

        String md5password = service.encryption(password);

        if (byUsername.getPassword().equals(md5password)) {

            // 存储Token到数据库

            AccessToken accessToken = new AccessToken();

            accessToken.setToken(UUID.randomUUID().toString().replaceAll(\”-\”, \”\”));

            accessToken.setUser_id(byUsername.getUserId());

            tokenService.save(accessToken);

            // 返回用户信息

            JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));

            user.put(\”token\”, accessToken.getToken());

            JSONObject ret = new JSONObject();

            ret.put(\”obj\”,user);

            return success(ret);

        } else {

            return error(30000, \”账号或密码不正确\”);

        }

}

    public String select(Map<String,String> query,Map<String,String> config){

        StringBuffer sql = new StringBuffer(\”select \”);

        sql.append(config.get(FindConfig.FIELD) == null || \”\”.equals(config.get(FindConfig.FIELD)) ? \”*\” : config.get(FindConfig.FIELD)).append(\” \”);

        sql.append(\”from \”).append(\”`\”).append(table).append(\”`\”).append(toWhereSql(query, \”0\”.equals(config.get(FindConfig.LIKE))));

        if (config.get(FindConfig.GROUP_BY) != null && !\”\”.equals(config.get(FindConfig.GROUP_BY))){

            sql.append(\”group by \”).append(config.get(FindConfig.GROUP_BY)).append(\” \”);

        }

        if (config.get(FindConfig.ORDER_BY) != null && !\”\”.equals(config.get(FindConfig.ORDER_BY))){

            sql.append(\”order by \”).append(config.get(FindConfig.ORDER_BY)).append(\” \”);

        }

        if (config.get(FindConfig.PAGE) != null && !\”\”.equals(config.get(FindConfig.PAGE))){

            int page = config.get(FindConfig.PAGE) != null && !\”\”.equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;

            int limit = config.get(FindConfig.SIZE) != null && !\”\”.equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;

            sql.append(\” limit \”).append( (page-1)*limit ).append(\” , \”).append(limit);

        }

        log.info(\”[{}] – 查询操作,sql: {}\”,table,sql);

        return sql.toString();

}

    public List selectBaseList(String select) {

        List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);

        List<E> list = new ArrayList<>();

        for (Map<String,Object> map:mapList) {

            list.add(JSON.parseObject(JSON.toJSONString(map),eClass));

        }

        return list;

}

用户资料修改模块的实现
用户登录/注册成功之后可以修改自己的基本信息。修改页面的表单中每一个input的name值都要与实体类中的参数相匹配,在用户点击修改页面的时候,如果改后用户名与数据库里面重复了,页面会提示该用户名已经存在了,否则通过Id来查询用户,并将用户的信息修改为表单提交的数据。

租赁信息数据管理模块的实现
如果租赁信息数据的信息需要修改,管理员可以通过查询租赁信息数据的基本信息来查询租赁信息数据,查询租赁信息数据是通过ajax技术来进行查询的,需要传递租赁信息数据的标题、编号等参数然后在返回到该页面中,可以选中要修改或删除的那条信息,如果选中了超过一条数据,页面会挑一个窗口提醒只能选择一条数,如果没有选中数据会挑一个窗口题型必须选择一条数据。当选择确认修改的时候,后台会根据传过来的id到数据库查询,并将结果返回到修改页面中,可以在修改页面中修改刚刚选中的信息当点击确认的时候from表单会将修改的数据提交到后台并保存到数据库中,就是说如果提交的数据数据库中存在就修改,否则就保存。

租赁信息数据展示界面如下图所示。

图5-6租赁信息数据展示界面

租赁信息管理界面如下图所示。

图5-7租赁信息管理界面

租赁信息管理的关键代码如下。

   public Map<String, Object> error(Integer code, String message) {

        Map<String, Object> map = new HashMap<>();

        map.put(\”error\”, new HashMap<String, Object>(4) {{

            put(\”code\”, code);

            put(\”message\”, message);

        }});

        return map;

}

留言反馈模块的实现
用户可以提交自己的留言反馈。将页面session中的用户账号userId和发表留言反馈文字框内容传入控制层LiuyanAction,调用addLiuyan方法,通过LiuyanDAOImp向数据库留言反馈表插入,将结果返回lyb.jsp界面。

留言反馈添加流程图如下图所示。

图5-8言添加流程图

留言反馈提交界面如下所示。

图5-9留言反馈提交界面

无人机租赁模块的实现
无人机租赁功能需要考虑高并发,防止出现无人机重复租赁、无人机状态显示出错等情况,特对无人机这一共享数据增加锁机制。在乐观锁、悲观锁以及线程锁中,综合考虑性能效率和错误的可接受性选择了乐观锁机制。乐观锁的实现方式是使用版本标识来确定读到的数据与提交时的数据是否一致,提交后修改版本标识,不一致时可以采取丢弃和再次尝试的策略。在数据库无人机租赁信息表(对应无人机租赁实体)设计中增加了version字段,每次数据提交时(更改无人机状态)会判断version是否匹配,若不匹配停止本次提交,若匹配则提交成功并增加version的值。

无人机租赁功能整体流程:用户浏览无人机租赁信息时,同时会显示无人机租赁的状态,系统会在其显示详细信息的页面时便会判断无人机租赁的状态,若无人机租赁状态为可租赁,则会显示租赁的链接按钮。在用户点击租赁按钮时,会先通过拦截器判断用户是否登录,若未登录,会跳转至登录页面,提示用户先登录,若为登录用户就会跳转至填写租赁信息的页面,填写好租赁信息之后,点击提交按钮,租赁成功之后返回提示信息,告知用户租赁成功。

无人机租赁流程图如下图所示。

图5-10无人机租赁流程图

无人机租赁界面如下图所示。

图5-11无人机租赁界面

无人机租赁管理界面如下图所示。

图5-12无人机租赁管理界面

无人机租赁关键代码如下。

  @RequestMapping(\”/get_obj\”)

    public Map<String, Object> obj(HttpServletRequest request) {

        List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));

        if (resultList.size() > 0) {

            JSONObject jsonObject = new JSONObject();

            jsonObject.put(\”obj\”,resultList.get(0));

            return success(jsonObject);

        } else {

            return success(null);

        }

}

归还信息管理模块的实现
此页面的关键是编写归还信息,包括归还日期,支付状态等。单击提交按钮以完成信息的添加。如果未写入完整的归还信息,例如,如果未写入归还日期,系统将给出相应的错误提示,并且无法成功输入。数据以概念的形式以onsubmit =“return checkForm()”的形式写入以进行检查,checkForm()函数是一种用于写入数据的不同类型的校对方法,是不是为空也是经过form表单中的οnsubmit=”return checkForm()来检查。

管理员点击左侧菜单“归还信息管理”,页面跳转到归还信息管理外观,调用后台查询所有归还信息。并将信息密封到数据集合List,绑定到请求对象,然后页面跳转到相应的jsp,显示出归还信息,单击删除按钮完成归还信息的删除。

归还信息管理流程图如下图所示。

图5-17归还信息管理流程图

归还信息界面如下图所示。

图5-18归还信息界面

归还信息管理界面如下图所示。

图5-19归还信息管理界面

归还信息的关键代码如下。

 @PostMapping(\”/add\”)

    @Transactional

    public Map<String, Object> add(HttpServletRequest request) throws IOException {

        service.insert(service.readBody(request.getReader()));

        return success(1);

    }

    @Transactional

    public Map<String, Object> addMap(Map<String,Object> map){

        service.insert(map);

        return success(1);

}

系统测试
测试目的
对任何系统而言,测试都是必不可少的环节,测试可以发现系统存在的很多问题,所有的软件上线之前,都应该进行充足的测试之后才能保证上线后不会Bug频发,或者是功能不满足需求等问题的发生。下面分别从单元测试,功能测试和用例测试来对系统进行测试以保证系统的稳定性和可靠性。

功能测试
下表是系统登录功能测试用例,检测了用户名和密码的不同的输入情况,观察系统的响应情况。得出该功能达到了设计目标。

表6-1 系统登录功能测试用例

功能描述
用于系统登录
测试目的
检测登录时的合法性检查
测试数据以及操作
预期结果
实际结果
输入的用户名和密码带有非法字符
提示用户名或者密码错误
与预期结果一致
输入的用户名或者密码为空
提示用户名或者密码错误
与预期结果一致
输入的用户名和密码不存在
提示用户名或者密码错误
与预期结果一致
输入正确的用户名和密码
登录成功
与预期结果一致

下表是注册功能测试用例,检测了各种数据的输入情况,观察系统的响应情况。得出该功能达到了设计目标。

表6-2 注册功能测试用例

功能描述
用于用户注册
测试目的
检测用户注册时的合法性检查
测试数据以及操作
预期结果
实际结果
输入的手机号不合法
提示请输入正确的手机号码
与预期结果一致
输入的字段为空
提示必填项不能为空
与预期结果一致
输入的密码少于6位
提示密码必须为6-12位
与预期结果一致
输入的密码大于12位
提示密码必须为6-12位
与预期结果一致

下表是无人机租赁管理功能的测试用例,检测了无人机租赁管理中对无人机信息的增加,删除,修改,查询操作是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。

前置条件;用户登录系统。

表6-3 无人机租赁管理的测试用例

功能描述
用于无人机租赁管理
测试目的
检测无人机租赁管理时的各种操作的运行情况
测试数据以及操作
预期结果
实际结果
点击添加无人机信息,必填项合法输入,点击保存
提示添加成功
与预期结果一致
点击添加无人机信息,必填项输入不合法,点击保存
提示必填项不能为空
与预期结果一致
点击修改无人机信息,必填项修改为空,点击保存
提示必填项不能为空
与预期结果一致
点击修改无人机信息,必填项输入不合法,点击保存
提示必填项不能为空
与预期结果一致
点击删除无人机信息,选择无人机租赁信息删除
提示删除成功
与预期结果一致
点击搜索无人机信息,输入存在的无人机租赁信息名
查找出无人机信息
与预期结果一致
点击搜索无人机信息,输入不存在的无人机信息名
不显示无人机信息
与预期结果一致

下表是租赁信息管理功能的测试用例,检测了租赁信息管理中租赁的操作是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。

前置条件;用户登录系统。

表6-5 租赁信息管理的测试用例

功能描述
用于租赁信息管理
测试目的
检测租赁信息管理时各种操作的情况
测试数据以及操作
预期结果
实际结果
未选择租赁信息,点击提交
提示请选择租赁信息
与预期结果一致
未输入时间,点击提交
提示请输入时间
与预期结果一致

性能测试
使用阿里云PTS(Performance Testing Service)性能测试服务对线上系统进行压力测试。线上服务器环境为:1核心CPU,1G内存,1Mbps公网带宽,Centos7.0操作系统。

压测过程中使用了2台并发机器,每台机器20个用户并发,对系统主页,登录,数据查询和数据维护等模块进行并发访问,测试结果是有40个用户并发时,数据管理相关页面的响应时间甚至达到了7s,通过查看服务器出网流量发现已经达到1381kb/s,可以看出服务器的带宽已经达到峰值,如果系统使用5Mbps的带宽,系统的响应时间和TPS将会大大增加。在整个测试的过程中,CPU的使用率占用仅8%,也提现出带宽瓶颈对系统的影响非常严重。

总结与展望
随着计算机互联网技术的迅猛发展,各行各业都已经实现采用计算机相关技术对日益放大的数据进行管理。该课题是无人机租赁系统为核心展开的,主要是为了实现无人机租赁信息化管理和用户在线租赁无人机的需求。

无人机租赁系统的开发是以Java编程语言作为基础,在Eclipse平台上完成编码工作,系统整体为B/S架构,数据库系统使用MySQL。文中详细分析了无人机租赁系统的研究背景、研究目的和意义、开发工具和相关技术以及系统需求、系统详细设计和系统测试等等一系列内容。系统实现了无人机租赁系统所需的一些基本功能,并通过测试对这些实现的功能进行了完善,进而提高了系统整体的实用性。整个系统的开发过程中大量使用了Java相关的知识以及前端开发使用的html和javascript等,同时涉及到了很多开源框架和组件,例如后台系统中运用的MVC架构、Freemarker模板引擎等,前端运用的UI框架等。

系统投入运行时,各功能均运行正常。系统的每个界面的操作符合常规逻辑,对使用者来说操作简单,界面友好。整个系统的各个功能设计合理,体现了人性化。

但是由于自己在系统开发过程中对一些用到的相关知识和技术掌握不够牢固,再加上自身开发经验欠缺,因此系统在有些方面的功能还不够完善,考虑的不够全面,因此整个系统还有待日后逐步完善。

参考文献

[1]Paul Krill. Oracle per-employee Java licensing could benefit rivals[J]. InfoWorld.com,2023.

[2]Møller Pål. The Prospective Lynch Syndrome Database: background, design, main results and complete MySQL code[J]. Hereditary Cancer in Clinical Practice,2022,20(1).

[3]Yusuf Mathiinul Hakim,Risfidian Mohadi,Mardiyanto Mardiyanto,Idha Royani. Ammonium-assisted Intercalation of Java Bentonite as Effective of Cationic Dye Removal[J]. Journal of Ecological Engineering,2022(prepublish).

[4]魏李丽,周鹏,程阳春. 智能无人机租赁柜[P]. 湖北省:CN214475308U,2021-10-22.

[5]周鹏. 无人机租赁柜[P]. 湖北省:CN306866603S,2021-10-08.

[6]杨华. 江西FT公司无人机市场营销策略研究[D].南昌大学,2021.DOI:10.27232/d.cnki.gnchu.2021.001600.

[7]吴李海. 互联网共享租赁无人机系统[P]. 安徽省:CN107274254B,2021-04-27.

[8]周鹏. 无人机租赁柜[P]. 湖北省:CN112530093A,2021-03-19.

[9]彭斌,黄丹,李文奇,何俊毅,吴嘉盛. 无人机租赁方法、装置、计算机设备和可读存储介质[P]. 广东省:CN111754286A,2020-10-09.

[10]刘泽宇,朱光明.关于无人机市场的探索[J].现代商业,2020(02):26-27.DOI:10.14097/j.cnki.5392/2020.02.010.

[11]曹从杰,廖康晟,于玥,李国刚.基于金融租赁商务模式,无人机在物流系统规划中的应用分析[J].价值工程,2019,38(18):65-67.DOI:10.14018/j.cnki.cn13-1085/n.2019.18.021.

[12]黄婷. 民用无人机侵权责任研究[D].华中科技大学,2019.DOI:10.27157/d.cnki.ghzku.2019.001571.

[13]唐宇,骆少明,侯超钧,庄家俊,郭琪伟,孙胜,刘泽锋,陈亚勇,张恒涛,黄建钧,陈家政. 一种无人机租赁系统及方法[P]. 广东:CN108921650A,2018-11-30.

[14]陈秋婷,刘铭青,白朝顺,陆仕斌,叶茂林,陈建伟. 一种无人机租赁系统及其租赁方法[P]. 广东:CN108305144A,2018-07-20.

[15]吴李海. 互联网共享租赁无人机系统[P]. 广东:CN107274254A,2017-10-20.

[16]夏小禾. 2020年我国民用无人机产品和服务市场或达465亿元[N]. 机电商报,2016-11-07(A02).

[17]阮波. 无人机租赁系统[P]. 辽宁:CN205507879U,2016-08-24.

[18]阮波. 无人机租赁系统及方法[P]. 辽宁:CN105741165A,2016-07-06.

[19].东方网力携手中航工业直升机所  打造国内首个警用无人机应用租赁平台[J].中国安防,2016(06):44.

[20]. YOCKEY APPROVES LRIP FOR SHORT-RANGE UAV; CONTRACT VALUED AT $250 MILLION[J]. Inside the Army,1993,5(4).

致谢

本次设计历时3个月。在这个毕业设计中,它离不开指导教师的指导,使事情基本顺利。指导老师无论是在毕业设计历经中,还是在论文做完中都给了了我特别大的助益。另1个方面,教师认真负责的工作姿态,谨慎的教学精神厚重的理论水准都使我获益匪浅。他勤恳谨慎的教学育人学习姿态也给我留下了特别特别深的感觉。我从老师那里学到了很多东西。在理论和实践中,我的技能得到了特别大的提高。在此,特向教师表示由衷的感激。

经过对该毕业设计的全部研究和开发,我的系统研发经历了从需求分析到实现详细功能,再到最终测试和维护的特殊进展。让我对系统研发有了更深层次的认识。如今我的动手本领单独处理疑惑的本领也获取到了特别大的演练学习增多,这是这次毕业设计最好的收获。

最后,在整个系统开发过程中,我周围的同学和朋友给了我很多意见,所以我很快就确认了系统的商业思想。在次,我由衷的向他们表示感激。

免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢~
 

#以上关于SSM无人机租赁系统的相关内容来源网络仅供参考,相关信息请以官方公告为准!

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/91783.html

(0)
CSDN's avatarCSDN
上一篇 2024年6月23日 下午3:43
下一篇 2024年6月23日 下午3:43

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注