(免费源码)盘算机结业设计必学必看 万套实战教程 java、python、php、nod ...

打印 上一主题 下一主题

主题 1014|帖子 1014|积分 3042

摘 要

如今,随着人们生活水平不断提高,人们的生活在物质满足的基础上,更多的人将生活的重点放在追求精神享受的过程中。于此同时,Internet铺天盖地的普及,使得这样的人纷纷通过Internet的方式去寻找精神的满足。然而领养动物正是人们现在炙手可热的一种精神拜托。对于动物的热爱让他们的生活更加布满爱心和向往。Internet和领养动物的两者结合,大大推动了电子商务的发展,促进了该行业的崛起。这正是动物领养体系诞生的缘由。该体系不但解决了地理隔离的问题,同时也跟上了网络快速发展的脚步,实现爱动物人士足不出户的领养到心仪的动物。
动物领养体系是基于欣赏器与服务器架构平台,采用跨平台的JAVA语言开发,使用springboot框架举行逻辑控制,MySQL数据库存储数据,最后Tomcat服务器完成发布,体系可在多个环境下运行。
关键词:动物领养,Springboot框架,MySQL数据库


Springboot animal adoption system
Abstract

Today, with the improvement of People's living standards, people's lives are based on material satisfaction, more people will focus on the pursuit of life in the process of spiritual enjoyment. At the same time, the Internet overwhelming popularity, making such people have to find spiritual satisfaction through the Internet. However, the adoption of animals is now hot people a kind of spiritual sustenance. Love for animals makes their lives more loving and yearning. The combination of the Internet and adoption of animals has greatly promoted the development of e-commerce and the rise of the industry. This is where the animal adoption system comes in. The system not only solves the problem of geographic isolation, but also keeps pace with the rapid development of the Internet, enabling animal lovers to adopt their favorite animals without leaving their homes.
Animal adoption system is based on browser and server platform, using cross-platform Java language development, using springboot framework for logical control, MySQL database storage data, and finally the Tomcat server to complete the release, the system can run in multiple environments.
Key words: Animal adoption, Springboot framework, MySQL database


目  录
第1章 绪论
1.1 研究背景
1.2 研究现状
1.3 本文的构造结构
第2章 相关技能先容
2.1 相关技能阐明
2.2 B/S体系工作原理
2.3 Springboot框架先容
2.4 MySQL简介
2.5 JavaScript运行模式
第3章 体系分析
3.1 可行性分析
3.1.1 法律可行性分析
3.1.2 技能可行性分析
3.1.3 经济可行性分析
3.2 功能需求分析
3.3 非功能需求分析 7
3.4 用例分析 7
3.5 业务流程分析
3.6 数据流程分析 9
第4章 体系设计 11
4.1 体系架构设计
4.2 体系功能结构 12
4.3 功能模块设计
4.4 数据库设计
4.4.1 E-R
4.4.2 表结构设计
第5章 体系实现
5.1 开发工具
5.2 注册模块
5.3 登录/注销模块 30
5.4 用户功能模块 34
5.5 管理员功能模块 35
第6章 体系测试 42
6.1 测试概述 42
6.2 测试过程 42
6.2.1 登录测试 42
6.2.2 信息录入测试 42
6.2.3 信息更新测试 43
6.2.4 信息删除测试 43
6.3 测试结果 43
第7章 总结与预测 45
7.1 总结 45
7.2 预测 45
参考文献 46
致谢 48



  • 绪论

    • 研究背景

在人们环保意识进一步的强化下,各人都意识到领养动物的社会心义远远高于经济意义。提出“动物领养”活动的初衷,是想通过动物领养,唤起人们热爱自然、关注环境的良美意识。

生活上富裕了,人们就越来越追求精神上的幸福感。领养动物正是人们追求的重要一部分。与此同时,网络普及程度的广泛,发展的如此敏捷,两者有效的结合,更加带动了人们领养动物的高潮。然而,寥寥几个的实体市场的存在不敷以满足世界各地的需要求,从而更加体现通过网络领养动物职位的重要性。因此一个实用、高效、稳定的可实现动物领养体系正是使用信息提高效率、服务质量的最佳选择。

通过构建一个较美满的动物领养体系,同时使用电子化信息化的技能更为有效的、方便的实现动物的领养,提高效率,取得更多的社会效益。



    • 研究现状

在国内经济快速增长的时代,无数的钢铁水泥直立在我们的生活附近。在倍感陌生的生活环境里,人们的生活节奏是如此的快。繁忙的生活虽然给我们带来了很好的物质基础,但是对于自身的精神生活要求总是无法得到满足。没时间,繁忙,孤独总是自己的标签。如何提高自己的精神上的质量正是人们懊恼的事情。然而,动物,作为人类忠诚的朋侪掀起了高潮,这就促使人们对领养动物的热衷和热情达到了一个很高涨的田地。
在国外,领养动物的生活方式的盛行已经非常普及。好比:美国作为一个经济发展的强国,他们对于领养动物的观念是非常牢固的。动物已经是他们家庭的重要部分,不但是他们的朋侪而且把动物看作其亲人一样。对比国内,动物领养高潮才刚开始的,这阐明我们地区的动物领养意识只是刚刚起步的。在领养动物起步的阶段面对着许多难题。更多的人对于动物大多停留在购买的程度,而不是到相应的动物收留所去领养。纵然有一部分人到动物收留所举行动物的领养,地理隔离也是一大问题所在。如何加快领养动物发展的步调呢?这问题的解决正是如今电子商务与动物领养美满结合的关键。互联网的快速发展,人们对网络的依靠,以及网络给人们带来了如此便利,快捷,全天的服务。同时,网络的虚拟空间成为80后、90后年轻人的重要活动场合,传统的生活方式渐渐被这种新的生活方式所取代,各人都会有意识的通过网络去实现自己的需求。网络也凭借着其快速、便捷、互动的优势,


    • 本文的构造结构

