药品进销存管理信息系统
项目简介
本系统是一个基于JSP+Servlet+JDBC+MySQL8的药品进销存管理系统,实现了药品信息管理、入库、销售、退货、库存管理、数据统计、操作日志、用户权限管理等功能。
技术栈
- 前端: JSP, HTML, CSS, JavaScript
- 后端: Servlet, JDBC
- 数据库: MySQL 8.0
- 服务器: Tomcat 8.5+
- 开发工具: Eclipse/IDEA
- JDK版本: JDK 1.8+
功能模块
1. 用户权限管理
- 用户登录/退出
- 用户管理(管理员)
- 角色权限控制(管理员、普通用户)
- 修改密码
2. 药品管理
- 药品信息维护(增删改查)
- 药品分类管理
- 药品搜索
3. 供应商管理
- 供应商信息维护
- 供应商启用/禁用
4. 库存管理
- 实时库存查询
- 库存预警(低于预警值自动提醒)
- 库存统计
5. 药品入库
- 入库单创建
- 入库明细管理
- 自动更新库存
6. 药品销售
- 销售单创建
- 销售明细管理
- 优惠金额计算
- 自动扣减库存
7. 退货管理
- 退货单创建
- 退货明细管理
- 自动增加库存
8. 数据统计
- 首页数据看板
- 销售统计报表
- 入库统计报表
9. 操作日志
- 记录所有关键操作
- 日志查询和筛选
环境配置
1. 开发环境要求
- JDK 1.8 或更高版本
- MySQL 8.0
- Tomcat 8.5 或更高版本
- Eclipse 或 IntelliJ IDEA
2. 数据库配置
创建数据库
mysql -u root -p
执行 database.sql 文件创建数据库和表:
source D:/eclipse-workspace/yaopin/database.sql
或在MySQL命令行中执行SQL文件内容。
修改数据库连接配置
编辑 src/db.properties 文件,修改数据库连接信息:
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/yaopin_db?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8&allowPublicKeyRetrieval=true
jdbc.username=root
jdbc.password=你的数据库密码
3. 导入MySQL驱动
下载MySQL JDBC驱动(mysql-connector-java-8.x.x.jar),将其放置到:
WebContent/WEB-INF/lib/目录下
下载地址: dev.mysql.com/downloads/c…
选择 Platform Independent 版本下载。
4. Eclipse 项目导入
方式一:导入为动态Web项目
- 打开 Eclipse
- File → Import → Existing Projects into Workspace
- 选择项目目录
D:\eclipse-workspace\yaopin - 点击 Finish
方式二:新建动态Web项目
- File → New → Dynamic Web Project
- 项目名称:yaopin
- 将源代码复制到项目对应目录
5. 配置Tomcat
-
在 Eclipse 中配置 Tomcat 服务器
- Window → Preferences → Server → Runtime Environments
- 添加 Tomcat 8.5 或更高版本
-
将项目添加到 Tomcat
- 右键项目 → Run As → Run on Server
- 选择配置好的 Tomcat 服务器
项目结构
yaopin/
├── src/
│ ├── com/yaopin/
│ │ ├── dao/ # 数据访问层
│ │ │ ├── UserDao.java
│ │ │ ├── MedicineDao.java
│ │ │ ├── SupplierDao.java
│ │ │ ├── PurchaseDao.java
│ │ │ ├── SaleDao.java
│ │ │ ├── ReturnDao.java
│ │ │ └── OperationLogDao.java
│ │ ├── model/ # 实体类
│ │ │ ├── User.java
│ │ │ ├── Medicine.java
│ │ │ ├── Supplier.java
│ │ │ ├── Purchase.java
│ │ │ ├── Sale.java
│ │ │ ├── ReturnOrder.java
│ │ │ └── OperationLog.java
│ │ ├── servlet/ # 控制层
│ │ │ ├── UserServlet.java
│ │ │ ├── MedicineServlet.java
│ │ │ ├── SupplierServlet.java
│ │ │ ├── PurchaseServlet.java
│ │ │ ├── SaleServlet.java
│ │ │ ├── ReturnServlet.java
│ │ │ ├── StatisticsServlet.java
│ │ │ └── LogServlet.java
│ │ ├── filter/ # 过滤器
│ │ │ ├── CharacterEncodingFilter.java
│ │ │ └── LoginFilter.java
│ │ └── util/ # 工具类
│ │ ├── DBUtil.java
│ │ └── StringUtil.java
│ └── db.properties # 数据库配置
├── WebContent/
│ ├── WEB-INF/
│ │ ├── web.xml # Web配置文件
│ │ └── lib/ # 第三方库(放置MySQL驱动)
│ ├── css/
│ │ └── style.css # 样式文件
│ ├── js/
│ │ └── common.js # 公共JS
│ ├── common/
│ │ └── sidebar.jsp # 侧边栏组件
│ ├── login.jsp # 登录页面
│ ├── index.jsp # 首页
│ ├── medicine_*.jsp # 药品管理相关页面
│ ├── user_*.jsp # 用户管理相关页面
│ ├── purchase_*.jsp # 入库管理相关页面
│ ├── sale_*.jsp # 销售管理相关页面
│ └── log_list.jsp # 日志页面
└── database.sql # 数据库脚本
部署步骤
1. 导入项目
将项目导入到 Eclipse 或 IDEA 中。
2. 配置数据库
- 执行
database.sql创建数据库和表 - 修改
src/db.properties中的数据库连接信息
3. 添加MySQL驱动
- 下载
mysql-connector-java-8.x.x.jar - 放置到
WebContent/WEB-INF/lib/目录
4. 配置Tomcat
- 在IDE中配置Tomcat服务器
- 将项目部署到Tomcat
5. 启动项目
- 启动Tomcat服务器
- 访问:http://localhost:8080/yaopin/
默认账号
系统初始化后会自动创建以下账号:
| 用户名 | 密码 | 角色 | 说明 |
|---|---|---|---|
| admin | admin123 | 管理员 | 拥有所有权限 |
| user | user123 | 普通用户 | 基本操作权限 |
注意:首次登录后请及时修改默认密码!
功能说明
药品入库流程
- 进入"药品入库"菜单
- 点击"新增入库单"
- 选择供应商、填写入库日期
- 添加入库明细(选择药品、数量、进价等)
- 系统自动计算总金额
- 保存后自动更新药品库存
药品销售流程
- 进入"药品销售"菜单
- 点击"新增销售单"
- 填写客户信息(可选)
- 添加销售明细(选择药品、数量、售价)
- 系统自动检查库存是否充足
- 可设置优惠金额
- 保存后自动扣减库存
库存预警
- 当药品库存低于或等于预警数量时,系统会在药品列表中标记预警
- 可通过"库存预警"菜单查看所有库存不足的药品
- 建议定期查看库存预警,及时补货
常见问题
1. 数据库连接失败
- 检查MySQL服务是否启动
- 检查
db.properties中的配置是否正确 - 检查MySQL驱动是否正确放置
2. 页面乱码
- 确保所有JSP文件编码为UTF-8
- 检查Tomcat的server.xml配置:
URIEncoding="UTF-8"
3. 无法访问页面
- 检查Tomcat是否正常启动
- 检查项目是否正确部署
- 检查访问路径是否正确
4. 权限不足
- 某些功能(如用户管理)仅管理员可访问
- 使用admin账号登录
注意事项
-
生产环境部署:
- 修改默认密码
- 使用强密码策略
- 配置数据库备份策略
- 启用HTTPS
-
性能优化:
- 对于大数据量,建议添加分页功能
- 可考虑添加数据库连接池(如C3P0、Druid)
- 添加缓存机制
-
安全建议:
- 密码建议使用MD5或SHA加密存储
- 添加SQL注入防护
- 添加XSS攻击防护
- 定期备份数据库