目录
1 软件需求分析
1.1 综合描述
1.1.1 产品的功能
- 系统使用的设计方法是模块化的分析构建方法,功能模块为系统后台用户端操作模块和管理员端操作模块,功能设计如下。
- 用户端操作模块。
- 该系统具备用户注册与登录功能,用户注册后方可凭账户和密码进行登录。
- 登录时需要输入账户和对应的登录密码进行系统验证。
- 登录成功后,用户可以使用该系统,主要的功能有农田信息管理、无人机管理、监测数据管理、灌溉计划管理、虫害监测管理以及个人资料修改等。
- 管理员端操作模块。
- 可以对系统用户信息进行维护和管理。
- 进行功能权限的分配。
- 对土地进行分类、上传农田信息、添加无人机列表、爬取监测数据、制定灌溉计划以及对病虫害进行监测。
- 实现快速导入Excel文件,进行数据上传。
- 实现可视化平台展示。
- 基于大数据分布式存储智能灌溉决策可视化角色有管理员以及用户角色,用户可以查看各类数据信息。管理员对关键数据进行爬取。
1.1.2 用户类和特性
用户角色主要完成首页、个人信息、农田信息管理、无人机管理、监测数据管理、灌溉计划管理、虫害监测管理等操作。管理员角色主要有用户管理、对土地进行分类、上传农田信息、添加无人机列表、爬取监测数据、制定灌溉计划以及对病虫害进行监测等操作。
1.1.3 运行环境
运行环境见表1.1所示。
表1.1 系统运行环境
| 版本 | |
| 开发工具:pycharm、Vs Code、HbuildX | java 1.8 |
| 开发语言: | Java |
| 操作系统:Windows 11、Windows 10、Windows 8、Windows 7 | 专业版1577 |
| 数据库:MySQL | 5.6以上 |
系统环境配置需求较低,详尽的配置见表1.2所示。
表1.2 硬件环境表
| 服务器种类 | 最低配置 | 推荐配置 |
| 数据库服务器 | CPU:1.60GHz及以上 | 内存:4GB及以上 |
| 硬盘:500MB以上 | 显卡:图像级显卡以上 |
1.1.4 设计和实现上的限制
1、数据处理与实时性:虽然Hadoop适合处理大规模数据,但它的批处理机制导致无法实现实时数据处理,而智能灌溉系统往往需要根据天气、土壤湿度等实时数据做出快速响应,因此Hadoop在实时决策方面存在限制。
2、系统复杂性与维护成本:大数据系统需要多节点协同工作,系统架构较为复杂,对硬件和软件的配置要求较高,尤其是集群的运维和数据一致性管理,增加了系统的维护难度和成本。
3、可视化性能与交互:Java和Hadoop的可视化功能较弱,主要依赖第三方工具进行数据可视化处理,但这些工具的交互性能和实时反馈能力有限,可能导致用户在决策过程中无法获得流畅的操作体验。
4、存储与计算资源需求:Hadoop分布式存储需要大量计算与存储资源,尤其在处理多维度数据时,系统的存储和计算需求会显著增加,可能影响整体效率。
1.2 外部接口需求
1.2.1 后台界面布局
后台主要时管理员使用界面,在后台首页中首先可见左侧的菜单区域,展示了管理员的功能导航栏,使用鼠标可以逐一点击,主要从上至下依次为系统用户、土地分类管理、农田信息管理、无人机管理、监测数据管理、灌溉计划管理、虫害监测管理等。

常用的功能区布局如图1.2所示。
如土地分类管理中包括了土地分类列表,可供管理员查看所有的土地类型列表,接下去时土地分类添加,可以供管理员详细对土地分类信息的添加、修改、删除操作。

图1.2 功能布局
1.2.2 后台用户界面布局
系统的用户主页界面如图1.3所示,界面右侧方是菜单导航栏,用户登录系统后可以根据功能指示进行点击,查看不同功能模块内容以及在线修改个人资料。

