基于springboot+vue+微信小程序的宠物领养系统
基于springboot+vue+微信小程序的宠物领养系统
一、介绍
本项目利用SpringBoot、Vue和微信小程序技术,构建了一个宠物领养系统。
本系统的设计分为两个层面,分别为管理层面与用户层面,也就是管理者与用户,管理权限与用户权限是不同的,具体角色分类与所具权限如下:
- 管理者:能够通过账户密码登录管理者界面,管理员有个人信息、修改密码、用户管理、公告管理、宠物管理、领养管理和社区管理功能。
- 用户:能够通过注册登录查看宠物信息、对于自己喜欢的宠物,可以申请领养。用户可以在社区发帖以及跟帖、且拥有公告查看、个人信息编辑、修改密码、参与用户调研、查看我的领养申请以及查看以及添加个人宠物的功能,且可以维护个人宠物的成长记录。
二、软件架构
功能架构:

技术栈:
- 后端:Java、SpringBoot、Mybaits Plus ;
- 前端:vue3、element-plus(https://element-plus.org/zh-CN/component/overview.html)、echarts;
- 微信小程序:vant(https://vant-ui.github.io/vant-weapp/#/button)
- 数据库: MySql
三、系统功能
用户功能需求
(1)注册功能
用户在小程序上进行账号注册。首先检查用户名和邮箱是否存在,如不存在即可进行注册;验证用户实名身分是否成年,只有满足身份证年龄18周岁以上的用户才可注册;注册成功后,将用户输入的密码进行MD5加密,注册成功后提示注册成功,并将用户信息保存到数据库中。
(2)登录功能
使用宠物领养系统前是需要用户登录个人账号。用户使用注册的账号登录小程序。

(3)首页
用户登录小程序后,首先可以看待宠物列表,可以浏览系统发布的宠物信息。(包括图片、视频、详细介绍),点击详情可以查看宠物详情,包含宠物基本信息、详情、审核信息和成长记录等信息。对于自己感兴趣的宠物,可以点击申请领养进行申请(申请领养前必须先完成用户信息调研)。
点击首页的“推荐”按钮,可以进入推荐列表:系统会根据用户调研信息的喜好结果,个性化推荐心仪的宠物。

(4)社区
用户通过申请领养到宠物后还可以在平台上实时记录宠物成长信息和在宠物社区进行发帖,与其他用户交流心得。还可以对他人发布的信息进行点赞、评论等操作。该部分功能分为晒宠物、求宠物、找领养等模块,用户发布的时候可以选择模块标签后进行发布。

(5)公告
用户可以查看管理员发布的系统公告

(6)个人信息编辑
用户在这里维护个人信息。
(7)修改密码
用户可以定期在这里修改密码,确保账号的安全性。
(8)用户调研
用户在这里参与用户调研,填写调查问卷后,系统会给用户推荐喜欢的宠物,用户也可以对自己感兴趣的宠物申请领养。

(9)我的领养申请
用户在这里查看自己的领养申请记录,分为全部、已申请、审核通过、审核未通过、已收货和已取消几类数据。

(10)我的宠物
首先,用户可以在该模块添加自己的宠物,添加后可以维护宠物的成长记录,该模块的数据管理员不可见,仅宠物主自己可看。如果用户想转让自己的宠物,点击转让按钮即可转让,转让后宠物会进入管理员界面,由管理员进行审核与发布。对于用户领养且已收货的宠物、点击领养tag按钮,即可查看宠物信息。

管理者功能需求
(1)登录
管理员使用系统,首先要登入系统。
(2)个人信息
管理员在这里维护个人信息。
(3)首页
首页是对平台数据的统计页面,这里使用echarts图对数据进行分析展示,管理员可以清晰的看到平台相关数据分析。

(4)修改密码
管理员可以定期在这里修改密码,确保账号的安全性。
(5)用户管理
管理者可以进入用户管理页面,可以看到目前所注册的用户相关信息,通过姓名,手机账号进行搜索,还可以对用户进行如下操作:
a)新增:点击新增按钮,输入用户信息,可添加新用户
b)搜索:输入用户名字和手机号码,点击搜索即可查询用户信息
c)编辑:编辑用户信息
d)重置密码:点击重置密码,可重置该用户密码
e)启用/停用:对用户账号状态进行修改,被停用的用户无法登录系统
f)删除:删除该账号


(6)公告管理
管理者进入公告管理页面,进行新增、修改、删除、停/启用以及查看详情等操作。


(7)宠物管理
管理者进入宠物管理页面,即可看到平台所有宠物列表,包含管理员添加的以及用户转让的宠物,且可以进行新增、查看详情、修改、删除、审核、启/停用、以及维护成长记录等操作。



