基于小程序的志愿服务管理系统
目录
项目概述
可行性分析
系统需求分析
系统总体架构设计
数据库设计
系统功能详细设计
接口设计
开发与部署环境
系统测试
总结与展望
1. 项目概述
1.1 项目背景
随着社会公益事业不断发展,各类社区、高校志愿活动数量持续增长。传统志愿服务依靠线下登记、群通知,存在志愿项目信息分散、志愿者报名流程繁琐、服务时长统计困难、活动公告触达不及时、服务评价难以收集等痛点。
为规范化管理志愿活动,打通管理员与志愿者线上交互渠道,开发基于小程序的志愿服务管理系统。志愿者通过小程序浏览志愿项目、查看公告资讯、报名参与服务;管理员通过 PC 后台管理志愿者信息、发布志愿项目、维护公告、登记服务记录、统计志愿数据,实现志愿服务全流程数字化管理。
1.2 项目目标
搭建PC 管理后台 + 小程序双端系统,基于 SpringBoot+Vue 技术栈实现前后端分离;
志愿者小程序端:账号注册登录、浏览服务项目、查看公告资讯、预约志愿项目、查看个人服务记录、项目评论;
管理员 PC 后台:账号管理、志愿者信息管理、志愿项目发布维护、公告管理、服务记录登记、数据可视化统计;
实现志愿项目预约、服务时长记录、服务评价、评论管理、多条件检索分页功能;
提供可视化图表统计,直观展示各志愿项目参与情况,辅助管理员运营决策。
1.3 技术选型
后端
SpringBoot 2.7.x:服务开发框架
MyBatis-Plus:持久层框架,简化数据库操作
MySQL 8.0:关系型数据库
JWT:身份令牌认证
Maven:项目依赖管理
PC 管理前端
Vue3 + Element Plus
Axios:接口请求
Vue Router:路由管理
ECharts:数据可视化饼图展示
小程序端
原生小程序框架(WXML + WXSS + JavaScript)
小程序网络请求封装,对接后端 API
开发工具
IDEA、VSCode、Navicat、开发者工具、Postman
2. 可行性分析
2.1 技术可行性
SpringBoot+Vue 是成熟主流前后端分离方案,小程序拥有完善开发文档。登录认证、图片上传、分页查询、ECharts 图表统计、小程序接口对接均具备成熟解决方案,开发难度可控,技术方案落地可行。
2.2 经济可行性
系统全部使用开源框架,无商业软件授权费用;后端打包 Jar 可部署在普通云服务器,数据库采用免费 MySQL;小程序仅需完成认证即可上线,软硬件成本较低,适合公益组织、社区长期使用。
2.3 操作可行性
PC 后台采用标准管理系统布局,菜单清晰;小程序依托生态,志愿者无需下载 APP,打开即可访问,注册、浏览、报名操作简单,使用者短时间内可以熟练上手。
2.4 社会可行性
系统推动志愿服务信息化,简化志愿活动组织流程,降低管理员工作压力,方便志愿者快速获取志愿活动信息,助力公益志愿服务规范化开展,具备良好实用价值。
3. 需求分析
3.1 用户角色划分
志愿者(小程序端用户)
完成账号注册、登录;浏览公告资讯;查看全部志愿服务项目;预约报名志愿项目;查看个人参与的服务记录;对志愿项目进行评论。系统管理员(PC 后台)
登录后台;管理管理员账号;维护志愿者信息;发布、编辑、删除志愿服务项目;管理公告资讯;登记志愿者服务记录;查看项目评论;数据统计可视化。
3.2 功能性需求
(1)小程序端功能
注册登录模块
志愿者填写账号、密码、姓名、性别、手机号、头像、可服务时间完成注册;账号密码登录系统。首页
系统首页入口,导航切换四大菜单:首页、公告资讯、服务项目、我的。公告资讯模块
展示所有公告列表;支持根据标题搜索公告;点击查看公告详情(标题、配图、正文、发布时间)。服务项目模块
展示所有志愿服务项目卡片,包含项目配图、项目名称、服务时间;志愿者查看项目详情,预约报名志愿项目。我的模块
查看个人信息、我的预约项目、我的服务记录、我的评论。
(2)PC 管理后台功能
管理员登录
账号密码登录后台管理系统。首页仪表盘
ECharts 可视化图表,展示服务项目参与统计饼图,直观展示各项目志愿者数量分布。管理员管理
新增、修改、删除后台管理员账号。志愿者管理
查询、编辑、系统内所有志愿者注册信息。服务项目管理
新增志愿项目、上传项目封面、填写项目名称、服务时间;支持修改、删除项目;查看项目预约详情、查看志愿者评论;支持条件搜索、分页展示。服务管理 - 服务记录
登记志愿者服务记录:记录志愿者、对应项目、服务起止时间、服务时长、服务地点、服务人数、服务评价;支持多条件筛选;提供服务项目统计、志愿者时长统计功能。公告资讯管理
管理员发布公告,上传图片、填写标题与内容;支持编辑、删除公告。评论管理
查看志愿者在项目下发布的评论,支持管理操作。
3.3 非功能性需求
安全性:密码加密存储,Token 身份校验,区分管理员后台权限与小程序用户权限;
易用性:所有列表支持分页、条件搜索,表单前端校验;
兼容性:后台支持 Chrome、Edge 主流浏览器;小程序适配安卓、IOS ;
扩展性:模块化开发,后续可拓展志愿时长积分、消息推送、活动签到功能;
性能:分页查询优化,图片压缩上传,页面加载流畅。
4. 系统总体设计
4.1 系统架构
小程序端 PC Vue管理后台 ↓ HTTP请求 ↓ SpringBoot后端服务 ↓ MySQL数据库分层结构:
表现层:Vue 管理后台页面、小程序页面
控制层 Controller:接收前后端请求,参数校验
业务层 Service:实现志愿项目预约、服务记录、统计等业务逻辑
持久层 Mapper:MyBatis-Plus 操作数据库
数据层:MySQL 持久化存储所有业务数据
4.2 系统模块划分
身份认证模块(管理员登录、志愿者注册登录)
用户管理模块(管理员管理、志愿者信息管理)
公告资讯模块(公告发布、查询、管理)
志愿服务项目模块(项目新增、预约、维护、评论管理)
服务记录模块(服务信息登记、时长统计、数据检索)
数据可视化统计模块(志愿项目统计图表)
4.3 核心业务流程
流程 1:志愿者报名志愿项目
志愿者小程序登录 → 浏览【服务项目】列表 → 查看项目详情 → 预约报名志愿项目 → 管理员后台查看预约信息 → 活动结束后管理员录入【服务记录】。
流程 2:公告发布流程
管理员登录 PC 后台 → 新增公告(标题、图片、正文)→ 保存发布 → 小程序端志愿者在【公告资讯】页面浏览、检索公告。
流程 3:服务记录统计流程
管理员录入志愿者服务记录 → 后台汇总所有数据 → 首页可视化图表展示各志愿项目参与人数分布,支持导出统计数据。
5. 数据库设计
5.1 数据表清单
admin 管理员表
volunteer 志愿者表(小程序注册用户)
notice 公告资讯表
service_project 志愿服务项目表
service_order 项目预约表(志愿者预约项目)
service_record 志愿服务记录表
project_comment 项目评论表
5.2 数据表详细结构
(1)admin 管理员表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键自增 |
| username | varchar | 管理员登录账号 |
| password | varchar | 加密密码 |
| name | varchar | 管理员名称 |
(2)volunteer 志愿者表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键 |
| vol_account | varchar | 志愿者账号(登录账号) |
| password | varchar | 密码 |
| name | varchar | 志愿者姓名 |
| avatar | varchar | 头像图片地址 |
| sex | varchar | 性别 |
| phone | varchar | 手机号码 |
| available_time | varchar | 可服务时间 |
| create_time | datetime | 注册时间 |
(3)notice 公告资讯表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键 |
| title | varchar | 公告标题 |
| img_url | varchar | 封面图片 |
| content | text | 公告正文内容 |
| publish_time | datetime | 发布时间 |
(4)service_project 志愿服务项目表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键 |
| project_name | varchar | 服务项目名称 |
| cover_img | varchar | 项目封面图片 |
| service_time | varchar | 项目服务时间 |
| remark | text | 项目描述信息 |
| create_time | datetime | 创建时间 |
(5)service_order 项目预约表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键 |
| vol_id | bigint | 志愿者 id |
| project_id | bigint | 志愿项目 id |
| status | varchar | 预约状态(已预约 / 已完成 / 取消) |
| order_time | datetime | 预约时间 |
(6)service_record 服务记录表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键 |
| vol_id | bigint | 志愿者 id |
| project_id | bigint | 服务项目 id |
| start_time | datetime | 服务开始时间 |
| end_time | datetime | 服务结束时间 |
| service_hour | int | 服务时长(小时) |
| service_address | varchar | 服务地点 |
| service_num | int | 服务人数 |
| evaluate | varchar | 服务评价(好评 / 一般 / 差评) |
| remark | text | 备注信息 |
(7)project_comment 项目评论表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键 |
| vol_id | bigint | 评论志愿者 id |
| project_id | bigint | 项目 id |
| comment_content | text | 评论内容 |
| create_time | datetime | 评论时间 |
5.3 ER 关系简述
志愿者 1:N 预约多条项目预约记录;
志愿项目 1:N 多条预约记录、多条服务记录、多条评论;
志愿者 1:N 多条服务记录、多条评论;
6. 系统功能详细设计
6.1 小程序端功能
6.1.1 注册页面
志愿者录入:志愿者账号、密码、确认密码、上传头像、志愿者姓名、性别、手机号、可服务时间,点击注册完成账号创建。
6.1.2 底部导航栏
包含【首页】【公告资讯】【服务项目】【我的】四大菜单。
公告资讯页面
顶部标题搜索框,输入标题检索公告;列表展示公告封面、标题、简介、发布时间;点击进入公告详情。服务项目页面
网格卡片展示志愿服务项目,卡片包含项目图片、项目名称、服务时间;点击查看项目详情,支持预约报名。我的页面
展示志愿者个人信息、我的预约项目、我的服务记录、我的评论。
6.2 PC 管理后台功能
6.2.1 登录页面
管理员输入账号密码登录后台系统。
6.2.2 首页仪表盘
加载 ECharts 饼图,展示【服务项目统计】,可视化显示各个志愿项目参与志愿者数量分布,方便管理员直观分析活动热度。
6.2.3 管理员管理模块
维护后台管理员账号,支持新增、修改、删除操作。
6.2.4 志愿者管理模块
查看所有注册志愿者信息,支持信息检索、编辑。
6.2.5 服务项目管理
列表展示所有志愿项目,包含封面、项目名称、服务时间、志愿者信息、手机号、预约状态;
操作按钮:新增项目、查看详情、修改项目、删除项目、查看评论;支持关键词搜索、分页。
6.2.6 服务管理 → 服务记录
列表展示所有志愿者服务记录,支持按项目名称、服务人数区间筛选;
提供【服务项目统计】【志愿者服务时长统计】功能;支持查看详情、删除记录。
6.2.7 公告资讯管理
管理员新增公告,上传图片,填写标题和内容;对公告进行修改、删除操作。
6.2.8 评论管理
查看志愿者对志愿项目发表的评论,管理评论内容。
7. 核心接口设计(REST 风格)
| 接口地址 | 请求方式 | 功能 | 访问端 |
|---|---|---|---|
| /api/admin/login | POST | 管理员后台登录 | PC 后台 |
| /api/volunteer/register | POST | 志愿者小程序注册 | 小程序 |
| /api/volunteer/login | POST | 志愿者登录 | 小程序 |
| /api/notice/list | GET | 公告资讯列表查询 | 小程序 / 后台 |
| /api/notice/save | POST | 新增公告 | PC 后台 |
| /api/service/project/list | GET | 获取志愿项目列表 | 小程序 / 后台 |
| /api/service/project/save | POST | 新增 / 编辑志愿项目 | PC 后台 |
| /api/service/order/add | POST | 志愿者预约项目 | 小程序 |
| /api/service/record/list | GET | 查询服务记录 | PC 后台 |
| /api/service/record/save | POST | 新增服务记录 | PC 后台 |
| /api/service/comment/add | POST | 志愿者提交评论 | 小程序 |
| /api/statistics/project | GET | 获取项目统计图表数据 | PC 后台首页 |
8. 部署运行环境
8.1 开发环境
操作系统:Windows10 / Windows11
JDK:1.8
MySQL:8.0
Node.js:16.x(Vue 前端)
开发工具:IDEA、VSCode、开发者工具、Navicat
8.2 生产部署环境
服务器系统:CentOS7 / CentOS8
数据库:MySQL8.0
PC 前端:Vue 打包 dist,Nginx 部署
后端:SpringBoot 打包 Jar 包运行
小程序:公众平台上传代码,提交审核发布
8.3 部署步骤
执行数据库 SQL 脚本,创建数据表;
修改 SpringBoot 配置文件,配置数据库连接、文件上传路径;
Maven 打包后端项目为 jar;
Vue 管理后台执行
npm run build打包静态资源;Nginx 配置反向代理,托管 Vue 页面;
启动后端 Jar 服务;
小程序修改接口域名,上传代码发布。
9. 系统测试
9.1 功能测试
小程序:志愿者注册登录、公告检索浏览、志愿项目查看、预约报名功能验证;
PC 后台:管理员登录、志愿项目增删改查、服务记录录入、公告发布、图表统计功能测试;
分页、搜索、图片上传、表单校验、评论功能测试。
9.2 权限测试
普通志愿者无法访问管理员后台接口;
数据隔离,志愿者只能查看自身预约与服务记录;
非法接口访问进行 Token 拦截。
9.3 兼容性测试
PC 后台在 Chrome、Edge 浏览器正常展示;小程序在安卓、IOS 正常运行,页面无错乱。
9.4 测试结论
系统所有业务功能运行正常,满足志愿服务管理业务需求,实现小程序志愿者端与 PC 管理后台双向联动,达到预期开发目标。
10. 总结与展望
10.1 项目总结
本系统基于 SpringBoot+Vue + 小程序架构开发,分为志愿者小程序端与管理员 PC 后台。系统实现志愿者注册登录、公告资讯浏览、志愿服务项目预约报名;管理员可以统一管理志愿项目、志愿者信息、录入服务时长、维护公告、统计志愿数据。
系统解决传统志愿活动线下管理效率低下的问题,实现志愿服务线上化、信息化,简化公益组织运营管理工作,为志愿者提供便捷的活动报名渠道。
11 项目资料
👇🏻 精彩专栏推荐订阅👇🏻 在下方专栏👇🏻不然下次找不到哟
《Java精品推荐项目》
《springboot+vue项目100套》
《ssm项目100套》
《小程序合集》