六个章节共同构成了本文研究及设计内容,包罗:
第一章:绪论。本文章的开头部分,对本题目的研究背景和研究意义等一些做文字性的描述。
第二章:相关技能先容。重要先容Springboot框架、Java嵌入式脚本语言、B/S模式等。
第三章:体系分析。包罗体系总体需求描述、功能性角度分析体系需求、非功能性等各个方面分析体系是否可以实现。
第四章:体系设计。本文章的重要部分,提供了体系架构的具体设计和一些重要功能模块的设计阐明。
第五章:体系实现。将本体系分为条件的开发工具先容和后期的功能代码实现。
第六章:体系测试。体系完成后,根据各个模块的测试用例才对各个模块举行功能测试。


  • 相关技能先容

    • 开发技能阐明

本体系前端部分基于MVVM模式举行开发,采用B/S模式,后端部分基于Java的springboot框架举行开发。
前端部分:前端框架采用了比力盛行的渐进式JavaScript框架Vue.js。使用Vue-Router和Vuex实现动态路由和全局状态管理,Ajax实现前后端通讯,Element UI组件库使页面快速成型,项现在端通过栅格布局实现响应式,可适应PC端、平板端、手机端等差别屏幕巨细尺寸的美满布局展示。
后端部分:采用springboot作为开发框架,同时集成MyBatis、Redis等相关技能。


    • B/S体系工作原理

B/S架构采取欣赏器请求,服务器响应的工作模式。
用户可以通过欣赏器去访问Internet上由Web服务器产生的文本、数据、图片、动画、视频点播和声音等信息;
而每一个Web服务器又可以通过各种方式与数据库服务器毗连,大量的数据实际存放在数据库服务器中;
从Web服务器上下载程序到当地来执行,在下载过程中若遇到与数据库有关的指令,由Web服务器交给数据库服务器来表明执行,并返回给Web服务器,Web服务器又返回给用户。在这种结构中,将许许多多的网毗连到一块,形成一个巨大的网,即环球网。而各个企业可以在此结构的基础上建立自己的Internet。
在 B/S 模式中,用户是通过欣赏器针对许多分布于网络上的服务器举行请求访问的,欣赏器的请求通过服务器举行处置惩罚,并将处置惩罚结果以及相应的信息返回给欣赏器,其他的数据加工、请求全部都是由Web Server完成的。通过该框架结构以及植入于操纵体系内部的欣赏器,该结构已经成为了当今软件应用的主流结构模式。


    • spring boot框架先容

Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管Spring框架自身对编程模子没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模子的增补,甚至是替补。Spring框架为开发提供了一系列的解决方案,好比使用控制反转的核心特性,并通过依靠注入实现控制反转来实现管理对象生命周期容器化,使用面向切面编程举行声明式的事件管理,整合多种长期化技能管理数据访问,提供大量优秀的Web框架方便开发等等。Spring框架具有控制反转(IOC)特性,IOC旨在方便项目维护和测试,它提供了一种通过Java的反射机制对Java对象举行同一的配置和管理的方法。Spring框架使用容器管理对象的生命周期,容器可以通过扫描XML文件或类上特定Java注解来配置对象,开发者可以通过依靠查找或依靠注入来得到对象。Spring框架具有面向切面编程(AOP)框架,SpringAOP框架基于代理模式,同时运行时可配置;AOP框架重要针对模块之间的交叉关注点举行模块化。Spring框架的AOP框架仅提供根本的AOP特性,虽无法与AspectJ框架相比,但通过与AspectJ的集成,也可以满足根本需求。Spring框架下的事件管理、远程访问等功能均可以通过使用SpringAOP技能实现。Spring的事件管理框架为Java平台带来了一种抽象机制,使当地和全局事件以及嵌套事件能够与生存点一起工作,而且险些可以在Java平台的任何环境中工作。Spring集成多种事件模板,体系可以通过事件模板、XML或Java注解举行事件配置,而且事件框架集成了消息传递和缓存等功能。Spring的数据访问框架解决了开发职员在应用程序中使用数据库时遇到的常见困难。它不但对Java:JDBC、iBATS/MyBATIs、Hibernate、Java数据对象(JDO)、ApacheOJB和ApacheCayne等所有盛行的数据访问框架中提供支持,同时还可以与Spring的事件管理一起使用,为数据访问提供了灵活的抽象。Spring框架最初是没有计划构建一个自己的WebMVC框架,其开发职员在开发过程中认为现有的StrutsWeb框架的呈现层和请求处置惩罚层之间以及请求处置惩罚层和模子之间的分离不敷,于是创建了SpringMVC。


    • MySQL简介

MySQL是一个开放的、快速的、多线程的SQL关系型数据库服务器。由于其体积小、免费、运行速率快以及可以通过相关免费的软件来对MySql数据库中的相关数据结构信息等等优点。受广大中等、小型企业所喜好并占据了很大职位。本体系在数据库方面选用MySQL,并通过Nacivat来举行MySql数据库的管理。在Mysql的安装过程中,最需要留意的就是数据库的编码问题,所以在安装数据库时需要设置数据库的编码为Utf-8,与前台页面和服务器的编码相一致。


    • JavaScript 运行模式

