博主介绍:专注于Java(springboot ssm springcloud等开发框架) vue .net php phython node.js uniapp小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了1500+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
更多项目地址 介绍 翰文编程-CSDN博客
文末下方有源码获取地址
系统实现预览
数据库设计
4.1数据库概念设计
在对数据库设计之前首先要分析一下疫情防控志愿者管理系统的功能,和各模块之间的关系,再对数据表进行设计。每一个模块的实体都会对应多个实体对象,下面是几个系统中的数据实体如下所示。
意见反馈实体E-R图如图4-1所示:
图4-1意见反馈E-R图
志愿任务E-R图如图4-2所示:
图4-2志愿任务E-R图
个人中心实体E-R图如图4-3所示:
图4-3个人中心实体E-R图
4.2数据表设计
疫情防控志愿者管理系统的操作都是依靠数据库来进行数据的操作,包括对数据的添加、删除、修改和查询等。所以对数据库的设计是一个很重要的环节,本疫情防控志愿者管理系统根据管理员和志愿者的需求分析,对数据库进行了设计,为方便数据查询,本疫情防控志愿者管理系统数据库中创建了数据表。这些实体对象是数据表结构的基本模型,这个数据模型包含了网站所有的数据实体和属性。如下表所示:
表4-1:任务执行人员
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
renwumingcheng | varchar | 200 | 任务名称 | ||
renwuleixing | varchar | 200 | 任务类型 | ||
kaishishijian | varchar | 200 | 开始时间 | ||
jieshushijian | varchar | 200 | 结束时间 | ||
renwudidian | varchar | 200 | 任务地点 | ||
zhixingrenyuan | varchar | 200 | 执行人员 | ||
zhiyuanzhexingming | varchar | 200 | 志愿者姓名 | ||
zhixingshijian | datetime | 执行时间 | |||
beizhu | varchar | 200 | 备注 |
表4-2:任务申请
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
renwumingcheng | varchar | 200 | 任务名称 | ||
renwuleixing | varchar | 200 | 任务类型 | ||
kaishishijian | varchar | 200 | 开始时间 | ||
jieshushijian | varchar | 200 | 结束时间 | ||
renwudidian | varchar | 200 | 任务地点 | ||
shenqingshijian | datetime | 申请时间 | |||
zhiyuanzhezhanghao | varchar | 200 | 志愿者账号 | ||
zhiyuanzhexingming | varchar | 200 | 志愿者姓名 | ||
shoujihaoma | varchar | 200 | 手机号码 | ||
sfsh | varchar | 200 | 是否审核 | 否 | |
shhf | longtext | 4294967295 | 审核回复 |
表4-3:任务类型
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
renwuleixing | varchar | 200 | 任务类型 |
表4-4:新闻公告
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
title | varchar | 200 | 标题 | ||
introduction | longtext | 4294967295 | 简介 | ||
picture | varchar | 200 | 图片 | ||
content | longtext | 4294967295 | 内容 |
表4-5:意见反馈
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
userid | bigint | 留言人id | |||
username | varchar | 200 | 用户名 | ||
content | longtext | 4294967295 | 留言内容 | ||
cpicture | varchar | 200 | 留言图片 | ||
reply | longtext | 4294967295 | 回复内容 | ||
rpicture | varchar | 200 | 回复图片 |
表4-6:志愿任务评论表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
refid | bigint | 关联表id | |||
userid | bigint | 用户id | |||
nickname | varchar | 200 | 用户名 | ||
content | longtext | 4294967295 | 评论内容 | ||
reply | longtext | 4294967295 | 回复内容 |
表4-7:配置文件
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
name | varchar | 100 | 配置参数名称 | ||
value | varchar | 100 | 配置参数值 |
表4-8:志愿者
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
zhiyuanzhezhanghao | varchar | 200 | 志愿者账号 | ||
mima | varchar | 200 | 密码 | ||
zhiyuanzhexingming | varchar | 200 | 志愿者姓名 | ||
touxiang | varchar | 200 | 头像 | ||
xingbie | varchar | 200 | 性别 | ||
nianling | varchar | 200 | 年龄 | ||
shoujihaoma | varchar | 200 | 手机号码 | ||
shenfenzhenghao | varchar | 200 | 身份证号 |
表4-9:志愿任务
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
renwumingcheng | varchar | 200 | 任务名称 | ||
renwutupian | varchar | 200 | 任务图片 | ||
renwuleixing | varchar | 200 | 任务类型 | ||
kaishishijian | datetime | 开始时间 | |||
jieshushijian | datetime | 结束时间 | |||
renwudidian | varchar | 200 | 任务地点 | ||
renwuneirong | longtext | 4294967295 | 任务内容 | ||
fabushijian | datetime | 发布时间 |
表4-10:用户表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
username | varchar | 100 | 用户名 | ||
password | varchar | 100 | 密码 | ||
role | varchar | 100 | 角色 | 管理员 | |
addtime | timestamp | 新增时间 | CURRENT_TIMESTAMP |
表4-11:token表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
userid | bigint | 用户id | |||
username | varchar | 100 | 用户名 | ||
tablename | varchar | 100 | 表名 | ||
role | varchar | 100 | 角色 | ||
token | varchar | 200 | 密码 | ||
addtime | timestamp | 新增时间 | |||
expiratedtime | timestamp | 过期时间 | CURRENT_TIMESTAMP |
第五章 系统的详细设计
5.1系统首页的设计
该界面是疫情防控志愿者管理系统的首页,界面设置要求界面简洁明了、操作简单、兼容性好。在考虑设计界面时,首先要考虑界面标准化设计,其次是完善界面设计,但不要因对界面的美化使界面的操作变得复杂,志愿者可在此页面进行登录等操作,页面顶部导航条是各模块的入口。
系统首页页面主要包括首页、志愿任务、新闻公告、意见反馈、个人中心、后台管理等内容,并根据需要进行详细操作;如图5-1所示:
图5-1系统首页界面图
志愿者注册,在志愿者注册页面通过填写志愿者账号、 密码、确认密码、志愿者姓名、年龄、手机号码、身份证号等内容进行注册等操作,如图5-2所示。
图5-2志愿者注册界面图
志愿任务,在志愿任务页面可以查看任务名称、任务类型、开始时间、结束时间、任务地点、发布时间等内容进行评论或收藏等操作;如图5-3所示。
图5-3志愿任务界面图
意见反馈,在意见反馈页面可以查看留言、图片等内容进行提交或重置等操作;如图5-4所示。
图5-4意见反馈界面图
个人中心,在个人中心页面通过填写志愿者账号、 密码、志愿者姓名、图片、年龄、手机号码、身份证号等内容进行更新信息等操作,如图5-5所示。
图5-5个人中心界面图
5.2后台功能模块
后台登录,管理员和志愿者进入系统前在登录页面根据要求填写用户名和密码,选择角色等信息,点击登录进行登录操作,如图5-6所示。
图5-6后台登录界面图
5.2.1管理员功能模块
管理员登录系统后,可以对主页、个人中心、志愿者管理、任务类型管理、志愿任务管理、任务申请管理、意见反馈、系统管理等功能进行相应的操作管理,如图5-7所示。
图5-7管理员功能界面图
志愿者管理,在志愿者管理页面可以对志愿者账号、志愿者姓名、头像、性别、年龄、手机号码、身份证号等内容进行查看、修改或删除等操作,如图5-8所示。
图5-8志愿者管理界面图
任务类型管理,在任务类型管理页面可以对任务类型等内容进行查看、修改或删除等操作,如图5-9所示。
图5-9任务类型管理界面图
志愿任务管理,在志愿任务管理页面可以对任务名称、任务图片、任务类型、开始时间、结束时间、任务地点、发布时间等内容进行查看、修改、查看评论或删除等操作,如图5-10所示。
图5-10志愿任务管理界面图
任务申请管理,在任务申请管理页面可以对任务名称、任务类型、开始时间、结束时间、任务地点、申请时间、志愿者账号、志愿者姓名、手机号码、是否审核、审核回复等内容进行审核、查看或删除等操作,如图5-11所示。
图5-11任务申请管理界面图
主要代码:
package com.controller;import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;import com.entity.RenwushenqingEntity;
import com.entity.view.RenwushenqingView;import com.service.RenwushenqingService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
import java.io.IOException;/*** 任务申请* 后端接口* @author * @email * @date 2022-03-22 09:17:00*/
@RestController
@RequestMapping("/renwushenqing")
public class RenwushenqingController {@Autowiredprivate RenwushenqingService renwushenqingService;/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,RenwushenqingEntity renwushenqing, HttpServletRequest request){String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("zhiyuanzhe")) {renwushenqing.setZhiyuanzhezhanghao((String)request.getSession().getAttribute("username"));}EntityWrapper<RenwushenqingEntity> ew = new EntityWrapper<RenwushenqingEntity>();PageUtils page = renwushenqingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, renwushenqing), params), params));request.setAttribute("data", page);return R.ok().put("data", page);}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params,RenwushenqingEntity renwushenqing, HttpServletRequest request){EntityWrapper<RenwushenqingEntity> ew = new EntityWrapper<RenwushenqingEntity>();PageUtils page = renwushenqingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, renwushenqing), params), params));request.setAttribute("data", page);return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/lists")public R list( RenwushenqingEntity renwushenqing){EntityWrapper<RenwushenqingEntity> ew = new EntityWrapper<RenwushenqingEntity>();ew.allEq(MPUtil.allEQMapPre( renwushenqing, "renwushenqing")); return R.ok().put("data", renwushenqingService.selectListView(ew));}/*** 查询*/@RequestMapping("/query")public R query(RenwushenqingEntity renwushenqing){EntityWrapper< RenwushenqingEntity> ew = new EntityWrapper< RenwushenqingEntity>();ew.allEq(MPUtil.allEQMapPre( renwushenqing, "renwushenqing")); RenwushenqingView renwushenqingView = renwushenqingService.selectView(ew);return R.ok("查询任务申请成功").put("data", renwushenqingView);}/*** 后端详情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id){RenwushenqingEntity renwushenqing = renwushenqingService.selectById(id);return R.ok().put("data", renwushenqing);}/*** 前端详情*/@IgnoreAuth@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id){RenwushenqingEntity renwushenqing = renwushenqingService.selectById(id);return R.ok().put("data", renwushenqing);}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody RenwushenqingEntity renwushenqing, HttpServletRequest request){renwushenqing.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(renwushenqing);renwushenqingService.insert(renwushenqing);return R.ok();}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody RenwushenqingEntity renwushenqing, HttpServletRequest request){renwushenqing.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(renwushenqing);renwushenqingService.insert(renwushenqing);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody RenwushenqingEntity renwushenqing, HttpServletRequest request){//ValidatorUtils.validateEntity(renwushenqing);renwushenqingService.updateById(renwushenqing);//全部更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){renwushenqingService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 提醒接口*/@RequestMapping("/remind/{columnName}/{type}")public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, @PathVariable("type") String type,@RequestParam Map<String, Object> map) {map.put("column", columnName);map.put("type", type);if(type.equals("2")) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Calendar c = Calendar.getInstance();Date remindStartDate = null;Date remindEndDate = null;if(map.get("remindstart")!=null) {Integer remindStart = Integer.parseInt(map.get("remindstart").toString());c.setTime(new Date()); c.add(Calendar.DAY_OF_MONTH,remindStart);remindStartDate = c.getTime();map.put("remindstart", sdf.format(remindStartDate));}if(map.get("remindend")!=null) {Integer remindEnd = Integer.parseInt(map.get("remindend").toString());c.setTime(new Date());c.add(Calendar.DAY_OF_MONTH,remindEnd);remindEndDate = c.getTime();map.put("remindend", sdf.format(remindEndDate));}}Wrapper<RenwushenqingEntity> wrapper = new EntityWrapper<RenwushenqingEntity>();if(map.get("remindstart")!=null) {wrapper.ge(columnName, map.get("remindstart"));}if(map.get("remindend")!=null) {wrapper.le(columnName, map.get("remindend"));}String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("zhiyuanzhe")) {wrapper.eq("zhiyuanzhezhanghao", (String)request.getSession().getAttribute("username"));}int count = renwushenqingService.selectCount(wrapper);return R.ok().put("count", count);}}
意见反馈,在意见反馈页面可以对用户名、留言内容、留言图片、回复内容、回复图片等内容进行查看、修改、回复或删除等操作,如图5-12所示。
图5-12意见反馈界面图
系统管理,在新闻公告管理页面中可以对标题、简介、图片等内容进行查看、修改或删除等操作,并可以根据轮播图管理进行相应的操作,如图5-13所示。
图5-13系统管理界面图
大家点赞、收藏、关注、评论啦 其他的定制服务 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者