基于JavaWeb的保护动物管理系统设计与实现

news2024/11/23 20:32:50

摘要:随着全球一些稀有物种、野生动物日益稀少,保护动物已经成为全球多个国家开始重视并投入大量物力着手解决的重要课题。动物是大自然的产物,自然界是由许多复杂的生态系统构成的。有一种植物消失了,以这种植物为食的昆虫就会消失。某种昆虫没有了,捕食这种昆虫的鸟类将会饿死;鸟类的死亡又会对其他动物产生影响。所以,大规模野生动物毁灭会引起一系列连锁反应,产生严重后果。加之目前我国的动物保护体系并不完整,动物保护理念还不是特别强。

因此,设计开发一个完善的保护动物管理系统,不仅能够提高动物保护的信息化管理,也能够完善保护动物的体系,让更多的动物保护数据得到高效率采集;减少人力浪费节约人力成本;增强数据分析;完善保护动物的体系。

关键词:动物保护;SSM;MySQL;JavaWeb;

第1章 绪论

1.1研究背景

  保护动物是人类社会的重要责任,也是保护自然环境的必要措施。然而,随着人类社会的发展和城市化进程的加速,野生动物的生存环境受到了严重的威胁,一些珍稀物种甚至濒临灭绝。因此,建立一套完善的保护动物管理系统,对于加强野生动物的保护和管理具有重要意义。 传统的保护动物管理方式主要依靠人工管理,存在工作量大、效率低、信息不及时等问题。随着信息技术的发展,建立一套基于互联网的保护动物管理系统成为了必然趋势。基于互联网的保护动物管理系统可以实现信息共享、数据统计、监测预警、在线交流等功能,能够提高野生动物保护的效率和质量。 JavaWeb技术是一种基于Java语言的Web应用程序开发技术,具有跨平台性、安全性、稳定性、可扩展性和可维护性等优点。

因此,基于JavaWeb技术的保护动物管理系统具有以下优点: 首先,JavaWeb技术具有跨平台性,可以在不同的操作系统上运行,不受硬件、操作系统和浏览器等限制,能够实现真正的跨平台和跨浏览器。 其次,JavaWeb技术具有良好的安全性和稳定性,能够保障系统的可靠性和稳定性。JavaWeb技术采用了多层架构和安全机制,能够有效地防止网络攻击和数据泄露等问题。 此外,JavaWeb技术还具有良好的可扩展性和可维护性,能够方便地进行系统升级和维护。JavaWeb技术采用了模块化设计和面向对象编程思想,能够更好地实现系统的可扩展性和可维护性。 基于JavaWeb技术的保护动物管理系统可以实现野生动物信息的采集、管理和共享,能够方便野生动物保护机构进行数据统计和监测预警等工作。此外,基于JavaWeb技术的保护动物管理系统还可以实现在线交流和信息共享,能够促进野生动物保护机构之间的交流和合作。

综上所述,基于JavaWeb技术的保护动物管理系统是一种有效的解决方案,可以帮助野生动物保护机构更好地管理和保护野生动物,提高野生动物保护的效率和质量。

1.2研究目的

本研究的目的是基于JavaWeb技术设计和实现一套保护动物管理系统,以提高野生动物保护的效率和质量。 具体来说,本研究的目的包括以下几个方面:

(1) 建立一套完善的野生动物信息管理系统。通过采集、整理和管理野生动物的相关信息,实现对野生动物的全面监测和管理,为野生动物保护机构提供准确、及时的数据支持。

(2) 实现野生动物保护机构之间的信息共享和交流。野生动物保护工作需要各个机构之间的合作和协调,因此,本研究旨在建立一套信息共享和交流平台,促进各个机构之间的沟通和合作。

(3) 提高野生动物保护的效率和质量。基于JavaWeb技术的保护动物管理系统具有良好的可扩展性和可维护性,能够方便地进行系统升级和维护,提高野生动物保护的效率和质量。

(4) 提高野生动物保护工作的公开透明度。通过建立一套在线信息管理系统,实现野生动物保护工作的公开透明,让社会各界更好地了解野生动物保护工作的进展和成果。 总之,本研究旨在利用JavaWeb技术建立一套高效、可靠、安全的保护动物管理系统,为野生动物保护工作提供有效的支持和保障。同时,本研究还旨在促进各个野生动物保护机构之间的合作和协调,提高野生动物保护的整体水平和质量。

1.3研究意义

保护动物是人类社会的重要任务之一,而动物保护管理系统的建设是实现这一目标的重要手段。基于JavaWeb的保护动物管理系统具有以下研究意义:

  • 提高动物保护管理效率 传统的动物保护管理方式主要依靠人工操作,效率低下、易出现错误,而基于JavaWeb的保护动物管理系统可以实现信息化管理,提高管理效率,减少人为误差,从而更好地保护动物资源。
  • 优化动物资源管理 动物资源是人类社会的重要资源之一,保护动物资源是实现可持续发展的必要条件。基于JavaWeb的保护动物管理系统可以对动物资源进行全面、系统的管理,优化资源配置,实现资源的科学利用,更好地保护动物资源。
  • 提高动物保护管理水平 基于JavaWeb的保护动物管理系统可以实现对动物的全面、科学、规范的管理,通过数据分析和统计,可以发现动物保护管理中存在的问题,及时采取措施进行改进,提高动物保护管理水平。
  • 促进动物保护意识的普及 基于JavaWeb的保护动物管理系统可以实现对动物资源的全面、科学、规范的管理,可以为公众提供更加全面、准确、及时的动物保护信息,促进公众对动物保护的关注和认识,进而提高全社会的动物保护意识。 综上所述,基于JavaWeb的保护动物管理系统具有重要的研究意义,可以提高动物保护管理效率、优化动物资源管理、提高动物保护管理水平、促进动物保护意识的普及,为实现动物保护的目标提供有力的支持。

1.4研究内容

本文各章节内容安排如下:

第一部分:绪论。介绍了系统的研究背景及意义、研究目的及其研究内容[6];

第二部分:关键技术及开发工具主要介绍了系统在开发过程中使用到的开发技术、开发工具

第三部分:系统分析与系统设计主要介绍了系统开发前的需求分析、可行性分析、设计原则、数据库设计及其系统总体设计。

部分:系统详细设计与实现主要介绍系统核心功能的详细设计、实现的核心代码及效果图。