JavaScript是一种属于网络的高级脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅雅观的欣赏效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的。
1.1是一种表明性脚本语言(代码不举行预编译)。
1.2重要用来向HTML(标准通用标记语言下的一个应用)页面添加交互行为。
1.3可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离。
1.4跨平台特性,在绝大多数欣赏器的支持下,可以在多种平台下运行(如Windows、Linux、Mac、Android、iOS等)。
1.5 JavaScript脚本语言同其他语言一样,有它自身的根本数据范例,表达式和算术运算符及程序的根本程序框架。JavaScript提供了四种根本的数据范例和两种特别数据范例用来处置惩罚数据和文字。而变量提供存放信息的地方,表达式则可以完成较复杂的信息处置惩罚。



  • 体系分析

    • 可行性分析

      • 法律可行性分析


开发软件有没有冒犯法律,这涉及到软件或者体系能不能发布的问题。假如冒犯了法律,就必将会受到法律的制裁。常见法律问题就是软件抄袭问题,假如抄袭别人软件,将会受到严肃惩罚。



      • 技能可行性分析


软件产业颠末多年的发展,现在已经达到了很大的规模,从事软件开发的专业职员不可胜数,软件产业的重要性已经上升到了影响和推动国民经济发展的核心职位。本体系基于的架构,现在技能已经非常的成熟,是不存在技能上面难以实现的贫苦。



      • 经济可行性分析


开发软件所需的时间、人力和物力本钱,开发完成后的收益如何,从投资回报的角度软件所需功能在现有经济条件能不能实现等举行深入的考虑,都符合实际的要求。所以动物领养体系具有经济可行性和实用性,可以节约管理本钱


    • 功能需求分析

动物领养体系重要是为了更加地美满动物领养的服务环境,对用户的信息、领养中心、领养申请、志愿者活动、活动申请等提供了方便的机制。本体系有多类使用者,分别是管理员和用户注册。以下是从这两种用户的角度分别先容本体系所要实现的功能。
用户:
注册:首先查抄用户名和邮箱是否存在,如不存在即可举行注册,并将用户输入的密码举行MD5加密,注册成功后提示注册成功,并将用户信息生存到数据库中。
登录:使用动物领养体系前是需要用户登录个人账号。
活动申请:用户登录动物领养体系首页时,可以选择自己想要的活动举行申请等。
领养申请:用户可以举行动物信息欣赏,选择自己想要领养的动物举行领养申请。
管理员:
用户管理:对用户举行管理,用户的注册,包罗用户昵称、用户名、用户的动物信息(动物种别、动物性别、年龄等)用户的账号信息:
领养中心管理:对动物领养信息举行发布,核实管理。
志愿者活动管理:对志愿者活动举行维护管理。
领养申请管理:对领养申请举行维护管理。
动物内容管理:对动物知识内容举行维护管理。


    • 非功能需求分析

体系非功能需求有非常多,好比性能需求、可承载最大用户数、稳定性、易用性需求等。本体系分析时考虑到易用性需求,因为体系是给人使用的,所以必须充分从用户的角度出发,考虑用户体验,使体系易理解易上手易操纵。


    • 用例分析

1.普通用户重要使用体系举行动物领养以及动物转让,下图所示为普通用户的用例               

图3-1 普通用户用例图
2.管理员重要负责用户管理、领养中心管理、领养申请管理、志愿者活动管理、活动申请管理,下图所示描述管理员的用例图。

图3-2 管理员用例图


    • 业务流程分析

体系业务流程图如下所示。
                                        


图3-3 体系业务流程图
业务流程图(TFD)通过一些特定的符号描述业务的处置惩罚过程,它重点夸大业务过程中每一项处置惩罚活动和具体业务部分的关系,选择部分模块举行具体描述。重点对本体系整体业务中最为重要的动物生意业务及订单业务举行描述,用户进入动物领养体系后举行各种模块信息的欣赏,另外,管理职员进入后端管理,以执行动物领养模块的相关管理方法,并在解决后向客户提供反馈机制。


    • 数据流程分析

如下为体系的顶层数据流图,外部实体有用户和管理员,分别对体系输入数据,从而得到要输出的数据。


   
图3-4体系顶层数据流图
如下图所示为体系底层数据流图。

图3-5体系底层数据流图
动物领养体系底层数据流图重要描述体系底层模块的数据流、数据载体、数据处置惩罚、外部实体的具体交互。本体系就是管理员和普通用户在用户管理、领养申请、活动申请、志愿者活动管理等模块上的数据交互。



  • 体系设计

    • 体系架构设计

本体系架构设计重要分为可以3层,重要有Web层,业务层,Model层。此中web层还包罗View层和Controller层,Model层包罗元数据扩展层和数据访问层。

图4-1体系架构图


    • 体系功能结构

为了将体系从“做什么”落实到“怎么做”,基于体系设计原则,对体系功能举行更适合编码实现的功能划分。根据上图的体系架构设计,整理出规范的体系功能结构图,为体系的实现编码做好准备。
如下图所示为体系功能结构图。

图4-2体系功能结构图


    • 功能模块设计

用户管理针对所有用户和管理员。未注册用户点击注册,进入注册页面填写新用户信息,得到自界说生成账号后,注册完成。未注册用户注册的活动图如下图所示。


