当前位置: 首页 > article >正文

基于ssm疫情防控志愿者管理系统设计与实现

博主介绍:专注于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 {
    @Autowired
    private 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系统管理界面图

大家点赞、收藏、关注、评论啦  其他的定制服务  下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者


http://www.kler.cn/news/335931.html

相关文章:

  • 类和对象的学习1
  • 【2024年最新】基于springboot+mysql就业信息管理系统
  • CSP-J/S 复赛算法 树形动态规划
  • 【目标检测】集装箱缺陷检测数据集1476张5类缺陷VOC+YOLO格式
  • 第二十四讲-进度控件QProgressBar
  • Kubernetes-Dashboard篇-01-为集群搭建Dashboard
  • Spring Boot 基于 Mockito 单元测试
  • 基于Springboot的宠物咖啡馆平台的设计与实现(源码+定制+参考)
  • JavaEE 多线程第一节 (进程 线程 并行 并发 概念及关系)
  • ChatGPT写论文全流程揭秘:从构思到成稿!
  • 九大排序之插入排序
  • 短视频时代,网站建设存在的意义还有多大?
  • OpenAI 推出 SearchGPT - 它可以做什么以及如何访问?
  • 三、数据链路层(下)
  • [C#]C# winform部署yolov11-pose姿态估计onnx模型
  • 电子信息类专业技术学习及比赛路线总结(大一到大三)
  • 北京市大兴区启动乐享生活 寻味大兴 美食嘉年华 系列促销费活动
  • World of Warcraft [CLASSIC] Jewelcrafting Gemstone
  • 英语二小作文大作文的一些作文例句
  • 项目定位与服务器(SERVER)模块划分