基于java+ssm+jsp的疫情物资管理系统

项目介绍

进入信息时代以来,很多数据都需要配套软件协助处理,这样可以解决传统方式带来的管理困扰。比如耗时长,成本高,维护数据困难,数据易丢失等缺点。本次使用数据库工具MySQL和编程技术SSM开发的疫情物资管理系统,可以实现目标用户群需要的功能,包括物资信息管理,物资出入库管理,物资申领管理,物资采购管理,财务报销管理等功能。

总之,疫情物资管理系统是基于计算机进行数据的处理,则可以短时间内批量完成数据的管理,就连基本的数据录入,更改错误的数据,统计数据等操作要求都可以轻松完成,这样的系统的运用可以减少很多繁琐的工作量,让数据的管理人员提升效率,节省数据处理投入的资金和时间。同时,疫情物资管理系统本身就有配套的数据库,用于保存系统的后台数据,对于数据保存的容量则是传统模式不能相比的,在数据安全性上,也有相应的加密技术提供保护,所以数据泄露和被人窃取都不是易事。

4.2功能模块设计
下图为管理员的功能设计,管理员管理物资申领,物资出入库,物资采购,财务报销。
在这里插入图片描述
下图为采购员的功能设计,采购员查询物资和财务报销,管理物资采购。

在这里插入图片描述

下图为后勤人员的功能设计,后勤人员对物资进行出入库操作,统计物资出入库的数据,审核并统计物资申领信息。
在这里插入图片描述
下图为财务人员的功能设计,财务人员查询物资采购,审核财务报销信息。
在这里插入图片描述

开发环境

编程语言:Java
数据库 :Mysql
系统架构:B/S
后端框架:SSM
编译工具:idea或者eclipse,jdk1.8,maven
支持定做:java/php/python/android/小程序ue/爬虫/c#/asp.net

系统实现

5.1 管理员功能实现
5.1.1 采购员管理
管理采购员是管理员的功能。其运行效果图如下。采购员信息是由采购员姓名,部门,职务等组成,管理员提交采购员的姓名可以获取采购员信息,管理员可以在本页面修改采购员资料。
在这里插入图片描述

图5.1 采购员管理页面

5.1.2 后勤人员管理
管理后勤人员是管理员的功能。其运行效果图如下。后勤人员是本系统的一个角色,管理员可以修改,查询,删除后勤人员信息。
在这里插入图片描述

图5.2 后勤人员管理页面

5.1.3 财务人员管理
管理财务人员是管理员的功能。其运行效果图如下。本模块主要让管理员增删改查财务人员信息。
在这里插入图片描述

图5.3 财务人员管理页面

5.2 采购员功能实现
5.2.1 查询物资信息
查询物资信息是采购员的功能。其运行效果图如下。查询物资信息可以选择根据物资类别查询,也能根据物资名称查询。
在这里插入图片描述

图5.4 查询物资信息页面

5.2.2 物资采购管理
管理物资采购是采购员的功能。其运行效果图如下。物资采购信息包括待办事项,采购状态,采购的物资等,采购员可以新增采购,删除或修改本页面的物资采购信息。
在这里插入图片描述

图5.5 物资采购管理页面

5.3 后勤人员功能实现
5.3.1 物资信息管理
管理物资信息是后勤人员的功能。其运行效果图如下。后勤人员查询物资,对物资进行出库,对物资进行入库操作。
在这里插入图片描述

图5.6 物资信息管理页面

5.3.2 出库信息统计
统计出库信息是后勤人员的功能。其运行效果图如下。后勤人员查看出库信息统计报表,查看各种物资出库数量信息。
在这里插入图片描述

图5.7 出库信息统计页面

5.3.3 申领物资管理
管理申领物资信息是后勤人员的功能。其运行效果图如下。后勤人员需要审核申领物资信息,可以通过负责人或申请人信息查询物资申领信息。
在这里插入图片描述

图5.8 申领物资管理页面