图4-3未注册用户注册活动图
用户可举行登录使用更多功能,首先进入用户登录界面,输入用户账号和密码,后台对账号和密码信息举行核对验证,验证成功则页面直接显示登任命户昵称代表登录成功,否则返回用户登录界面。用户登录活动图如下图。


图4-4用户登录活动图
用户登录后,进入功能页面,举行宠物知识、领养中心、志愿者活动、领养申请、活动申请。用户使用功能活动图如下图所示。


图4-5用户使用功能活动图
用户功能界面可对自己的密码举行修改。进入修改密码界面后核对当前密码,核对成功后填写新密码。修改密码活动图如下图所示。

图4-6修改密码活动图


    • 数据库设计

动物领养体系采用的数据库是MySQL,该部分将根据体系需求和设计,设计公道的数据库。本体系考虑到之后体系的扩展集群,数据库将不使用外键。此外,不消外键时数据管理也较为简单,操纵更加方便,性能更高。



      • E-R图


E-R图,更加直观的告诉开发职员体系的各个数据的属性,各个数据之间的接洽,各个数据的范例。能通过该模子更直观地相识数据库的设计,并根据对其渐渐改善。
本体系图设计,如下图所示。

图4-7体系E-R图



      • 表结构设计


本体系根据第三范式的思想设计数据库,减少最大程度的冗余,统共建立有多个表,用户注册表、管理员表、宠物知识、领养中心、志愿者活动、领养申请、活动申请等。
表结构如下所示。
activity_request




字段名称
范例
长度
不是null
主键
字段阐明
activity_request_id
int
11

主键
活动申请ID
topic_name
varchar
64

  
主题名称
venue
varchar
64

  
活动地点
activity_time
varchar
64

  
活动时间
number_of_participants
varchar
64

  
到场人数
user_name
int
11

  
用户姓名
contact_number
varchar
16

  
接洽号码
date_of_application
date
0

  
申请日期
reason_for_application
text
0

  
申请理由
examine_state
varchar
16

  
考核状态
examine_reply
varchar
16

  
考核回复
recommend
int
11

  
智能推荐
user_id
int
11

  
用户ID
create_time
datetime
0

  
创建时间
update_time
timestamp
0

  
更新时间





adoption_application




字段名称
范例
长度
不是null
主键
字段阐明
adoption_application_id
int
11

主键
领养申请ID
pet_nickname
varchar
64

  
宠物昵称
animal_species
varchar
64

  
动物种类
city
varchar
64

  
所在都会
decor
varchar
64

  
花色
pet_age
varchar
64

  
宠物年龄
sex_of_pet
varchar
64

  
宠物性别
release_date
varchar
64

  
发布日期
date_of_application
date
0

  
申请日期
user_name
int
11

  
用户姓名
address
varchar
64

  
地址
experience
varchar
64

  
履历
contact_number
varchar
16

  
接洽号码
examine_state
varchar
16

  
考核状态
examine_reply
varchar
16

  
考核回复
recommend
int
11

  
智能推荐
user_id
int
11

  
用户ID
create_time
datetime
0

  
创建时间
update_time
timestamp
0

  
更新时间





adoption_center




字段名称
范例
长度
不是null
主键
字段阐明
adoption_center_id
int
11

主键
领养中心ID
pet_nickname
varchar
64

  
宠物昵称
cover
varchar
255

  
封面
animal_species
varchar
64

  
动物种类
city
varchar
64

  
所在都会
decor
varchar
64

  
花色
pet_age
varchar
64

  
宠物年龄
sex_of_pet
varchar
64

  
宠物性别
release_date
date
0

  
发布日期
related_information
longtext
0

  
相关信息
praise_len
int
11

  
点赞数
recommend
int
11

  
智能推荐
limit_times
int
8

  
限制次数
limit_type
tinyint
2

  
限制次数范例1-天天次,2-总计次
create_time
datetime
0

  
创建时间
update_time
timestamp
0

  
更新时间





chart




字段名称
范例
长度
不是null
主键
字段阐明
chart_id
int
10

主键
聊天ID:
user_id
int
11

  
用户ID:
title
varchar
64

  
标题:
content
longtext
0

  
内容:
nickname
varchar
32

  
昵称:
avatar
varchar
255

  
头像:
create_time
timestamp
0

  
创建时间:
update_time
timestamp
0

  
更新时间:
reply_id
int
11

  
回复ID:





collect




字段名称
范例
长度
不是null
主键
字段阐明
collect_id
int
10

主键
收藏ID:
user_id
int
10

  
收藏人ID:
source_table
varchar
255

  
泉源表:
source_field
varchar
255

  
泉源字段:
source_id
int
10

  
泉源ID:
title
varchar
255

  
标题:
img
varchar
255

  
封面:
create_time
timestamp
0

  
创建时间:
update_time
timestamp
0

  
更新时间:





comment




字段名称
范例
长度
不是null
主键
字段阐明
comment_id
int
11

主键
评论ID:
user_id
int
11

  
评论人ID:
reply_to_id
int
11

  
回复评论ID:空为0
content
longtext
0

  
内容:
nickname
varchar
255

  
昵称:
avatar
varchar
255

  
头像地址:[0,255]
create_time
timestamp
0

  
创建时间:
update_time
timestamp
0

  
更新时间:
source_table
varchar
255

  
泉源表:
source_field
varchar
255

  
泉源字段:
source_id
int
10

  
泉源ID:





