课程设计|SpringMVC+vue实现前后端分离的药品管理系统

文末获取源码
开发语言:Java
开发工具:IDEA /Eclipse
数据库:MYSQL5.7
应用服务:Tomcat7/Tomcat8
使用框架ssm+vue
JDK版本:jdk1.8
前言介绍系统管理也都将通过计算机进行整体智能化操作,对于药品管理系统所牵扯的管理及数据保存都是非常多的,例如管理员;首页、个人中心、用户管理、员工管理、药品类别管理、药品信息管理、药品入库管理、药品出库管理、在线咨询管理、留言板管理、系统管理、订单管理,用户;首页、个人中心、在线咨询管理、我的收藏管理、订单管理,员工;首页、个人中心、药品信息管理、药品入库管理、药品出库管理、在线咨询管理,前台首页;首页、药品信息、医药指南、留言反馈、个人中心、后台管理、购物车等,这给管理者的工作带来了巨大的挑战,面对大量的信息,传统的管理系统,都是通过笔记的方式进行详细信息的统计,后来出现电脑,通过电脑输入软件将纸质的信息统计到电脑上,这种方式比较传统,而且想要统计数据信息比较麻烦,还受时间和空间的影响,所以为此开发了药品管理系统;为用户提供了方便管理平台,方便管理员查看及维护,并且可以通过需求进行内容的编辑及维护等;对于用户而言,可以随时进行查询所需信息,管理员可以足不出户就可以获取到系统的数据信息等,而且还能节省用户很多时间,所以开发药品管理系统给管理者带来了很大的方便,同时也方便管理员对用户信息进行处理。
本论文药品管理系统主要牵扯到的程序,数据库与计算机技术等。覆盖知识面大,可以大大的提高系统人员工作效率。
系统UML用例分析 管理员用例
管理员登录后可进行首页、个人中心、用户管理、员工管理、药品类别管理、药品信息管理、药品入库管理、药品出库管理、在线咨询管理、留言板管理、系统管理、订单管理,管理员的用例如图
课程设计|SpringMVC+vue实现前后端分离的药品管理系统
文章图片


用户用例
用户注册登录后可进行首页、个人中心、在线咨询管理、我的收藏管理、订单管理,用户用例如图
课程设计|SpringMVC+vue实现前后端分离的药品管理系统
文章图片

系统体系结构 药品管理系统的结构图
课程设计|SpringMVC+vue实现前后端分离的药品管理系统
文章图片


模块包括主界面,首页、个人中心、用户管理、员工管理、药品类别管理、药品信息管理、药品入库管理、药品出库管理、在线咨询管理、留言板管理、系统管理、订单管理等进行相应的操作。
登录系统结构图,如图
课程设计|SpringMVC+vue实现前后端分离的药品管理系统
文章图片

这些功能可以充分满足药品管理系统的需求。此系统功能较为全面如下图系统功能结构如图
课程设计|SpringMVC+vue实现前后端分离的药品管理系统
文章图片

系统实现 前台首页功能模块 药品管理系统,在系统首页可以查看首页、药品信息、医药指南、留言反馈、个人中心、后台管理、购物车等内容,如图
课程设计|SpringMVC+vue实现前后端分离的药品管理系统
文章图片

用户注册,在注册页面可以填写用户名、密码、姓名、联系电话等信息进行注册,如图
课程设计|SpringMVC+vue实现前后端分离的药品管理系统
文章图片

用户登录,在登录页面通过填写账号、密码等信息完成登录,如图1所示。在药品信息页面通过查看药品名称、药品类别、图片、规格、厂家、有效期、数量、价格等信息进行添加到购物车、立即购买操作,如图2
课程设计|SpringMVC+vue实现前后端分离的药品管理系统
文章图片

如图2
课程设计|SpringMVC+vue实现前后端分离的药品管理系统
文章图片

药品信息
课程设计|SpringMVC+vue实现前后端分离的药品管理系统
文章图片

医药指南
课程设计|SpringMVC+vue实现前后端分离的药品管理系统
文章图片

留言反馈
课程设计|SpringMVC+vue实现前后端分离的药品管理系统
文章图片


用户功能模块 用户点击进入到系统操作界面,可以对首页、个人中心、在线咨询管理、我的收藏管理、订单管理等功能模块,
在线咨询管理:通过列表可以获取标题、咨询内容、咨询时间、用户名、联系电话、审核回复、审核状态并进行修改操作,如图
课程设计|SpringMVC+vue实现前后端分离的药品管理系统
文章图片

