《2022年2022年进销存管理系统实训报告 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年进销存管理系统实训报告 .pdf(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1 企业进销存管理系统实训报告小组成员:成波、钟秀、马姝婷、邢亚可、龙浩目录一、 系统分析 . 3 (一) 需求概述 . 3 (二) 系统概述 . 4 1 系统功能分析 . 4 (三) 可行性分析 . 5 1 人员角度的可行性 . 5 2 技术角度的可行性 . 5 二、 项目计划书 . 6 (一) 项目背景 . 6 (二) 项目目标 . 6 (三) 项目实现准备阶段 . 6 1 业务逻辑编码规则 . 6 2 业务编码规则 . 11 3 系统 E-R 图 . 11 (四) 项目实现开发阶段 . 13 1 人员分工 . 13 2 模块分工 . 13 (五) 项目测试 . 13 1 单元测试 . 1
2、3 2 系统测试 . 13 三、 系统实施 . 14 (一) 开发环境准备 . 14 (二) 创建数据库连接 . 14 1 软件安装和帐户设定 . 14 2 创建测试数据库和表 . 15 四、 系统总体设计 . 15 (一) 主窗体设计 . 16 1 创建主窗体 . 16 (二) 创建导航面板 . 17 (三) 公共模块设计 . 18 1 编写 Dao 公共类 . 18 2 编写 Item 类 . 19 (四) 基础信息主要功能模块详细设计. 19 1 GysTianJiaPanel类. 20 2 GysXiuGaiPanel类. 21 名师资料总结 - - -精品资料欢迎下载 - - - -
3、 - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 39 页 - - - - - - - - - 2 (五) 进货管理模块设计 . 24 1 进货单 . 25 2 进货退货 . 26 3 技术分析 . 26 4 进货单实现过程 . 27 (六) 库存管理模块设计 . 30 1 库存业务 . 30 (七) 查询统计模块设计 . 33 1 客户信息的查询 . 33 2 商品信息的查询 . 33 3 供应商信息查询 . 34 4 销售信息的查询 . 34 5 销售退货查询 . 35 6 商品入库查询 . 35 (八) 系统设置主要功能模
4、块详细设计. 36 五、 项目发布 . 37 六、 系统测试 . 38 七、 实训总结 . 39 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 39 页 - - - - - - - - - 3 一、系统分析(一)需求概述在目前食材配送过程中,食材的管理至关重要。这里对食材的管理包括进、销、存 3 个方面。可以建立一个进销存管理系统,对企业的管理者、营业员、库存管理员等减轻其工作量,便于经营管理。功能需求:基础信息管理功能模块: 主要负责管理供应商信息、 商品信息以及客户
5、信息。进货管理功能模块:采购计划、采购订单、采购入库、采购退货、应付款、采购付款。销售管理功能模块:、报价单、销售订单、销售出库、销售退货、应收款、销售收款。查询统计功能模块:主要负责统计企业的客户查询、商品查询、供应商查询、销售查询、销售退货查询、商品出入库情况以及销售排行查询。库存管理功能模块:其它入库、其它出库、库存警报、库存报表、基本资料设计。系统管理,主要负责管理用户信息和用户登录,以及初期建账。食材配送公司需要处理大量的库存信息,还要时刻更新产品的销售信息,不断添加商品信息。 面对不同种类的信息, 需要合理的数据库结构来保存数据信息,需要有效的程序结构支持各种数据操作的执行。它最主
6、要的特点是能够实时的和准确的控制店内的销售情况。如果可以能够实时掌握销售流程及销售情况,则可以有效地加速商品的周转率并提高服务质量,而且可以减少产品售价不符等所产生的问题。顾客的消费要求的是希望能及时采购到所需的新鲜的食材,并且还要保证在食材配送过程中提供优质、方便的服务。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 39 页 - - - - - - - - - 4 (二)系统概述本系统的开发适用于多个行业,可以帮助企业快速有效管理进货、销售、库存、查询统计等各项业务,
7、合理控制进销存各个环节,提高资金利用率,实现管理高效率和实时性。本系统是根据人们在日常生活中的实际需求而开发的,完全能够实现人们对商品的基础信息管理、进货管理、销售管理、查询统计、库存管理、系统管理等功能,一般而言,通过使用进销存管理系统,可以在以下几方面提高企业的管理水平:1)更好地了解供应商和客户信息,加强对商品资料的管理。2)降低采购成本,及时了解采购情况。3)准确了解销售动态,及时调整营销策略。4)了解库存情况,及时进行价格管理以及库存数量维护。5)减少储备资金占用,加速资金周转,提高资金利用率。6)提供商业数据智能分析 , 了解商业动态,为管理者提供决策依据。1系统功能分析系统功能结
8、构图如下:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 39 页 - - - - - - - - - 5 (三)可行性分析1人员角度的可行性鉴于本组人员实力薄弱,无系统开发技术基础,我们决定根据老师提供的文件资料作为项目实施的参考依据,通过项目实训来锻炼我们的动手能力、实际操作能力。评价尺度:以能参照资料制作出完成的进销存管理系统为标准。2技术角度的可行性本系统采用 Java Swing+SQL server 2005实现。使用集成开发工具MyEclipse 8.5 进
9、行开发。从前人的开发经验来看,小组采用的进销存管理系统应用软件的开发手段是完全可行的。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 39 页 - - - - - - - - - 6 二、项目计划书(一)项目背景通过项目模拟实训来锻炼同学们的动手能力,为将来毕业求职实习、考研做准备。(二)项目目标1)界面简洁友好,操作简单。2)系统功能包括基础信息、 进货管理、销售管理、 库存管理、查询统计、系统管理 6 个部分。3)文档结构清晰, 包括(项目需求分析、 项目开发过程、
10、项目技术说明、项目功能实现、项目测试结果等)4)小组成员都应参与到整个项目的实现过程中来,对每个环节都应该有所了解,掌握整个项目开发的每一个细节,成员之间要多沟通,工作上要协调配合好。(三)项目实现准备阶段1业务逻辑编码规则1)数据库名称统一为: db_JXC(进销存管理系统数据库 ) 2)数据表统一 tb 开头,如:tb_sell_main(销售主表 ) ,tb_sell_detail(销售明细表 )。字段名(一律采用英文单词,不知道的在线翻译一下),如:ID(流水号), Name( 名称),ProductInfo(商品信息 )。名师资料总结 - - -精品资料欢迎下载 - - - - -
11、- - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 39 页 - - - - - - - - - 7 3)tb_spinfo(商品信息表 )。商品信息表主要是用来保存商品的名称、产地等基本信息。表结构如下图所示:4)tb_khinfo (客户信息表)。客户信息表主要保存客户的姓名、地址、联系方式等基本信息等。表结构如下图所示:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 39 页 - - - - - - - -
12、- 8 5)tb_gysinfo (供应商信息表)。供应商信息表主要保存供应商的名称、地址等供应商的基本信息。表结构如下图所示:6)tb_kucun (库存管理表)。库存管理表中主要保存着每一件商品的单价、在仓库中的存储数量、一共的金额等信息。表结构如下图所示:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 39 页 - - - - - - - - - 9 7)tb_ruku_main (入库主表)和 tb_ruku_detail(入库明细表)。入库表中主要保存的是商品入
13、库之后的基本信息如商品名称、产地、 金额等信息。表结构职下图所示:8)tb_rkth_main (入库退货主表)和tb_ruku_detail(入库退货明细表)。入库退货表中主要保存的是入库之后的退货信息,信息内容基本与入库表相同。表结构如下图所示:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 39 页 - - - - - - - - - 10 9)tb_sell_main(销售主表)和 tb_sell_detail(销售明细表)。销售表主要保存销售情况的信息, 并且添
14、加了销售日期等信息。 表结构如下图所示:10) tb_xsth_main (销售退货表)和tb_xsth_detail(销售退货明细表)。销售退货表主要是用来保存在销售出的商品产生退货情况的基本信息。表结构如下图所示:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 39 页 - - - - - - - - - 11 2业务编码规则1)供应商编号(如 gys1000,gys1001)2)客户编号(如 kh1000,kh1001,kh1002 )3)商品编号(如 sp204
15、5,sp2046,sp2047 )4)销售单编号( XS+ 日期+编号,如 XS20150509001 )5)入库编号( RK+ 日期+编号,如 RK20150511003 )6)入库退货编号( RT+ 日期+编号,如 RT20150512004 )3系统 E-R 图1)客户实体 E-R图,包括客户编号、客户名称、简称、地址、电话、邮政编码、联系人、联系人电话、传真、开户行和账号等属性。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 39 页 - - - - - - -
16、 - - 12 2)供应商 E-R图,包括编号、名称、简称、地址、电话、邮政编码、传真、联系人、联系电话、开户行和E-mail 等属性。3)商品实体 E-R图,包括编号、商品名称、商品简称、产地、单位、规格、包装、生产日期、保质期、商品简介和供应商等属性。4)使用 PowerDesigner 建模进行数据库设计。具体请参照JAVA项目开发全程实录 1.4.3 章。并用 SQL server 2005 创建数据库。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 39 页
17、- - - - - - - - - 13 (四)项目实现开发阶段1人员分工1)龙浩:美工设计、主窗体设计、公共模块设计2)钟秀:进货管理模块设计、销售管理模块设计3)邢亚可:查询统计模块设计、库存管理模块设计、系统数据库设4)马姝婷:项目进度安排、基础信息模块设计、系统功能设计5)成波:系统需求分析、系统项目说明书、系统测试2模块分工1)主窗体设计。代码参照JAVA项目开发全程实录1.5 章。2)公共模块设计。代码参照JAVA项目开发全程实录1.6 章。3)基础信息模块。代码参照JAVA项目开发全程实录1.7 章。4)进货管理模块。代码参照JAVA项目开发全程实录1.8 章。5)销售管理模块。
18、无参考代码,自行开发。6)库存管理模块。代码参照JAVA项目开发全程实录1.10 章。7)查询统计模块。代码参照JAVA项目开发全程实录1.9 章。8)系统管理模块。无参照代码,自行开发。(五)项目测试1单元测试每个模块开发时进行单元测试。2系统测试开发后进行系统测试,并编写系统测试报告。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 39 页 - - - - - - - - - 14 三、系统实施(一)开发环境准备安装 SQL server 2005和 myeclip
19、se8.5 。(二)创建数据库连接1软件安装和帐户设定1-1:安装“MS Sql Server 2005(SP2 )”(内置帐户选择 sa,密码设为 123;如果没有设置内置帐户sa 的话,请直接使用 WinNT登录“SQL Server Management Studio ”,选择安全性登录名 sa登录属性,然后设置密码123,关闭“ SQL Server Management Studio ”)1-2:安装“ MyEclipse 5.5.1 GA”1-3:下载连接驱动包“ sqljdbc.jar”1-4: 设置 SQL Server 服务器:a.“开始”“程序”“Microsoft SQL
20、 Server 2005”“配置工具”“SQL Server Configuration Manager” (确认“SQL Server Management Studio ”已关闭)b.“SQL Server 2005服务”中停止服务“ SQL Server (SQLEXPRESS)”(默认是启动状态)c.“SQL Server 2005网络配置” “MSSQLSERVER的协议”,启动“TCP/IP”(默认是禁用状态),然后双击“TCP/IP”进入属性设置,在“ IP 地址”里,确认“ IPAll ”中的“ TCP端口”为 1433 d.“SQL Server 2005 服务”中启动服务“
21、 SQL Server(MSSQLSERVER)”(默认是停止状态)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 39 页 - - - - - - - - - 15 e.关闭“SQL Server Configuration Manager ”(此时可以启动“ SQL Server Management Studio ”,并用帐户 sa、密码 123 登录, SQL Server 服务器设置正确的话应该能登录成功)2创建测试数据库和表2-1:启动“ SQL Serve
22、r Management Studio ”,并用帐户 sa、密码 123登录 (SQL Server 服务器设置正确的话应该能登录成功), 创建一个数据库 JSPTest,内建一个表 regist 2-2:创建测试的 Java 工程和代码2-3:启动“MyEclipse ” “File ” “New ” “Project ” “Java Project ”,命名为 Test 2-4:打开 Test 的“Properties”“ Java Build Path”“ Libraries”“Add External JARs ”,选择下载好的连接驱动包“sqljdbc.jar”,然后点击“OK ”确
23、定2-5:SQL Server 2005 中加载驱动和 URL的语句为:protected static String dbClassName= com.microsoft.sqlserver.jdbc.SQLServerDriver; protected static String dbUrl=jdbc:sqlserver:/localhost:1433;DatabaseName=db_JXC; protected static String dbUser=sa; protected static String dbPwd=123; 四、系统总体设计名师资料总结 - - -精品资料欢迎下载
24、- - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 39 页 - - - - - - - - - 16 (一)主窗体设计主窗体是系统的欢迎界面。用程序的主窗体包括系统菜单和工具栏,其中系统菜单是包含系统中所有功能的菜单项,工具栏是提供常用的功能的快捷访问按钮。(该系统采用了导航面板综合了系统菜单和工具栏的优点,导航面板的界面更美观,操作更快捷。)1创建主窗体1)创建 JXCFrame类,在类中创建和初始化窗体对象,为窗体添加桌面面板,并且设置背景图片。Frame=new JFrame(“企业进销存管理系统” ) ;
25、/ 创建窗体对象desktopPanel=new JDeskPanel();/创建桌面面板JTabbedPane navigationPanel=createNavigationPanel();/创建导航面板名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 39 页 - - - - - - - - - 17 2)编写 updateBackImage() 方法,初始化背景标签,背景标签使用HTML 超文本语言设置了主窗体的背景图片(该图片会随着主窗体的大小自动缩放)。3)在
26、类的静态代码中设置了系统的外观样式。使用了UIManager类的setLookAndFeel() 方法设置程序界面使用本地外观。4)编写主窗体的 mian() 入口方法,创建登录窗体对象(登录窗体会验证登录信息,并显示主窗体界面)(二)创建导航面板1)在 JXCFrame类中编写 createNavigationPanel()方法,创建 JTabbePanel选项卡面板对象。(为了突出选项卡的立体效果,设置该选项卡使用了BevelBorder 边框效果。)然后依次创建了基础信息管理面板、库存管理面板、销售管理面板、查询统计面板、进货管理面板和系统管理面板的选项卡。JTabbedPane tab
27、bedPane=new JTabbedPane();/ 创建 JTabbePanel 选项卡面板对象JPanel baseManagePanel=new JPanel();/基础信息管理面板JPanel depotManagePanel=new JPanel();/库存管理面板JPanel sellManagePanel=new JPanel();/销售管理面板JPanel searchStatisticPanel=new JPanel();/查询统计面板JPanel stockManagePanel=new JPanel();/进货管理面板JPanel sysManagePanel=new
28、JPanel();/管理系统面板2)编写 createFrameButton()方法,该方法负责创建Action 对象,该对象是用来创建并显示窗体对象,(图标、文本等属性),本系统没有使用系统菜单,所以该方法直接创建按钮对象。Icon icon=new ImageIcon(imgUrl);/创建按钮图标Icon_roll=new ImageIcon(imgUrl_roll);/创建鼠标经过按钮的图标名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 39 页 - - - -
29、 - - - - - 18 Icon_down=new ImageIcon(imgUrl_down);/创建按钮按下的图标Action action=new openFrameAction(fName,cname,icon);/用openFrameAction 类创建 Actio 对象3)编写内部类 openFrameAction, 它必须要继承 AbstraAction类实现 Action接口。该类用于创建导航按钮的Ation 对象,并且为每一个导航按钮定义创建不同窗体对象的动作监听器,当这个监听器的按钮被按下时,调用getFrame() 方法获取相应的窗体对象,并显示在主窗体中。4)编写
30、getIFrame() 方法。该方法就是用来创建指定名称的窗体对象,使用了 java 反射技术,调用不同窗体类的默认构造方法创建窗体对象。(三)公共模块设计1编写 Dao 公共类1)Dao类主要负责有关数据库的操作,该类在静态代码段中驱动并连接数据库,然后将所有的数据库访问方法定义为静态的。Class.forName(dbClassName).newInstance();/加载数据库驱动类conn=DriverManager.getConnection(dbUrl,dbUser,dbPwd);/获取数据库连接2)addGys() 方法(添加供应商信息的方法)该方法用于添加供应商的基础信息,它接
31、收供应商的实体类TbGysinfo 作方法的参数,然后把实体对象中的所有属性存入供应商数据表中。3)getGysinfo()方法(读取指定供应商的信息)该方法将根据 Item 对象中封装的供应商ID 编号和供应商名称获取供应商的数据,然后将该供应商的数据封装到实体对象中,然后返回该实体对象。4) updateGys() 方法(修改供应商信息的方法)该方法用于更新供应商的基础信息,它接收供应商的实体类TbGysinfo 作方法参数,在方法中直接解析供应商实体对象中的属性,并且将这些属性更新到数据表中。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - -
32、 - - - - 名师精心整理 - - - - - - - 第 18 页,共 39 页 - - - - - - - - - 19 5)insertRukuInfo()方法该方法负责完成入库单信息的添加,(库存表、入库主表、入库详细表等多个数据表的操作)。为了保证数据的完整性,该方法将入库信息的添加操作放在事务中完成, 方法将接收入库主表的实体类TbRukuMain作为参数,该实体类中包含了入库详细表的引用。6)getKucun() 方法该方法用于获取指定商品ID 编号或者名称的库存信息,方法接收一个Item对象作参数, 该对象中封装了商品的ID 编号和商品的名称信息, 如果库存表中存在该商品的
33、库存记录,就获取该记录并将记录中的数据封装到库存表的实体对象中,然后将该实体对象作为方法的返回值。2编写 Item 类Item 类主要用于封装和传递参数信息,这是典型命令模式的实现。在 Dao类中经常使用该类作为方法参数;在各个窗体界面中也经常使用该类作组件数据,其 toString()方法将返回 name属性值,所以显示到各个组件上的内容是 Item 类的对象所代表的商品、供应商、或者客户等信息的名称。(四)基础信息主要功能模块详细设计基础信息管理模块的有三个功能:客户信息管理、商品信息管理和供应商信息管理。其中客户信息管理所使用的的数据表是tb_khinfo ,其功能类包括KeHuTian
34、JiaPanel 类和 KeHuXiuGaiPanel 类;商品信息管理所使用的数据表是tb_spinfo , 其功能类包括 ShangPinTianJiaPanel类和 ShangPinXiuGaiPanel 类;供应商信息管理所使用的数据表是tb_gysinfo ,其功能类包括GysTianJiaPanel类和 GysXiuGaiPanel 类。整个基础信息管理模块的技术分析以供应商信息管理面板为例,下面简单介绍一下供应商信息管理的添加、修改和删除的实现过程。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 -
35、- - - - - - 第 19 页,共 39 页 - - - - - - - - - 20 1GysTianJiaPanel类该类用于实现系统供应商添加功能,实现在界面将显示多个用于输入供应商信息的文本框。界面中主要包括以下控件:控件类型控件名称主要属性用途JtextField quanChengF 无供应商全称JianChengF 无简称BianMaF 无邮政编码DiZhiF 无地址DianHuaF 无电话ChuangZhenF 无传真LianXiRenF 无联系人lianXiRenDianHuaF 无联系人电话YinHangF 无银行EmailF 无邮箱Jbutton TjButton
36、设置按钮文本为“添加”设置动作监听器为TjActionListener类的实例对象添加ResetButton 设置按钮文本为“重填”设置动作监听器为ResetActionListener类的实例对象重填要点介绍:1)ResetActionListener类。作为“重填”按钮的事件监听器。该类必须实现 ActionListener接口,并在 actionPerformed ()方法中清除界面中的所有文本框内容。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 39 页 -
37、- - - - - - - - 21 代码如下:2)TjActionListener类。作为“添加”按钮的事件监听器。该类必须实现ActionListener接口,并在 actionPerformed ()方法中实现用户输入的验证和供应商信息的保存。代码如下:2GysXiuGaiPanel类该类主要实现供应商修改和删除的功能。在该界面中有许多文本框用于输入供应商信息,这些文本框会根据所选供应商自动填充内容,点击修改按钮后回自动写入修改后的供应商内容。控件类型控件名称主要属性用途JtextFielquanChengF 无供应商全称名师资料总结 - - -精品资料欢迎下载 - - - - - -
38、- - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 39 页 - - - - - - - - - 22 d JianChengF 无简称BianMaF 无邮政编码DiZhiF 无地址DianHuaF 无电话ChuangZhenF 无传真LianXiRenF 无联系人lianXiRenDianHuaF 无联系人电话YinHangF 无银行EmailF 无邮箱JComboBox Gys 设置初始大小为( 230,21)调用 initComboBox() 方法初始化下拉列表设置组件选择事件调用doGysSelectAction()方法选择供应商
39、Jbutton tjjButton 设置按钮文本为“修改”设置动作监听器为ModifyActionListener类的实例对象修改resetButton 设置按钮文本为“删除”设置动作监听器为DeltActionListener类的实例对象删除要点介绍:1)initComboBox() 方法。用于初始化选择供应商的下拉列表框。该方法先获取 Dao类中的 getGysInfos()方法,然后再将获取到的信息封装成Item名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 22 页,共 39
40、 页 - - - - - - - - - 23 对象并添加到下拉列表框中(主要是获取ID 和供应商名称)。然后再下拉列表框的 Item 对象中用 toString()方法显示供应商名称。代码:2)doGysSelectAction()方法。在使用下拉列表框时选择或更改供应商信息的时候被调用。 主要根据选择的供应商名称, 填充相应的供应商信息到文本框中。代码如下:3)ModifyActionListener类。修改按钮的事件监听器。必须实现ActionListener接口,并在 actionPerformed ()方法中获取文本框内容,并可以将修改后的供应商信息,通过调用Dao类的 update
41、Gys()方法,把修改后的信息写入到数据库。代码:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 23 页,共 39 页 - - - - - - - - - 24 4)DeltActionListener类。删除按钮的事件监听器。必须实现ActionListener接口,并在 actionPerformed ()方法中获取文本框内容,通过调用 Dao类中的 delete ()实现把供应商信息从后台数据库删除。代码:(五)进货管理模块设计企业进销存管理系统中的进货模块管理主要包括进货单
42、和进货退货两个部分。由于它们的实现方法相似,这里主要以进货单功能为主,介绍进货模块对本系统的意义和实现的业务逻辑。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 24 页,共 39 页 - - - - - - - - - 25 1进货单主要负责记录企业的商品进货信息,可以单击“添加”按钮,在商品表中添加进货的商品信息。在“供应商”下拉列表框中选择不同的供应商,将会改变商品中可以添加的商品。进货单的程序界面如下图:名师资料总结 - - -精品资料欢迎下载 - - - - - - - -
43、 - - - - - - - - - - 名师精心整理 - - - - - - - 第 25 页,共 39 页 - - - - - - - - - 26 2进货退货进货退货功能主要负责记录进货管理中的退货信息,界面效果如下图。在选择了退货的商品之后,单价“退货”,将把表格中商品退货信息更新到数据库中。3技术分析进货管理模块使用JDBC实现事务操作,因为进货和退货的业务逻辑涉及到3个数据表,为保证数据的完整性,将3 个数据表的操作放在事务中实现,如果对任何一个数据表的操作出现错误或是不可执行的操作,那么事务中的所有操作都将取消,并恢复到事务执行的数据状态;否则3 个数据表的操作全部执行。下面是
44、JDBC事务操作的关键方法。1)setAutoCommit()方法该方法用于连接对象的自动提交模式。如果连接处对象的自动提交模式为true ,则它的所有 SQL语句被执行作为单个事务提交;否则,该连接对象的SQL语句将聚集到事务中,直到调用commit()方法或 rollback ()方法为止。默认情况下,新连接的自动提交模式为true 。语句:Void setAutoCommit (boolean autoCommit )autoCommit:该参数为 true 表示启用连接对象的自动提交模式:false表示禁用链接对象的自动提交模式。名师资料总结 - - -精品资料欢迎下载 - - - -
45、 - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 26 页,共 39 页 - - - - - - - - - 27 getAutoCommit()判断此连接对象是否启用了自动提交模式。语法:Boolean getAutoCommit ()2)commit()方法该方法将执行提交SQL语句执行数据库操作,并释放此连接对象当前持有的所有数据库锁。此方法只在禁用自动提交模式情况下使用。语法:Void commit ()3)rollback()方法该方法将取消在事务中进行的所有更改,并释放此连接对象当前持有的所有数据库锁。此方法只在禁止自动提交模式
46、情况下使用。语法:Void rollback()4进货单实现过程创建 jinhuodan类,用于实现本系统的进货单功能的界面和业务逻辑。界面中定义的主要控件如表:进货单界面中的主要控件名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 27 页,共 39 页 - - - - - - - - - 28 1)编写 inittable()方法,该方法用于初始化食品表格的表头,列编辑器等。设置表格中第一个列的编辑器使用下拉列表框样式的编辑器,通过编辑器选择商品的名称,其他的商品信息将自动填充,代
47、码如下:private void initTable() StringcolumnNames=商品名称 , 商品编号 , 产地, 单位, 规格,包装, 单价, 数量, 批号, 批准文号 ; (DefaultTableModel)table.getModel() .setColumnIdentifiers(columnNames); TableColumn column=table.getColumnModel().getColumn(0); final DefaultCellEditor editor=new DefaultCellEditor(sp); editor.setClickCoun
48、tToStart(2); column.setCellEditor(editor); 2)编写 initSpBox ()方法,该方法用于初始化表格中的商品下拉表框。它首先调用 Dao类的 query()方法获取指定供应商所提供的所有商品信息,然后将这些商品信息封装成商品对象,并把这些对象添加到商品下拉框中。代码如:private void initSpBox() List list=new ArrayList(); ResultSet set=Dao.query(select*from tb_spinfo where gysName= +gys.getSelectedItem()+); sp.
49、removeAllItems(); sp.addItem(new TbSpinfo(); for(int i=0;table!=null&itable.getRowCount();i+) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 28 页,共 39 页 - - - - - - - - - 29 TbSpinfo tmpInfo=(TbSpinfo)table.getValueAt(i,0); if(tmpInfo!=null&tmpInfo.getId()!=null) lis
50、t.add(tmpInfo.getId(); try while(set.next() TbSpinfo spinfo=new TbSpinfo(); spinfo.setId(set.getString(id).trim(); / 如果表格中以存在同样商品,商品下拉框中就不再包含该商品if(list.contains(spinfo.getId() continue; spinfo.setSpname(set.getString(spname).trim(); spinfo.setCd(set.getString(cd).trim(); spinfo.setJc(set.getString(j