notice




字段名称
范例
长度
不是null
主键
字段阐明
notice_id
mediumint
8

主键
公告id:
title
varchar
125

  
标题:
content
longtext
0

  
正文:
create_time
timestamp
0

  
创建时间:
update_time
timestamp
0

  
更新时间:





praise




字段名称
范例
长度
不是null
主键
字段阐明
praise_id
int
10

主键
点赞ID:
user_id
int
11

  
点赞人:
create_time
timestamp
0

  
创建时间:
update_time
timestamp
0

  
更新时间:
source_table
varchar
255

  
泉源表:
source_field
varchar
255

  
泉源字段:
source_id
int
10

  
泉源ID:
status
tinyint
1

  
点赞状态:1为点赞,0已取消





slides




字段名称
范例
长度
不是null
主键
字段阐明
slides_id
int
10

主键
轮播图ID:
title
varchar
64

  
标题:
content
varchar
255

  
内容:
url
varchar
255

  
链接:
img
varchar
255

  
轮播图:
hits
int
10

  
点击量:
create_time
timestamp
0

  
创建时间:
update_time
timestamp
0

  
更新时间:





test_user




字段名称
范例
长度
不是null
主键
字段阐明
test_user_id
int
11

主键
测试用户ID
user_name
varchar
64

  
用户姓名
gender
varchar
64

  
性别
age
varchar
64

  
年龄
address
varchar
64

  
地址
experience
varchar
64

  
履历
examine_state
varchar
16

  
考核状态
recommend
int
11

  
智能推荐
user_id
int
11

  
用户ID
create_time
datetime
0

  
创建时间
update_time
timestamp
0

  
更新时间





user




字段名称
范例
长度
不是null
主键
字段阐明
user_id
mediumint
8

主键
用户ID:
state
smallint
1

  
账户状态:
user_group
varchar
32

  
所在用户组:
login_time
timestamp
0

  
上次登录时间:
phone
varchar
11

  
手机号码:
phone_state
smallint
1

  
手机认证:
username
varchar
16

  
用户名:
nickname
varchar
16

  
昵称:[0,16]
password
varchar
64

  
密码:
email
varchar
64

  
邮箱:
email_state
smallint
1

  
邮箱认证:
avatar
varchar
255

  
头像地址:[0,255]
create_time
timestamp
0

  
创建时间:





user_group




字段名称
范例
长度
不是null
主键
字段阐明
group_id
mediumint
8

主键
用户组ID:[0,8388607]
display
smallint
4

  
显示顺序:[0,1000]
name
varchar
16

  
名称:[0,16]
description
varchar
255

  
描述:[0,255]描述该用户组的特点或权限范围
source_table
varchar
255

  
泉源表:
source_field
varchar
255

  
泉源字段:
source_id
int
10

  
泉源ID:
register
smallint
1

  
注册位置:
create_time
timestamp
0

  
创建时间:
update_time
timestamp
0

  
更新时间:





volunteer_activities




字段名称
范例
长度
不是null
主键
字段阐明
volunteer_activities_id
int
11

主键
志愿者活动ID
topic_name
varchar
64

  
主题名称
cover
varchar
255

  
封面
venue
varchar
64

  
活动地点
activity_time
varchar
64

  
活动时间
number_of_people_required
int
11

  
所需人数
introduction
text
0

  
活动简介
activity_content
longtext
0

  
活动内容
praise_len
int
11

  
点赞数
recommend
int
11

  
智能推荐
timer_title
varchar
64

  
计时器标题
timing_start_time
datetime
0

  
计时开始时间
timing_end_time
datetime
0

  
计时结束时间
limit_times
int
8

  
限制次数
limit_type
tinyint
2

  
限制次数范例1-天天次,2-总计次
create_time
datetime
0

  
创建时间
update_time
timestamp
0

  
更新时间


  • 体系实现

    • 开发工具

体系中应用的开发工具总结如下表所示。
表5-1开发工具
名称
工具
版本
操纵体系
IDE(Integrated Development Environment)
Windows
Eclipse
7/8/10
2017
服务器
Tomcat
9.10.7
JDK(Java Development Kit)
JDK
Java SE 8.0 (1.8.0)
数据库
欣赏器
界面工具
MySQL
谷歌
Photoshop
5.7
6.0
2016


    • 注册模块

未注册用户在用户注册界面uerRegister.jsp,输入新用户信息,点击注册后,新用户信息由界面传入控制层userAction,调用addUser(user)方法,通过userDAOImp向数据库用户表插入用户信息,由于用户账号是自动生成的,若成功则反馈注册成功,并提示新用户的用户账号;若失败则回到登录界面,并显示登录失败。
注册界面如下所示。

图5-1注册界面
用户注册关键代码如下所示。
/**
     * 注册
     * @param user
     * @return
     */
    @PostMapping("register")
    public Map<String, Object> signUp(@RequestBody User user) {  
        // 查询用户
        Map<String, String> query = new HashMap<>();
        query.put("username",user.getUsername());
        List list = service.select(query, new HashMap<>()).getResultList();
        if (list.size()>0){  
            return error(30000, "用户已存在");
        }
        user.setUserId(null);
        user.setPassword(service.encryption(user.getPassword()));
        service.save(user);
        return success(1);
}