1.3 系统功能需求
基于大数据分布式存储智能灌溉决策可视化的角色可分为用户和管理员,下面将从各角色的功用做简单介绍:
1、用户
用户可以进入基于大数据分布式存储智能灌溉决策可视化进行对数据的查看、登录退出、功能使用等,用户角色有首页、农田信息管理、无人机管理、监测数据管理、灌溉计划管理、虫害监测管理以及个人资料修改等页面。主要功能如下(图1.4为用户用例图):
- 浏览、查看不同农田信息,包括编号、位置、类型、面积、种植的作物、种植日期等;
- 查看无人机信息,包括飞行路线以及飞行时间,还可以了解具体的监测情况数据;
- 查看具体的监测数据;
- 查看灌溉计划表详情
- 个人中心中的信息修改和进行系统登录、退出信息的管理。
2、管理员
管理员可以进行系统用户信息的维护管理,实现后台管理工作,主要功能如下(图1.5为管理员用例图):
(1)维护和管理用户和系统管理员用户信息;
(2)管理各项数据;
(3)进行土地分类;
(4)上传无人机信息;
(5)爬取监测数据;
(6)制定灌溉计划和进行虫害监测管理。
1.3.2 功能需求
根据实际的使用需求分析,下文将对用户和管理员的功能需求分析如下:
用户用例图如图1.4所示。

图1.4 用户用例图
管理员用例图如图1.5所示。

1.3.3 模块功能具体设计
软件的结构是由组成系统的各个元素构建的,通常通过分层结构或时间序列来描述各种功能模块。这些系统组件的交互机制使得软件能够融入更大的系统框架中,并与其他系统进行整合。同时,系统还能为用户提供功能性支持,并通过必要的性能保障措施确保实时运行和响应能力。这种架构设计不仅实现了模块化的功能划分,还增强了系统的稳定性和性能可靠。
系统的功能结构划分如图1.6所示。

图1.6 系统结构图
1.3.4 系统用户管理
在基于大数据分布式存储智能灌溉决策可视化中,系统中的用户角色包括注册用户以及系统管理员用户,管理员可以通过此板块对所有的用户信息进行维护管理。
1.3.5 农田信息管理
农田信息管理功能是指对所有的农田信息进行爬取,包括编号、位置、类型、面积、种植的作物、种植日期。便于用户进行浏览。
1.3.6 无人机管理
无人机管理功能指对所有的无人机信息进行添加、修改、删除,无人机的使用可以对农田数据进行收集。
1.3.7 监测数据管理
系统中的主要功能之一,主要对农田中农作物的各类数据进行监测收集,包括了土壤温度、土壤湿度、天气温度、光照强度、生长监测以及土壤分析。
1.3.8 灌溉计划管理
根据以上无人机采集的农田以及农作物信息后,爬取监测数据后制定农田灌溉计划。
1.4 其它非功能需求
1.4.1 可靠性
系统应具备高可靠性,能够稳定运行并保证数据的完整性和安全性。在面对异常情况或故障时,系统应能够快速恢复并提供可靠的服务。
1.4.2 安全性
系统应具备良好的安全性,保护用户的个人信息和支付数据不被未授权的访问和篡改。采用合适的加密算法、权限控制和身份验证机制,确保数据的保密性和完整性。
1.4.3 可维护性
系统应具备良好的可维护性,方便开发人员进行系统的维护和升级。采用模块化的设计和规范的编码风格,使代码易于理解、修改和扩展。
1.4.4 可拓展性
系统应具备良好的可扩展性,能够根据业务需求进行功能的扩展和定制。采用松耦合的架构和灵活的设计,方便添加新的功能模块或集成第三方服务。
1.4.5 可测试性
系统应具备良好的可测试性,方便开发人员进行单元测试、集成测试和系统测试。采用合适的测试工具和技术,确保系统的稳定性和质量。
1.4.6 兼容性
统应具备良好的兼容性,能够在不同的操作系统、浏览器和设备上正常运行。同时,系统应支持多语言和多地区的需求,以满足不同用户群体的使用习惯和文化差异。
1.4.7 技术可行性
本基于大数据分布式存储智能灌溉决策可视化采用hadoop框架技术、java语言和MYSQL数据库进行开发设计,作为计算机专业学生,在学校期间就接触到许多关于编程方面的知识,当然也包括各种编程软件,对他们的了解度也比较系统,所以技术开发上面还是有一定把握。
1.4.8 操作可行性
在界面设计上面不会设计太复杂,要讲究简单易用,操作上要方便,不能让用户觉得不流畅。用户一旦进入操作界面,界面上就会有相应提示,跟着操作提示就可以找到对应的功能操作模块,对于用户来说免培训就能使用。
1.4.9 经济可行性
在系统的设计过程中由于采用的所有工具以及技术支持全部都是免费的,因此不需要有任何的成本。所用到的所有资源都是免费的,只要有网络就可以进行下载使用,不需要支付相应的费用。
1.4.10 其他可行性
系统开发许可,使用授权免费的许可,同时UI和图片均是自己设计、制作的,版权没有争议。
1.5 性能需求
系统应具备良好的性能,能够处理大量的并发请求,并保持较低的响应时间。系统应具备良好的扩展性,能够根据需求进行水平或垂直扩展,以满足日益增长的用户量和业务需求。
1.6 页面响应需求
页面响应时问应该在3秒以内,最长不能超过4秒,并支持至少10000人同时在线所有系统。
1.7 系统稳定性方面
开发的基于大数据分布式存储智能灌溉决策可视化要求运行稳定,运行过程中无界面不清楚、字体模糊等现象。
2 软件概要设计
2.1 设计概述
基于大数据分布式存储智能灌溉决策可视化有用户管理、土地分类管理、农田信息管理、无人机管理、监测数据管理、灌溉计划管理、虫害监测管理。管理员可以对系统的整体把控,对于基于大数据分布式存储智能灌溉决策可视化各项数据都可以查询到,及时更新信息,保证信息准确性。
2.2 系统逻辑设计
数据库逻辑设计的关键在于将数据库管理系统(DBMS)支持的数据模型,从数据库概念设计阶段所创建的E-R图(实体-关系图),转化为DBMS能够处理的逻辑结构。这一过程的核心是将概念模型的抽象表示形式,转化为适应具体DBMS产品的实际存储与操作模式,使得数据库可以高效地组织和管理数据。如图2.1所示。

