Java Swing+MySQL 文具店进销存管理系统完整教程

发布时间:2026/9/30 3:31:34

Java Swing+MySQL 文具店进销存管理系统完整教程 一、项目简介本项目是一款基于Java Swing MySQL开发的小型文具店进销存管理系统主打桌面端可视化操作适配中小学文具店、小型文创门店的日常经营管理场景。系统涵盖用户权限登录、商品分类、商品管理、供应商管理、客户管理、采购入库、销售开单、库存盘点、经营报表统计八大核心业务模块完整实现了进销存全流程业务闭环。项目采用原生Java Swing开发界面无需额外框架代码轻量化、易部署、易二次开发数据库采用MySQL自动建表、自动初始化测试数据开箱即用非常适合Java课程设计、毕设入门、Swing实战项目学习使用。二、开发环境与技术栈1、技术栈前端界面Java Swing原生GUI无第三方UI框架后端逻辑Java SE 8数据库MySQL 5.7 / 8.0数据库连接JDBC 原生连接加密工具SHA256 密码加密存储开发工具IDEA / Eclipse2、环境要求JDK 1.8 及以上版本MySQL 5.7 / 8.0MySQL数据库驱动适配对应JDK版本支持Windows/Mac系统运行三、系统功能模块详解本系统功能完整覆盖小微企业进销存核心业务具体模块如下1、用户登录与注册模块管理员账号密码登录SHA256加密存储密码保障账号安全支持新管理员账号注册校验用户名重复、两次密码一致性自动记录用户登录时间更新最后登录日志内置默认管理员账号admin / admin1232、商品分类管理新增文具商品分类分类名称唯一防重复实时刷新分类列表可视化查看所有分类信息默认初始化基础分类笔类、本册、美术用品、文具配件3、商品信息管理自定义商品编码、名称、规格、进价、售价、预警库存绑定对应商品分类关联分类数据展示自动校验数字格式、商品编码唯一性实时展示商品当前库存、预警库存信息4、供应商管理新增、查看供应商信息名称、联系人、电话、地址数据实时刷新为采购入库提供供应商数据源内置默认文具批发供应商测试数据5、客户管理维护零售客户、合作客户信息记录客户名称、联系电话、备注信息支持散客销售模式适配门店零售场景6、采购入库管理自动生成唯一采购单号时间戳格式选择供应商、录入采购商品、数量、进货单价提交入库后自动累加商品库存区分当前单据明细、历史采购记录可随时查询7、销售开单管理自动生成销售单号支持客户/散客开单录入销售商品、数量、售价批量添加单据明细提交销售后自动扣减商品库存留存所有历史销售单据可追溯查询8、库存盘点与预警库存预警功能自动筛选低于预警阈值的缺货商品手动盘点库存录入实际库存数量自动计算盘盈、盘亏数量生成盘点记录自动更新商品账面库存为实际库存数据9、经营统计报表按时间段查询销售报表、采购报表展示单据号、合作方、总金额、交易时间实时查看库存台账掌握所有商品库存状态四、数据库设计系统启动时自动创建所有数据表、自动初始化测试数据无需手动建库、执行SQL脚本。下面整理了全套9张数据表详细结构包含字段类型、主键、外键、字段注释可直接用于课程设计说明书、数据库文档撰写。1、管理员用户表 user用于存储系统管理员账号信息密码SHA256加密存储记录登录日志。字段名字段类型约束字段说明idINT主键、自增管理员用户IDusernameVARCHAR(50)非空、唯一登录用户名passwordVARCHAR(100)非空加密后密码SHA256create_timeDATETIME非空账号注册时间last_login_timeDATETIME可为空最后登录时间2、商品分类表 goods_type文具商品分类数据表与商品表一对多关联。字段名字段类型约束字段说明type_idINT主键、自增分类IDtype_nameVARCHAR(30)非空、唯一文具分类名称3、商品信息表 goods核心商品数据表存储所有文具商品资料、库存、价格、预警信息关联商品分类。字段名字段类型约束字段说明goods_idVARCHAR(20)主键商品唯一编码goods_nameVARCHAR(50)非空商品名称type_idINT外键所属分类IDspecVARCHAR(30)可为空商品规格buy_priceDECIMAL(8,2)非空进货单价sell_priceDECIMAL(8,2)非空销售单价stock_numINT默认0当前账面库存warn_numINT默认10库存预警阈值remarkVARCHAR(100)可为空商品备注4、供应商表 supplier存储进货供应商资料为采购业务提供数据支撑。字段名字段类型约束字段说明supplier_idINT主键、自增供应商IDsupplier_nameVARCHAR(50)非空供应商名称contactVARCHAR(20)可为空联系人姓名phoneVARCHAR(11)可为空联系电话addressVARCHAR(100)可为空供应商地址5、客户表 customer存储门店零售、合作客户信息支撑销售开单业务。字段名字段类型约束字段说明cus_idINT主键、自增客户IDcus_nameVARCHAR(30)可为空客户名称phoneVARCHAR(11)可为空客户电话remarkVARCHAR(100)可为空客户备注信息6、采购主表 purchase采购单主表记录每一次采购单据的整体信息关联供应商和操作管理员。字段名字段类型约束字段说明purchase_idVARCHAR(30)主键采购单号时间戳生成supplier_idINT非空、外键供应商IDtotal_moneyDECIMAL(10,2)非空采购单总金额purchase_timeDATETIME默认当前时间采购下单时间user_idINT外键操作管理员ID7、采购明细表 purchase_item采购单明细表一张采购单对应多条商品明细用于精准记录采购商品数据。字段名字段类型约束字段说明idINT主键、自增明细自增IDpurchase_idVARCHAR(30)非空、外键关联采购单号goods_idVARCHAR(20)非空、外键商品编码buy_numINT非空采购数量item_moneyDECIMAL(10,2)非空单品小计金额8、销售主表 sale销售单主表记录每一笔销售订单整体信息。字段名字段类型约束字段说明sale_idVARCHAR(30)主键销售单号时间戳生成cus_idINT外键、可为空客户ID散客为空total_moneyDECIMAL(10,2)非空销售单总金额sale_timeDATETIME默认当前时间销售开单时间user_idINT外键操作管理员ID9、销售明细表 sale_item销售单明细表记录销售订单中每一款商品的销售数据。字段名字段类型约束字段说明idINT主键、自增明细自增IDsale_idVARCHAR(30)非空、外键关联销售单号goods_idVARCHAR(20)非空、外键商品编码sale_numINT非空销售数量item_moneyDECIMAL(10,2)非空单品销售小计10、库存盘点表 stock_check记录每一次库存盘点记录留存盘盈盘亏数据方便库存对账。字段名字段类型约束字段说明idINT主键、自增盘点记录IDgoods_idVARCHAR(20)非空、外键盘点商品编码book_numINT可为空账面库存数量real_numINT可为空实际盘点库存diff_numINT可为空盘盈/盘亏数量正数盘盈、负数盘亏check_timeDATETIME默认当前时间盘点时间五、核心功能代码解析1、数据库自动连接与初始化系统启动自动加载JDBC驱动连接MySQL不存在数据表则自动创建无测试数据则自动插入默认数据开箱即用。// 初始化数据库连接、自动建表、插入测试数据 private boolean initConn(){ try { if(connectionnull||connection.isClosed()){ Class.forName(com.mysql.cj.jdbc.Driver); connection DriverManager.getConnection(DB_URL,DB_USER,DB_PASSWORD); createAllTable(); // 自动创建全套数据表 insertTestData(); // 自动初始化测试数据 } return true; }catch (ClassNotFoundException|SQLException e){ e.printStackTrace(); return false; } }2、SHA256密码加密摒弃明文存储密码采用SHA256加密保障账号数据安全登录时加密比对校验。// SHA256密码加密 private String encryptPwd(String pwd){ try { MessageDigest md MessageDigest.getInstance(SHA-256); byte[] hash md.digest(pwd.getBytes(UTF-8)); StringBuilder sb new StringBuilder(); for(byte b : hash) sb.append(String.format(%02x,b)); return sb.toString(); }catch (NoSuchAlgorithmException|java.io.UnsupportedEncodingException e){ e.printStackTrace(); return pwd; } }3、采购自动更新库存核心逻辑采购单据提交后自动新增采购记录同步累加商品库存实现入库业务闭环。4、库存预警核心逻辑通过SQL筛选库存数量小于等于预警阈值的商品快速定位缺货商品辅助补货决策。// 库存预警查询 private void showWarnStock(){ String sql SELECT * FROM goods WHERE stock_num warn_num; try(Statement stmt connection.createStatement();ResultSet rs stmt.executeQuery(sql)){ DefaultTableModel model new DefaultTableModel(new String[]{商品编码,名称,当前库存,最低预警库存},0); while(rs.next()) model.addRow(new Object[]{rs.getString(goods_id),rs.getString(goods_name),rs.getInt(stock_num),rs.getInt(warn_num)}); stockTable.setModel(model); }catch (SQLException e){e.printStackTrace();} }六、项目运行教程1、前期准备安装MySQL数据库启动服务创建数据库stationery_store编码utf8mb4修改代码中数据库账号密码为自己本地MySQL账号密码2、配置参数private static final String DB_URL jdbc:mysql://localhost:3306/stationery_store?serverTimezoneAsia/ShanghaiuseSSLfalse; private static final String DB_USER root; // 本地MySQL用户名 private static final String DB_PASSWORD admin123; // 本地MySQL密码3、运行步骤导入项目至IDEA/Eclipse配置JDK1.8导入MySQL驱动包添加至项目依赖运行主类StationeryStoreSystem使用默认账号admin / admin123登录系统所有数据表、测试数据自动初始化直接操作即可七、项目亮点零配置启动自动建表、自动初始化数据无需手动SQL导入功能完整闭环从基础资料维护、采购、销售、库存盘点到报表统计全覆盖数据安全密码SHA256加密存储杜绝明文泄露业务贴合实际适配文具店小微门店经营场景库存自动增减、预警提醒代码简洁易懂原生SwingJDBC无复杂框架适合初学者学习、二次开发界面友好标签页分类展示功能操作逻辑清晰上手简单八、项目总结本文具店进销存管理系统完整实现了小微企业进销存核心业务基于原生Java开发轻量化、易部署、易维护。既可以作为Java课程设计、期末大作业、毕业设计入门项目也可以作为小型文具门店简易管理工具使用。项目涵盖GUI界面开发、JDBC数据库操作、数据加密、业务逻辑开发、数据统计查询等核心Java实战知识点非常适合Java初学者巩固Swing可视化开发与数据库交互能力。九、适配场景Java课程设计、实训项目、毕设简易选题小型文具店、文创店、小卖部进销存管理Java Swing MySQL 技术实战练习
延伸阅读