/**
     * 用户ID:[0,8388607]用户获取其他与用户相关的数据
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "user_id")
    private Integer userId;

    /**
     * 账户状态:[0,10](1可用|2异常|3已冻结|4已注销)
     */

    @Basic
    @Column(name = "state")
    private Integer state;

    /**
     * 所在用户组:[0,32767]决定用户身份和权限
     */

    @Basic
    @Column(name = "user_group")
    private String userGroup;

    /**
     * 上次登录时间:
     */

    @Basic
    @Column(name = "login_time")
    private Timestamp loginTime;

    /**
     * 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时
     */

    @Basic
    @Column(name = "phone")
    private String phone;

    /**
     * 手机认证:[0,1](0未认证|1考核中|2已认证)
     */

    @Basic
    @Column(name = "phone_state")
    private Integer phoneState;

    /**
     * 用户名:[0,16]用户登录时所用的账户名称
     */

    @Basic
    @Column(name = "username")
    private String username;

    /**
     * 昵称:[0,16]
     */

    @Basic
    @Column(name = "nickname")
    private String nickname;

    /**
     * 密码:[0,32]用户登录所需的密码,由6-16位数字或英文构成
     */

    @Basic
    @Column(name = "password")
    private String password;

    /**
     * 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时
     */

    @Basic
    @Column(name = "email")
    private String email;

    /**
     * 邮箱认证:[0,1](0未认证|1考核中|2已认证)
     */

    @Basic
    @Column(name = "email_state")
    private Integer emailState;

    /**
     * 头像地址:[0,255]
     */

    @Basic
    @Column(name = "avatar")
    private String avatar;

    /**
     * 创建时间:
     */

    @Basic
    @Column(name = "create_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Timestamp createTime;

    @Basic
    @Transient
    private String code;
}



    • 登录/注销模块

用户在首页点击登录,进入用户登录界面uerLogin.jsp,输入用户账号和密码,点击登录,用户账号和密码信息由界面传入控制层userAction,调用userLogin(user)方法,通过userDAOImp向数据库用户表搜刮该用户账号与密码,将最闭幕果反馈到前端。若成功则回到首页;用户成功登录,若失败则回到登录界面,并显示登录失败。
用户点击注销,清空欣赏器session值,然后返回登录页或者首页。
登录界面如下所示。

