摘 要
物资的运营及分配是每一个可持续化发展区域的必备要素。例如医院,它每天都需要准备额外的物品,以此来弥补应急状态下物资短缺的情况。尤其是在新冠疫情背景下国家的“封城”处理,更加需要时时刻刻跟进防疫设备的使用量,以保证医院内防疫物资的管理。目前大部分医院采用传统的人工记账的方式进行物资管理,这种手写登记入库会出现物资记录不精确、人员分配混乱等问题。此种迹象说明目前的防疫物资管理的需要一定的改善,研发一个能解决当前物资管理问题的线上系统尤为重要。
利用互联网技术的非接触性和便携性,本文基于Spring Boot的框架,构建一个一体化、系统化、线上线下相结合的防疫物资管理系统,提高医院在面临重大突发疫情时物资管理的运营效率和应对能力,以筑牢抗疫的防线。
关键词:防疫管理;防疫物资;物资管理;管理平台;Spring Boot
Abstract
The operation and distribution of materials are the essential elements for every sustainable development area.Hospitals, for example, need to prepare extra items every day to make up for material shortages in emergency situations.Especially in the context of COVID-19, the “lockdown”, it is necessary to follow up the use of epidemic prevention equipment all the time to ensure the management of epidemic prevention materials in hospitals.At present, most hospitals use the traditional manual bookkeeping method for material management, such handwritten registration and warehousing will appear inaccurate material records, chaotic personnel allocation and other problems.Such signs indicate that the current management of epidemic prevention materials needs to be improved, and it is particularly important to develop an online system that can solve the current material management problems.
Using the non-contact and portability of Internet technology, this paper builds an integrated, systematic and combined online and offline epidemic prevention materials management system based on the framework of Spring Boot, so as to improve the operation efficiency and response capacity of hospital material management in the face of major emergencies, so as to build a strong defense line against the epidemic.
Key words: epidemic prevention management; epidemic prevention materials; material management; management platform; Spring Boot
目 录
1.绪论 1
1.1 项目研究的背景 1
1.2 研究的目的和意义 1
1.3 国内外管理状况 1
2.需求分析 3
2.1 需求概述 3
2.2 系统功能性需求分析 3
2.3 系统非功能性需求分析 5
2.4 本章小结 6
3.主要开发工具及关键技术 7
3.1 运行环境 7
3.1.1 IDEA 7
3.1.2 MySQL 7
3.1.3 Tomcat 7
3.2 前端 8
3.2.1 JSP 8
3.2.2 CSS 8
3.3.3 JavaScript 8
3.3 后端 9
3.3.1 Spring 9
3.3.2 Spring Boot 9
3.3.3 MyBatis 9
3.4 本章小结 9
4.系统设计 10
4.1 系统设计准则 10
4.2 系统的整体结构设计 10
4.3 数据库的设计 11
4.3.1 数据库设计简介 11
4.3.2 数据库的E-R模型 12
4.4 系统主要功能模块设计 15
4.4.1 登录模块设计 15
4.4.2 管理员模块设计 16
4.4.3 采购员模块设计 17
4.4.4 后勤处模块设计 18
4.4.5 财务处模块设计 19
4.5 本章小结 20
5.系统的实现 21
5.1 系统运行的开发环境 21
5.2 数据库的实现 21
5.3 功能模块的实现 24
5.3.1 登录模块的实现 24
5.3.2 管理员模块的实现 25
5.3.3 其他人员模块的实现 31
5.4 本章小结 32
6.系统的测试 33
6.1 系统测试的目的 33
6.2 系统测试的方案 33
6.3 系统测试的结果 34
6.4 本章小结 34
7.总结与展望 35
7.1 总结 35
7.2展望 35
参考文献 36
致 谢 38
5.2 数据库的实现
本系统使用的数据库软件为MySQL,其为关系型数据库软件,版本号为5.7。数据库的实现首先需要连接,此连接由Spring框架管理。其在数据库参数文件db.properties下。如下表5-1所示。
这些代码的意思有配置数据库连接的驱动、登入数据库所需的账号密码、连接池的最大数量,以及初始化的连接数。
配置好数据库文件后,接下来就要管理数据库了。管理数据库包括创建数据库,以及创建不同的实体表,如人员表、采购表等。下面就用MySQL结构化语言来一一创建。
5.3 功能模块的实现
创建完数据库后,下面来实现各大功能模块。功能模块分为管理员模块、采购员模块、后勤处模块、采购员模块,下面来一一介绍。

package com.ssm.mty.controller;


import com.ssm.mty.po.Tuser;
import com.ssm.mty.service.TuserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 登录控制器
 */
@Controller
public class LoginController {

	// 依赖注入
	@Autowired
	private TuserService tuserService;

    /**
     * 去登录
     */
    @RequestMapping(value = "/gologin")
    public String gologin() {
        return "login";
    }