图2.1 系统逻辑设计图
2.3 数据库设计
-
-
- 所有用户表(allusers)
- 农田信息表(nongtian)
- 无人机表(wurenji)
- 监测数据表(jianceshuju)
- 灌溉计划表(guangaijihua)
- 虫害监测表(chonhaijiance)
-
各表数据结构如下:
用户表(allusers)见表2.1所示。
表2.1 用户表
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | registered_user_id | int | 10 | 0 | N | Y | 注册用户ID | |
| 2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
| 3 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
| 4 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
| 5 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
| 6 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
农田信息表(nongtianxinxi)见表2.2所示。
表2.2 农田信息表
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | farmland_information_id | int | 10 | 0 | N | Y | 农田信息ID | |
| 2 | plot_number | varchar | 64 | 0 | Y | N | 地块编号 | |
| 3 | farmland_location | varchar | 64 | 0 | Y | N | 农田位置 | |
| 4 | land_type | varchar | 64 | 0 | Y | N | 土地类型 | |
| 5 | farmland_area | varchar | 64 | 0 | Y | N | 农田面积 | |
| 6 | crop_variety | varchar | 64 | 0 | Y | N | 作物品种 | |
| 7 | planting_date | date | 10 | 0 | Y | N | 种植日期 | |
| 8 | planting_situation | text | 65535 | 0 | Y | N | 种植情况 | |
| 9 | farmland_situation | text | 65535 | 0 | Y | N | 农田情况 | |
| 10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
无人机表(wurenji) 见表2.3所示。
表2.3 无人机表
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | uav_id | int | 10 | 0 | N | Y | 无人机ID | |
| 2 | plot_number | varchar | 64 | 0 | Y | N | 地块编号 | |
| 3 | farmland_location | varchar | 64 | 0 | Y | N | 农田位置 | |
| 4 | land_type | varchar | 64 | 0 | Y | N | 土地类型 | |
| 5 | farmland_area | varchar | 64 | 0 | Y | N | 农田面积 | |
| 6 | crop_variety | varchar | 64 | 0 | Y | N | 作物品种 | |
| 7 | drone_number | varchar | 64 | 0 | N | N | 无人机编号 | |
| 8 | drone_type | varchar | 64 | 0 | Y | N | 无人机类型 | |
| 9 | flight_time | varchar | 64 | 0 | Y | N | 飞行时间 | |
| 10 | flight_path | text | 65535 | 0 | Y | N | 飞行路线 | |
| 11 | inspection_situation | text | 65535 | 0 | Y | N | 巡查情况 | |
| 12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
监测数据表(jianceshuju) 见表2.4所示。
表2.4 监测数据表
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | monitoring_data_id | int | 10 | 0 | N | Y | 监测数据ID | |
| 2 | plot_number | varchar | 64 | 0 | Y | N | 地块编号 | |
| 3 | longitude | varchar | 64 | 0 | Y | N | 经度 | |
| 4 | latitude | varchar | 64 | 0 | Y | N | 纬度 | |
| 5 | crop_variety | varchar | 64 | 0 | Y | N | 作物品种 | |
| 6 | ambient_temperature | varchar | 64 | 0 | Y | N | 环境温度 | |
| 7 | ambient_humidity | varchar | 64 | 0 | Y | N | 环境湿度 | |
| 8 | carbon_dioxide | varchar | 64 | 0 | Y | N | 二氧化碳 | |
| 9 | light_intensity | varchar | 64 | 0 | Y | N | 光照强度 | |
| 10 | rainfall | varchar | 64 | 0 | Y | N | 降雨量 | |
| 11 | wind_speed | varchar | 64 | 0 | Y | N | 风速 | |
| 12 | wind_direction | varchar | 64 | 0 | Y | N | 风向 | |
| 13 | farming_history | varchar | 64 | 0 | Y | N | 耕种历史 | |
| 14 | growth_stage | varchar | 64 | 0 | Y | N | 生长阶段 | |
| 15 | collection_time | varchar | 64 | 0 | Y | N | 采集时间 | |
| 16 | pesticide_situation | varchar | 64 | 0 | Y | N | 农药情况 | |
| 17 | fertilizer_situation | varchar | 64 | 0 | Y | N | 化肥情况 | |
| 18 | best_temperature | varchar | 64 | 0 | Y | N | 最佳温度 | |
| 19 | optimal_humidity | varchar | 64 | 0 | Y | N | 最佳湿度 | |
| 20 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 21 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
灌溉计划表(guangaijihua) 见表2.5所示。
表2.5 灌溉计划表
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | irrigation_plan_id | int | 10 | 0 | N | Y | 灌溉计划ID | |
| 2 | plot_number | varchar | 64 | 0 | Y | N | 地块编号 | |
| 3 | farmland_location | varchar | 64 | 0 | Y | N | 农田位置 | |
| 4 | land_type | varchar | 64 | 0 | Y | N | 土地类型 | |
| 5 | farmland_area | varchar | 64 | 0 | Y | N | 农田面积 | |
| 6 | crop_variety | varchar | 64 | 0 | Y | N | 作物品种 | |
| 7 | drone_number | varchar | 64 | 0 | Y | N | 无人机编号 | |
| 8 | drone_type | varchar | 64 | 0 | Y | N | 无人机类型 | |
| 9 | flight_time | varchar | 64 | 0 | Y | N | 飞行时间 | |
| 10 | irrigation_date | date | 10 | 0 | Y | N | 灌溉日期 | |
| 11 | irrigation_plan | varchar | 64 | 0 | Y | N | 灌溉计划 | |
| 12 | plan_type | varchar | 64 | 0 | Y | N | 计划类型 | |
| 13 | irrigation_water_volume | varchar | 64 | 0 | Y | N | 灌溉水量 | |
| 14 | irrigation_frequency | varchar | 64 | 0 | Y | N | 灌溉频率 | |
| 15 | plan_content | text | 65535 | 0 | Y | N | 计划内容 | |
| 16 | growth_prediction | text | 65535 | 0 | Y | N | 生长预测 | |
| 17 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 18 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
虫害监测表(chonhaijiance)见表2.6所示。
表2.6 虫害监测表
| 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 | |
| 1 | pest_monitoring_id | int | 10 | 0 | N | Y | 虫害监测ID | |
| 2 | plot_number | varchar | 64 | 0 | Y | N | 地块编号 | |
| 3 | farmland_location | varchar | 64 | 0 | Y | N | 农田位置 | |
| 4 | land_type | varchar | 64 | 0 | Y | N | 土地类型 | |
| 5 | farmland_area | varchar | 64 | 0 | Y | N | 农田面积 | |
| 6 | crop_variety | varchar | 64 | 0 | Y | N | 作物品种 | |
| 7 | drone_number | varchar | 64 | 0 | Y | N | 无人机编号 | |
| 8 | drone_type | varchar | 64 | 0 | Y | N | 无人机类型 | |
| 9 | monitoring_date | date | 10 | 0 | Y | N | 监测日期 | |
| 10 | disease_and_pest_names | varchar | 64 | 0 | Y | N | 病虫名称 | |
| 11 | types_of_pests_and_diseases | varchar | 64 | 0 | Y | N | 病虫种类 | |
| 12 | pest_situation | text | 65535 | 0 | Y | N | 虫害情况 | |
| 13 | monitoring_situation | text | 65535 | 0 | Y | N | 监测情况 | |
| 14 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
3 软件详细设计
3.1 界面设计
3.1.1 登录功能界面
用户登录,在用户登录页面可以填写账号、密码进行登录。以下是基于大数据分布式存储智能灌溉决策可视化的管理员登录界面。登录功能界面如图3.1所示。