(8)领养管理
管理员进入领养管理页面,可以看到用户所有的申请领养记录,可以对记录进行审核操作,且可以在这里查看宠物详情和领养详情。

(9)社区管理
管理宠物社区的帖子和评论,可以对违规信息进行删除操作。


四、安装教程
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并执行项目的sql文件
- 使用IDEA/Eclipse导入项目,若为maven项目请选择maven,等待依赖下载完成
- 修改application.yml里面的数据库配置以及文件下载地址等配置,然后运行项目
- (管理端前端)在编译器中打开terminal,进入pet-web目录下,执行npm install 依赖下载完成后执行 npm run dev,执行成功后会显示访问地址
- (微信小程序)在微信开发者工具中打开pet-mini代码
五、工程目录结构
|house-second|-- pet-server 后端目录接口|-- pet-web 管理端前端|-- pet-web 用户端(微信小程序)
六、表结构
| 表名 | 说明 | 功能 |
|---|---|---|
| tbl_file | 文件信息表 | 存储文件信息 |
| tbl_user | 用户信息表 | 存储系统用户信息 |
| tbl_user_survey | 用户调研信息表 | 保存用户调研信息 |
| tbl_notice | 公告信息表 | 存储公告信息 |
| tb_pet_user | 个人宠物信息表 | 存储用户个人宠物基础信息 |
| tb_pet | 宠物信息表 | 存储宠物库宠物基本信息 |
| tb_pet_adopt | 宠物领养信息表 | 存储领养信息 |
| tb_pet_record | 宠物成长记录表 | 存储宠物成长记录信息 |
| tb_community | 社区信息表 | 存储社区帖子信息 |
| tb_community_collect | 社区点赞表 | 存储社区帖子点赞和收藏信息 |
| tb_community_comment | 社区评论表 | 存储社区帖子评论信息 |
七、其它
微信小程序官方文档:https://developers.weixin.qq.com/miniprogram/dev/component/picker-view-column.html
vat文档:https://vant-ui.github.io/vant-weapp/#/button
源码地址:https://gitee.com/ymz-001/j-pet
相关文章:
基于springboot+vue+微信小程序的宠物领养系统
基于springbootvue微信小程序的宠物领养系统 一、介绍 本项目利用SpringBoot、Vue和微信小程序技术,构建了一个宠物领养系统。 本系统的设计分为两个层面,分别为管理层面与用户层面,也就是管理者与用户,管理权限与用户权限是不…...
如何使用策略模式并让spring管理
1、策略模式公共接口类 BankFileStrategy public interface BankFileStrategy {String getBankFile(String bankType) throws Exception; } 2、策略模式业务实现类 Slf4j Component public class ConcreteStrategy implements BankFileStrategy {Overridepublic String ge…...
react中hooks之useRef 用法总结
1. 基本概念 useRef 是 React 的一个 Hook,返回一个可变的 ref 对象,其 .current 属性被初始化为传入的参数。这个对象在组件的整个生命周期内保持不变。 2. 主要用途和特性 2.1 获取 DOM 元素实例 function TextInputWithFocusButton() {const inpu…...
使用 Docker 部署 Java 项目(通俗易懂)
目录 1、下载与配置 Docker 1.1 docker下载(这里使用的是Ubuntu,Centos命令可能有不同) 1.2 配置 Docker 代理对象 2、打包当前 Java 项目 3、进行编写 DockerFile,并将对应文件传输到 Linux 中 3.1 编写 dockerfile 文件 …...
如何在Ubuntu上安装和配置Git
版本控制系统(VCS)是软件开发过程中不可或缺的工具之一,它帮助开发者跟踪代码变更、协作开发以及管理不同版本的项目。Git作为当前最流行的分布式版本控制系统,因其高效性和灵活性而广受青睐。本文将指导你如何在Ubuntu操作系统上…...
FPGA 21 ,深入理解 Verilog 中的基数,以及二进制数与十进制数之间的关系( Verilog中的基数 )
目录 前言 一. 基数基础 1.1 基数介绍 2.1 基数符号 3.1 二进制数 二. 二进制与十进制数 三. 二进制数 3.1 定义寄存器类型变量 3.2 定义线网类型变量 3.3 赋值操作 3.4 解析二进制数为十进制数 四. 代码示例 五. 注意事项 六. 更多操作 前言 在Verilog中&#…...
【redis】redis-cli命令行工具的使用
redis-cli命令行工具是一个功能强大的Redis客户端,它允许用户与Redis数据库进行交互和管理。 以下是一些常用参数的使用说明: 基本连接参数 -h, --host <hostname>:指定要连接的Redis服务器的主机名或IP地址。如果未指定,…...
使用Matplotlib显示中文的方法
1 问题提出 使用图1所示的代码进行matplotlib绘图时,因为其默认不支持中文,此时无法显示正确内容,如图2所示。 图1 matplotlib绘图绘图代码 图2 matplotlib无法显示中文 2 问题解决 2.1 设置全局字体 在图1所示的代码中,第13…...
SQL Server2022详细安装教程
1. 打开SQL Server官网:SQL Server 下载 | Microsoft 2. 选择Developer版 3. 下载好安装包,打开,选择自定义 4. 选择下载位置,最好不要在C盘即主磁盘即可。等待下载 5. 下载成功之后会弹出这个框 6. 点击“安装”&#…...
家里温度随心控,假期出行更舒适~
春节假期马上到来啦!这是放松身心、陪伴家人的最佳时机~ 但旅途结束的温差变化、空气质量问题是否让你有些担忧呢? 别担心!有了约克VRF中央空调,让你的假期更加舒心无忧~ 清新空气,自在出游…...
压力测试详解
压力测试 压力测试是一种软件测试,用于验证软件应用程序的稳定性和可靠性。压力测试的目标是在极其沉重的负载条件下测量软件的健壮性和错误处理能力,并确保软件在危急情况下不会崩溃。它甚至可以测试超出正常工作点的测试,并评估软件在极端…...
从epoll事件的视角探讨TCP:三次握手、四次挥手、应用层与传输层之间的联系
目录 一、应用层与TCP之间的联系 二、 当通信双方中的一方如客户端主动断开连接时,仅是在客户端的视角下连接已经断开,在服务端的眼中,连接依然存在,为什么?——触发EPOLLRDHUP事件:对端关闭连接或停止写…...
Redis复制(replica)
Redis主从复制 [Redis主从复制](replica)是一个多Redis实例进行数据同步的过程,其中一个实例是主实例(Master),其他实例是从实例(Slave)。主实例负责处理命令请求,而从实…...
[云讷科技] 用于软件验证的仿真环境
我们使用Pursuit自动驾驶仪为各种场景设计仿真环境,以便用户可以在模拟环境中直接验证他们的软件,无需现场测试。该环境基于Gazebo引擎。 1. 工作区目录 模拟环境的工作区位于提供的U盘中的~/pursuit_space/sitl_space_pursuit中。用户可以按照用户手册…...
使用 Vite 和 Vue 框架创建组件库
在前端开发中,组件化开发已成为一种高效、可维护的方式。通过创建组件库,不仅可以提高代码复用率,还能方便地在不同项目之间共享组件。本文将详细介绍如何使用 Vite 和 Vue 框架创建一个组件库,并将其导出供其他项目使用。为保持一…...
【数据结构学习笔记】19:跳表(Skip List)
介绍 跳表是一个能在 O ( n l o g n ) O(nlogn) O(nlogn)时间完成查找、插入、删除的数据结构,相比于树形结构优点就是很好写(所以也用于实现Redis ZSet)。其核心思想就是维护一个元素有序的,能随机提升索引层数的链表。最下面一…...
【8】深入理解 Go 语言中的协程-从基础到高级应用
文章目录 一、引言 🌟二、协程基础概念 🧐(一)什么是协程(二)协程与线程、进程的区别三、协程的创建与启动 🚀(一)使用 go 关键字创建协程(二)简单…...
深入理解 ECMAScript 2024 新特性:字符串 isWellFormed 方法
ECMAScript 2024 引入了一个新的字符串实例方法:String.prototype.isWellFormed。这一新增功能是为了帮助开发者更容易地验证字符串是否为有效的 Unicode 文本。本文将详细介绍这一方法的使用场景、实现原理及其在实际应用中的价值。 String.prototype.isWellFormed…...
算法分析与设计之贪心算法
文章目录 前言一、Greedy Algorithms1.1 贪心选择性质1.2 最优子结构性质1.3 正确性证明 二、典型例题2.1 Interval Scheduling间隔调度2.2 Interval Partitioning最少间教室排课2.3 Selecting Breakpoints选择加油站停靠点2.4 硬币找零2.5 Scheduling to Minimizing Lateness2…...
Centos 宝塔安装
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh 安装成功界面 宝塔说明文档 https://www.bt.cn/admin/servers#wcu 或者可以注册宝塔账号 1 快速部署 安装docker 之后 2 需要在usr/bin下下载do…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...
