基于Java+SpringBoot+vue+element疫情药品采购出入库系统设计实现

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

博主介绍全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战

🍅文末获取联系🍅精彩专栏推荐👇🏻👇🏻👇🏻👇🏻

 java项目精品实战案例《100套》

Java毕业设计参考题目-题目新颖值得收藏

目录

一、前言介绍

二、系统设计

2.1 系统设计原则

2.2  主要研究方法

2.3 系统结构设计

三、数据设计

3.1 数据实体ER设计

3.2 数据逻辑结构设计

四、功能截图 

4.1 用户登录注册

4.2 用户前端首页

首页模块

药品信息模块

药品资讯模块

个人中心模块

购物车模块

在线客服模块 

4.3 用户后端管理

个人中心管理

4.4 供应商后端管理

供应商管理

药品信息管理

4.5 管理员后端管理

用户模块管理

供应商管理

药品类型管理

药品信息管理

药品出入库管理

药品采购管理

药品资讯管理

系统设置管理

药品订单管理

五、代码实现

5.1 用户登录模块

5.2 文件下载模块

5.3 药品采购模块

六、论文参考目录

七、项目总结 

八、源码获取


一、前言介绍

         随着社会的发展社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。医院药品管理系统主要的模块包括首页、个人中心、用户管理、员工管理、供应商管理、药品种类管理、药品信息管理、药品入库管理、药品出库管理、药品采购管理、系统管理、订单管理等功能。系统中管理员主要是为了安全有效地存储和管理各类信息还可以对系统进行管理与更新维护等操作并且对后台有相应的操作权限。

要想实现医院药品管理系统的各项功能需要后台数据库的大力支持。管理员验证注册信息收集的信息并由此分析得出的关联信息等大量的数据都由数据库管理。本文中数据库服务器端采用了Mysql作为后台数据库使Web与数据库紧密联系起来。在设计过程中充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及列表页面简洁等特点。

本系统的开发使获取医院药品管理系统信息能够更加方便快捷同时也使药品管理变的更加系统化、有序化。系统界面较友好易于操作。

二、系统设计

2.1 系统设计原则

本医院药品管理系统采用Java技术Mysql数据库开发充分保证了系统稳定性、完整性。

医院药品管理系统设计与实现的设计思路如下

1.操作简单方便页面布局简单清晰、界面安全良好便于查询医院药品的相关信息。

2.即时可视性医院药品管理系统的信息处理将在相应的位置即时可用以实现“即时发布、即时生效”的系统功能。

医院药品管理系统从功能、数据流程、可行性、运行环境等方面进行需求分析。对医院药品管理系统的数据库、功能进行了详细设计。分析了主要界面设计和相关组件设计对医院药品管理系统的具体实现进行了介绍。采用Java技术从数据库中获取数据、向数据库中写入数据实现系统直接对数据库进行各种操作在网页中加入动态内容从而实现医院药品管理系统所需要的各种基本功能。

2.2  主要研究方法

本系统采用基于Java语言B/S架构模式实现的Java启动运行的客户端与服务器的结构基于 J2EE的基本标准Tomcat7.0及以上作为运行服务器支持基于、java、springboot、vue等主要技术设计idea作为开发环境数据库采用Mysql 5.0以上

1项目调查法参考基于java医院药品管理系统相关的系统设计和实现、结合这次毕业设计的自己的系统需求调研设计出本系统的主要功能设计和架构。

2文献参考法通过查阅阅读最近三年基于java医院药品管理系统有关的优质文献参考和相关书籍、了解基于java医院药品管理系统的现状和涉及的技术情况

3经验总结法经过网络搜索查看、老师的指导、自己的学习开发经验结合、对系统开发整理、具体情况进行归纳、分析总结满足系统的各项可行性分析使系统设计和实现的合理化、标准化。

4实证测试法通过自己对前面资料的查询、阅读、以及利用自己所学习的计算机相关技术来完成编码实现、进行系统功能测试、代码编写、完成功能模块开发。最后进行测试。

2.3 系统结构设计

系统架构图属于系统设计阶段系统架构图只是这个阶段一个产物系统的总体架构决定了整个系统的模式是系统的基础。医院药品管理系统的整体结构设计如图所示

三、数据设计