3.1.2 农田信息功能界面
农田信息,用户登录以后可以查看农田信息列表,农田信息如图3.2所示。

3.1.3 无人机详情界面
用户登录后可以查看首无人机信息列表。如图3.3所示。

3.1.4 监测数据管理界面
管理员可以点击监测数据管理界面爬取无人机采集的农田监测数据信息,如图3.4所示。

图3.4 监测数据管理界面
3.1.5 用户管理界面

图3.5 用户管理功能界面
3.1.6 农田信息管理界面
管理员可以在农田信息管理界面管理农田信息。如图3.6所示。

图3.6 农田信息管理界面
3.1.7 灌溉计划管理功能界面
管理员可以根据监测数据中的各类农田数据进行制定合适的灌溉计划,如图3.7所示。

图3.7 灌溉计划管理功能界面
3.1.8 数据爬取界面
管理人员可以在后台管理界面中对有效数据进行爬取导入。如图3.8所示。

图3.8 数据爬取界面
3.1.9 可视化大屏展示界面
系统拥有可视化大屏设计。如图3.9所示。

3.2 数据库设计
3.2.1 数据库逻辑设计
逻辑设计的E-R图如图3.10所示。

图3.10 系统E-R图
根据系统分析的主要实体有:用户、管理员、农田信息、无人机、监测数据、灌溉计划、虫害监测。各个实体具体的描述属性图如下:
- 用户实体,它反映了用户信息,属性主要有用户信息:账号、密码、性别、手机、邮箱。如图3.11所示。