部分:系统测试主要介绍了系统的测试目的、测试步骤及其部分功能测试过程及结果[6]

第六部分结论主要对全文工作总结,并阐述未来仍需改进的方面

第2章 关键技术及开发工具

2.1开发技术选择

2.1.1 SSM框架

SSM是Spring、MyBatis、SpringMVC三个框架进行整合而来。Spring作为项目里的大工厂,用于装配Bean,通过配置文件对对象进行实例化。MyBatis是把JDBC进行了封装,只需关注sql语句,并且将数据库表和实体类及实体类的属性进行对应,操作实体类就实现操作数据库表。SpringMVC是用于进行请求的拦截,核心Servlet就是DispatcherServlet。

Spring是名为Rod Johnson的专家开发出的轻量级的控制反转(Ioc)和面向切面编程(Aop)的容器框架,并且它是一个对使用者开源免费的框架。它的主要目的就是尽可能地减少企业级应用在开发中的繁琐性,主要核心内容有四部分:Bean、Core、Context和SpEL。

SpringMvc是Spring的一个子框架,通过把Controller(控制层)、Model(模块层)和View(显示层)分离,把比较复杂的Web应用开发分成逻辑清晰的几个部分,简化了开发,减少了编码过程中的错误。

Mybatis是一个持久化层半自动ORM框架。它是对Jdbc的封装,通过实现JPA规范从而连接数据库并对其进行增删改查的操作,消除了Jdbc大量的冗余代码,不需要手动开关连接。并且能够和Spring很好的集成。

2.1.2 Java

Java主要采用CORBA技术和安全模型,可以在互联网应用的数据保护。它还提供了对EJB(Enterprise JavaBeans)的全面支持,Java Servlet API,Spring BootJava Server Pages),和XML技术。Java语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的任务,开发者只需要知道一些概念就能够编写出一些应用程序。Java程序相对较小,其代码能够在小机器上运行。Java是一种计算机编程语言,具有封装、继承和多态性三个主要特性,广泛应用于企业Web应用程序开发和移动应用程序开发。

Java语言和一般编译器以及直译的区别在于Java首先将源代码转换为字节码,然后将其转换为JVM的可执行文件,JVM可以在各种不同的JVM上运行。因此,实现了它的跨平台特性。虽然这使得Java在早期非常缓慢,但是随着Java的开发,它已经得到了改进。

2.1.3 B/S结构

B/S( Browser/Server,浏览器/服务器)模式又称B/S结构。它是随着Internet技术的兴起,对C/S 模式应用的扩展。在这种结构下,用户工作界面是通过IE浏览器来实现的。B/S模式最大的好处是运行维护比较简便,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN,WANInternet/Intranet等)访问和操作共同的数据;最大的缺点是对企业外网环境依赖性太强,由于各种原因引起企业外网中断都会造成系统瘫痪。

随着Internet和WWW的流行,以往的主机/终端和C/S都无法满足当前的全球网络开放、互连、信息随处可见和信息共享的新要求,于是就出现了B/S型模式,即浏览器)服务器结构。B/S模式最大特点是:用户可以通过WWW浏览器去访问Internet上的文本、数据、图像、动画、视频点播和声音信息,这些信息都是由许许多多的Web服务器产生的,而每一个 Web服务器又可以通过各种方式与数据库服务器连接,大量的数据实际存放在数据库服务器中。客户端除了WWW浏览器,一般无须任何用户程序,只需从Web 服务器上下载程序到本地来执行,在下载过程中若遇到与数据库有关的指令Web服务器交给数据库服务器来解释执行,并返回给Web服务器,Web服务器又返回给用户就是在这种结构中,将许许多多的网连接到一块,形成一个巨大的网,即全球网。

2.1.4 JSP

JSP是一种动态网页技术标准,简称(JavaServer Pages)。它是在传统的Html中加入Java代码形成的文件,可为用户提供动态数据。JSP开发的WEB应用是跨平台的,在不同操作系统下都可运行。JSP分离了网页逻辑与网页设计和显示,支持设计可重用的组件,让开发基于WEB的应用更迅速容易。

2.2 系统开发工具

2.2.1 Intellij IDEA 