图5-2登录界面
登录界面关键代码如下所示。
/**
     * 登录
     * @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, "账号或密码禁绝确");
        }
}




    • 用户模块

      • 个人资料模块


登任命户在首页点击进入用户中心userCenter.jsp,再点击修改个人信息按钮进入userChangeInfo.jsp界面,体系根据session中存储的现在登录的用户的账号,向控制层userAction发送请求,搜刮当前用户信息,userAction向userDAOImp调用queryByUserId(user),向数据库的用户表搜刮当前用户信息并将用户信息以对象的形式层层返回到userChangeInfo.jsp界面,显示出当前用户的个人信息。
若用户要对个人信息举行修改,则通过修改当前信息之后点击确认,向控制层userAction发送更改后的用户信息,调用changeUser(user)方法,通过userDAOImp向数据库用户表更新用户信息,若成功则反馈注册成功,则返回的userChangeInfo.jsp界面被更改成功;若失败则显示修改失败。



      • 宠物知识模块


用户在登录状态下欣赏动物知识时,点击到场宠物知识信息后前台发起请求,将对应的宠物知识、id参数信息从前台传递GoumaiController类里,匹配到add()方法,add()方法调用GoumaiServiceImpl类的add()方法。
动物秀界面如下所示。

图5-3宠物知识界面



      • 活动申请模块


用户在登录状态下点击活动申请页面可将举行活动申请提交,从session中取出该活动申请信息,点击到场活动申请,发起请求,将对应的活动申请信息shichang、id参数信息从前台传递XiadanController类里,匹配到add()方法,add()方法调用XiadanServiceImpl类的add()方法。
活动申请面如下所示。

图5-4活动申请界面


    • 管理员模块

      • 密码修改模块


管理员选择个人中心的修改本人密码。通过密码框输入现密码和2次新密码,假如现密码错误,则提示修改失败。假如2次新密码不一致,则提示修改失败。都没问题的话,体系提示修改成功,并返回登录界面。
公告栏管理界面图如下所示。

图5-5公告栏管理界面
用户信息界面如下所示。

图5-6用户信息界面



      • 知识列表管理模块


根据需求,需要对知识列表举行查询、添加、或删除详情信息。删除或添加知识列表时,体系根据知识列表的状态判定为可删除状态下,才会给出删除和添加链接,点击删除链接按钮时,请求到达后台,还会先查询知识列表状态再次做出判定可否删除。点击添加链接按钮时,会跳转到添加信息的页面,填写好新的数据后,数据提交到后台会对数据库中相应的记录做出添加。
添加知识列表时,会给出数据填写的页面,该页面根据填写好的知识列表编号同样会事先发送Ajax请求查询编号是否已存在,数据填写好之后提交到后台,会调用相关服务在数据库中插入记录。
知识列表页面设计效果如下图所示。

图5-7知识列表管理界面
知识列表管理界面逻辑代码如下:
 @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);
}




      • 领养申请管理模块


领养申请功能需要考虑高并发,防止出现动物重复 提交领养申请状态显示出错等环境,特对领养这一共享数据增长锁机制。在乐观锁、悲观锁以及线程锁中,综合考虑性能效率和错误的可接受性选择了乐观锁机制。乐观锁的实现方式是使用版本标识来确定读到的数据与提交时的数据是否一致,提交后修改版本标识,不一致时可以采取丢弃和再次尝试的战略。在数据库动物表(对应动物实体)设计中增长了version字段,每次数据提交时(更改动物状态)会判断version是否匹配,若不匹配停止本次提交,若匹配则提交成功并增长version的值。
领养申请功能整体流程:用户欣赏动物领养信息时,同时会显示动物的状态,体系会在其显示具体信息的页面时便会判断动物的状态,若动物状态为可领养,则会显示申请的链接按钮。在用户点击申请按钮时,会先通过拦截器判断用户是否登录,若未登录,会跳转至登录页面,提示用户先登录,若为登任命户就会跳转至填写申请信息的页面,填写好申请信息之后,点击提交按钮,申请成功之后返回提示信息,告知用户申请成功。
领养申请流程图如下图所示。

图5-8领养申请流程图
领养申请管理界面如下图所示。

图5-9领养申请管理界面



      • 志愿者活动管理模块


添加志愿者活动时,会给出数据填写的页面,该页面根据填写好的活动信息同样会事先发送Ajax请求查询转让编号是否已存在,数据填写好之后提交到后台,会调用相关服务在数据库中插入记录。
志愿者活动页面设计效果如下图所示。

图5-10志愿者活动界面图
志愿者活动管理的关键代码如下。
  @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);
}

    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){  
        StringBuffer sql = new StringBuffer("INSERT INTO ");
        sql.append("`").append(table).append("`").append(" (");
        for (Map.Entry<String,Object> entry:body.entrySet()){  
            sql.append("`"+humpToLine(entry.getKey())+"`").append(",");
        }
        sql.deleteCharAt(sql.length()-1);
        sql.append(") VALUES (");
        for (Map.Entry<String,Object> entry:body.entrySet()){  
            Object value = entry.getValue();
            if (value instanceof String){  
                sql.append("'").append(entry.getValue()).append("'").append(",");
            }else {  
                sql.append(entry.getValue()).append(",");
            }
        }
        sql.deleteCharAt(sql.length() - 1);
        sql.append(")");
        log.info("[{}] - 插入操纵:{}",table,sql);
        Query query = runCountSql(sql.toString());
        query.executeUpdate();
    }

  • 体系测试

    • 测试概述

软件测试是软件开发完成后必须颠末的一道程序,它在软件开发过程中职位非常重要,需要由专业的测试工程师来对软件举行各方面的测试,大到功能模块测试,小到代码的单位测试,这对测试工程师来说需要有足够的耐烦和专业的测试方案,软件测试归根结底就是对软件的结构和功能的综合测评,需要做到结构稳定和功能准确,二者分身。软件测试也叫寻找体系bug的过程,世界上没有美满无缺、不存在bug的软件,只能将软件的bug降到最低最小,来追求极致。


    • 测试过程

      • 登录测试


登录测试是体系最开始就要举行,测试用户可否登录,才能完成后续的功能操纵。
登录测试用例表如下所示。
表6-1登录测试
用例编号
YL001
程序版本
1.00
功能名称
使用者登录测试
体例人
李铁蛋
功能描述
根据用户的登录环境测试
用例目的
测试用户登录环境是否准确
测试项
测试数据
测试结果
预期结果
用户名
为空
请输入用户名
请输入用户名
密码
为空
请输入密码
请输入密码
用户密码组合
用户名:klouse 密码 klouses
用户与密码不匹配
用户与密码不匹配
用户密码组合
用户名 : klouse 密码
klouse
进入体系
准确的用户名和密码
登录体系



      • 信息录入测试


管理员在发布信息页面,通过按照预先格式发布信息,假如因为输入时候缺少相关内容,就不能发布成功,且有相应错误提示
信息录入发布测试用例表如下所示。
表6-1信息录入发布测试
用例编号
YL002
程序版本
1.00
功能名称
信息发布测试
体例人
李铁蛋
功能描述
对使用者发布或者录入信息举行测试,判断其功能是否达到预期的要求
用例目的
对体系使用者录入发布信息举行原型测试。
测试项
测试数据
测试结果
预期结果
属性1
为空
请输入属性1对应的数据
请输入属性1对应的数据
属性2
为空
请输入属性2对应的数据
请输入属性2对应的数据
属性3
为空
请输入属性3对应的数据
请输入属性3对应的数据
全部输入
数据均填入
录入发布成功
录入发布成功



      • 信息更新测试


管理员在更新信息页面,通过按照预先格式更新信息,假如因为输入时候缺少相关内容或者更新的数据不符合当前规范的话,就不能更新成功,且有相应错误提示
信息更新测试用例表如下所示。
表6-1信息更新测试
用例编号
YL003
程序版本
1.00
功能名称
信息更新测试
体例人
李铁蛋
功能描述
对使用者更新信息举行测试,判断其功能是否达到预期的要求
用例目的
对体系使用者更新信息举行原型测试。
测试项
测试数据
测试结果
预期结果
属性1
编号:321
编号更新成功
编号更新成功
属性2
名称:名称1
名称更新成功
名称更新成功
属性3
内容:内容1234内容
内容更新成功
内容更新成功
全部输入
数据均未更改
更新成功
更新成功



      • 信息删除测试


管理员在信息页面,通过点击数据删除按钮来删除该条数据,假如该数据和其他数据有关联,则提示是否确定删除。
信息删除测试用例表如下所示。
表6-1信息删除测试
用例编号
YL004
程序版本
1.00
功能名称
信息删除测试
体例人
李铁蛋
功能描述
对使用者删除信息举行测试,判断其功能是否达到预期的要求
用例目的
对体系使用者删除信息举行原型测试。
测试项
测试数据
测试结果
预期结果
数据1
无任何关联的数据1
数据删除成功
数据删除成功
数据2
和其他数据有关联的数据2
请确认是否删除
请确认是否删除


    • 测试结果

在颠末之前的所有的工作之后,通过对软件的测试方法、测试原则还有典型的测试用例举行全面的、深入的先容。颠末对体系的全面测试,体系现在所具有的所有功能均成功的实现而且通过了测试,整个体系实现了基于 Java 开发的期望。


  • 总结与预测

    • 总结

动物领养体系采用Springboot框架开发,该体系非常美满的集优点于一身,成熟、强大、易理解易使用,通过使用这个结构,降低了开发的难度。本体系实现了基于Springboot的动物领养体系,将数据操纵维护的过程转化成电脑操纵流程,具体实现了对体系职员管理、动物信息数据维护、动物转让数据维护、动物领养申请数据维护,并提供查询统计功能来对动物领养体系的相关数据举行统计分析,让使用者能更清楚的把握运营环境,资助使用者举行数据操纵维护,简化工作流程,提高工作效率和盈利。


    • 预测

现在完成的动物领养体系,还有许多有待改进的地方。一个是功能上的改进,用户理应可以修改自己的相关信息,故应增设个人中心功能;另外,体系假如能提供更多的功能就会使得体系更加丰富和多样化,好比数据当前分析和未来猜测等。第二个是技能上的改进,由于对开发框架不太认识,权限管理这部分,本体系采用一个Java页面来规定好导航栏,即跳转的页面,这相对比力不灵活,假如将URL路径记录到数据库并实现增删查改会比力好;另外就是对EasyUI的使用还不敷纯熟,视觉效果和界面观感有待提升,希望日后能对这个体系有所改进。

参考文献



  • [1]施展,朱彦.基于Vue与SpringBoot框架的学生成绩分析和弱项辅助体系设计[J].信息技能与信息化,2022(08):127-131.
  • [2]王曼维,杨荻,李岩,及松洁.基于SpringBoot框架的聪明医疗问诊体系设计与实现[J].中国医学装备,2022,19(03):133-136.
  • [3]熊柏祥.基于Springboot和Vue框架的考试资源服务平台的设计与实现[J].信息与电脑(理论版),2022,34(01):97-99+103.
  • [4]单树倩,任佳勋.基于SpringBoot和Vue框架的数据库原理网站设计与实现[J].电脑知识与技能,2021,17(30):40-41+50.DOI:10.14004/j.cnki.ckt.2021.2868.
  • [5]Fuyuan Cheng. Talent Recruitment Management System for Small and Micro Enterprises Based on Springboot Framework[J]. Advances in Educational Technology and Psychology,2021,5(2).
  • [6]周粉妹,吴仁平,钱繁华,陈思.基于SSM的宠物领养网站设计[J].扬州职业大学学报,2021,25(01):32-35.DOI:10.15954/j.cnki.cn32-1529/g4.2021.01.009.
  • [7]姜苏. 基于互联网平台解决社会流离动物问题的可行性研究[D].山东农业大学,2020.DOI:10.27277/d.cnki.gsdnu.2020.001043.
  • [8]吴文洋,刘世宇.基于B/S架构宠物领养管理体系设计[J].软件,2020,41(11):85-87.
  • [9]杨芹. 宠物领养Web App的设计与实现[D].华中科技大学,2020.DOI:10.27157/d.cnki.ghzku.2020.006892.
  • [10]Jian Chen,Chen Jian,Pan Hailan. Design of Man Hour Management Information System on SpringBoot Framework[J]. Journal of Physics: Conference Series,2020,1646(1).
  • [11]葛萌,王颖.基于SpringBoot+SSM框架的进销存管理体系设计与实现[J].科学技能创新,2020(24):74-77.
  • [12]刘琴琴. 我国流离动物规范管理的法律研究[D].西北大学,2020.DOI:10.27405/d.cnki.gxbdu.2020.002158.
  • [13]. Adopt-a-Pet.com; Adopt-a-Pet.com and Chewy Announce Integrated Partnership to Support Pet Adoption[J]. Veterinary Research Week,2020.
  • [14]李玲. 都会流离猫助养公益构造服务创新设计研究[D].南京艺术学院,2019.
  • [15]杨华. 基于SSM的宠物店信息体系的设计与实现[D].吉林大学,2019.


致谢

在老师的辅导和资助下,本人完成了本篇论文,老师对论文的内容、格式都有非常严格的要求,在我写结业论文的过程中,他多次给出了建议,并定期查抄,对我们严格要求,资助我们在文档的编写上写到极致和准确,他这种讲授和工作态度,让我对他产生无穷的敬佩感和尊敬感。写结业论文的同时,作为应届生,我也忙着找工作中,遇到了许多选择,感到狐疑渺茫的时候,老师给了我许多意见,感谢老师的耐烦开导,跟她的聊天我明确了许多。
我还要感谢我的父母,不停以来都非常支持和相信我,在精神和经济上给了我许多力量,如今我将结业走上工作之路,终于能报酬父母的养育辅导之恩。还有我大学期间所有老师和全体同学,遇到问题时,这些老师同学总是无私地资助我,真的非常感谢,我也会加油积极成长为一个有用的人。

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


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

圆咕噜咕噜

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表