图3.11 用户实体图
- 管理员实体,管理员实体,管理员实体是用于存储管理员账户信息,它包括了用户名、密码、角色。如图3.12所示。

图3.12 管理员实体图
3.2.2 数据库物理设计
数据库中包括:
4 软件实现
4.1 编码设计风格
4.2.1 Controller层
Controller层负责具体的业务模块的控制,同时要调用service层的接口来控制业务流程,以信息查询的Controller层为例:
datasource:
url: jdbc:mysql://172.19.0.5:3306/CS866740_20220728155643?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@EnableJpaRepositories
@MapperScan("com.project.demo.dao")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}
4.2.2 Service层
Service层主要负责业务模块的应用逻辑设计,调用已经定义好的dao层接口,以数据处理的Service层为例:
package com.project.demo.constant;
public class FindConfig {
public static String PAGE = "page";
public static String SIZE = "size";
public static String LIKE = "like";
public static String ORDER_BY = "orderby";
public static String FIELD = "field";
public static String GROUP_BY = "groupby";
public static String MIN_ = "_min";
public static String MAX_ = "_max";
public static String SQLHWERE = "sqlwhere";
@RestController
@RequestMapping("auth")
public class AuthController extends BaseController<Auth, AuthService> {
/**
* 服务对象
*/
@Autowired
public AuthController(AuthService service) {
setService(service);
}
}
}4.2.4 数据爬取页面
以数据爬取页面为例:
@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);
}
@PostMapping("/upload")
public Map<String, Object> upload(@RequestParam("file") MultipartFile file) {
log.info("进入方法");
if (file.isEmpty()) {
return error(30000, "没有选择文件");
}
try {
//判断有没路径,没有则创建
String filePath = System.getProperty("user.dir") + "/src/main/resources/static/";
File targetDir = new File(filePath);
if (!targetDir.exists() && !targetDir.isDirectory()) {
if (targetDir.mkdirs()) {
log.info("创建目录成功");
} else {
log.error("创建目录失败");
}
}
// String path = ResourceUtils.getURL("classpath:").getPath() + "static/upload/";
// String filePath = path.replace('/', '\\').substring(1, path.length());
String fileName = file.getOriginalFilename();
File dest = new File(filePath + fileName);
log.info("文件路径:{}", dest.getPath());
log.info("文件名:{}", dest.getName());
file.transferTo(dest);
JSONObject jsonObject = new JSONObject();
jsonObject.put("url", "/api/upload/" + fileName);
return success(jsonObject);
} catch (IOException e) {
log.info("上传失败:{}", e.getMessage());
}
return error(30000, "上传失败");
}
5 软件测试
5.1 测试目标
测试的目的在于要对系统的稳定和可操作性能进行对照检查。对于软件的开发利用最终的目的在最后的测试和试用,这是一个不可缺少的重要环节。对于软件开发者而言,在对每一个单独的功能进行编排时候,都要有单独的测试,并通过测试阶段才可以研发多个功能性软件,这样既缩短了研发时间,也可以在的单个的早期测试中发现问题,以免融合后的软件,在查找问题时就很难快速解决或者急速定位问题。
基于大数据分布式存储智能灌溉决策可视化开发设计完成后,需要对其进行系统测试,测试的主要目的就是发现并找出系统中存在的问题,并及时的进行解决,确保系统可以正常稳定的运行下去。
5.2 测试具体内容
(1)验证功能与需求是否一致,检查功能的完整性以及数据操作的准确性。
(2)进行数据测试,检验实际数据与理想数据的匹配情况,确认表之间的关系是否正确,是否存在逻辑错误的数据。
(3)整体测试:评估系统的运行速度、稳定性和操作流畅性,并检查系统的安全性和性能表现。
5.3 软件代码测试
5.3.1 源代码一般性检查
源代码的一般性检查主要用于评估代码质量和规范性,以确保软件的稳定性和可维护性。具体包括以下几个方面:
1.代码风格和规范:检查代码是否遵循预定的编码规范,如命名规则、缩进、注释等,确保代码可读性强,便于维护和协作。
2. 逻辑正确性:审查代码逻辑,确认是否实现了预期的功能,避免出现逻辑漏洞或冗余代码。
3. 可维护性:评估代码的结构是否清晰、模块化,是否便于后续扩展和修改。
4. 异常处理:评估代码中对异常情况的处理是否完善,确保程序在异常条件下能够正确运行或安全退出。
5.3.2 软件一致性检查
需求与实现的一致性:检查软件功能是否与需求规格说明书保持一致,确保开发出的功能符合用户需求和设计目标。
界面一致性:验证用户界面设计是否统一,布局、色彩、字体等元素在不同模块之间是否保持一致,以提高用户体验。
数据一致性:确保数据处理逻辑前后一致,验证数据在不同模块、输入和输出之间的一致性,防止数据冗余或不匹配。
代码与设计的一致性:检查源代码是否遵循设计文档的架构与模块划分,确保代码实现与软件设计模型相符。
错误处理一致性:验证错误提示和处理机制在整个系统中是否一致,确保用户在不同功能模块中遇到问题时得到一致的反馈和操作体验。
5.4 软件系统测试
单元测试就是模块测试,顾名思义就是测试每个模块所承担的功能是否能够实现,这个测试就是为了找出代码在实际的设计运转中某一些小的程序所出现的偏差,很好地改正这些错误,就说明我们模块测试进行很成功过。
(2)集成测试:
集成测试就是对系统的测试以及对他子系统的一些性能测试,他检查的事系统的包装程序信息。找出其中的问题。他的优势主要有以下这几点:
软件耗费较少。
可以提前发现端口的错误。
更好的地位系统中错误的位置。
从底部往上面进行的方案针对于偏下层的结构,而中间的结构就采用折中的方法。
(3)验收测试:
终于到了结尾性的工作了。就是为了给用户看一下我们的系统功能是否达到了预期的效果。我采用了性能测试也就是黑盒测试对系统进行测试。
其结果是分别是:
有一定的差异在用户的需求。
再者就是结果与之差不了多少。
到了最后了,我们发现的问题都是与用户的需求存在一定的关联。
5.5 具体测试
5.5.1 登录功能测试
1、登录界面测试
受篇幅所限此处只列出部分测试用例,输入用户名、密码等进行登录。见表5.1所示。
表5.1 登录界面测试表
| 序号 | 操作 | 预期结果 | 实际结果 | 测试结果 |
| 1 | 不输入账号和密码 | 登录失败,请重新输入 | 登录失败,请重新输入 | 测试成功 |
| 2 | 输入管理用户名:admin,不输入密码 | 登录失败,请重新输入 | 登录失败,请重新输入 | 测试成功 |
| 3 | 不输入管理员用户名,密码:admin123456 | 登录失败,请重新输入 | 登录失败,请重新输入 | 测试成功 |
| 4 | 输入管理员用户名:admin,密码:admin123456 | 登录成功,跳转管理员界面 | 登录成功,跳转管理员界面 | 测试成功 |
| 5 | 输入错误的管理用户名:abcmin,密码:123456 | 登录失败,请重新输入 | 登录失败,请重新输入 | 测试成功 |
| 6 | 输入管理用户名:admin,错误的密码:000000 | 登录失败,请重新输入 | 登录失败,请重新输入 | 测试成功 |
| 7 | 输入用户账号:2321035705,密码:11234 | 登录成功,跳转用户界面 | 登录成功,跳转用户界面 | 测试成功 |
| 8 | 输入未注册用户:abcasdas,密码:1asdas23 | 登录失败,请重新输入 | 登录失败,请重新输入 | 测试成功 |
测试结论:登录界面输入错误密码,测试成功,达到预期效果。如图5.1所示。

