资讯动态

Java+MySQL医药销售管理系统课程设计:JSP/Servlet完整案例与权限设计

发布时间:2026/10/8 17:34:27 来源:尧图企业网站定制
简介本资源为基于Java与MySQL实现的医药销售管理系统课程设计项目编号100013136面向计算机相关专业学生及Java Web初学者用于完成数据库课程设计或毕业设计中的企业级信息管理类题目。系统区分员工与经理两类角色员工可管理会员与供应商、查询药品库存、录入采购与销售记录、处理退货及盘点仓库经理在此基础上拥有员工与供应商的增删权限但不参与销售退货业务供应商与顾客无使用权限。压缩包共26个文件约1.06MB以19个jsp页面为主体配合1个sql建库脚本、1个xml配置、1个jar驱动包及说明文档覆盖登录、会员管理、药品采购、销售退货、仓库盘点、财务统计等完整模块。已有264人学习下载适合作为JavaMySQL整合开发的实战参考帮助读者理解分层页面组织、数据库表结构设计与角色权限控制的实现思路。1. 拆开这份 JavaMySQL 医药销售管理系统编号 100013136 里到底装了什么医药销售管理系统这个题目在课程设计里出现频率极高但真正能跑起来、能讲清楚业务边界的并不多。手上这份编号 100013136 的资源包是一个基于 Java MySQL 的 JSP/Servlet 传统架构项目解压后能看到 webcontent 目录下铺着 Login.jsp、HomePage.jsp、Sell.jsp、WareHouse.jsp、Refunds.jsp 等一整套页面WEB-INF 里放配置根目录挂着 drug_sales_management 数据库脚本和 mysql-connector-java-5.1.39-bin.jar 驱动。它解决的不是高并发卖药这种伪需求而是一个中小药房或医药流通企业内部台账问题员工能查药、卖药、退货、盘点经理能管人、管供应商、管会员但经理不能碰销售和退货业务。这个权限切分是整份资源最值得看的设计点也是很多人做课程设计时容易写成一锅粥的地方。适合谁正在找 JavaWeb 完整案例、需要一份能改能交的课程设计、或者想拿一个真实业务场景练 JSPJDBC 手感的同学。下面我按能跑起来 → 能改明白 → 不踩坑的顺序拆一遍。2. 环境搭建与数据库导入让 Login.jsp 真正跳起来2.1 先看清技术栈的真实边界这份资源用的是 JSP Servlet JDBC 直连不是 Spring Boot也不是 MyBatis。热词里常刷到 mybatisplus 根据实体类生成建表 SQL、spring boot mybatis 多商户商城源码那些跟这份包没关系别硬套。它的依赖极简一个 mysql-connector-java-5.1.39-bin.jar 就是全部第三方库。这意味着两件事——第一环境配好后启动快、报错少第二SQL 全写在 JSP 或 Servlet 里改业务逻辑要直接翻页面文件。数据库脚本是根目录的 医药销售管理系统.sql里面建库、建表、插初始数据一条龙。表结构大致围绕员工、会员、供应商、药品、采购记录、销售记录、退货记录、库存这几张核心表展开。先确认你的 MySQL 版本5.1.39 这个驱动对应 MySQL 5.x 系列最稳如果你本机装的是 MySQL 8.0驱动类名和时区参数都要动后面避坑章节细说。2.2 建库导数据的完整命令先建库再导脚本不要指望脚本里一定带了 CREATE DATABASE。常见做法是手动建一个字符集为 utf8mb4 的库再 source 进去。# 登录 MySQL注意 5.7 和 8.0 登录参数略有差异 mysql -u root -p # 建库字符集必须 utf8mb4否则中文药名会变问号 CREATE DATABASE drug_sales_management DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; # 切库 USE drug_sales_management; # 导入脚本路径换成你解压后的实际位置 source D:/work/100013136/医药销售管理系统.sql; # 验证表是否建全 SHOW TABLES;导入完成后执行SHOW TABLES正常应该能看到员工表、会员表、供应商表、药品表、销售记录表、退货记录表、采购记录表等。如果表数量明显偏少多半是脚本中途报错停了往上翻看第一条 ERROR 是哪张表通常是外键顺序或者字符集不匹配导致。2.3 改数据库连接与部署运行连接配置一般藏在 WEB-INF 下的配置或某个公共 JSP/Servlet 里搜jdbc:mysql就能定位。把库名、账号、密码改成你本机的。// 典型 JDBC 连接串5.x 驱动写法 String url jdbc:mysql://localhost:3306/drug_sales_management?useUnicodetruecharacterEncodingutf8; String user root; String password 你的密码; Class.forName(com.mysql.jdbc.Driver); // 5.1.39 驱动的类名8.0 驱动不是这个 Connection conn DriverManager.getConnection(url, user, password);参数说明useUnicodetruecharacterEncodingutf8这两个不能省否则中文查询条件会失效com.mysql.jdbc.Driver是 5.1.x 的类名换成 8.0 驱动要改成com.mysql.cj.jdbc.Driver并加时区参数。部署时把整个 webcontent 作为 Web 根目录丢进 Tomcat 的 webapps或者用 IDE 配一个 Tomcat 运行访问 Login.jsp 即可。默认账号密码通常在 SQL 脚本的初始数据里翻一下员工表的 INSERT 语句就能看到。3. 权限模型与核心业务链路员工和经理到底差在哪3.1 角色权限是怎么切开的这份系统最清晰的一点是角色边界。员工和经理共用登录入口登录后靠会话里的角色字段决定能看到哪些菜单、能提交哪些操作。员工侧查看/添加会员、查看/添加供应商、查询药品、添加采购记录、销售药品、处理退货、盘点仓库、查各类记录、改个人信息。经理侧会员和供应商的增删查、员工的增删查、盘点仓库、查记录、改个人信息但明确无权销售和退货。这个设计对应到代码上就是每个 JSP 页面开头做一次会话角色校验不匹配就踢回登录页或提示无权限。常见写法是在页面顶部判断 session 里的角色值经理访问 Sell.jsp 时直接拦截。供应商和顾客没有账号体系所以系统里不存在这两类登录别去找供应商登录页它本来就没有。3.2 药品查询与库存扣减的联动药品查询支持按编号、名称、类别模糊查本质是一条带 LIKE 的 SELECT。真正容易出问题的是销售环节的库存扣减——卖出一盒药库存要减销售记录要加这两步必须在一个事务里否则会出现记录有了库存没减或者反过来。// 销售扣库存的典型事务写法 Connection conn null; try { conn DriverManager.getConnection(url, user, password); conn.setAutoCommit(false); // 关掉自动提交开启事务 // 第一步扣库存加条件防止超卖 String sql1 UPDATE drug SET stock stock - ? WHERE drug_id ? AND stock ?; PreparedStatement ps1 conn.prepareStatement(sql1); ps1.setInt(1, qty); ps1.setString(2, drugId); ps1.setInt(3, qty); int rows ps1.executeUpdate(); if (rows 0) { throw new RuntimeException(库存不足扣减失败); } // 第二步写销售记录 String sql2 INSERT INTO sell_record(drug_id, qty, sell_time, operator) VALUES(?,?,NOW(),?); PreparedStatement ps2 conn.prepareStatement(sql2); ps2.setString(1, drugId); ps2.setInt(2, qty); ps2.setString(3, operator); ps2.executeUpdate(); conn.commit(); // 两步都成功才提交 } catch (Exception e) { if (conn ! null) conn.rollback(); // 任一步失败整体回滚 e.printStackTrace(); } finally { if (conn ! null) conn.close(); }参数说明stock ?这个条件是防超卖的关键没有它并发下会把库存扣成负数setAutoCommit(false)到commit()之间就是事务边界任何异常都要走rollback()。退货逻辑方向相反库存加回去、退货记录加一条同样要包事务。盘点仓库则是把系统库存和实际清点数量做比对生成差异记录这部分通常是查询加更新不涉及复杂事务。3.3 采购、退货、盘点三条链路的差异采购是入库方向新增采购记录的同时库存增加操作人是员工。退货是出库反向顾客退回药品库存加回、退货记录新增还要关联原销售单。盘点不改变正常库存只记录账实差异。三条链路都涉及记录 库存双写所以事务处理是统一的区别只在库存是加还是减、记录写哪张表。把这三条链路的 SQL 抽出来对比一遍你会发现结构高度相似改起来不难难的是别忘了事务。4. 避坑与排查这份资源最容易翻车的五个地方4.1 中文药名全变问号现象导入 SQL 后药品表里的中文名称显示成???。原因建库时字符集不是 utf8mb4或者 JDBC 连接串没带 characterEncoding。解决重建库指定DEFAULT CHARACTER SET utf8mb4连接串补上useUnicodetruecharacterEncodingutf8两步缺一不可。4.2 驱动版本和 MySQL 版本对不上现象启动报ClassNotFoundException: com.mysql.jdbc.Driver或连接被拒绝。原因包里带的是 5.1.39 驱动如果你本机是 MySQL 8.0类名和认证方式都变了。解决要么把本机 MySQL 降到 5.7 系列配合原驱动要么换 8.0 驱动并把类名改成com.mysql.cj.jdbc.Driver连接串加serverTimezoneAsia/Shanghai。4.3 经理账号能进销售页现象用经理账号登录后居然能打开 Sell.jsp 并提交销售。原因页面只做了菜单隐藏没做服务端角色校验直接输 URL 就绕过去了。解决在每个敏感 JSP 或对应 Servlet 开头加会话角色判断非员工角色一律拦截别只靠前端藏菜单。4.4 库存扣成负数现象同一药品被连续销售后库存显示为负。原因扣减 SQL 没加stock ?条件或者没走事务。解决UPDATE 语句必须带库存充足判断且扣减与写记录包在同一事务里失败整体回滚。4.5 Tomcat 部署后 404现象访问 Login.jsp 提示 404。原因webcontent 目录名不是标准的 Web 根或者没配 context path。解决把 webcontent 重命名为项目名或直接在 IDE 里指定它为 Web 资源目录访问路径带上正确的 context path比如http://localhost:8080/drug_sales_management/Login.jsp。5. 二次开发与验证把这份课程设计改成能讲清楚的作品5.1 先跑通再改验证顺序不能乱拿到包别急着改代码先按建库 → 导数据 → 改连接 → 部署 → 登录 → 走一遍销售和退货的顺序验证。跑通之后再动否则你分不清是环境问题还是自己改出来的问题。验证时重点看三处登录能否按角色进不同首页、销售后库存是否真的减了、退货后库存是否加回来且记录成对出现。5.2 值得动手的三个改造点第一把散落在 JSP 里的 JDBC 代码抽成一个 DBUtil 工具类连接获取和关闭统一管理这是最基础的工程化。第二给药品查询加分页数据一多全表查会卡。第三把角色校验抽成一个公共的过滤器或包含文件避免每个页面重复写。// 抽出来的简易 DBUtil减少重复代码 public class DBUtil { private static final String URL jdbc:mysql://localhost:3306/drug_sales_management?useUnicodetruecharacterEncodingutf8; private static final String USER root; private static final String PWD 你的密码; public static Connection getConn() throws Exception { Class.forName(com.mysql.jdbc.Driver); return DriverManager.getConnection(URL, USER, PWD); } public static void close(Connection c) { try { if (c ! null) c.close(); } catch (Exception e) { e.printStackTrace(); } } }参数说明把 URL、账号、密码集中到常量改环境只动一处getConn()负责加载驱动和建连接close()统一释放。改造后每个业务页面只调这两个方法代码量能砍掉一大截。5.3 答辩或交付前该确认的清单确认数据库脚本能在干净环境一次导入成功、确认默认账号密码写在 README 或脚本注释里、确认经理和员工的权限差异在演示时能当场验证、确认销售和退货的库存变化能对上账。这几条过了这份资源就不只是能跑而是能讲明白。血泪经验是我每次拿到这种 JSP 老项目都先把数据库连接和字符集这两件事钉死再谈业务。因为九成的系统坏了最后都追到这两处。从那以后我每次部署前都强制先跑一遍建库导数据确认中文不乱码、登录能进再动一行业务代码。希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