5.3.4 申领物资统计
统计申领物资信息是后勤人员的功能。其运行效果图如下。后勤人员通过统计报表查看各种物资的申领数量信息。
在这里插入图片描述

图5.9 申领物资统计页面

5.4 财务人员功能实现
5.4.1 查询物资采购
查询物资采购是财务人员的功能。其运行效果图如下。财务人员根据采购状态,或根据采购的物资查询物资采购信息。
在这里插入图片描述

图5.10 查询物资采购页面

5.4.2 财务报销管理
管理财务报销信息是财务人员的功能。其运行效果图如下。财务人员审核财务报销信息,修改财务报销信息,查询财务报销信息。
在这里插入图片描述

图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.CaiwurenyuanEntity;
import com.entity.view.CaiwurenyuanView;

import com.service.CaiwurenyuanService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;


/**
 * 财务人员
 * 后端接口
 * @author 
 * @email 
 * @date 
 */
@RestController
@RequestMapping("/caiwurenyuan")
public class CaiwurenyuanController {
    @Autowired
    private CaiwurenyuanService caiwurenyuanService;
    
	@Autowired
	private TokenService tokenService;
	
	/**
	 * 登录
	 */
	@IgnoreAuth
	@RequestMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		CaiwurenyuanEntity user = caiwurenyuanService.selectOne(new EntityWrapper<CaiwurenyuanEntity>().eq("caiwurenyuangonghao", username));
		if(user==null || !user.getMima().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(), username,"caiwurenyuan",  "财务人员" );
		return R.ok().put("token", token);
	}
	
	/**
     * 注册
     */
	@IgnoreAuth
    @RequestMapping("/register")
    public R register(@RequestBody CaiwurenyuanEntity caiwurenyuan){
    	//ValidatorUtils.validateEntity(caiwurenyuan);
    	CaiwurenyuanEntity user = caiwurenyuanService.selectOne(new EntityWrapper<CaiwurenyuanEntity>().eq("caiwurenyuangonghao", caiwurenyuan.getCaiwurenyuangonghao()));
		if(user!=null) {
			return R.error("注册用户已存在");
		}
		Long uId = new Date().getTime();
		caiwurenyuan.setId(uId);
        caiwurenyuanService.insert(caiwurenyuan);
        return R.ok();
    }
	
	/**
	 * 退出
	 */
	@RequestMapping("/logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 获取用户的session用户信息
     */
    @RequestMapping("ssion")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        CaiwurenyuanEntity user = caiwurenyuanService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	CaiwurenyuanEntity user = caiwurenyuanService.selectOne(new EntityWrapper<CaiwurenyuanEntity>().eq("caiwurenyuangonghao", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
        user.setMima("123456");
        caiwurenyuanService.updateById(user);
        return R.ok("密码已重置为:123456");
    }


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,CaiwurenyuanEntity caiwurenyuan, 
		HttpServletRequest request){

        EntityWrapper<CaiwurenyuanEntity> ew = new EntityWrapper<CaiwurenyuanEntity>();
    	PageUtils page = caiwurenyuanService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, caiwurenyuan), params), params));
		request.setAttribute("data", page);
        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
    @RequestMapping("st")
    public R list(@RequestParam Map<String, Object> params,CaiwurenyuanEntity caiwurenyuan, HttpServletRequest request){
        EntityWrapper<CaiwurenyuanEntity> ew = new EntityWrapper<CaiwurenyuanEntity>();
    	PageUtils page = caiwurenyuanService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, caiwurenyuan), params), params));
		request.setAttribute("data", page);
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("sts")
    public R list( CaiwurenyuanEntity caiwurenyuan){
       	EntityWrapper<CaiwurenyuanEntity> ew = new EntityWrapper<CaiwurenyuanEntity>();
      	ew.allEq(MPUtil.allEQMapPre( caiwurenyuan, "caiwurenyuan")); 
        return R.ok().put("data", caiwurenyuanService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(CaiwurenyuanEntity caiwurenyuan){
        EntityWrapper< CaiwurenyuanEntity> ew = new EntityWrapper< CaiwurenyuanEntity>();
 		ew.allEq(MPUtil.allEQMapPre( caiwurenyuan, "caiwurenyuan")); 
		CaiwurenyuanView caiwurenyuanView =  caiwurenyuanService.selectView(ew);
		return R.ok("查询财务人员成功").put("data", caiwurenyuanView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        CaiwurenyuanEntity caiwurenyuan = caiwurenyuanService.selectById(id);
        return R.ok().put("data", caiwurenyuan);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        CaiwurenyuanEntity caiwurenyuan = caiwurenyuanService.selectById(id);
        return R.ok().put("data", caiwurenyuan);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("ve")
    public R save(@RequestBody CaiwurenyuanEntity caiwurenyuan, HttpServletRequest request){
    	caiwurenyuan.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(caiwurenyuan);
    	CaiwurenyuanEntity user = caiwurenyuanService.selectOne(new EntityWrapper<CaiwurenyuanEntity>().eq("caiwurenyuangonghao", caiwurenyuan.getCaiwurenyuangonghao()));
		if(user!=null) {
			return R.error("用户已存在");
		}

		caiwurenyuan.setId(new Date().getTime());
        caiwurenyuanService.insert(caiwurenyuan);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody CaiwurenyuanEntity caiwurenyuan, HttpServletRequest request){
    	caiwurenyuan.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(caiwurenyuan);
    	CaiwurenyuanEntity user = caiwurenyuanService.selectOne(new EntityWrapper<CaiwurenyuanEntity>().eq("caiwurenyuangonghao", caiwurenyuan.getCaiwurenyuangonghao()));
		if(user!=null) {
			return R.error("用户已存在");
		}

		caiwurenyuan.setId(new Date().getTime());
        caiwurenyuanService.insert(caiwurenyuan);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody CaiwurenyuanEntity caiwurenyuan, HttpServletRequest request){
        //ValidatorUtils.validateEntity(caiwurenyuan);
        caiwurenyuanService.updateById(caiwurenyuan);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        caiwurenyuanService.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<CaiwurenyuanEntity> wrapper = new EntityWrapper<CaiwurenyuanEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


		int count = caiwurenyuanService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	
	


}

论文参考

在这里插入图片描述

目 录
第一章 绪论 1
1.1 研究背景 1
1.2 研究意义 1
1.3 研究内容 2
第二章 开发环境与技术 3
2.1 JSP技术 3
2.2 MySQL数据库 3
2.3 Java语言 4
2.4 SSM框架 4
第三章 系统分析 5
3.1可行性分析 5
3.1.1运行可行性分析 5
3.1.2经济可行性分析 5
3.1.3技术可行性分析 6
3.2系统流程分析 6
3.3 系统性能分析 8
3.3.1系统安全性 8
3.3.2系统可扩展性 9
3.3.3系统易维护性 9
3.4系统功能分析 9
第四章 系统设计 13
4.1布局设计原则 13
4.2功能模块设计 14
4.3数据库设计 17
4.3.1数据库E-R图 17
4.3.2 数据库表结构 20
第五章 系统实现 25
5.1 管理员功能实现 25
5.1.1 采购员管理 25
5.1.2 后勤人员管理 25
5.1.3 财务人员管理 26
5.2 采购员功能实现 26
5.2.1 查询物资信息 26
5.2.2 物资采购管理 27
5.3 后勤人员功能实现 27
5.3.1 物资信息管理 27
5.3.2 出库信息统计 28
5.3.3 申领物资管理 28
5.3.4 申领物资统计 29
5.4 财务人员功能实现 29
5.4.1 查询物资采购 29
5.4.2 财务报销管理 30
第六章 系统测试 31
6.1 系统测试的实施 31
6.2 系统测试用例 31
6.2.1 登录功能测试 31
6.2.2 添加部门功能测试 32
6.3 测试的结果 32
结 论 33
参考文献 34
致 谢 35

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_3306428634

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值