3.1 数据实体ER设计

药品信息实体属性图如图所示

 订单实体属性图如图所示

 供应商实体属性图如图所示

3.2 数据逻辑结构设计

 逻辑结构设计是把概念结构设计阶段画好的数据库ER图转换为关系模型。该系统的关系模型的逻辑结构是由主要一下关系模式组成具体的字段设计如下

(1 药品资讯 ) 主键创建时间标题简介图片信息内容
(2 员工信息 ) 主键创建时间员工工号用户密码员工用户姓名性别头像信息手机号码身份证余额
(3 供应商信息 ) 主键创建时间供应商编号供应商名称联系人联系方式供应商地址备注
(4 用户信息 ) 主键创建时间用户名用户密码用户姓名头像信息性别联系方式余额
(5 评论信息 ) 主键创建时间关联表id用户id用户名评论内容回复内容
(6 药品信息 ) 主键创建时间药品名称药品种类图片信息规格信息厂家信息有效日期数量药品详情最近点击时间点击次数药品价格
(7 配置信息 ) 主键配置参数名称配置参数值
(8 药品入库信息 ) 主键创建时间入库单号药品名称药品种类规格信息厂家信息数量备注入库时间员工工号员工用户姓名
(9 药品种类信息 ) 主键创建时间药品种类
(10 提问信息 ) 主键创建时间用户id管理员id提问回复是否回复
(11 药品出库信息 ) 主键创建时间药品名称药品种类规格信息厂家信息数量备注出库日期员工工号员工用户姓名
(12 药品购物车信息 )   主键创建时间商品表名用户id商品id药品名称图片信息购买数量单价会员价
(13 药品采购信息 )  主键创建时间供应商编号供应商名称采购单号药品名称药品种类厂家信息规格信息数量采购的单价采购金额备注采购日期员工工号员工用户姓名是否审核审核回复
(14 收货信息 )   主键创建时间用户id地址收货人电话是否默认地址[是/否]
(15 用户信息 )  主键用户名用户密码角色新增时间
(16 token信息 )   主键用户id用户名表名角色用户密码新增时间过期时间
(17 收藏信息 )  主键创建时间用户id收藏id表名收藏名称收藏图片信息类型(1:收藏,21:赞,22:踩)推荐类型
(18 订单信息 )  主键创建时间订单编号商品表名用户id商品id药品名称商品图片信息购买数量药品价格折扣药品价格总药品价格折扣总药品价格支付方式状态地址电话收货人物流

四、功能截图 

4.1 用户登录注册

4.2 用户前端首页

首页模块

药品信息模块

药品资讯模块

 

个人中心模块

 

购物车模块

在线客服模块 

4.3 用户后端管理

个人中心管理

4.4 供应商后端管理

供应商管理

药品信息管理

4.5 管理员后端管理

用户模块管理

供应商管理

药品类型管理

药品信息管理

药品出入库管理

药品采购管理

药品资讯管理

系统设置管理

药品订单管理

五、代码实现

5.1 用户登录模块


/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;

	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }

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

    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }

    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
    	UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
    	if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
    		return R.error("用户名已存在。");
    	}
        userService.updateById(user);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

5.2 文件下载模块