更多相关文章

2026/9/29 6:41:39

MaxFrame Coding Skill:AI代码生成如何革新大数据与AI开发流程

1. 项目概述:当AI开始编写AI代码最近在数据开发圈里,一个话题的热度正在快速攀升:我们是否正在进入一个“AI编写AI代码”的新阶段?这听起来有点像是科幻小说的情节,但MaxFrame Coding Skill的正式发布,让这…

2026/9/27 21:29:29

PyTorch自动求导与梯度下降:深度学习优化的核心原理与实践

1. 从“梯度”说起:为什么它是深度学习的灵魂如果你刚开始接触PyTorch或者深度学习,可能会在各种教程里频繁看到一个词:梯度。它听起来有点数学,有点抽象,但我想用一个最生活化的例子帮你把它“钉”在脑子里。想象一下…

2026/9/26 13:31:22

Skaling Law:模型参数与训练数据的最优配比理论与工程实践

如果你正在训练自己的YOLO模型,或者尝试微调LLaMA等大语言模型,是否曾困惑过:到底应该把有限的资源优先投入到增加模型参数上,还是投入到收集更多训练数据上?这是一个困扰无数开发者和研究者的经典难题。直觉上&#x…

2026/9/30 11:37:56

MAP迈普交换机常用命令与排障指南

