基于SSM的药店管理系统

news2025/2/23 23:21:09

项目描述

临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问题,今天给大家介绍一篇药店管理系统的设计与实现。

功能需求

经过调查分析,管理员一个药房、药品管理系统的具体要求如下:
1、药品管理系统方便实时监控药物信息,尤其是通过库存、药物信息管理来控制药物。
2、管理者需要看清楚药品销售情况和库存情况,根据信息来控制药物的种类和数量。
3、工作人员对药品信息的增删改查。
4、报表信息管理,药房管理者需要对药品的信息进行归纳总结,继而根据情况进行调整。可以调整药品的价格为药店带来更大的利润。
5、管理员可以通过该系统找到名单上的顾客看买药记录。

具备以下功能:

本文课题的研究的是利用互联网技术构建药店管理系统,综合评价了我国目前药店发展现状和以及今后的发展趋势,进而分析药店管理系统实现理念和价值,针对每个页面的样式以及该页面实现的功能目的都要说明,设计药店管理系统功能点。
该系统后台管理员使用的功能包括以下几个模块:
系统管理:角色管理、用户管理、菜单管理、角色菜单配置、密码修改。
采购管理:采购合同管理、采购合同审核、采购清单管理、供应商管理。
仓库管理:药品信息管理。
销售管理:销售清单管理、销售清单审核、会员管理。
财务管理:财务报表管理、财务报表制作。

系统总体设计

管理员可以进行系统管理、采购管理、仓库管理、销售管理、财务管理,如图2-4-1。

在这里插入图片描述

销售员进行销售管理,可以销售清单管理,销售清单审核,会员管理,如图2-4-2。

在这里插入图片描述

采购员进行采购管理,可以进行合同管理,合同审核,清单管理,清单审核,供应商管理。仓库管理可以进行药品信息管理,如图2-4-3。

在这里插入图片描述

财务管理员进行财务管理,可以导出财务报表,财务报表制作,如图2-4-4。

在这里插入图片描述

部分效果图在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

数据库设计