图5.1 登录测试结果图
5.5.2 基于大数据分布式存储智能灌溉决策可视化模块测试
基于大数据分布式存储智能灌溉决策可视化这里管理员可以对农田的信息进行管理,可以进行查询、添加农田信息、删除操作。见表5.2所示。
表5.2 基于大数据分布式存储智能灌溉决策可视化测试表
| 序号 | 操作 | 预期结果 | 实际结果 | 测试结果 |
| 1 | 输入名称:农田信息查询 | 查询成功,列出该农田信息 | 查询成功,列出该农田信息 | 测试成功 |
| 2 | 输入未添加的:农田信息 | 查询失败,请输入正确的农田信息1 | 查询失败,请输入正确的农田信息 | 测试成功 |
| 3 | 输入农田信息,未 | 添加成功,返回基于大数据分布式存储智能灌溉决策可视化 | 添加成功,返回基于大数据分布式存储智能灌溉决策可视化 | 测试成功 |
| 4 | 输入农田编号, | 添加失败,请输入农田编号 | 添加失败, | 测试成功 |
测试结论:测试成功,达到预期效果。如图5.2所示。

图5.2基于大数据分布式存储智能灌溉决策可视化测试表
5.5.3 添加监测数据功能测试
添加监测数据功能测试用例表见表5.3所示。测试结果图如图5.3所示。
| 功能 | 操作 | 预期结果 | 实际结果 | 是否通过 |
| 添加监测数据功能 | 不输入任何信息保存 | 页面下方会提示信息不能为空 | 会首先提示“必填项不能为空 | 不通过 |
| 输入错误格式的信息 | 应当提示,信息格式输入错误 | 未能提示,数据格式需要进行规范 | 不通过 | |
| 输入正确格式信息 | 添加成功 | 与预期结果相同 | 通过 |