/**
	 * 下载文件
	 */
	@IgnoreAuth
	@RequestMapping("/download")
	public ResponseEntity<byte[]> download(@RequestParam String fileName) {
		try {
			File path = new File(ResourceUtils.getURL("classpath:static").getPath());
			if(!path.exists()) {
			    path = new File("");
			}
			File upload = new File(path.getAbsolutePath(),"/upload/");
			if(!upload.exists()) {
			    upload.mkdirs();
			}
			File file = new File(upload.getAbsolutePath()+"/"+fileName);
			if(file.exists()){
				/*if(!fileService.canRead(file, SessionManager.getSessionUser())){
					getResponse().sendError(403);
				}*/
				HttpHeaders headers = new HttpHeaders();
			    headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);    
			    headers.setContentDispositionFormData("attachment", fileName);    
			    return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		return new ResponseEntity<byte[]>(HttpStatus.INTERNAL_SERVER_ERROR);
	}

5.3 药品采购模块

/**
 * 药品采购
 * 后端接口
 * @author 
 * @email 
 * @date 2022-03-28 20:09:08
 */
@RestController
@RequestMapping("/yaopincaigou")
public class YaopincaigouController {
    @Autowired
    private YaopincaigouService yaopincaigouService;
    
  
/**
     * 查询
     */
    @RequestMapping("/query")
    public R query(YaopincaigouEntity yaopincaigou){
        EntityWrapper< YaopincaigouEntity> ew = new EntityWrapper< YaopincaigouEntity>();
 		ew.allEq(MPUtil.allEQMapPre( yaopincaigou, "yaopincaigou")); 
		YaopincaigouView yaopincaigouView =  yaopincaigouService.selectView(ew);
		return R.ok("查询药品采购成功").put("data", yaopincaigouView);
    }
	
    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,YaopincaigouEntity yaopincaigou,
		HttpServletRequest request){
		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("yuangong")) {
			yaopincaigou.setYuangonggonghao((String)request.getSession().getAttribute("username"));
		}
        EntityWrapper<YaopincaigouEntity> ew = new EntityWrapper<YaopincaigouEntity>();
		PageUtils page = yaopincaigouService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yaopincaigou), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        YaopincaigouEntity yaopincaigou = yaopincaigouService.selectById(id);
        return R.ok().put("data", yaopincaigou);
    }

   /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        yaopincaigouService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }

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

六、论文参考目录

  

1 系统概述

1.1 概述

1.2课题意义

1.3 主要内容

2 系统开发环境

2.1 Spring Boot框架

2.2 JAVA简介

2.3访问数据库实现方法

2.4系统对MySQL数据库的两种连接方式

2.5 MySql数据库

2.6 B/S结构

3 需求分析

3.1技术可行性技术背景

3.2经济可行性

3.3操作可行性

3.4系统设计规则

3.5系统流程和逻辑

4系统概要设计

4.1 概述

4.2 系统结构

4.3. 数据库设计

4.3.1 数据库实体

4.3.2 数据库设计表

5 系统详细设计

5.1系统功能模块

5.2 管理员功能模块

5.3员工功能模块

6 系统测试

6.1系统测试的目的

6.2系统测试方法

6.3 测试结果

结论

致 谢

参考文献

七、项目总结 

      在设计医院药品管理系统的过程中还遇到了一些棘手的问题那就是自己的英语水平还有待提高很多关于网站技术开发的资料文献都是英文版的关键词语以及技术性词汇不能很好的理解。只有在借助翻译软件的实时性翻译功能的辅助下才勉强看懂。显然英语水平的高低直接影响到系统的开发过程。还有一些错误信息、比如用户空指针异常、还有MYSQL5.7版本数据库版本5.5和5.7不一致的问题、会导致SQL语句无法正常运行、还要就是管理员用户名设置的时候后台没有判断好、在输入错误用户密码的的时候还是可以登录。这样的错原则上是不能发生的在返回代码检查的情况下发现是在管理员信息与数据库的DAO类代码里出现了错误代码和数据库之间没有建立好连接。还有比如管理员添加用户的时候报java.lang.NullPointException、解决的方法查看控制台打印信息、发现添加的时候未填写相关信息、报java.lang.NullPointException、通过断电调试发现、用户信息为空的数据项、在前端保存的时候、必须填写用户完整相关信息、或者数据库设置字段可以为空都可以解决。经过本次测试我会更加的对代码和数据库的操作上更加细心不再出现这种原则上的错误。

     通过这次医院药品管理系统的开发我参考了很多相关系统的例子取长补短吸取了其他系统的长处逐步对该系统进行了完善但是该系统还是有很多的不足之处有待以后进一步学习。实践证明医院药品管理系统有着非常好的发展前景经过测试运行系统各项功能都十分完善界面漂亮使用方便操作容易在技术理论上已经成熟。

八、源码获取

大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻获取联系方式👇🏻👇🏻👇🏻

打卡 文章 更新 308/  365天

 精彩专栏推荐订阅下方专栏👇🏻👇🏻👇🏻👇🏻

java项目精品实战案例《100套》https://blog.csdn.net/weixin_39709134/category_11128297.html

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: SpringJavavue

“基于Java+SpringBoot+vue+element疫情药品采购出入库系统设计实现” 的相关文章