IntelliJ IDEA简称IDEA ,是java编程语言的集成开发环境。IntelliJ在业界被公认为最好的Java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(Git、Svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。它的旗舰版还支持HTML,CSS,PHP,MySQL,Python等。IDEA所提倡的是智能编码,是减少程序员的工作,IDEA的特色功能有智能的选取、丰富的导航模式、历史记录功能、编码辅助记忆、排版灵活等特色服务,更好的帮助开发者提高开发效率。

2.2.2 Tomcat 7

Tomcat属于一种轻型的服务器,所以说在中小企业中并不具有普适性。但是当程序员需要开发或调试JSP 程序时,则通常会将该服务器作为首选。对于一个仅具有计算机基础知识的人来说,计算机系统具有一个好的Apache服务器,可以很好的对HTML 页面进行访问。Tomcat 虽然是Apache的扩展,但是它们都是可以独立运行的,二者是不互相干扰的。当配置正确的时候,Apache服务器为HTML 页面的运行提供技术支持,Tomcat 的任务则是运行Servlet和JSP 页面。Tomcat也具有一定的HTML页面处理功能。

2.2.3 Mysql

数据库是系统开发过程中不可或缺的一部分。在WEB应用方面,MySQL AB开发了一个具有很大优势的Mysql关系数据库管理系统。 MySQL可以将数据存储在不同的表中,这非常灵活,并且还可以提高系统在实际应用中的速度。数据库访问最常用于标准SQL语言,MySQL用于SQL语言,因此它具有高度兼容性。数据库的操作是必不可少的,包括对数据库表的增加、删除、修改、查询等功能。现如今,数据库可以分为关系型数据库和非关系型数据库,Mysql属于关系性数据库,Mysql数据库是一款小型的关系型数据库,它以其自身特点:体积小、速度快、成本低等,Mysql数据库是目前最受欢迎的开源数据库。

在WEB应用技术中, Mysql数据库支持不同的操作系统平台,虽然在不同平台下的安装和配置都不相同,但是差别也不是很大,Mysql在Windows平台下两种安装方式,二进制版和免安装版。安装完Mysql数据库之后,需要启动服务进程,相应的客户端就可以连接数据库,客户端可通过命令行或者图形界面工具登录数据库。

2.2.4  Navicat Premium

Navicat Premium是一套数据库开发工具,可以从单一应用程序中同时连接 MySQL、MariaDB、MongoDB、SQL Server、Oracle、PostgreSQL和SQLite数据库。它与 Amazon RDS、Amazon Aurora、Amazon Redshift、Microsoft Azure、Oracle Cloud、MongoDB Atlas、阿里云、腾讯云和华为云等云数据库兼容。可以快速轻松地创建、管理和维护数据库

2.2.5  Layui

layui是一套开源的Web UI解决方案,采用自身经典的模块化规范,并遵循原生 HTMLCSSJS的开发方式,可帮助开发者快速构建网页界面。layui区别于部分基于MVVM底层的前端框架,主要面向后端开发者,无需依赖各种前端技术,只需依赖浏览器本身,让一切所需要的元素与交互。

第3章 系统分析与系统设计

3.1需求分析

经过百余年发展,保护动物的观念在世界产生了重要影响。随着尊重动物的意识不断增强,动物权利不断扩大,为了使人们更懂得尊重自然,保护动物生命的价值。通过对动物进行统一管理,方便根据不同动物种类划分,方便对动物健康状况监测,饲养监控比较方便,削减后期人员投入,节省运营成本。因此,为了便于进一步加强保护动物管理,实时监控动物的健康状况,设计一个成本低、功耗小的保护动物管理系统尤为重要。

其提供的主要功能包括前台信息展示系统和后台管理系统两部分。后台管理系统主要是对动物信息管理、动物类型管理、饲养员管理、饲养规范管理、动物日常管理、动物健康管理、用户管理等。管理员可以对动物保护信息等进行信息的添加、修改、删除、查询等操作,输入信息后,若信息正确,会将其操作内容更新到数据库内。前台信息展示系统主要给用户提供了解保护动物信息、动物类型、饲养规范等信息的浏览展示等操作。用户登录注册后台系统主要提供用户注册账号、完善及修改个人信息、等操作。

3.2可行性分析

3.2.1 技术可行性

从技术可行性上来说,Spring框架是一个免费的、开源的轻量级框架;不仅极大简化了复杂应用开发的难度,还可以整合并兼容Mybatis、SpringMVC等开源框架。Mybatis框架不仅能够极大的简化与数据库交互的过程,更能发挥出数据库的最优的性能。SpringMVC框架是一种轻量级的Web开发框架,能够针对视图层进行解耦合,使得各个模块之间能够分工明确,极大的降低不同模块之间的耦合性。通过Idea开发工具,利用Java语言、Html、css、SSM及数据库等技术完成对开系统前后端的开发。Idea工具使用简单,功能齐全并且可以通过开放的源代码及技术交流群寻求帮助。在大学中都有所学习,并且在网上有许多相关案例可以借鉴。综上所述,该系统的开发在技术上具有可行性。

3.2.2 经济可行性

从经济可行性上来说,本系统所采用的软件和技术均是免费开放源代码的,可以有效地减少开发费用,因此在经济上也是具有可行性的。当这个系统发行后,可以通过收取手续费,广告费等形式来获取利润。

3.2.3 操作可行性

从操作可行性上来说,本系统以浏览器访问为基础实现,因此操作简单、使用方便,无需下载,无需安装,通过浏览器打开系统即可使用。并且该系统前后端页面简单明了,便于用户使用。

3.2.4 社会价值方面

从社会价值方面来说,本课题开发的是一套具有宣传和科普作用的保护动物系统,普通用户可以通过此系统实现保护动物的信息的学习、了解;管理员可以通过此系统大大提高动物信息管理的信息化水平、管理效率;不仅仅能够更好的提高采集动物相关信息的效率和实时性,也能够提升人们保护动物理念加强,加快完善保护动物体系。

3.3系统设计原则

本动物保护管理系统采用Java技术,Mysql数据库开发,充分保证了系统稳定性、完整性。

动物保护管理系统的设计与实现的设计思想如下:

(1)操作简单方便、系统界面安全良好:简单明了的页面布局,方便查询动物保护系统管理的相关信息。

(2)即时可见:对动物保护系统信息的处理将立马在对应地点可以查询到,从而实现“即时发布、即时见效”的系统功能。

(3)功能的完善性:可以管理首页、动物饲养规则、动物信息、动物日常、用户管理、部门管理、角色管理、动物信息、类型管理等功能的修改和维护操作。

3.4数据库设计

系统正常运作的关键所在是数据库。Mysql是开源免费的轻量级关系型数据库,不需要支付额外的费用,使用成本低。其次它体积小、运行速度快、支持多线程、充分利用CPU资源、优化的SQL算法、有效的提高查询速度。

3.4.1数据库需求分析

在用户的角度来说,数据库的需求主要体现在对数据库表的增删改查。因此,数据库结构需同时满足两个要素:输入、输出。在进行数据设计时,首先需收集数据,然后分析数据结构,最后处理数据。根据本系统的需求,设计以下主要的数据项和数据结构:

(1) 管理员实体:表id、账户名、真实的姓名、密码、性别、部门、角色、状态、最后一次登录时间。

(2) 角色实体:表id、角色名称、启用状态。

(3) 部门实体:表id、部门名称、部门编号、启用状态。

(4) 资源实体:表id、资源名称、资源URL、父级资源id、资源标志。

(5) 首页大图实体:表id、图片路径。

(6) 饲养员实体:表id、饲养员编号、饲养员名字、饲养员手机号、饲养员简介、照片。

(7) 健康管理实体:表id、动物名称、饲养员、记录时间、健康情况记录。

(8) 日常管理实体:表id、动物名称、饲养员、记录时间、日常情况记录。

(9) 动物信息实体:表id、动物名称、类型、记录时间、详情。

(10) 动物类型实体:表id、动物类型。

(11) 饲养规范实体:表id、标题、录入时间、内容详情、录入人。

3.4.2数据库设计原则

在具体进行概念设计的时候,通常是包括的设计方式有渐进扩张、自上而下、混合策略以及自下而上。在针对局部设计的过程中,主要使用的是自上而下,而物理结构的具体设计主要包括两个阶段:首先是对数据库物理结构进行定义,其次,存取关系模型的方式一定要选择正确。

3.4.3概念设计

根据需求分析和业务流程,通过对系统中所涉及的用户、动物、动物类型类型等现实世界中存在的事务物所具有的各种属性进行归类,合并和总结,从而建立起抽象的数据概念模型。根据这个模型可以充分反映现实世界的信息结构、信息流动状况、信息之间的制约关系以及对信息进行增删改查的操作等。

3.4.4数据库表结构设计

(1)后台管理员表(admin)表

用于存储后台管理员的用户名、密码等基本信息。

表3.1 后台管理员表(admin)表

字段名称

描述

数据类型

值域

id

id

int

0

realname

真实姓名

varchar

20

username

用户名

varchar

20

pwd

密码

varchar

20

sex

性别

int

0

deptId

部门id

int

0

roleId

角色id

int

0

status

状态

int

0

lastLogin

最后登录时间

varchar

20

(2)部门表(s_dept)表

用于存储部门的部门编号、部门名称等基本信息。

表3.2 部门表(s_dept)表

字段名称

描述

数据类型

值域

id

id

int

0

deptName

部门名称

varchar

20

deptCode

部门编号

varchar

20

userId

用户id

int

0

status

最状态

int

0

(3)角色表(s_role)表

用于存储角色的角色名称、状态等基本信息。

表3.3 角色表(s_role)表

字段名称

描述

数据类型

值域

id

id

int

0

roleName

角色名称

varchar

20

status

状态

int

0

(4)首页大图表(banners)表

用于存储大图的的id、图片路径等基本信息。

表3.4 首页大图表(banners)表

字段名称

描述

数据类型

值域

id

id

int

0

pic

图片路径

varchar

255

(5)饲养员表(breeder)表

用于存储饲养员的的id、饲养员编号、名字、手机号等基本信息。

表3.5 首页大图表(breeder)表

字段名称

描述

数据类型

值域

id

id

int

0

code

饲养员编号

varchar

255

name

饲养员名字

varchar

255

phone

饲养员手机号

varchar

255

description

饲养员简介

text

0

pic

照片

varchar

255

(6)日常管理(dailty)表

用于存储日常管理的的id、动物名称、饲养员、记录时间等基本信息。

表3.6 日常管理(dailty)表

字段名称

描述

数据类型

值域

id

id

int

0

norname

动物名称

varchar

255

syy

饲养员

varchar

255

jlsj

记录时间

varchar

255

description

日常描述

varchar

255

(7)健康管理(dailty)表

用于存储健康管理的的id、动物名称、饲养员、记录时间、健康情况等基本信息。

表3.7 健康管理(dailty)表

字段名称

描述

数据类型

值域

id

id

int

0

name

动物名称

varchar

255

syyuan

饲养员

varchar

255

jlsj

记录时间

varchar

255

description

健康情况记录

text

0

(8)动物信息管理(normal)表

用于存储动物信息管理的的id、动物名称、类型录入时间等基本信息。

表3.8 动物信息管理(normal)表

字段名称

描述

数据类型

值域

id

id

int

0

name

名称

varchar

255

type

类型

varchar

255

lrtime

录入时间

varchar

255

description

详情

text

0

(9)动物类型管理(normaltype)表

用于存储动物类型管理的的id、动物名称、类型录入时间等基本信息。

表3.9 动物类型管理(normaltype)表

字段名称

描述

数据类型

值域

id

id

int

0

typeName

类型名称

varchar

255

(10)饲养规范管理(standard)表

用于存储饲养规范管理的的id、标题、录入时间、内容详情等基本信息。

表3.10 饲养规范管理(standard)表

字段名称

描述

数据类型

值域

id

id

int

0

title

标题

varchar

255

lrdate

录入时间

varchar

25

description

内容详情

text

0

lrpeople

录入人

varchar

255

3.5系统总体设计

3.5.1设计方案

系统开发主要是采用java语言技术,在整个系统的设计中应用MySQL数据库来完成数据存储,具体根据动物保护管理系统的现状来进行开发的,具体根据现实的需求来实现动物保护网络化的管理,各类信息有序地进行存储,进入该系统页面之后,方可开始查看主界面,主要功能包括管理员:banner图管理、系统设置、动物类型管理、动物信息管理、动物日常管理、动物健康管理等。用户前台:首页、动物信息、饲养规范信息等功能。

整个系统的功能模块主要是对各个项目元素组合、分解和更换做出对应的单元,最后在根据各个系统模块来做出一个简单的原则,系统的整体设计是根据用户的需求来进行设计的。为了更好的服务于用户要从动物保护管理系统的设计与实现方面上做出相应的功能模块和内部信息保持一致的联系。所以我们在设计时候要避免一些代码的相互的重复和耦合的情况发生。

3.5.2系统开发流程

在系统流程分析当中调查分析它是比较重要的环节,因为在这个系统当中它都涉及到每个环节的业务流程,所以从动物保护系统的整体设计上要保证各个信息的正确输入和输出以及对数据储存的完整,并结合实际的操作步骤来绘制出具体的流程图。

图3.2 系统开发流程图

3.5.3登录流程

图3.3 登录流程图

第4章 系统详细设计与实现

4.1 用户模块

4.1.1首页模块

该界面是该系统的首页,界面设置要求界面简洁明了、操作简单、兼容性好。在考虑设计界面时,首先要考虑界面标准化设计,其次是完善界面设计,但不要因对界面的美化使界面的操作变得复杂,使用者可在此页面进行登录等操作,页面顶部导航条是各模块的入口。

前台首页页面主要包括首页、动物信息、饲养规范、饲养员、动物健康、动物日常等内容,并根据需要进行详细操作;如图4.1所示:

图4.1首页界面图

4.1.2动物信息模块

该界面是动物信息展示模板,呈现给用户欣赏查看。主要将后台管理的动物信息进行展示,让人们了解更多动物相关的信息。如图4.2所示:

 图4.2动物信息界面图

4.1.3饲养规范模块

该界面是饲养规范展示模块,呈现给用户相关动物的饲养规范。主要将后台管理的饲养规范进行展示,让人们了解更多保护动物相关的信息。如图4.3所示:

 图4.3饲养规范界面图

4.1.4饲养员模块

该界面是饲养员展示模块,呈现给用户相关饲养员的信息,让人们了解动物饲养员的专业性。主要将后台管理的饲养员信息进行展示,让人们了解更多饲养员的专业性、规范性。如图4.4所示:

 图4.4饲养员界面图

4.1.5动物健康模块

该界面是动物健康展示模块,呈现给用户相关动物健康的信息,让人们了解动物的健康状况。主要将后台管理的饲养员录入的健康状况展示出来,让人们随时随地了解动物的健康状况。如图4.5所示:

 图4.5动物健康界面图

4.1.6动物日常模块

该界面是动物日常展示模块,呈现给用户相关动物日常的信息,让人们了解动物的日常状况。主要将后台管理的饲养员录入的日常展示出来,让人们随时随地了解动物的日常状况。如图4.6所示:

 图4.6动物日常界面图

4.2管理员模块

4.2.1饲养员管理模块

饲养员管理模块,在饲养员管理页面可以查看编号、名字、手机号、图片等内容,进行详情、修改和删除等操作,如图4.7所示:

 图4.7饲养员管理界面图

实现代码:

//分页查询

PageInfo<Breeder> page = breederService.selectBreederByPage(breeder,pageNumber,pageSize);

LhPage lhpage = new LhPage(page);

//更新

breederService.update(breeder);

//保存

breederService.save(breeder);

//删除

breederService.delete(id);

//图片上传

String realPath = request.getRealPath("/");

String fileName_o = file.getOriginalFilename();

UUID uuid = UUID.randomUUID();

File f = new File(realPath+"/upload/"+fileName_n);

file.transferTo(f);

Map map = new HashMap();

map.put("picName",fileName_n);

4.2.2动物管理模块

动物管理模块,在动物管理页面可以查看动物名称、类型等内容,进行查询、编辑和删除等操作,如图4.8所示:

 图4.8动物管理界面图

实现代码:

//分页查询

PageInfo<Normal> page = normalService.selectNormalByPage(normal,pageNumber,pageSize);

//更新

normalService.update(normal);

//保存

normalService.save(normal);

//删除

normalService.delete(id);

4.2.3动物类型管理模块

动物类型管理模块,在动物类型管理页面可以查看类型名称等内容,进行查询、编辑和删除等操作,如图4.9所示:

 图4.9动物类型管理界面图

实现代码:

//分页查询

PageInfo<Normaltype> page = typeService.selectTypeByPage(normaltype,pageNumber,pageSize);

LhPage lhpage = new LhPage(page);

//更新

typeService.update(normaltype);

//保存

typeService.save(normaltype);

//删除

typeService.delete(id);

4.2.4动物健康管理模块

动物健康管理模块,在动物健康管理页面可以查看动物名、饲养员、记录时间等内容,进行查询、编辑和删除等操作,如图4.10所示:

 图4.10动物健康管理界面图

实现代码:

//分页查询

PageInfo<Health> page = healthService.selectBreederByPage(health,pageNumber,pageSize);

//更新

healthService.update(health);

//保存

healthService.save(health);

//删除

healthService.delete(health);

4.2.5饲养规范管理模块

饲养规范管理模块,在饲养规范管理页面可以查看标题、录入人、记录时间等内容,进行查询、编辑和删除等操作,如图4.11所示:

 图4.11饲养规范管理界面图

实现代码:

//分页查询

@RequestMapping("/data")

public ModelAndView typeData(Standard standard, @RequestParam(required = true,defaultValue = "1") Integer pageNumber, Integer pageSize){

    ModelAndView mav = new ModelAndView("standard/data");

    if (pageSize == null) {

        pageSize=Integer.parseInt( Constrant.DEFAULTPAGE_SIZE);

    }

    PageInfo<Standard> page = standardService.selectStandardByPage(standard,pageNumber,pageSize);

    LhPage lhpage = new LhPage(page);

    mav.addObject("page",page);

    mav.addObject("pageStr",lhpage.getPageStr());

    mav.addObject("data",page.getList());

    mav.addObject("standard",standard);

    return mav;

}

/**

 * 保存

 * @param standard

 * @return

 */

@RequestMapping("/save")

public String saveOrUpdate(Standard standard, HttpSession session){

    standard.setLrdate(DateUtil.getDateNow("yyyy-MM-dd hh:mm:ss"));

    UserVO user = (UserVO) session.getAttribute(Constrant.CURRENT_USER);

    standard.setLrpeople(user.getUsername());

    if(standard.getId()!=null){

        //更新

        standardService.update(standard);

    }else{

        //保存

        standardService.save(standard);

    }

    return "forward:data.action";

}

/**

 * 删除

 * @param id

 * @return

 */

@RequestMapping("/delete")

public String delete(Integer id){

    standardService.delete(id);

    return "forward:data.action";

}

4.2.6 用户管理模块

用户管理模块是对后台管理员的用户信息进行统一管理,主要包括了姓名、登录名、性别、所属部门、所属角色、最后登录时间、状态等信息,涵盖的操作主要有新增、删除、修改查询。用户管理模块的界面如图4.12所示。

 图4.12 用户管理界面

实现代码:

//用于显示用户列表

@RequestMapping("userData")

public ModelAndView toUserData(SUser user,@RequestParam(required=true,defaultValue="1") Integer pageNumber,@RequestParam(required=true,defaultValue="10") Integer pageSize){

   //获取分页数据并保存在作用域中

   PageInfo<SUser> page = userService.selectAllUsers(user,pageNumber,pageSize);

   ModelAndView mav = new ModelAndView("user/data");

   LhPage lhpage = new LhPage(page);

   //分页对象

   mav.addObject("pageInfo", page);

   mav.addObject("pageStr",lhpage.getPageStr());

   //当前页数据

   mav.addObject("data", page.getList());

   mav.addObject("user", user);

   return mav;

}

//保存数据

@RequestMapping("save")

public String saveUser(SUser user){

   userService.saveUser(user);

   return "forward:userData.action";

}

//根据ID单个删除数据

@RequestMapping("delete")

public String deleteUser(SUser user){

   userService.deleteUser(user);

   return "redirect:/user/userData.action";

}

//批量删除数据

@RequestMapping("deletes")

public String deleteUsers(Integer[] ids){

   userService.deleteUsers(ids);

   return "redirect:/user/userData.action";

}

//异步验证用户名是否存在

@RequestMapping("/resource")

@ResponseBody

public List<Map> getResource(HttpServletRequest request){

   List<Map> result = new ArrayList<Map>();

   Map map = new HashMap();

   map.put("title", "系统设置");

   map.put("icon", "icon-computer");

   map.put("href", "http://www.baidu.com");

   map.put("spread", false);

   List<Map> children = new ArrayList<Map>();

   Map map_ = new HashMap();

   map_.put("title", "用户管理");

   map_.put("icon", "");

   map_.put("href", request.getContextPath()+"/user/userData.action");

   map_.put("spread", false);

   children.add(map_);

   Map map2_ = new HashMap();

   map2_.put("title", "角色管理");

   map2_.put("icon", "");

   map2_.put("href", request.getContextPath()+"/role/data.action");

   map2_.put("spread", false);

   children.add(map2_);

   map.put("children", children);

   result.add(map);

   return result;

}

@RequestMapping("/getResourceByRoleId")

@ResponseBody

public List<Menus> getResourceByRoleId(Integer roleId){

   List<Menus> result = roleService.selectResourceByRoleId(roleId);

   return result;

}

4.2.7 部门管理模块

部门管理模块是对后台管理员的部门信息进行统一管理,主要包括了部门名称、状态信息,涵盖的操作主要有新增、删除、修改查询。部门管理模块的界面如图4.13所示。

图4.13 部门管理界面

 实现代码:

//分页查询

PageInfo<SDept> page = deptService.selectDeptByPage(dept,pageNumber,pageSize);

//保存或更新

deptService.saveOrUpdate(dept);

//删除

deptService.deleteById(id);

4.2.8角色管理模块

角色管理模块是对后台管理员的角色信息进行统一管理,主要包括了角色名称、状态信息,涵盖的操作主要有新增、删除、修改、查询、资源权限分配等操作。角色管理模块的界面如图4.14所示。

 图4.14 角色管理界面

实现代码:

//分页查询

PageInfo<SRole> page = roleService.selectByPage(role, pageNumber,pageSize);

//查询角色资源信息

roleService.selectRoleResources(roleId);

//更新或删除

map = roleService.saveOrDeleteResource(roleId,resourceId,pid);

//保存

roleService.saveOrUpdateRole(role);

//删除

roleService.deleteRole(role);

第5章 系统测试

5.1测试目的

系统测试的目的主要包括了以下几方面:

1系统的功能流程可正常进行;

2系统在使用过程中避免错误的发生;

3发现系统运转过程中可能出现的加载慢、不稳定等问题,及时进行解决。

5.2 测试步骤

1系统模块测试,是把系统功能划分成的小模块,一个一个进行测试,找出各个小模块现有的问题,将其解决完善;

2系统整体测试,在把系统按小模块测试完成后,把所有小模块进行整合,梳理成具体操作流程。在已确定的具体操作流程中测试并发现问题,使各个模块有密切联系,这样做才可完成确定的操作流程;

3测试结果验收,在项目验收之前多次测试,在确保没问题情况下即可交付客户。

5.3部分功能模块测试

1登录功能

测试用例及结果如表5.1所示。

表5.1 登录功能测试表

测试模块

测试用例

预期结果

测试结果

登录

{ “18435122378”, “123456” }

用户不存在

与实际结果一致

{ “18435122379”, “123456” }

密码错误

与实际结果一致

{ “18435122379”, “123456” }

登录成功

与实际结果一致

{ “18435122379 ”, “ ” }

提示密码必填

与实际结果一致

{ “ ”, “18435122379 ” }

提示账号必填

与实际结果一致

{ “ ”, “ ” }

提示账号、密码必填

与实际结果一致

2首页banner图管理功能

测试用例及结果如表5.2所示。

表5.2 首页banner图管理功能测试表

测试模块

测试用例

预期结果

测试结果

图片新增

{ “1223.png”}

图片新增成功

与实际结果一致

{ “ 1222.gif” }

提示格式不正确

与实际结果一致

{ “ ” }

提示必填信息未填写

与实际结果一致

关键字查询

输入{ “1223” },点击“查询”

查到与1223相匹配的事件

与实际结果一致

图片信息修改

点击“修改”,修改{“姓名1.png”}

修改成功

与实际结果一致

图片信息删除

点击“删除”,删除确认

删除成功

与实际结果一致

3动物信息管理功能

测试用例及结果如表5.3所示。

表5.3 动物信息管理功能测试表

测试模块

测试用例

预期结果

测试结果

动物信息新增

{ “熊猫”, “类型1”, “2023-02-12”, “熊猫生活在...”}

动物信息新增成功

与实际结果一致

{ “”, “类型1”, “2023-02-12”, “熊猫生活在...”}

提示必填信息未填写

与实际结果一致

{ “”, “类型1”, “2023-02-12 122”, “熊猫生活在...”}

新增失败

与实际结果一致

关键字查询

输入{ “熊猫” },点击“查询”

查到与熊猫相匹配的事件

与实际结果一致

动物信息修改

点击“修改”,修改{“姓名1”}

修改成功

与实际结果一致

动物信息删除

点击“删除”,删除确认

删除成功

与实际结果一致

4用户管理功能

测试用例及结果如表5.4所示。

表5.4 用户管理功能测试表

测试模块

测试用例

预期结果

测试结果

用户新增

点击“新增”,输入{“姓名”,“用户名”,“密码”,“性别”,“部门”,“角色”,“状态”}

新增成功

与实际结果一致

关键字查询

输入{ “用户1” },点击“查询”

查到与用户1相匹配的事件

与实际结果一致

用户修改

点击“修改”,修改{“姓名1”}

修改成功

与实际结果一致

用户删除

点击“删除”,删除确认

删除成功

与实际结果一致

5部门管理功能

测试用例及结果如表5.5所示。

表5.5 部门管理功能测试表

测试模块

测试用例

预期结果

测试结果

部门新增

点击“新增”,输入{“部门编号”,“部门名称”,“状态”}

新增成功

与实际结果一致

关键字查询

输入{ “部门1” },点击“查询”

查到与部门1相匹配的事件

与实际结果一致

部门修改

点击“修改”,修改{“部门1”}

修改成功

与实际结果一致

部门删除

点击“删除”,删除确认

删除成功

与实际结果一致

6角色管理功能

测试用例及结果如表5.6所示。

表5.6 角色管理功能测试表

测试模块

测试用例

预期结果

测试结果

角色新增

点击“新增”,输入{“角色名称”}

新增成功

与实际结果一致

关键字查询

输入{ “角色1” },点击“查询”

查到与角色1相匹配的事件

与实际结果一致

角色修改

点击“修改”,修改{“角色1”}

修改成功

与实际结果一致

角色删除

点击“删除”,删除确认

删除成功

与实际结果一致

7饲养员管理功能

测试用例及结果如表5.7所示。

表5.7 饲养员管理功能测试表

测试模块

测试用例

预期结果

测试结果

饲养员新增

点击“新增”,输入{“饲养员名”,“12.png”,“介绍”}

新增成功

与实际结果一致

关键字查询

输入{ “饲养员1” },点击“查询”

查到与饲养员1相匹配的事件

与实际结果一致

饲养员修改

点击“修改”,修改{“饲养员1”}

修改成功

与实际结果一致

饲养员删除

点击“删除”,删除确认

删除成功

与实际结果一致

 

第6章 结论

本文对开发动物保护系统的目的、意义、设计、实现及测试结果进行了阐述。系统采用的后台开发架构是主流的SSM,前端框架是layui,数据库的设计使用建模工具PowerDesigner,实体类对象生成使用逆向工程,简单的单表操作SQL也已自动生成,提高了开发效率。

本系统完成大约花费了两个月左右的开发时长,在这两个月里面,自己的理论知识和实践进行了结合,提升了自己的开发能力。但是,系统开发工作从来未停止,将在后面把系统里需优化的进行优化,提高系统的操作流程和实际使用流程的契合度,让系统能投入使用。

参考文献

[1]马英瑞,刘真,李娟.基于JavaWeb的健身管理系统设计与实现[J].福建电脑,2018,34(09):39-40+44.

[2]李驰.JavaWeb网络学习资源推荐系统的研究与实现[D].四川师范大学,2022.

[3] 陈玲玲,赵全军,赵志国.基于JavaWeb的研究生教务管理系统的设计与实现[J].现代信息科技,2021,5(20):27-29.

[4] 郝文菊,严竞雄.基于JavaWeb的项目代码生成工具在教学中的改革与实现[J].电脑编程技巧与维护,2020(04):10-12.

[5] 陈秋玲.基于JavaWeb的图书购物网站的设计与实现[J].电脑知识与技

术,2019,15(16):36-38.

[6]本刊讯.国家重点保护水生野生动物信息管理系统启动试运行[J].中国水产,2021(08):21-22.

[7] 高晓霞,姜淑娟.信息化建设,为南澎保护区工作保驾护航[J].海洋与渔业,2016(07):37-39.

[8] 谭海军.四川珍稀动植物信息管理系统[J].涪陵师范学院学报,2002(05):104-106.

[9]郑李明.基于SSM中国幼儿体育教学内容的分析[J].四川体育科学,2023,42(01):139-142.

[10]闫银娟.基于SSM的房屋租赁系统的设计与实现[J].电脑知识与技术,2022,18(33):38-41.

[11] 陶爱兰. 基于SSM的数字化审计平台的设计与实现[D].南京邮电大学,2021.

[12]朱军.基于JavaWe的编程技术论坛的设计与实现[J]. 电子制作,2022,30(10):51-54.

[13]李昕宇. 基于JavaWeb的中小型医院门诊管理系统的设计与实现[J]. 软件,2022,43(05):131-133.

[14]范金海. 动物防疫信息化管理系统的设计与实现[D].云南师范大学,2020.

[15]张喜民,詹海生,刘强,袁战军,张金博. 基于NB-IoT的低功耗野生保护动物监测系统研制[J]. 应用科学学报,2023,41(02):262-271.

[16] A Reusable SQL Injection Detection Method for Java Web Applications[J]. KSII Transactions on Internet and Information Systems,2020,14(6).

[17] Zheng Hongying. A Study on the Design of English Speaking Examination System Based on SSM Framework[J]. Journal of Sensors,2022,2022.

[18] Automatic Extraction of Dependencies between Web Components and Database Resources in Java Web Applications[J]. Journal of information and communication convergence engineering,2019,17(2).

致  谢

大学生活就快走入尾声,校园生活就要划上句号,心中是无尽的难舍与眷恋。从校园里走出,对我的人生来说将是踏上一个新征程,要把所学的知识应用到实际工作中去。

不积硅步无以至千里,不积小流无以成江海。本次论文从选题到完成,每一步都是在导师的悉心指导下完成的,倾注了导师超多的心血。在此,谨向导师表示崇高的敬意和衷心的感谢!在写论文的过程中,遇到了很多问题,在导师的耐心指导下,问题都得以解决。所以在此,再次对导师道一声谢谢您!

本设计能够顺利的完成,也归功于各位任课老师的认真负责,使我能够很好的掌握和运用专业知识,并在设计中得以体现。

故事结局很美丽,过程曲折而已。愿我们以渺小启程,以伟大结束。最后向大家道一句辛苦。来日方长,不忘初心,我会在未来的工作和实践中始终如一的回报诸位对我的教导、帮助、理解和支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/609458.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

easyExcel导入失败提示用户第几行有误并回滚数据

思路&#xff1a; 在controller定义一个map&#xff0c;将map传入excel监听器&#xff0c;在监听器中处理excel的数据&#xff0c;读取到某一行出现错误就将错误提示信息存入map并抛出一个异常给service。在service方法上开启事务&#xff0c;并将异常出实现数据回滚&#xff0…

vite使用vue3 v-for渲染图片时的写法

写法一 <template><divclass"demo-img"v-for"item in demoOption":key"item.code":style"background-image: url(${getImageUrl(../assets/imge/${item.img}.jpeg)})"></div> </template><script lang&qu…

2023网安最流行的10大工具(附安装包)

从事网络安全工作&#xff0c;手上自然离不开一些重要的网络安全工具。今天&#xff0c;分享10大网络安全工具。 一、Kali Linux Kali 是一个基于 Debian 的 Linux 发行版。它的目标就是为了简单&#xff1a;在一个实用的工具包里尽可能多的包含渗透和审计工具。Kali 实现了这…

Linux 之Python 定制篇-APT 软件管理和远程登录

Linux 之Python 定制篇-APT 软件管理和远程登录 apt 介绍 apt 是Advanced Packaging Tool 的简称&#xff0c;是一款安装包管理工具。在Ubuntu 下&#xff0c;我们可以使用apt 命令进行软件包的安装、删除、清理等&#xff0c;类似于Windows 中的软件管理工具。 unbuntu 软件…

【C++】深拷贝浅拷贝

前言&#xff1a;在 C 中&#xff0c;当一个对象通过赋值或拷贝即将成为另一个对象的副本时&#xff0c;会发生“浅拷贝”或“深拷贝”。 什么是浅拷贝&#xff1f; 浅拷贝是指两个对象共享同一个内存地址&#xff0c;即将源对象的数据成员的地址赋给了目标对象&#xff0c;当…

vue diff算法与虚拟dom知识整理(15) 终结篇,收尾新前到旧前全部不匹配情况

我们现在就只需要处理最后一种情况了 我们在 updateChildren.js 在while中 的if最后加个 else 当他们都没哟匹配到的情况 我们现在在updateChildren.js最上面 定义一个空对象 叫 keyMap 参考代码如下 let keyMap null;然后 在我们刚写的else中编写代码如下 //判断 如果…

Stable-Diffusion|入门怎么下载与使用civitai网站的模型(二)

C站&#xff1a;https://civitai.com/ 文章目录 1 样图2 实现2.1 下载主模型并放到正确文件夹中2.2 找到prompt2.3 生成2.4 Lora使用 3 一些有趣的项目3.1 胶片风格Lora3.2 [最近很火] 现实感很强的Majicmix-realistic 先贴几张笔者自己实验的图&#xff0c;模型来自&#xff1…

Libevent学习

一、Libevent概述 1、简介 Libevent 是一个用C语言编写的、轻量级的开源高性能事件通知库&#xff0c;主要有以下几个亮点&#xff1a;事件驱动&#xff08; event-driven&#xff09;&#xff0c;高性能;轻量级&#xff0c;专注于网络&#xff0c;不如 ACE 那么臃肿庞大&…

C++必背基础知识点总结

重点&#xff1a;不借助任何外部资料就能掌握&#xff0c;考试面试大概率涉及。 掌握&#xff1a;不借助任何外部资料就能掌握&#xff0c;考试面试有可能涉及。 熟悉&#xff1a;可以适当参考资料掌握&#xff0c;考试面试有可能涉及。 了解&#xff1a;可是参考资料掌握&…

iptables的四表五链

文章目录 1. Iptables的链2.Iptables的表3.数据包过滤的匹配流程3.1 规则表之间的顺序3.2 规则链之间的顺序3.3 规则链内部各条防火墙规则之间的顺序3.4如何应用 每个 规则表&#xff0c;其实就相当于一个内核空间的容器&#xff0c; 按照规则集的不同用途进行划分为默认的四…

w11+wsl+3060安装cuda等深度学习环境

把一切都重新又梳理学习了一遍&#xff0c;然后发现很多事情其实没必要弄 0. 显卡驱动、nvidia-smi、cuda、nvcc、cuDNN、pytorch、cudatoolkit与它们之间的关系 笔者本人鸟枪换炮了&#xff0c;还是wsl环境香&#xff0c;但是按照官方教程跑完后&#xff0c;遇到了bugRuntim…

RTMPose关键点检测实战——笔记3

文章目录 摘要安装MMPose安装虚拟环境安装pytorch安装MMCV安装其他的安装包下载 MMPose下载预训练模型权重文件和视频素材 安装MMDetection安装Pytorch安装MMCV安装其它工具包下载 MMDetection安装MMDetection下载预训练模型权重文件和视频素材 MMPose预训练模型预测命令行的方…

关于render: h => h(App)的解释

当我们第一次安装完脚手架&#xff0c;打开 的时候&#xff0c;我相信&#xff0c;一定有小伙伴和我一样&#xff0c;看到main.js里面的render: h > h(App),感觉懵懵的。 因为&#xff0c;在刚开始接触vue的时候&#xff0c;我们这里是这样写的&#xff1a; 而使用了脚手…

iOS性能优化-异步绘制与异步底层View处理

前言&#xff1a; 基于UIKit的性能优化似乎已经到了瓶颈&#xff0c;无论是使用frame代理snpakit&#xff0c;缓存高度&#xff0c;减少布局层次&#xff0c;diff刷新&#xff0c;压缩图片&#xff0c;选择合适队列&#xff0c;选择高性能锁&#xff0c;也不能满足当前庞大而又…

SpringBoot 整合 MongoDB 实现数据的增删改查功能

1、介绍说明 在 MongoDB 中有三个比较重要的名词&#xff1a;数据库、集合、文档 数据库&#xff08;Database&#xff09;&#xff1a;和关系型数据库一样&#xff0c;每个数据库中有自己的用户权限&#xff0c;不同的项目组可以使用不同的数据库 集合&#xff08;Collectio…

汽车新能源 - 单体电压值为什么通常是5V以内

常见蓄电池单体电压的值&#xff08;25℃&#xff09;&#xff0c;如下表&#xff1a; 蓄电池类型单体电压&#xff08;V&#xff09;铅酸 蓄电池2.08镍金属氢 蓄电池&#xff08;NIMH&#xff09;1.32锂离子 蓄电池2.5~4.2&#xff08;典型3.6&#xff09; 单体电压为什么不…

安卓学习笔记(一)

从今天开始我们开始学习安卓的知识&#xff1a; 1.0 Android基础入门教程 1.Android背景与当前的状况 Android系统是由Andy Rubin创建的&#xff0c;后来被Google收购了&#xff1b;最早的版本是:Android 1.1版本 而现在最新的版本是今年5.28&#xff0c;Google I/O大会上推…

Logstash部署与使用

ElasticSearch 1、ElasticSearch学习随笔之基础介绍 2、ElasticSearch学习随笔之简单操作 3、ElasticSearch学习随笔之java api 操作 4、ElasticSearch学习随笔之SpringBoot Starter 操作 5、ElasticSearch学习随笔之嵌套操作 6、ElasticSearch学习随笔之分词算法 7、ElasticS…

123网盘在线解析PHP版源码

123网盘解析PHP版本源码是一种非常实用的工具&#xff0c;可以方便地帮助用户在网页上直接解析出其它网站中的资源&#xff0c;并提供下载链接。当用户需要获取某些资源时&#xff0c;往往需要通过各种搜索引擎或者专业的资源网站进行查找&#xff0c;而且很多时候找到了资源链…

Android NDK集成OpenCV使用C++的.h和.so库函数

Android NDK集成OpenCV使用C的.h和.so库函数 opencv可以作为一个单独的Android module库&#xff0c;被工程下的其他模块使用&#xff0c;但是这样就没法在Android NDK项目的c代码直接使用opencv的.h文件和.so文件。要在Android NDK项目C代码文件中使用&#xff0c;则需要以An…