简介:面向网络管理员、运维人员及网络基础学习者的迈普MAP交换机常用命令详解文档,系统梳理从用户模式进入特权模式、全局配置模式,到时钟同步、超时设置、主机名修改、配置保存与重启等基础维护操作。针对日常排障,文档还详细展示…

2026/9/30 11:37:56

从传统C++到Unreal C++:宏、GC与类型体系的全面改造

第一次在Unreal工程里打开一个C类的源码,我盯着满屏的UCLASS、UPROPERTY、UFUNCTION看了好一会儿,心里冒出来的第一个念头是:这还是我认识的那个C吗?类文件末尾挂着一个诡异的 #include "XXX.generated.h" &#xff0…

2026/9/30 11:37:56

DeepSeek 万能提问模板:四段式结构、API 参数与本地部署避坑指南

简介:这份PDF面向希望提升DeepSeek使用效率的AI爱好者、开发者与内容创作者,系统整理了六类万能提问模板,帮助读者从背景需求约束、身份任务要求、行动目的效果、需求担忧反向验证、问题追问调整、目标条件验证等角度,与具备推理能…

2026/9/30 11:37:56

OpenWebUI + cpolar 搭建底层可控的本地AI服务底座

开始写这篇博文。内容围绕 OpenWebUI cpolar 搭建本地 AI 服务,强调底层可控的“底座”思路。全程去平台化,资深口吻,并列好编号层级。1. 先把这个组合聊清楚:OpenWebUI 和 cpolar 到底是什么关系最近 OpenWebUI 和 cpolar 这两个…