数据库中本系统的表包含:基本菜单(base_menu、基本角色(base_role)、基本角色菜单(base_rolemenu)、合同表(contract)、金融表(financial)、药品表(medicine)、成员表(members)、成员信息表(member_info)、采购表(purchase)、采购记录表(purchase_info)、销售表(sale)、销售记录表(sale_info)、供货商表表(supplier)、用户表表(base_user)。每个表的数据结构如下:。
(1)基本菜单表(base_menu),主要功能是菜单信息存储进入后台数据库,如表4-1。
表4-1 基本菜单表
在这里插入图片描述

(2)基本菜单表(base_role),主要功能是存放用户角色信息如表4-2。
表4-2 角色表
在这里插入图片描述

(3)基本角色菜单(base_rolemenu),主要功能是存放角色和菜单的关系如表4-3。
表4-3 角色菜单关系表
在这里插入图片描述

(4)合同表(contract),主要功能是存放合同信息如表4-4。
表4-4 合同表
在这里插入图片描述

(5)金融表(financial),主要功能是存放金融信息如表4-5。
表4-5 金融表
在这里插入图片描述

(6)药品表(medicine),主要功能是存放药品信息如表4-6。
表4-6 药品表
在这里插入图片描述

(7)成员表(members),主要功能是存放成员信息如表4-7。
表4-7 成员表
在这里插入图片描述

(8)用户表(user),主要功能是存放供用户信息如表4-8。
表4-8用户表
在这里插入图片描述

部分代码

	@RequestMapping(value = {"/list"})
	public String getList(FinancialBean bean,Model model) throws Exception{

		List<FinancialBean> list = mapperService.selectList(bean);
		//int stupage = medicineDao.getPage(stu);
		model.addAttribute("list", list);
		model.addAttribute("stupage", 1);
		return "financiallist";
	}
	//编辑页面
	@RequestMapping(value = {"/editor"})
	public String editor(String id,String startDate,String endDate,Model model) throws Exception{
		FinancialBean bean = null;
		if(StringUtils.isEmpty(id)) {
			if(!StringUtils.isEmpty(StringUtils.isEmpty(startDate))&&!StringUtils.isEmpty(StringUtils.isEmpty(endDate))) {
				 bean = mapperService.selectByDate(startDate,endDate);
			}
		}else {
			 bean = mapperService.selectById(id);
		}
		model.addAttribute("bean",bean);
		return "financialeditor";
	}
	
	//编辑页面
	@RequestMapping(value = {"/delete"})
	@ResponseBody
	public BaseReturn delete(String id) throws Exception{
		BaseReturn baseReturn = new BaseReturn(BaseCode.SUCCESS);
		try {
			if(!StringUtils.isEmpty(id)) {
				mapperService.deleteById(id);
				baseReturn.setMessage("删除成功!");
			}
		}catch (Exception e) {
			baseReturn.setState(BaseCode.FAILURE);
			baseReturn.setMessage(e.getMessage());
			e.printStackTrace();
		}		
		return baseReturn;

	}
	
	//得到在编辑页面编辑好一个学生的各科成绩的list,循环存入数据库中后,在返回存入结果
	@RequestMapping(value = {"/add"},method = RequestMethod.POST)
	@ResponseBody
	public BaseReturn add(@RequestBody FinancialBean bean) {
		BaseReturn baseReturn = new BaseReturn(BaseCode.SUCCESS);
		String id1 = null;
		try {
			if(StringUtils.isEmpty(bean.getId())) {
				String maxid = mapperService.getMaxId();
				if(StringUtils.isEmpty(maxid)) {
					maxid ="0";
				}
				int id =Integer.parseInt(maxid)+1;
			    id1 =String.format("%04d", id);
				bean.setId(id1);
				bean.setState("1");
				String date = DateUtils.getDate();
				CurrentUser user = SecurityUserHolder.getCurrentUser();
				bean.setCreateDate(date);
				bean.setCreateUserId(user.getUserId()+"");
				bean.setCreateUserName(user.getUserName());
				mapperService.insert(bean);
			}else {
				CurrentUser user = SecurityUserHolder.getCurrentUser();
				bean.setUpdateDate(DateUtils.getDate());
				bean.setUpdateUserId(user.getUserId()+"");
				bean.setUpdateUserName(user.getUserName());
				mapperService.updateById(bean);
				
			}
		}catch (Exception e) {
			baseReturn.setData(id1);
			baseReturn.setState(BaseCode.FAILURE);
			baseReturn.setMessage(e.getMessage());
			e.printStackTrace();
		}
		
		return baseReturn;
		
	}
	//编辑页面
	@RequestMapping(value = {"/editor"})
	public String editor(String id,Boolean readOnly,Model model) throws Exception{
		SaleBean bean = mapperService.selectById(id);
		List<SaleInfoBean> list = SaleInfoService.selectBySaleId(id);

		model.addAttribute("bean",bean);
		model.addAttribute("list",list);
		model.addAttribute("readOnly",readOnly);

		return "saleeditor";
	}
	
	//编辑页面
	@RequestMapping(value = {"/delete"})
	@ResponseBody
	public BaseReturn delete(String id) throws Exception{
		BaseReturn baseReturn = new BaseReturn(BaseCode.SUCCESS);
		try {
			if(!StringUtils.isEmpty(id)) {
				List<SaleInfoBean> list = SaleInfoService.selectBySaleId(id);
				for(SaleInfoBean info : list) {
					MedicineBean medicine = medicineService.selectByNo(info.getMedicineNo(),info.getSupplierId());
					int number =Integer.parseInt(medicine.getNumber())+Integer.parseInt(info.getNum());
					medicine.setNumber(number+"");
					medicineService.updateById(medicine);					
					//SaleInfoService.deleteById(info.getId());;
				}
				SaleInfoService.deleteBySaleId(id);
				mapperService.deleteById(id);
				baseReturn.setMessage("删除成功!");
			}
		}catch (Exception e) {
			baseReturn.setState(BaseCode.FAILURE);
			baseReturn.setMessage(e.getMessage());
			e.printStackTrace();
		}		
		return baseReturn;

	}
	
	//编辑页面
	@RequestMapping(value = {"/submit"})
	@ResponseBody
	public BaseReturn submit(String id,String state) throws Exception{
		BaseReturn baseReturn = new BaseReturn(BaseCode.SUCCESS);
		try {
			if(!StringUtils.isEmpty(id)) {
				SaleBean bean = mapperService.selectById(id);
				bean.setState(state);
				mapperService.updateById(bean);
				baseReturn.setMessage("操作成功!");
			}
		}catch (Exception e) {
			baseReturn.setState(BaseCode.FAILURE);
			baseReturn.setMessage(e.getMessage());
			e.printStackTrace();
		}		
		return baseReturn;

	}
	
安装部署需求

eclipse、idea运行启动

系统部署

系统开发后,在生产环境配置项目运行环境,具体步骤如下:
安装linux或者windows10操作系统;
安装JDK1.8并配置环境变量;
安装MySQL5.7版本以上版本数据库,创建数据库并执行脚本创建表;
在IDEA中编辑进行打包;
下载并配置Tomcat8.0服务器,配置系统服务,上传项目打包文件

本项目用到的技术和框架

1.开发语言:Java
2.开发模式:B/S
3.数据库:MySQL
4.框架:jsp+SSM

本项目中的关键点

此系统的开发采用java语言开发,基于B/S结构,这些开发环境使系统更加完善。使用到的工具和技术都是开源免费的。

环境工具

开发工具 Eclipse/IDEA
语言 JDK1.8 、jsp、CSS、SSM
硬件:笔记本电脑;
软件:Tomcat8.0 Web服务器、Navicat数据库客户端、MySQL;
操作系统:Windows 10;
其它软件:截图工具、常用浏览器;
以上是本系统的部分功能展示,如果你的选题正好相符,那么可以做毕业设计或课程设计使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/28777.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Flink】入门Demo实现、Flink运行架构之运行时组件,任务提交流程,任务调度原理

文章目录一 快速上手1 创建maven项目2 引入依赖3 代码实现&#xff08;1&#xff09;从在线数据读取&#xff08;2&#xff09;从离线数据读取4 将程序提交到单点集群运行二 Flink运行架构1 Flink运行时组件&#xff08;1&#xff09;作业管理器&#xff08;JobManager&#xf…

Qt TCP网络编程基本教程

首先介绍一下TCP&#xff1a;&#xff08;Transmission Control Protocol 传输控制协议&#xff09;是一种面向连接的、可靠的、基于字节流的传输层通信协议。相比而言UDP&#xff0c;就是开放式、无连接、不可靠的传输层通信协议。 下面&#xff0c;我一次进行客户端和服务器端…

STM32f103 SMO滑膜观测器的FOC驱动DIY

小时候玩航模了解到无刷电机&#xff0c;又从方波控制了解到FOC控制&#xff0c;在接触了一些开源项目的时候&#xff0c;感叹做的真好&#xff0c;不论是方波的还是Foc的启动都是那么丝滑&#xff0c;软件做的虽然好&#xff0c;但在这几年电机驱动芯片和部分型号的单片机价格…

【878. 第 N 个神奇数字】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 一个正整数如果能被 a 或 b 整除&#xff0c;那么它是神奇的。 给定三个整数 n , a , b &#xff0c;返回第 n 个神奇的数字。因为答案可能很大&#xff0c;所以返回答案 对 109 7 取模 后的值。 示…

亚马逊气候友好型承诺所有认证

【亚马逊气候友好型承诺所有认证】 亚马逊与广泛的外部认证合作&#xff0c;包括政府机构、非营利组织和独立实验室&#xff0c;以帮助我们区分更具可持续性的产品。亚马逊专注于信誉良好、透明且专注于保护自然世界的认证。我们将定期评估和重新评估认证环境&#xff0c;以确保…

若依框架的暴力破解漏洞

文章目录 漏洞描述漏洞复现修复建议漏洞描述 由于图片验证码未做好前后台的统一校验,可重复利用验证码,以及无登录错误次数限制等,导致攻击者可对账号与密码进行的穷举测试,从而获取网站登录访问权限 漏洞复现 第一步 抓包获取登录数据包,默认口令Admin123 第二步 发…

win10系统下使用openvino部署yolov5模型

文章目录前言一、环境1、硬件2、软件二、YOLO模型三、新建Qt项目1、pro文件2、main.cpp四、效果五、后记前言 上一篇介绍过使用onnxruntime实现模型推理部署&#xff0c;但在我的机器上视频效果仍不理想&#xff0c;本篇介绍使用openvino完成模型推理部署。   openvino是Inte…

Windows OpenGL ES 图像透明度

目录 一.OpenGL ES 图像透明度 1.原始图片2.效果演示 二.OpenGL ES 图像透明度源码下载三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 零基础 Open…

linux下gcc编程11-window下clion编译调试nginx+集成lua-nginx-module+安装开源x-waf

nginx模块 nginx作为项目的7层代理入口&#xff0c;对于http请求的过滤&#xff0c;如sql注入&#xff0c;xss攻击等过滤功能较弱&#xff0c;研究了下开源的一些waf&#xff0c;完全开源的https://github.com/xsec-lab/x-waf&#xff0c;利用lua来过滤请求&#xff0c;同时拥…

TuckER 论文笔记

Modeling Relation Paths for Representation Learning of Knowledge Bases- Introduction- Background- Algorithm- Experiment- Conclusion- CodeIvana Balazevic, Carl Allen, Timothy M.Hospedales - Introduction TuckERuckER是一个相对简单但功能强大的线性模型&#xf…

网络营销中 SEO 的作用

与其有时间去阅读各种SEO知识&#xff0c;不如多做一些实际的测试和练习。在百度官方发布的网页质量白皮书中&#xff0c;其实重点介绍了网页速度对SEO优化的影响&#xff0c;前面也出现了一种叫做闪电算法的算法&#xff0c;对于移动排名1.5秒内加载首屏即可打开的网页&#x…

2022亚马逊云科技re:Invent科创风尚,抢占下一个万亿赛道

新风向&#xff1a;重塑科技创投格局 面向未来增长&#xff0c;聚焦投资风向&#xff0c;演绎全新技术。11月28日至12月2日&#xff0c;2022亚马逊云科技re:Invent即将重磅来袭&#xff0c;在美国拉斯维加斯再度盛启。改变世界的全新云技术、不同领域的优选实践&#xff0c;都…

【仿真建模】第一课:AnyLogic入门基础教程 - 行人库入门讲解

文章目录一、AnyLogic介绍二、设置2.1 设置中文三、新建项目四、行人库介绍五、创建新行人六、切换3D视角七、增加墙八、行人密度图一、AnyLogic介绍 二、设置 2.1 设置中文 三、新建项目 四、行人库介绍 点击面板&#xff0c;选择第三个图标&#xff0c;就是行人库 行人库分…

react--编程式导航、antd的使用

编程式 1. 借助路由对象中的history 获取&#xff1a; this.props.history.push(/xx/xx) | this.props.history.replace(/xx/xx) 2. 传递sreach参数 this.props.history.push(/xx/xx?xxx100&xx111) 3. 传state参数 this.props.history.push(/xx,{id:1,title:…

web前端期末大作业 HTML+CSS+JavaScript仿唯品会购物商城网页设计实例 企业网站制作

常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他等网页设计题目, A…

ISO 5659-2塑料 烟生成 第2 部分:单室法测定烟密度试验方法

本标准适用于测定塑料燃烧时所产生烟雾的比光密度&#xff0c;并以最大比光密度为试验结果。它用于评定在规定条件下塑料的发烟性能。 ISO5659-2 建筑材料阻燃防火测试-标准名称&#xff1a; ISO 5659-2: 塑料&#xff0d;生烟性测定&#xff0d;第2部分&#xff1a;单烟箱光…

echarts看板效果图:流光折线图、3d柱状图、3d饼图

前言 现在展厅的大看板是越花里胡哨越好,不过真的挺难做的。好在可以百度找到一些大神的作品进行参考。 下面的内容都是基于echarts 5.3.3 和 vue3 。另外demo都是参考别人的案例。 流光折线图 效果图 代码 <template><div id="demo"></div&g…

从零开始学JAVA(01):配置Java运行环境、实现HelloWorld

一、下载安装JDK 1、下载安装 Oracle | Cloud Applications and Cloud Platform 2、验证&#xff08;控制太输入java、java-version、javac&#xff09; 二、 实现HelloWorld 1、下载 Sublime Text Sublime Text - Text Editing, Done Right 2、编写HelloWorld.java文件 …

数据恢复方法有哪些?如何恢复误删照片

数据恢复方法有哪些&#xff1f;电脑文件数据的误删除&#xff0c;基本每个人都遇到过。当我们还是一个电脑小白的时候&#xff0c;说实话这是非常让人崩溃的事情&#xff0c;不过不用担心&#xff0c;今天小编就以自己的亲身经历告诉大家几种比较好用的数据恢复方法。 删除的文…

PyTorch深度学习基础之Tensor对象及其应用的讲解及实战(附源码 简单易懂 包括分段 映射 矩阵乘法 随机数等等)

觉得有帮助请点赞关注收藏 有问题可评论区留言~~~ Tensor对象是一个维度任意的矩阵&#xff0c;但是一个Tensor中所有元素的数据类型必须一致。torch包含的数据类型和普遍编程语言的数据类型类似&#xff0c;包含浮点型&#xff0c;有符号整型和无符号整形&#xff0c;这些类型…