摘 要
随着社会的发展和城市化进程的加速,流浪宠物问题逐渐成为社会关注的热点。宠物救助管理不仅关系到宠物福利,也体现了社会的文明程度。然而,现有的宠物救助管理方式往往面临诸多挑战,如信息不对称、资源分配不均、管理效率低下等。Springboot框架以其高效、稳定和易于维护的特点,广泛应用于企业级应用开发。在宠物救助管理领域,Springboot框架的应用可实现系统的模块化、可扩展性和可维护性,从而提高系统的运行效率和稳定性。因此,借助先进的信息技术,开发一款基于Springboot的流浪宠物求助与领养管理系统,对于提升救助管理水平具有重要意义。
本文提出的基于Springboot的宠物救助管理系统是采用基于Java语言、MySQL数据库、Springboot框架为基础进行开发。通过系统可以更及时准确地发布宠物资讯、宠物救助活动信息等相关信息,提高公众对流浪宠物救助工作的关注和参与度,促进流浪宠物的救助和领养工作,改善社会对待流浪宠物的态度,有助于提高流浪宠物的生存力。
关键词:Java开发语言;Spring Boot框架;宠物救助管理系统
Abstract
With the development of society and the acceleration of urbanization, the issue of stray pets has gradually become a hot topic of social concern. Pet rescue management is not only related to pet welfare, but also reflects the level of social civilization. However, existing pet rescue management methods often face many challenges, such as information asymmetry, uneven resource allocation, and low management efficiency. The Springboot framework is widely used in enterprise level application development due to its high efficiency, stability, and ease of maintenance. In the field of pet rescue management, the application of the Springboot framework can achieve modularity, scalability, and maintainability of the system, thereby improving the operational efficiency and stability of the system. Therefore, with the help of advanced information technology, developing a Springboot based system for seeking help and adopting stray pets is of great significance for improving the level of rescue management.
The pet rescue management system based on Springboot proposed in this article is developed using Java language, MySQL database, and Springboot framework as the foundation. Through the system, pet information, pet rescue activities, and other related information can be released more timely and accurately, increasing public attention and participation in pet rescue work, promoting the rescue and adoption of stray pets, improving social attitudes towards stray pets, and helping to enhance the survival of stray pets.
Key words:Java development language; Spring Boot framework; Pet Rescue Management System
目 录
随着城市化进程的加快和人口增长,越来越多的流浪动物出现在城市的街头和社区中,给社会治安、公共卫生和动物福利带来了许多挑战。在这样的背景下,开发一个宠物救助管理系统具有重要的意义。该系统旨在提供一个高效、可靠的平台来管理流浪动物的信息和领养过程,促进流浪动物的救助和保护工作。通过系统化的管理和透明的信息发布,可以更好地组织流浪动物的收容和领养过程,提高流浪动物的生活质量和幸福感。
同时,宠物救助管理系统的研究也有助于推动社会对于流浪动物保护的关注和参与。通过系统的宣传和教育功能,可以增加公众对于流浪动物保护的认知和关心,引导更多人参与到流浪动物的救助和领养工作中。在宠物救助管理系统的研究中,借助SpringBoot框架的优势,可以实现代码的模块化、可扩展性和易维护性。通过合理的数据库结构和前后端技术实现,可以提供用户友好的界面和操作流程,提高系统的易用性和用户体验。
宠物救助管理系统的研究具有重要意义。通过开发这样一个系统,可以促进流浪动物保护工作的开展,提高流浪动物的生活质量和幸福感。同时,也可以推动社会对于流浪动物保护的关注和参与,提高公众对于动物福利的认知和关心。
在国内,流浪宠物问题日益凸显,流浪宠物数量不断增长,给社会带来诸多挑战。这些挑战包括公共卫生问题、社会安全隐患以及生态环境压力等。因此,流浪宠物救助管理成为了一个备受关注的社会议题。
近年来,我国在流浪宠物救助管理方面的研究逐渐深入。学者们对于流浪宠物救助的模式、方法以及技术手段进行了广泛探讨,涉及的管理理论涵盖了社会学、管理学、宠物学等多个学科。同时,对于流浪宠物的心理和生理健康问题也有了更深入的了解。在技术方面,目前国内流浪宠物救助仍面临识别、追踪、数据分析等方面的技术瓶颈。在政策与法律法规方面,尽管我国已有相关的宠物保护法律,但在具体执行过程中仍存在诸多困难,如处罚力度不够、执行不力等。此外,社会对于流浪宠物的认识和态度也是一大挑战,提高公众意识是解决这一问题的关键。
目前已有一些智能技术和产品应用于流浪宠物救助管理,如智能项圈、宠物定位器等。这些技术可以帮助追踪和管理流浪宠物,提高救助效率。此外,一些非政府组织和社会团体也在积极参与到流浪宠物救助的行动中,提供了很多切实可行的解决方案。同时,越来越多的组织和人士开始关注和参与到流浪宠物救助的行动中。例如,一些公益组织定期开展流浪宠物绝育、疫苗接种等活动,降低流浪宠物数量。同时,也有不少企业和个人通过捐款捐物、领养等方式为流浪宠物提供帮助。这些努力已经在一定程度上改善了流浪宠物的生活状况。
在国外,自20世纪中期以来,许多西方国家开始重视流浪宠物问题,纷纷建立起相应的救助管理系统。这些系统通常包括收容所、救援组织、兽医诊所和领养机构等,形成了一个庞大的社会网络。目前,许多国家已经形成了较为完善的救助体系,为流浪宠物提供了更好的生活条件和更多的被领养的机会。在美国,流浪宠物救助系统十分发达,民间组织众多,政府也提供了相应的支持。特色在于重视宠物福利和权益保护,同时鼓励领养和坚决反对安乐死。在英国,流浪宠物救助系统强调教育和宣传,鼓励人们负责任地对待宠物,同时还开展了广泛的社区支持项目。在德国,流浪宠物救助系统以政府为主导,设立了大量的宠物收容所,同时重视对虐待宠物行为的法律制裁。
近年来,国外的研究机构对流浪宠物救助管理问题进行了深入研究,涉及社会学、心理学、经济学和法学等多个领域。这些研究不仅提供了理论支持,还为实践提供了实证依据,推动了救助系统的发展和完善。
开发和实施宠物救助管理系统,需要完成以下研究内容:
(1)首先是确定选题,确定好所要做的系统,并对系统的背景及现在面临的一些问题等进行系统的初步确认。
(2)在系统ACK完成之后,根据系统开发的要求,选择SpringBoot框架来构建宠物救助管理系统,并对其中的数据库进行搭建和开发,以确保该系统能够有效地实现其功能。此外,我们还将对所选择的技术进行详细的技术分析,以确保系统的可行性和安全性。
(3)在宠物救助管理系统中,首先要确定系统的技术,然后进行在线确认,以确定系统的用户角色,并根据这些角色划分出相应的功能模块。系统的设计主要将用户分为管理员和普通用户角色,每个角色都有其独特的特点,而且每个功能模块都有其特定的功能,但是系统的数据库都是交互式的,用户可以随时根据自身的需求查看动物救助信息,而系统的工作人员则可以根据自身的职责,处理和操作在线信息。管理员可以快速收集用户的详细信息,并能够在第一时间响应用户的需求。
(4)经过精心设计的系统功能模块已经ACK完毕,接下来就是程序和界面的开发。为了检验程序的完整性,我们会采取多种测试方法,让不同的用户编写和提交相关内容,并定期检查程序中的缺陷,一旦发现问题,立即采取在线解决措施,直至系统运行稳定,才可以将其上传至正式使用。
本文共分为七章,章节内容安排如下:
第一章:引言。主要介绍了课题研究的背景,国内目前相关研究现状以及本文的研究内容与主要工作。
第二章:相关技术介绍。主要对本系统使用的相关技术和开发工具进行介绍。
第三章:系统需求分析。主要从系统的用户、功能等方面进行需求分析。
第四章:系统概要设计。主要对系统框架、系统功能模块、数据库进行功能设计。
第五章:系统实现。主要介绍了系统框架搭建、系统界面的实现。
第六章:系统测试。主要对系统的部分界面进行测试并对主要功能进行测试。
第七章:总结与展望。
MySQL数据库已经成为网络上的一种强大的工具,它能够支持多个用户,并且能够根据客户端和服务端的需求进行调整,从而满足不同的需求。在这里,服务端和客户端只是一种软件上的概念,而我们所使用的计算机硬件则没有必要完全相互匹配[1]。
MySQL作为一个受到广泛认可的开放式DBMS,其卓越的性能和易于操作的特性,以及其在多种操作环境中的灵活性,让其成为了众多AP中的首选。此外,MySQL还具有良好的跨平台性,让软件开发人员对其有着极高的评价。与传统的关联式数据库系统形式大相径庭,MySQL拥有一套完善的数据库管理策略,以确保用户的安全、稳健、安全。MySQL具备良好的容错、安全、快速、稳健的特点,使得mysql成为一款极其实用的数据库管理工具[2]。
MySQL拥有一种独特的权限分配机制,可以根据用户的身份和业务逻辑,为用户提供更多的选择,从而大大提高了MySQL的安全性和完整性,远超过其他关系型数据库。
MySQL具有强大的功能,能够处理各种数据类型,包括动态、静态、多种语言,从而使用户能够轻松访问多种数据。
MySQL具有多种功能[3],它能够支持多种平台的开发,并且支持多种编程语言[4],使得用户能够轻松访问和使用MySQL数据库。
Tomcat是一种免费的服务器,它能够有效地处理大量的网络访问,特别是在访问量较少的情况下。当将Tomcat安装在电脑上时,它能够自动分析前端HTML页面的请求,从而提高网络的性能。事实上,Tomcat是对Apache的一种延伸[5],但它与Apache之间的关系更加紧密,因为它们在不同的进程中运行,而且它们之间也有着自己的独立性。
Tomcat最初由戴维森公司开发,但随着时间的推移,它逐渐成长为一个开源的服务器。后来,它被sun公司转移到了Apache软件基金会。最近,tomcat服务器经过了大量的重新设计和改进,使它更加易于使用。Tomcat负载均衡算法是一种免费的开源软件,它能够有效地减少硬件投入,使得它在一般的小企业网站服务器上的应用更加灵活,并且能够满足当前和未来的扩展需求。此外,它还可以作为其他类似应用的参考,以提高效率[6]。
Java语言在计算机的程序应用过程当中,属于非常重要的一个应用软件,因为它的性能比较高,而且能够应用在多重领域当中,因此该程序在计算机的软件程序应用当中的范围相对来说是比较广泛的。而从专业的技术角度来说,Java程序的应用的实用性也是非常强的,这是因为它与传统的C语言或C++相比没有太大的基本结构的变化,也就是说它的语法结构是相对单一,而且具有稳定的特性,还有更重要的一点是Java程序语言的基本参考对象就是C语言,所以他的程序编写并不是很复杂,而且还能够起到优化工作效率提升系统设计本身的基础功能的作用,因此他也就受到了非常广泛的程序员们的青睐。
在此次进行系统设计开发研究的过程当中,还发现Java程序语言之所以能够得到市场上更多用户的好评和青睐,其根本原因在于他能够具备各种语言的自身独特优点的展现,也就是说它的兼容性是常强的。因此,我们因此我们可以说在任何一个程序的开发过程当中,Java语言程序的应用是必不可少的,它他在程序员进行改动的时候,哪怕是一个程序字母的改动,都可以形成一种特定的程序,这是 Java程序,非常独特的另一个优点。不仅如此,Java源程序的可移植性也是非常大,而且它的安全系数很高,能够通过不同方式进行移植到其他程序当中,而且可以兼容不同程序的系统,在运行的过程当中,其安全系数也是非常强的,能够确保用户在使用网络的过程当中去确保网络的安全,而正是基于这样的可移植性,为程序员节约了很多的系统语言程序的开发设计的时间,这是非常难得的一种自有优势。
Spring框架是一个由SpringBoot公司发布的开放式框架,旨在通过其可扩展的特性来支持多种不同的编码方式[9]。尽管Spring框架不会影响任何特定的编码方式,但其出色的性价比和可扩展性,已经成为EJB(EnterpriseSpringBootBeans)框架的重要组成部分,并且一直得到越来越多的人的青睐。Spring框架不仅可以有效地支撑开发,而且还可以充分利用其独有的控制反转功能,以及支撑多种持久性技术,从而将托管对象的生命周期变得更加容易,并且可以支撑声明性的事务处理,还可以支撑多种Web框架,从而有效地推动开发。Spring框架拥有强大的IOC功能,可以轻松地实现SpringBoot对象的调度与操作,从而更好地支持项目的运行。此外,Spring还支持将SpringBoot对象的生命周期进行可视化,以实现更加灵活的调度与操作。Spring框架提供了一种新的、高效的容器设计工具,它能够根据XML文件和AOP注解的指引,从多个源中提取和组织相应的参数,从而实现多种功能。此外,它还提供了一种面向服务的框架,它能够根据用户的需求,自动调整参数,从而提高系统的效率和性能。Spring框架的AOP框架具有强大的功能,可以满足各种复杂的需求[10]。尽管AspectJ框架的性能不及其他框架,但是Spring AOP的出色表现使其在各种应用场景中都具有出色的表现,例如:在事务处理、远程控制、网络安全、数据共享、文件共享、网络安全协议、网络安全协议。SpringBoot的事务处理框架提供了一种灵活的方式,可以将不同的内容、不同的时间段、不同的类型的数据进行处理,并且可以将这些处理结果存储到一起。此外,Spring还提供了一系列的事务模型。Spring的事务框架提供了一种灵活的方式,它允许用户根据需要调整事务的类型,例如XML、SpringBoot等,同时还支持快速的消息传输、缓冲等特性,从而有效地帮助开发者处理日益增长的数据需求。这款应用程序拥有强大的功能,能够兼容各种常见的数据处理框架,包括SpringBoot、iBATS/MyBATIs、Hibernate、SpringBoot)数据对象(JDO)、Apache OJB、Apache Cayne等,并能够将其与Spring的事务处理功能相结合,从而实现更加高效的数据处理。SpringMVC最初的目的是要替代StrutsWeb框架,因此,开发者决定将其与传统的web页面框架进行改造,使其能更好地支持用户的访问。这样,SpringMVC就能更好地支持用户的需求,从而提高web页面的性能[11]。
通过采用Spring Boot框架开发出一款功能强大、操作简便的宠物救助管理系统,同时还建立了一个完善、安全、可靠的后台数据库,以确保其运行的稳定性和可靠性。
通过采用Spring Boot框架和Mysql数据库,可以轻松实现宠物救助管理系统的设计,并且将用户角色有机地融入其中,这种创新的方式值得一试。此外,数据的完整性和多样性也为数据的有效分配和管理提供了坚实的基础。数据库安全平台是一个至关重要的组成部分,它不仅可以提升数据安全性,还可以通过提供更加灵活、智能、有效的基础控制方法,来实现对安全计算环境的支撑,从而确保数据的安全性。由于宠物救助管理系统拥有完善的功能、免费的特性以及出色的用户体验,因此它在技术上是一个可行的选择。
Springboot框架是开源的,拥有大量的社区支持和丰富的学习资源。使用Springboot框架进行开发可以降低开发成本,缩短开发周期。此外,Springboot框架本身具有较高的可维护性和可扩展性,开发人员可以很方便地完成前后端的数据交互。此外,Springboot框架中的Spring MVC框架可以简化Web开发的流程,进一步降低了开发成本。因此从经济层面上分析是可行的。
系统设计完成后,其可操作性得到了显著提升,管理员可以轻松访问系统,快速管理各种数据信息,而用户也可以轻松访问系统界面,通过界面导航菜单,快速查看各个功能模块,满足用户的信息需求,同时也为用户提供了便利。此外,系统的操作也不再需要专业人员,只需要用户就可以轻松完成各个功能模块的操作管理。因此,我们的系统具有很高的可操作性。通过使用界面窗口,我们能够轻松地让用户进行登录。因此,只需要掌握基础的电脑操作技能,我们就能够满足您的需求。
普通用户用例图如下所示。
图3-1 普通用户用例图
管理员用例图如下所示。
图3-2 管理员用例图
表3-1 宠物资讯浏览用例描述
描述项 | 说明 |
用例名称 | 宠物资讯查询 |
用例描述 | 用户可以查看宠物资讯的详情 |
参与者 | 用户 |
前置条件 | 使用者是普通用户类型并成功进入该系统 |
后置条件 | 浏览成功 |
主事件流 | (1)用户可以浏览宠物资讯的模块、宠物资讯的内容 (2)用户点击宠物资讯可以对宠物资讯进行详情阅读 |
异常事件流 | e1.报500错误 e2.数据库连接异常 |
表3-2 个人信息管理用例描述
用例名称 | 管理和修改个人信息 |
参与者 | 用户 |
描述 | 用户查看、修改个人信息 |
前置条件 | 用户已登录到系统中 |
后置条件 | 无 |
事件流 | (1)用户查看个人信息 (2)用户修改个人信息 |
补充说明 | (a)用户可修改密码 (b)用户可修改个人资料,例如姓名,头像等 |
表3-3 评论用例描述
用例名称 | 评论 |
参与者 | 用户 |
描述 | 用户发表评论 |
前置条件 | 用户已登录 |
后置条件 | 评论内容不违规 |
事件流 | (1)在评论页输入评论数据,提交评论 (2)更新并显示评论板 |
补充说明 | (a)评论内容不能为空 |
表3-4 用户管理用例描述
描述项 | 说明 |
用例名称 | 用户操作 |
用例描述 | 管理员正确登录后台管理的条件下,对用户进行管理 |
参与者 | 管理员 |
前置条件 | 管理员登录成功并跳转到后台主界面 |
后置条件 | 操作成功 |
主事件流 | 管理员跳转用户管理页面,查询用户详情的信息 管理员可以删除用户信息 |
异常事件流 | e1.报500错误 e2.数据库连接异常 |
表3-5 动物类型管理用例描述
描述项 | 说明 |
用例名称 | 动物类型操作 |
用例描述 | 管理员正确登录后台管理的条件下,对动物类型模块进行管理 |
参与者 | 管理员 |
前置条件 | 管理员成功登录 |
后置条件 | 操作成功 |
主事件流 | (1)管理员进入动物类型管理页面,查询动物类型的信息 (2)管理员可以对动物类型进行增加删除和编辑动物类型操作 (3)管理员新增动物类型,添加成功跳转到查询页面 |
异常事件流 | e1.报500错误 e2.数据库连接异常 |
表3-6 动物信息管理用例描述
描述项 | 说明 |
用例名称 | 动物信息操作 |
用例描述 | 管理员正确登录后台管理的条件下,对动物信息模块进行管理 |
参与者 | 管理员 |
前置条件 | 管理员成功登录 |
后置条件 | 操作成功 |
主事件流 | (1)管理员进入动物信息管理页面,查询动物信息的信息 (2)管理员可以对动物信息进行增加删除和编辑动物信息操作 (3)管理员新增动物信息,添加成功跳转到查询页面 |
异常事件流 | e1.报500错误 e2.数据库连接异常 |
表3-7 领养信息管理用例描述
描述项 | 说明 |
用例名称 | 领养信息操作 |
用例描述 | 管理员正确登录后台管理的条件下,对领养信息模块进行管理 |
参与者 | 管理员 |
前置条件 | 管理员成功登录 |
后置条件 | 操作成功 |
主事件流 | (1)管理员进入领养信息管理页面,查询领养信息的信息 (2)管理员可以对领养信息进行增加删除和编辑领养信息操作 |
异常事件流 | e1.报500错误 e2.数据库连接异常 |
表3-8 志愿活动管理用例描述
描述项 | 说明 |
用例名称 | 志愿活动操作 |
用例描述 | 管理员正确登录后台管理的条件下,志愿活动模块进行管理 |
参与者 | 管理员 |
前置条件 | 管理员成功登录 |
后置条件 | 操作成功 |
主事件流 | (1)管理员进入志愿活动管理页面,查询志愿活动的信息 (2)管理员可以对志愿活动进行增加删除和编辑志愿活动操作 (3)管理员新增志愿活动信息,添加成功跳转到查询页面 |
异常事件流 | e1.报500错误 e2.数据库连接异常 |
表3-9 爱心募捐管理用例描述
用例名称 | 爱心募捐管理 |
参与者 | 管理者 |
描述 | 管理者提供新增、修改、删除、查阅等功能 |
前置条件 | 管理者成功登录系统 |
后置条件 | 无 |
事件流 | (1)管理者查看修改爱心募捐信息 (2)管理者添加爱心募捐信息 (3)管理者删除爱心募捐信息 |
补充说明 | (a)新添加的爱心募捐不符合要求时会添加失败 (b)修改的爱心募捐不符合要求时会修改失败 |
第一,友好界面。宠物救助管理系统开发设计,界面的友好性比较重要,满足这一要求才能体现出人性化设计特征,和用户应用系统便捷性相适应,动态的人机交互设计,用户应用系统的时候能感受到操作的便利,提高用户的体验良好感受,才能有助于将系统开采设计的作用价值充分发挥出来。
第二,稳定性要求。开发设计的宠物救助管理系统,需要保持其稳定,系统应用稳定才能有助于各项管理工作高效率完成,提升系统使用体验度。系统运行保障因外部异常造成系统崩溃,系统发生问题后数据能及时备份,第一时间恢复数据信息,保障系统良好运行。
第三,可扩展性。宠物救助管理系统的开发设计,需要满足可扩展性的要求,系统的设计需要考虑未来系统业务扩展问题,在测试不断应用下,功能需求会不断扩展,通过良好扩展性作用发挥,满足用户多样化的需要。
宠物救助管理系统的非功能性需求,比如宠物救助管理系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如3-10表格中:
表3-10宠物救助管理系统非功能需求表
安全性 | 主要指宠物救助管理系统数据库的安装,数据库的使用和密码的设定必须合乎规范。 |
可靠性 | 可靠性是指宠物救助管理系统能够按照用户提交的指示进行操作,经过测试,可靠性90%以上。 |
性能 | 性能是影响宠物救助管理系统占据市场的必要条件,所以性能最好要佳才好。 |
可扩展性 | 比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。 |
易用性 | 用户只要跟着宠物救助管理系统的页面展示内容进行操作,就可以了。 |
可维护性 | 宠物救助管理系统开发的可维护性是非常重要的,经过测试,可维护性没有问题 |
本章主要通过对宠物救助管理系统的可行性分析、系统角色分析、用户需求和非功能性需求,确定整个宠物救助管理系统要实现的功能。同时也为宠物救助管理系统的代码实现和测试提供了标准。
目前B/S体系的系统主要的数据访问方式是:通过浏览器页面用户可以进入系统,系统可以自动对用户向服务器发送的请求进行处理,处理请求是在系统后台中进行的,用户在浏览器页面上进行相应操作,就能够看到服务端传递的处理结果。医院人力资源管理系统主要分为视图-模型-控制三层架构设计。在视图层中,主要是操作在服务器端向客户端反馈并显示的数据,在模型层中,主要处理相关的业务逻辑、数据整合等,最后的控制层它介于视图和模型之间,主要是调整两层之间的关系,最终落实数据的传递。
系统架构图如图4-1所示。
图4-1系统架构图
这个系统由两个模块组成,一是管理员,二是普通用户,这两个部分看起来是独立的,实际上却是连接着数据库,每个模块都有自己的权限,唯一不同的,就是访问的方式不同。在调研资料的基础上,完成了各个模块的功能。在对上述功能进行分析的基础上,本系统提出了两个主要的模块,每个单元可划分为若干小单元。
系统的功能结构图如下图所示。
图4-2 系统功能结构图
1.登录模块:
本宠物救助管理系统的用户登录涉及到三类信息的判断:第一类是用户名和密码是否为空;第二类是验证码是否录入和正确;第三类就是用户登录信息、验证码和权限是否匹配通过。在该用户登录流程对会对用户名和密码是否为空进行判断,以及验证码是否正确进行判断,只有以上的几类信息中的一种存在问题的情况下都是无法登录成功的。
2.动物信息模块:
本宠物救助管理系统中的动物信息,管理方式都是对信息的三种基本操作:一种是完成动物信息的添加,在这里会对动物信息的录入情况来判断;一种是对动物信息的修改,另一种就是对动物信息的删除。其后两种操作都是要建立在第一种操作而生成的任务列表的基础上完成的。
3.志愿活动模块:
本宠物救助管理系统中的志愿活动信息,管理方式都是对信息的三种基本操作:一种是完成志愿活动信息的添加,在这里会对志愿活动的录入情况来判断;一种是对志愿活动的修改,另一种就是对志愿活动的删除。其后两种操作都是要建立在第一种操作而生成的任务列表的基础上完成的。
5.爱心募捐模块:
本宠物救助管理系统中的爱心募捐信息,管理方式都是对信息的三种基本操作:一种是完成爱心募捐信息的添加,在这里会对爱心募捐信息的录入情况来判断;一种是对爱心募捐信息的修改,另一种就是对爱心募捐信息的删除。其后两种操作都是要建立在第一种操作而生成的任务列表的基础上完成的。
6.宠物资讯信息模块:
本宠物救助管理系统中的宠物资讯信息,管理方式都是对信息的三种基本操作:一种是完成宠物资讯信息的添加,在这里会对宠物资讯信息的录入情况来判断;一种是对宠物资讯信息的修改,另一种就是对宠物资讯信息的删除。其后两种操作都是要建立在第一种操作而生成的任务列表的基础上完成的。
7.动物类型模块:
相关权限用户可以进行动物类型的查询、添加、修改、删除操作,也可以对动物类型等数据项进行单独操作,设置数据类型等参数。
借助先进的系统,ER图使其他用户可以快速轻松地了解系统的功能以及他们之间的关系。下面是整个宠物救助管理系统中主要的数据库表总E-R实体关系图。
图4-3 宠物救助管理系统总E-R关系图
通过上一小节中宠物救助管理系统中总E-R关系图上得出一共需要创建很多个数据表。在此我主要罗列几个主要的数据库表结构设计。
介绍了一些根据各类别主要数据库表的设计结构以及基本功能建立数据库表:
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | token_id | int | 10 | 0 | N | Y | 临时访问牌ID | |
2 | token | varchar | 64 | 0 | Y | N | 临时访问牌 | |
3 | info | text | 65535 | 0 | Y | N | ||
4 | maxage | int | 10 | 0 | N | N | 2 | 最大寿命:默认2小时 |
5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户编号: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | animal_information_id | int | 10 | 0 | N | Y | 动物信息ID | |
2 | animal_names | varchar | 64 | 0 | Y | N | 动物名称 | |
3 | animal_images | varchar | 255 | 0 | Y | N | 动物图片 | |
4 | animal_types | varchar | 64 | 0 | Y | N | 动物类型 | |
5 | animal_colors | varchar | 64 | 0 | Y | N | 动物颜色 | |
6 | animal_age | varchar | 64 | 0 | Y | N | 动物年龄 | |
7 | animal_introduction | text | 65535 | 0 | Y | N | 动物简介 | |
8 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
9 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | animal_types_id | int | 10 | 0 | N | Y | 动物类型ID | |
2 | type_name | varchar | 64 | 0 | Y | N | 类型名称 | |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | applying_for_adoption_id | int | 10 | 0 | N | Y | 申请领养ID | |
2 | regular_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
5 | user_phone_number | varchar | 64 | 0 | Y | N | 用户电话 | |
6 | application_date | date | 10 | 0 | Y | N | 申请日期 | |
7 | animal_names | varchar | 64 | 0 | Y | N | 动物名称 | |
8 | animal_types | varchar | 64 | 0 | Y | N | 动物类型 | |
9 | animal_colors | varchar | 64 | 0 | Y | N | 动物颜色 | |
10 | animal_age | varchar | 64 | 0 | Y | N | 动物年龄 | |
11 | application_remarks | text | 65535 | 0 | Y | N | 申请备注 | |
12 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
13 | examine_reply | varchar | 16 | 0 | Y | N | 审核回复 | |
14 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | article_id | mediumint | 8 | 0 | N | Y | 文章id:[0,8388607] | |
2 | title | varchar | 125 | 0 | N | Y | 标题:[0,125]用于文章和html的title标签中 | |
3 | type | varchar | 64 | 0 | N | N | 0 | 文章分类:[0,1000]用来搜索指定类型的文章 |
4 | hits | int | 10 | 0 | N | N | 0 | 点击数:[0,1000000000]访问这篇文章的人次 |
5 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
8 | source | varchar | 255 | 0 | Y | N | 来源:[0,255]文章的出处 | |
9 | url | varchar | 255 | 0 | Y | N | 来源地址:[0,255]用于跳转到发布该文章的网站 | |
10 | tag | varchar | 255 | 0 | Y | N | 标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开 | |
11 | content | longtext | 2147483647 | 0 | Y | N | 正文:文章的主体内容 | |
12 | img | varchar | 255 | 0 | Y | N | 封面图 | |
13 | description | text | 65535 | 0 | Y | N | 文章描述 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000]决定分类显示的先后顺序 |
3 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
4 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
5 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
6 | icon | text | 65535 | 0 | Y | N | 分类图标: | |
7 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | auth_id | int | 10 | 0 | N | Y | 授权ID: | |
2 | user_group | varchar | 64 | 0 | Y | N | 用户组: | |
3 | mod_name | varchar | 64 | 0 | Y | N | 模块名: | |
4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
5 | page_title | varchar | 255 | 0 | Y | N | 页面标题: | |
6 | path | varchar | 255 | 0 | Y | N | 路由路径: | |
7 | position | varchar | 32 | 0 | Y | N | 位置: | |
8 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
15 | field_get | text | 65535 | 0 | Y | N | 查询字段: | |
16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表导航名称: | |
17 | table_nav | varchar | 500 | 0 | Y | N | 跨表导航: | |
18 | option | text | 65535 | 0 | Y | N | 配置: | |
19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
3 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
4 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
6 | title | varchar | 255 | 0 | Y | N | 标题: | |
7 | img | varchar | 255 | 0 | Y | N | 封面: | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | comment_id | int | 10 | 0 | N | Y | 评论ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
4 | content | longtext | 2147483647 | 0 | Y | N | 内容: | |
5 | nickname | varchar | 255 | 0 | Y | N | 昵称: | |
6 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
9 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
10 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hits_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: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | love_fundraising_id | int | 10 | 0 | N | Y | 爱心募捐ID | |
2 | fundraising_projects | varchar | 64 | 0 | Y | N | 募捐项目 | |
3 | fundraising_animals | varchar | 64 | 0 | Y | N | 募捐动物 | |
4 | animal_images | varchar | 255 | 0 | Y | N | 动物图片 | |
5 | fundraising_number | varchar | 64 | 0 | N | N | 募捐编号 | |
6 | amount_to_be_raised | int | 10 | 0 | Y | N | 0 | 需募金额 |
7 | fundraising_instructions | text | 65535 | 0 | Y | N | 募捐说明 | |
8 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
9 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表participate_in_activities (参加活动)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | participate_in_activities_id | int | 10 | 0 | N | Y | 参加活动ID | |
2 | regular_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
5 | user_phone_number | varchar | 64 | 0 | Y | N | 用户电话 | |
6 | registration_date | date | 10 | 0 | Y | N | 报名日期 | |
7 | activity_name | varchar | 64 | 0 | Y | N | 活动名称 | |
8 | event_date | date | 10 | 0 | Y | N | 活动日期 | |
9 | registration_remarks | text | 65535 | 0 | Y | N | 报名备注 | |
10 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
11 | examine_reply | varchar | 16 | 0 | Y | N | 审核回复 | |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表participate_in_fundraising (参加募捐)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | participate_in_fundraising_id | int | 10 | 0 | N | Y | 参加募捐ID | |
2 | regular_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | user_phone_number | varchar | 64 | 0 | Y | N | 用户电话 | |
5 | fundraising_date | date | 10 | 0 | Y | N | 募捐日期 | |
6 | fundraising_amount | int | 10 | 0 | Y | N | 0 | 募捐金额 |
7 | fundraising_number | varchar | 64 | 0 | Y | N | 募捐编号 | |
8 | fundraising_projects | varchar | 64 | 0 | Y | N | 募捐项目 | |
9 | fundraising_animals | varchar | 64 | 0 | Y | N | 募捐动物 | |
10 | fundraising_remarks | text | 65535 | 0 | Y | N | 募捐备注 | |
11 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
12 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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已取消 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | regular_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_phone_number | varchar | 64 | 0 | Y | N | 用户电话 | |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | 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 | 更新时间: |
表upload (文件上传)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | upload_id | int | 10 | 0 | N | Y | 上传ID | |
2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
3 | path | varchar | 255 | 0 | Y | N | 访问路径 | |
4 | file | varchar | 255 | 0 | Y | N | 文件路径 | |
5 | display | varchar | 255 | 0 | Y | N | 显示顺序 | |
6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
7 | dir | varchar | 255 | 0 | Y | N | 文件夹 | |
8 | type | varchar | 32 | 0 | Y | N | 文件类型 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_id | mediumint | 8 | 0 | N | Y | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
3 | user_group | varchar | 32 | 0 | Y | N | 所在用户组:[0,32767]决定用户身份和权限 | |
4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
5 | phone | varchar | 11 | 0 | Y | N | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 | |
6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
7 | username | varchar | 16 | 0 | N | N | 用户名:[0,16]用户登录时所用的账户名称 | |
8 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
9 | password | varchar | 64 | 0 | N | N | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 | |
10 | | varchar | 64 | 0 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | |
11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
12 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
13 | open_id | varchar | 255 | 0 | Y | N | 针对获取用户信息字段 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | vip_level | varchar | 255 | 0 | Y | N | 会员等级 | |
16 | vip_discount | double | 11 | 2 | Y | N | 0.00 | 会员折扣 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | group_id | mediumint | 8 | 0 | N | Y | 用户组ID:[0,8388607] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000] |
3 | name | varchar | 16 | 0 | N | N | 名称:[0,16] | |
4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该用户组的特点或权限范围 | |
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 | register | smallint | 5 | 0 | Y | N | 0 | 注册位置: |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | volunteer_activities_id | int | 10 | 0 | N | Y | 志愿活动ID | |
2 | activity_name | varchar | 64 | 0 | Y | N | 活动名称 | |
3 | event_date | date | 10 | 0 | Y | N | 活动日期 | |
4 | activity_picture | varchar | 255 | 0 | Y | N | 活动图片 | |
5 | activity_content | text | 65535 | 0 | Y | N | 活动内容 | |
6 | event_location | varchar | 64 | 0 | Y | N | 活动地点 | |
7 | contact_number | varchar | 64 | 0 | Y | N | 联系电话 | |
8 | registration_requirements | text | 65535 | 0 | Y | N | 报名条件 | |
9 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
10 | praise_len | 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 | 更新时间 |
整个文玩交流与品鉴服务系统的需求分析主要对系统总体架构以及功能模块的设计,通过建立E-R模型和数据库逻辑系统设计完成了数据库系统设计。
当进入动物所收容所管理系统的时候,首先映入眼帘的是系统的导航栏,下面是轮播图以及系统内容。前台首页界面图如下所示。
图5-1 首页界面
用户登录的验证将不再局限于登录信息和权限的匹配验证,而是另外增加了一个验证码,只有界面上所有的编辑框数据都准确的情况下才能实现登录成功。管理员的登录和前台用户登录是一样的过程,其主要就是利用权限字段来完成对用户或管理员的角色识别。
用户登录流程图如下所示。
图5-2 用户登录流程图
登录界面如下图所示。
图5-3 登录界面
登录关键代码如下:
/**
* 登录
* @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;
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.select(map, new HashMap<>()).getResultList();
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.select(map, new HashMap<>()).getResultList();
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.select(map, new HashMap<>()).getResultList();
}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.select(groupMap, new HashMap<>()).getResultList();
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();
String res = String.valueOf(service.runCountSql(sql).getSingleResult());
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, "账号或密码不正确");
}
}
系统的用户通过自行注册生成,在系统首页点击用户注册菜单,系统跳转到对应的注册页面。点击重置按钮,清空所填数据,点击注册按钮完成注册。
用户注册流程图如下所示。
5-4 用户注册流程图
用户注册界面如下图所示。
图5-5注册界面
注册关键代码如下所示。
/**
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
Map<String,Object> map = JSON.parseObject(JSON.toJSONString(user));
query.put("username",user.getUsername());
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);
}
用户可以查看宠物资讯列表中的某一条宠物资讯详情并进行点赞、收藏、发表评论,其界面展示如下图所示。
图5-6 宠物资讯界面图
用户可以查看动物信息,在查询到自己想要了解的动物信息的时候,可以进入查看详细的介绍,可以了解到该动物信息的动物名称、动物类型、动物颜色、动物年龄、动物简介等,同时可以对点击下方的“领养”、“点赞”、“收藏”进行相关操作。
动物信息详情界面如下图所示。
图5-7 动物信息界面图
申请领养界面如下图所示。
图5-8 申请领养界面图
用户可以查看志愿活动信息,在查询到自己想要了解的志愿活动信息的时候,可以进入查看详细的介绍,同时可以对点击下方的“报名参加”、“点赞”、“收藏”进行相关操作。
志愿活动详情界面如下图所示。
图5-9 志愿活动详情界面图
活动报名界面如下图所示。
图5-10 活动报名界面图
用户可以查看爱心募捐信息,在查询到自己想要了解的爱心募捐信息的时候,可以进入查看详细的介绍,可以了解到该爱心募捐信息的募捐项目、募捐动物、募捐编号、募捐金额、募捐说明等,同时可以对点击下方的“募捐”、“点赞”、“收藏”进行相关操作。
爱心募捐详情界面如下图所示。
图5-11 爱心募捐界面图
参加募捐界面如下图所示。
图5-12 参加募捐界面图
管理人员在“公共管理”这一菜单下是可以对系统内的轮播图进行添加修改的,其管理界面如下图所示。
图5-13 轮播图管理界面图
用户通过注册了方可获得登录使用权限,此时选择注册用户选项,系统就会自动转到用户注册工作面,在注册该部分信息时系统会自动调用add函数,然后在给定的文本框中填写有关该用户的基础信息后选择确认即可完成注册。检索用户信息,在新增用户信息以后,在检索工具栏中填写对应的用户信息,系统就会将该用户有关的所有信息展示出来。
用户管理流程图如下所示。
图5-14 用户管理流程图
用户管理界面如下图所示。
图5-15 用户管理界面
用户管理关键代码如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
管理员执行资讯管理,并可以操作相关内容,例如添加,查看,编辑和删除。通过单击“资讯管理”,可以对前台展示的宠物资讯及其分类进行管理。资讯管理界面如下图所示。
图5-16 资讯管理界面
在这个产品被投入使用前,首先需要进行试用,这是重要的环节。考虑到某个部分的开发没有缺陷情况下,把各种模块拼接,也有一定概率就存在矛盾。这就好比每个人都很独特,但聚在一起就显得杂乱无章,需要保证有默契的配合。对于测试,要看它的各项内容是否契合的原则。若与最初定下的标准有一定程度上的出入,那么就需要做出一些调整,让最终的大方向朝着目标前进。
测试是为了发现在开发的程序中所存在的问题,测试这一工作是非常艰巨的,而又是非常困难的,这一部分在程序的设计中占有很大比例,可以说一个程序的开发工作量要是占据了百分至六十,那么剩下的百分之四十必然是测试这一部分,甚至更高。
在系统中,创建功能也是基础功能之一,因此创建功能的测试很有代表性。在此章节主要列举在创建时各种情况下系统结果的测试。由于系统涉及创建功能操作过多,因此将多处统称创建功能。
创建数据用例如下表所示。
表6-1 创建数据测试用例
测试用例编号 | YL_05 | |
测试用例名称 | 系统使用者进行创建数据 | |
测试用例描述 | 使用者输入要创建的数据 | |
系统入口 | 浏览器 | |
步骤 | 预期结果 | 实际结果 |
输入完整并且格式正确的数据 | 提示“创建成功”,并显示所有数据 | 预期结果 |
核心位置数据但非必要位置不输入数据 | 提示“创建成功”,并显示所有数据 | 预期结果 |
核心数据位置不输入数据 | 提示“创建失败” | 预期结果 |
-
-
- 修改数据测试
-
在系统中,修改功能是系统主要实现功能,因此修改功能的测试很有代表性。在此章节主要列举在修改时各种情况下系统结果的测试。由于系统涉及修改功能操作过多,因此将多处数据表记录修改和状态修改统称修改功能。
修改数据用例如下表所示。
表6-2 修改数据测试用例
测试用例编号 | YL_06 | |
测试用例名称 | 系统使用者进行修改数据 | |
测试用例描述 | 使用者对可修改的数据项进行修改 | |
系统入口 | 浏览器 | |
步骤 | 预期结果 | 实际结果 |
将现有数据修改成正确的数据 | 提示“修改成功”,并显示所有数据 | 预期结果 |
将现有数据修改成错误的数据 | 提示“修改失败” | 预期结果 |
-
-
- 查询数据测试
-
在系统中,查询功能是使用系统使用最多也是最基础的功能,因此查询功能的测试很有代表性。在此章节主要列举在查询时各种情况下系统结果的测试。
查询数据用例如下表所示。
表6-3 查询数据测试用例
测试用例编号 | YL_05 | |
测试用例名称 | 系统使用者进行查询数据 | |
测试用例描述 | 全部查询以及输入关键词查询 | |
系统入口 | 浏览器 | |
步骤 | 预期结果 | 实际结果 |
界面自动查询全部 | 显示对应所有记录 | 预期结果 |
输入已存在且能匹配成功的关键字 | 显示所查询到的数据 | 预期结果 |
输入不存在的关键字 | 显示数据界面为空 | 预期结果 |
在本次测试的过程主要针对所有功能下的添加操作,修改操作和删除操作,并以真实数据一一进行相关功能项目的输入,最终能够保证每个项目涉及的功能都是能够正常运行,因此能够保证本次设计的,已实现的功能能够正常运行并且相关数据库的信息也同样保证正确。
在基于SpringBoot的宠物救助管理系统开发之前,需要先对用户的具体需求进行分析。包括系统的可行性分析、功能需求分析以及其他需求等。在可行性分析过程中,对系统实现的技术性、经济性等方面进行了分析。总体上证明了系统实施的可行性。
本文总结了基于SpringBoot的宠物救助管理系统开发背景与意义,然后阐述了系统的具体业务需求,并根据系统需求对系统结构以及功能模块等进行了详细地设计,将整个系统划分为多个不同的功能模块。在分析系统功能需求时,对整个系统的总体架构以及功能模块等进行了分析,并选择合适的系统开发技术完成了对各个模块的开发工作。系统开发完成之后进行了系统的测试,确保系统运行的可靠性和稳定性。
目前系统虽然已经完成。由于自己专业知识有限,系统做的可能并不是十分完美,还有一些地方需要改进,例如界面布局方面可以进一步完善。以后将继续对系统进行完善,同时希望此系统以后有机会能够投入到现实使用当中,为流浪宠物的救助管理贡献一份力量。
参考文献
[1]Akarsu H ,Liljander M A ,Lacasta A , et al.Canine Staphylococcaceae circulating in a Kenyan animal shelter.[J].Microbiology spectrum,2024,e0292423-e0292423.
[2]郭丽清,黄耀忠.城乡结合部初中实施STEM教育的实践研究——以《AI智能宠物救助小屋》项目实践为例[J].教育信息技术,2023,(12):60-63.
[3]张雨蝶,周春柳.高校流浪动物的数字化管理探索[J].中国动物检疫,2023,40(11):41-45+88.
[4]Zheng D ,Luo J ,Liu X , et al.Internet-based Farm Animal Adoption Management Model Research[J].Agricultural Forestry Economics and Management,2023,6(3):
[5]费天乐,刘君.宠物领养一站式服务平台可行性及运行模式研究[J].国际公关,2023,(12):170-172.DOI:10.16645/j.cnki.cn11-5281/c.2023.12.003.
[6]郑沁.美国流浪动物收容制度研究[D].华东政法大学,2023.DOI:10.27150/d.cnki.ghdzc.2023.000184.
[7]李超.基于和谐社会视角下社会工作介入社区流浪动物现状及对策分析[D].山东大学,2023.DOI:10.27272/d.cnki.gshdu.2023.005558.
[8]Pet Adoption Simplified With New Central Database For Rescue Dogs Cats[J].M2 Presswire,2023,
[9]赵亚洲,杨晓冬.动物领养管理系统的设计与实现[J].无线互联科技,2022,19(18):61-65+72.
[10]丁晶晶.大理市城市流浪动物协同治理研究[D].云南财经大学,2022.DOI:10.27455/d.cnki.gycmc.2022.000727.
[11]安琪.基于服务设计思维的城市流浪动物助养系统设计研究[D].北京化工大学,2022.DOI:10.26939/d.cnki.gbhgu.2022.001964.
[12]刘蕾.北京市流浪动物治理研究[D].中央财经大学,2022.DOI:10.27665/d.cnki.gzcju.2022.000189.
[13]乔歆新,瞿一凡,林洺楠.新冠疫情背景下的社区宠物服务需求研究[J].人类工效学,2022,28(02):51-56.DOI:10.13837/j.issn.1006-8309.2022.02.0010.
[14]刘永强.救助中心合作模式下宠物专业学生技能的培养[J].当代畜牧,2021,(12):69-70.
[15]叶欣若,肖松鸿,杨妍.“爱宠e+”宠物综合服务平台开发模式研究[J].电脑知识与技术,2021,17(28):79-80.DOI:10.14004/j.cnki.ckt.2021.3000.
[16]邢月,喻德荣.简析流浪动物救助实践困境与路径优化[J].大众标准化,2021,(04):71-73.
[17]王琦.疫情影响下“南京地区流浪动物救助情况”研究——以南京平安阿福流浪动物救助中心为例[J].山西青年,2021,(02):160-161.
[18]姜苏.基于互联网平台解决社会流浪动物问题的可行性研究[D].山东农业大学,2020.DOI:10.27277/d.cnki.gsdnu.2020.001043.
[19]陈薇,刘梓媛,尹婷.新媒体背景下流浪动物救助微信公众号运营研究[J].现代营销(下旬刊),2020,(05):85-86.DOI:10.19932/j.cnki.22-1256/f.2020.05.049.
[20]Adopt-a-Pet.com; Adopt-a-Pet.com and Chewy Announce Integrated Partnership to Support Pet Adoption[J].Veterinary Research Week,2020,
致 谢
在此论文完成之际,感谢我的指导老师。在指导老师的网页设计课上,当时我学到了很多东西,这对于我实习过程中也打了一定的基础,而且指导老师对于我的设计也提出许多建议,并予以悉心的指导,对于一些细小的问题都耐心的指导我去完善,授予我写论文的心得,时常的鼓励我,另外感谢教导我完善此项目的前端同学,对于这个项目,我是边学习边实现完成的,有许多东西开始并不是很明白,但前端开发的同学非常耐心的引导我去将这个项目完成,在系统的后端开发中,所用到的后台开发技术也时常会给我讲解,助于我更好的将论文完成,在此对帮助到我的同学和一直予以教导的指导老师致以衷心的感谢,祝事业有成。
免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