2026/9/30 11:37:56

Ubuntu Linux安装分区最合理方案:从EFI、swap到home的完整布局指南

简介:这份PDF资料面向Ubuntu Linux初学者与运维人员,针对安装过程中最易出错的硬盘分区环节,系统讲解最合理的分区方案。内容先梳理IDE、SCSI、SATA三类硬盘在Linux中的命名规则,再说明主分区、扩展分区与逻辑分区的数量限制&…

2026/9/30 11:32:55

校园二手交易App开发:Android原生毕设核心流程与工程实践

简介:一份基于Android Studio开发的校园二手交易系统完整App源码,面向毕业设计学生与Android初级开发者,可用于学习完整的移动端业务实现流程。项目以Java为主,辅以XML布局与Gradle构建脚本,zip压缩包共186个文件&…

2026/9/29 11:07:23

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/9/29 21:48:03

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 7:00:49

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/30 0:01:22

MATLAB+Yalmip+CPLEX实战:综合能源系统优化调度全流程解析

做综合能源系统优化调度这活儿,最痛苦的不是建模本身,而是模型写完之后不知道该怎么求解。看论文里轻飘飘一句“采用Yalmip调用CPLEX求解”,自己上手时却往往卡在环境配置、变量声明、约束写法和求解状态判读上,一耗就是两三天。这…

2026/9/30 0:01:22

I3C比I2C快10倍?RK3576实战:速率、DTS配置与混合总线避坑指南

I3C 比 I2C 快 10 倍?这句话在嵌入式群里传了很久,每次都能吵出一堆截图。前段时间我正好在 RK3576 上调板级 I3C 接口,从控制器寄存器一路摸到 Linux DTS 配置,踩了不少坑,也把这笔速度账彻底算明白了。本文就用 RK35…

2026/9/30 0:01:22

字符串转对象:JSON.parse、new Function与URLSearchParams

“字符串转对象”这几个字,我在技术群里见过的问法至少有十几种:有人拿着一串{a:1,b:2}说 JSON.parse 直接报错,有人要从 URL 里抠出参数,还有人只是想把abc变成能挂属性的东西。js 这门语言里,字符串和对象之间的转换…

2026/9/29 3:53:39

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/29 9:46:12

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/30 10:28:53

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