订单管理:通过列表可以获取订单编号、商品名称、商品图片、购买数量、价格/积分、折扣价格、总价格/总积分、折扣总价格、支付类型、状态、地址等信息,进行详情操作,如图
课程设计|SpringMVC+vue实现前后端分离的药品管理系统
文章图片

我的收藏管理:通过列表可以获取收藏名称、收藏图片等信息,进行详情、删除操作,如图
课程设计|SpringMVC+vue实现前后端分离的药品管理系统
文章图片

管理员功能模块 管理员通过用户名和密码、角色填写完成后进行登录,如图5-4所示。管理员登录成功后进入到系统操作界面,可以对首页、个人中心、用户管理、员工管理、药品类别管理、药品信息管理、药品入库管理、药品出库管理、在线咨询管理、留言板管理、系统管理、订单管理等功能模块进行相对应操作。
用户管理:通过列表可以获取用户名、姓名、性别、头像、联系电话等内容,可以进行修改或删除操作,如图
课程设计|SpringMVC+vue实现前后端分离的药品管理系统
文章图片

课程设计|SpringMVC+vue实现前后端分离的药品管理系统
文章图片

员工管理:通过列表可以获取员工工号、员工姓名、性别、头像、手机、身份证等信息,进行删除或修改操作,如图
课程设计|SpringMVC+vue实现前后端分离的药品管理系统
文章图片

药品类别管理:通过列表可以获取药品类别等信息,进行修改或删除操作,如图
课程设计|SpringMVC+vue实现前后端分离的药品管理系统
文章图片

药品信息管理:通过列表可以获取药品名称、药品类别、图片、规格、厂家、有效期、数量、价格等信息,进行修改或删除操作,如图
课程设计|SpringMVC+vue实现前后端分离的药品管理系统
文章图片

医药指南:管理员通过列表可以获取标题、简介、图片等信息,进行修改或删除操作,如图
课程设计|SpringMVC+vue实现前后端分离的药品管理系统
文章图片

药品入库管理:管理员通过列表可以获取入库单号、药品名称、药品类别、规格、厂家、数量、备注、入库时间、员工工号、员工姓名等信息,进行修改或删除操作,如图
课程设计|SpringMVC+vue实现前后端分离的药品管理系统
文章图片

留言板管理:管理员通过列表可以获取用户名、留言内容、回复内容等信息,进行修改或删除操作,如图
课程设计|SpringMVC+vue实现前后端分离的药品管理系统
文章图片

订单管理:管理员通过列表可以获取订单编号、商品名称、商品图片、购买数量、价格/积分、折扣价格、总价格/总积分、折扣总价格、支付类型、状态、地址等信息,进行修改或删除操作,如图
课程设计|SpringMVC+vue实现前后端分离的药品管理系统
文章图片

员工功能模块 【课程设计|SpringMVC+vue实现前后端分离的药品管理系统】员工点击进入到系统操作界面,可以对首页、个人中心、药品信息管理、药品入库管理、药品出库管理、在线咨询管理等功能模块,
药品信息管理:通过列表可以获取药品名称、药品类别、图片、规格、厂家、有效期、数量、价格并进行修改操作,如图
课程设计|SpringMVC+vue实现前后端分离的药品管理系统
文章图片

药品入库管理:通过列表可以获取入库单号、药品名称、药品类别、规格、厂家、数量、备注、入库时间、员工工号、员工姓名等信息,进行详情、修改、删除操作,如图
课程设计|SpringMVC+vue实现前后端分离的药品管理系统
文章图片

药品出库管理:通过列表可以获取药品名称、药品类别、规格、厂家、数量、备注、出库日期、员工工号、员工姓名等信息,进行详情、修改、删除操作,如图
课程设计|SpringMVC+vue实现前后端分离的药品管理系统
文章图片

在线咨询管理:通过列表可以获取标题、咨询内容、咨询时间、用户名、联系电话、审核回复、审核状态、审核等信息,进行详情操作,如图
课程设计|SpringMVC+vue实现前后端分离的药品管理系统
文章图片