	/**
	 * 登录
	 * 将提交数据(username,password)写入Admin对象
	 */
	@RequestMapping(value = "/login")
	public String login(Tuser user, Model model, HttpSession session, HttpServletRequest request) {
		if(user.getUsername()==null || user.getUsername().length()<=0 ){
			model.addAttribute("msg", "请输入登录名!");
			return "login";
		}
		if(user.getPassword()==null || user.getPassword().length()<1){
			model.addAttribute("msg", "请输入密码!");
			return "login";
		}
		if(user.getType()==null || user.getType().length()<1){
			model.addAttribute("msg", "请选择人员类型!");
			return "login";
		}
		if(user.getType().equals("01")){
			Tuser ad = tuserService.findUser(user.getUsername(),user.getPassword(),"01");
			if(ad!=null){
				session.setAttribute("ad", ad);
				session.setAttribute("type", "01");
				return "homepage1";
			}else{
				model.addAttribute("msg", "请确定账户信息是否正确!");
				return "login";
			}
		}else if(user.getType().equals("02")){
			Tuser ad = tuserService.findUser(user.getUsername(),user.getPassword(),"02");
			if(ad!=null){
				session.setAttribute("ad", ad);
				session.setAttribute("type", "02");
				return "homepage2";
			}else{
				model.addAttribute("msg", "请确定账户信息是否正确!");
				return "login";
			}
		}else if(user.getType().equals("03")){
			Tuser ad = tuserService.findUser(user.getUsername(),user.getPassword(),"03");
			if(ad!=null){
				session.setAttribute("ad", ad);
				session.setAttribute("type", "03");
				return "homepage3";
			}else{
				model.addAttribute("msg", "请确定账户信息是否正确!");
				return "login";
			}
		}else{
			Tuser ad = tuserService.findUser(user.getUsername(),user.getPassword(),"04");
			if(ad!=null){
				session.setAttribute("ad", ad);
				session.setAttribute("type", "04");
				return "homepage4";
			}else{
				model.addAttribute("msg", "请确定账户信息是否正确!");
				return "login";
			}
		}
	}

	/**
	 * 退出登录
	 */
	@RequestMapping(value = "/loginOut")
	public String loginOut(HttpSession session) {
		session.invalidate();
		return "login";
	}


	/**
	 * 查询个人信息
	 */
	@RequestMapping(value = "/info")
	public String info(Tuser tuser, Model model, HttpServletRequest request) {
		HttpSession session = request.getSession();
		if(session.getAttribute("ad") == null){
			session.setAttribute("msg", "对不起,请登录!");
			return "login";
		}
		return "queryInfo";
	}



	/**
	 * 进入修改
	 */
	@RequestMapping(value = "/updateInfo")
	public String updateInfo(Tuser tuser, Model model, HttpServletRequest request) {
		HttpSession session = request.getSession();
		if(session.getAttribute("ad") == null){
			session.setAttribute("msg", "对不起,请登录!");
			return "login";
		}
		return "updateInfo";
	}



	/**
	 * 修改信息
	 */
	@RequestMapping( value = "/updateInfoAdmin", method = RequestMethod.POST)
	@ResponseBody
	public String updateInfoAdmin(Tuser tuser,Model model,HttpServletRequest request,HttpSession session1) {
		HttpSession session = request.getSession();
		if(session.getAttribute("ad") == null){
			session.setAttribute("msg", "对不起,请登录!");
			return "202";
		}
		if(tuser.getUsername().length()<1){
			return "203";
		}
		if(tuser.getPassword().length()<1){
			return "204";
		}
		if(!isMobile(tuser.getPhone())){
			return "205";
		}
		Tuser tuser1 = (Tuser) session.getAttribute("ad");
		if(!tuser1.getPassword().equals(tuser.getPassword())){
			return "201";
		}
		if(!"".equals(tuser.getPasswords())){
			tuser.setPassword(tuser.getPasswords());
		}
		int a = tuserService.updateTuser(tuser);
		return "200";
	}


	/**
	 * 前往注册
	 */
	@RequestMapping(value = "/register")
	public String register(Model model, HttpSession session) {
		return "register";
	}



	/**
	 * 注册校验
	 */
	@RequestMapping(value = "/registerSub")
	public String registerSub( Tuser tuser, Model model, HttpSession session, HttpServletRequest request) {
		List<Tuser> adminList = tuserService.getAll();
		for(int i = 0;i<adminList.size();i++){
			if(adminList.get(i).getUsername().equals(tuser.getUsername())){
				model.addAttribute("msg", "用户名重复,请重新输入!");
				return "register";
			}
		}
		if(tuser.getUsername()==null || tuser.getUsername().equals("")){
			model.addAttribute("msg", "用户名未填写!");
            return "register";
		}
		if(tuser.getPassword()==null || tuser.getPassword().length()<6){
			model.addAttribute("msg", "密码不能为空且大约6位!");
            return "register";
		}
		tuserService.addTuser(tuser);
		model.addAttribute("msg", "注册成功,请前往登录!");
		return "login";
	}

	/**
	 * 判断是否是手机号
	 *
	 * @param mobile
	 * @return
	 */
	public static boolean isMobile(String mobile) {
		String regex = "^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}$";
		Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
		Matcher m = p.matcher(mobile);
		return m.matches();
	}


}

本文来转载自:http://www.biyezuopin.vip/onews.asp?id=16485
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