图5.3 添加信息测试结果图
5.5.4 无人机管理功能测试
无人机管理功能测试用例表见表5.4所示,测试结果图如图5.4所示。
| 功能 | 操作 | 预期结果 | 实际结果 | 是否通过 |
| 无人机管理功能 | 添加无人机 | 成功发布 | 成功发布 | 通过 |

图5.4 无人机管理测试结果图
6 操作手册
6.1用途
6.1.1性能
- 准确性:确保系统中每个实体的属性符合数据范围要求。
- 时间特性:系统响应时间应在2-3秒内。
- 多用户访问:保证在多用户访问时,响应时间不超过3-5秒。
- 数据提交:客户端提交到服务器的响应时间应小于3秒。
- 灵活性:软件在Windows10、Windows11和MAC OS上具备良好的可移植性,界面简洁直观,用户易于操作。
6.1.2安全保密
系统种有明确的身份角色权限设定,用户之间不可越权,管理员拥有最高功能权限,用户只可以查询和搜索具体展示的各类数据信息。
6.2运行环境
6.2.1硬件设备
内存:确保足够的内存容量可以支持数据处理和并发操作,尤其对于需要实时响应和高并发访问的系统。
存储设备:确保系统有足够的空间存储数据。
网络设备:确保系统在多用户访问时有足够的网络传输能力,避免网络延迟。
6.2.2支持软件
- 操作系统:Windows10。
- 程序语言:Java。
- 数据库:MySQL 5.7以上。
- 浏览器:谷歌浏览器。
6.3部署安装过程
在本地创建一个名为"sport-npm-appraise"的数据库,并将编码设置为utf8mb4。
在该数据库中运行"sport.sql"文件,此文件将自动创建所需的表结构并导入数据。
后端部分:
修改"application.yml"文件中的配置信息,确保与本地数据库的连接参数一致。
项目启动:
成功启动项目后,可以使用管理员账号"admin"和密码"admin123456"进行登录,进入系统。
本地接口文档:
项目启动后,后端管理系统的访问地址为:http://localhost:8016,前端访问地址为:http://localhost:8080/index。
注意事项:
请先启动后端项目,再启动前端项目,因为前端项目的部分数据和配置需要通过后端进行动态加载。
[1]李淑娟. 基于物联网技术的农田灌溉系统设计研究 [J]. 水利科学与寒区工程, 2024, 7 (09): 72-76.
[2]刘江燕. 智能农田灌溉系统设计研究 [J]. 农业技术与装备, 2024, (09): 34-35+38.
[3]刘浩楠. Python与Java在面向对象机制方面的比较 [J]. 信息系统工程, 2024, (09): 63-66.
[4]龙美梁,杨秀凡,吴玛佳,等. 基于Java技术的种植咨询平台设计与实现 [J]. 智慧农业导刊, 2024, 4 (17): 10-13.
[5]张志强,明照岳,徐效建. 农田灌溉系统中水肥一体智能控制技术的优化研究 [J]. 河南农业, 2024, (16): 66-68.
[6]于婷. 大数据环境下情报分析方法的变化思考 [J]. 办公自动化, 2024, 29 (16): 81-83.
[7]何永亚. 基于大数据分析的网络信息安全态势预测方法 [J]. 电脑与信息技术, 2024, 32 (03): 71-74.
[8]聂铖,王杰. 数据分析方法的研究与发展综述 [J]. 电脑与电信, 2024, (04): 20-25.
[9]李岩岩. 农地确权、土地调整与农村集体行动[D]. 广西大学, 2023.
[10]赵开. 农田灌溉渠道的维护与管理措施[C]// 广东省国科电力科学研究院. 第二届电力工程与技术学术交流会论文集. 北京碧鑫水务有限公司;, 2022: 6.
[11]汤东. 基于网络分析法的农田灌溉系统均匀性设计 [J]. 农机化研究, 2023, 45 (05): 108-111+164.
[12]魏聪. 基于物联网智能灌排系统设计[D]. 杭州电子科技大学, 2022.
[13]许澍. 基于GIS的水肥一体化智慧灌溉系统开发及应用研究[D]. 华北水利水电大学, 2022.
[14]Fansheng K ,S. S G ,H. K L , et al. Potassic Volcanism Induced by Mantle Upwelling Through a Slab Window: Evidence From Shear Wave Splitting Analyses in Central Java [J]. Journal of Geophysical Research: Solid Earth, 2022, 127 (3):
[15]Pepen S ,Dimas S ,Sri W , et al. Analysis of the April 10, 2021 (Mw 6.1) destructive intra-slab earthquake, East Java, Indonesia [J]. Physics of the Earth and Planetary Interiors, 2022, 326 (prepublish): 106866-.
[16]郑振浩, 智能测算系统在农田灌溉水有效利用系数分析管理应用研究. 浙江省, 宁波市水务设施运行管理中心, 2019-11-15.
致谢
本次毕业设计圆满的结束了,通过这次毕业设计我学到了很多的知识,也提高了我软件开发的能力,在系统开发设计的过程中,出现了很多的问题,但是通过教师和同学们的帮助,最后所有的问题都得到了解决,因此我要感谢在此过程中对我帮助的教师和同学们,感谢指导教师帮助我选课题,给我做详细的讲解,给我提供设计所需要的各种设备,也经常询问我进度与成果,再有难点的时候给我解决思路,帮助我顺利完成。没有他的指导,也不会有我今天所展现出的成果。
首先我要感谢我的指导教师,指导教师在教学任务繁忙的情况下,抽出时间帮助我纠正我在设计当中出现的问题,并耐性地为我的论文作校正,是他的定期检查和指导使得我们的毕业设计高质量完成。他在我整个课题开发和设计的过程中,为程序的设计、框架的设计、代码的撰写方面以及论文框架的设计提供了很多宝贵的意见,并且为我推荐了许多有用的资料和文献,他的指导和建议使我受益匪浅,有了指导教师的辅导和指点,我论文才能够顺利完成。教师的认真负责的工作态度和治学严谨之道使我们这些即将踏入社会的毕业生受益匪浅。
然后要感谢我的同学们,感谢大家对我这次毕业设计的帮助, 也感谢大家在大学生活中对我的陪伴,使得我的大学生活过的很快乐。
另外,我还要感谢父母,感谢一直以来对我的支持,让我能够顺利的完成我的学业,没有你们也就没有我的今天,感谢你们无私的付出,未来我一定会报答你们的。
最后,感谢在座的所有参加我论文答辩的教师们,感谢大家的聆听,你们辛苦了。
点赞+收藏+关注 →私信领取本源代码、数据库
关注博主下篇更精彩
一键三连!!!
一键三连!!!
一键三连!!!
感谢一键三连!!!
&spm=1001.2101.3001.5002&articleId=161804820&d=1&t=3&u=04acbc0f2e8f4baab9b66644102d1815)
173

被折叠的 条评论
为什么被折叠?