部分核心代码:
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.YaopinxinxiEntity; import com.entity.view.YaopinxinxiView; import com.service.YaopinxinxiService; 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 2021-03-23 08:51:28 */ @RestController @RequestMapping("/yaopinxinxi") public class YaopinxinxiController { @Autowired private YaopinxinxiService yaopinxinxiService; /** * 后端列表 */ @RequestMapping("/page") public R page(@RequestParam Map params,YaopinxinxiEntity yaopinxinxi, HttpServletRequest request){EntityWrapper ew = new EntityWrapper(); PageUtils page = yaopinxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yaopinxinxi), params), params)); return R.ok().put("data", page); }/** * 前端列表 */ @IgnoreAuth @RequestMapping("/list") public R list(@RequestParam Map params,YaopinxinxiEntity yaopinxinxi, HttpServletRequest request){ EntityWrapper ew = new EntityWrapper(); PageUtils page = yaopinxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yaopinxinxi), params), params)); return R.ok().put("data", page); } /** * 列表 */ @RequestMapping("/lists") public R list( YaopinxinxiEntity yaopinxinxi){ EntityWrapper ew = new EntityWrapper(); ew.allEq(MPUtil.allEQMapPre( yaopinxinxi, "yaopinxinxi")); return R.ok().put("data", yaopinxinxiService.selectListView(ew)); }/** * 查询 */ @RequestMapping("/query") public R query(YaopinxinxiEntity yaopinxinxi){ EntityWrapper< YaopinxinxiEntity> ew = new EntityWrapper< YaopinxinxiEntity>(); ew.allEq(MPUtil.allEQMapPre( yaopinxinxi, "yaopinxinxi")); YaopinxinxiView yaopinxinxiView =yaopinxinxiService.selectView(ew); return R.ok("查询药品信息成功").put("data", yaopinxinxiView); } /** * 后端详情 */ @RequestMapping("/info/{id}") public R info(@PathVariable("id") Long id){ YaopinxinxiEntity yaopinxinxi = yaopinxinxiService.selectById(id); yaopinxinxi.setClicknum(yaopinxinxi.getClicknum()+1); yaopinxinxi.setClicktime(new Date()); yaopinxinxiService.updateById(yaopinxinxi); return R.ok().put("data", yaopinxinxi); }/** * 前端详情 */ @IgnoreAuth @RequestMapping("/detail/{id}") public R detail(@PathVariable("id") Long id){ YaopinxinxiEntity yaopinxinxi = yaopinxinxiService.selectById(id); yaopinxinxi.setClicknum(yaopinxinxi.getClicknum()+1); yaopinxinxi.setClicktime(new Date()); yaopinxinxiService.updateById(yaopinxinxi); return R.ok().put("data", yaopinxinxi); }/** * 后端保存 */ @RequestMapping("/save") public R save(@RequestBody YaopinxinxiEntity yaopinxinxi, HttpServletRequest request){ yaopinxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue()); //ValidatorUtils.validateEntity(yaopinxinxi); yaopinxinxiService.insert(yaopinxinxi); return R.ok(); }/** * 前端保存 */ @RequestMapping("/add") public R add(@RequestBody YaopinxinxiEntity yaopinxinxi, HttpServletRequest request){ yaopinxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue()); //ValidatorUtils.validateEntity(yaopinxinxi); yaopinxinxiService.insert(yaopinxinxi); return R.ok(); }/** * 修改 */ @RequestMapping("/update") public R update(@RequestBody YaopinxinxiEntity yaopinxinxi, HttpServletRequest request){ //ValidatorUtils.validateEntity(yaopinxinxi); yaopinxinxiService.updateById(yaopinxinxi); //全部更新 return R.ok(); }/** * 删除 */ @RequestMapping("/delete") public R delete(@RequestBody Long[] ids){ yaopinxinxiService.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 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 wrapper = new EntityWrapper(); if(map.get("remindstart")!=null) { wrapper.ge(columnName, map.get("remindstart")); } if(map.get("remindend")!=null) { wrapper.le(columnName, map.get("remindend")); }int count = yaopinxinxiService.selectCount(wrapper); return R.ok().put("count", count); } /** * 前端智能排序 */ @IgnoreAuth @RequestMapping("/autoSort") public R autoSort(@RequestParam Map params,YaopinxinxiEntity yaopinxinxi, HttpServletRequest request,String pre){ EntityWrapper ew = new EntityWrapper(); Map newMap = new HashMap(); Map param = new HashMap(); Iterator it = param.entrySet().iterator(); while (it.hasNext()) { Map.Entry entry = it.next(); String key = entry.getKey(); String newKey = entry.getKey(); if (pre.endsWith(".")) { newMap.put(pre + newKey, entry.getValue()); } else if (StringUtils.isEmpty(pre)) { newMap.put(newKey, entry.getValue()); } else { newMap.put(pre + "." + newKey, entry.getValue()); } } params.put("sort", "clicknum"); params.put("order", "desc"); PageUtils page = yaopinxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yaopinxinxi), params), params)); return R.ok().put("data", page); }}


    推荐阅读