1、内容为网络收集 仅供参考企业进销存管理系统实训报告小组成员:成波、钟秀、马姝婷、邢亚可、龙浩目录一、 系统分析3(一) 需求概述3(二) 系统概述41 系统功能分析4(三) 可行性分析51 人员角度的可行性52 技术角度的可行性5二、 项目计划书6(一) 项目背景6(二) 项目目标6(三) 项目实现准备阶段61 业务逻辑编码规则62 业务编码规则113 系统E-R图11(四) 项目实现开发阶段131 人员分工132 模块分工13(五) 项目测试131 单元测试132 系统测试13三、 系统实施14(一) 开发环境准备14(二) 创建数据库连接141 软件安装和帐户设定142 创建测试数据库和表
2、15四、 系统总体设计15(一) 主窗体设计161 创建主窗体16(二) 创建导航面板17(三) 公共模块设计181 编写Dao公共类182 编写Item类19(四) 基础信息主要功能模块详细设计191 GysTianJiaPanel类202 GysXiuGaiPanel类21(五) 进货管理模块设计241 进货单252 进货退货263 技术分析264 进货单实现过程27(六) 库存管理模块设计301 库存业务30(七) 查询统计模块设计331 客户信息的查询332 商品信息的查询333 供应商信息查询344 销售信息的查询345 销售退货查询356 商品入库查询35(八) 系统设置主要功能模
3、块详细设计36五、 项目发布37六、 系统测试38七、 实训总结39内容为网络收集 仅供参考一、 系统分析(一) 需求概述在目前食材配送过程中,食材的管理至关重要。这里对食材的管理包括进、销、存3个方面。可以建立一个进销存管理系统,对企业的管理者、营业员、库存管理员等减轻其工作量,便于经营管理。功能需求:基础信息管理功能模块:主要负责管理供应商信息、商品信息以及客户信息。进货管理功能模块:采购计划、采购订单、采购入库、采购退货、应付款、采购付款。销售管理功能模块:、报价单、销售订单、销售出库、销售退货、应收款、销售收款。查询统计功能模块:主要负责统计企业的客户查询、商品查询、供应商查询、销售查
4、询、销售退货查询、商品出入库情况以及销售排行查询。库存管理功能模块:其它入库、其它出库、库存警报、库存报表、基本资料设计。系统管理,主要负责管理用户信息和用户登录,以及初期建账。食材配送公司需要处理大量的库存信息,还要时刻更新产品的销售信息,不断添加商品信息。面对不同种类的信息,需要合理的数据库结构来保存数据信息,需要有效的程序结构支持各种数据操作的执行。它最主要的特点是能够实时的和准确的控制店内的销售情况。如果可以能够实时掌握销售流程及销售情况,则可以有效地加速商品的周转率并提高服务质量,而且可以减少产品售价不符等所产生的问题。顾客的消费要求的是希望能及时采购到所需的新鲜的食材,并且还要保证
5、在食材配送过程中提供优质、方便的服务。(二) 系统概述本系统的开发适用于多个行业,可以帮助企业快速有效管理进货、销售、库存、查询统计等各项业务,合理控制进销存各个环节,提高资金利用率,实现管理高效率和实时性。本系统是根据人们在日常生活中的实际需求而开发的,完全能够实现人们对商品的基础信息管理、进货管理、销售管理、查询统计、库存管理、系统管理等功能,一般而言,通过使用进销存管理系统,可以在以下几方面提高企业的管理水平:1) 更好地了解供应商和客户信息,加强对商品资料的管理。2) 降低采购成本,及时了解采购情况。3) 准确了解销售动态,及时调整营销策略。4) 了解库存情况,及时进行价格管理以及库存
6、数量维护。5) 减少储备资金占用,加速资金周转,提高资金利用率。6) 提供商业数据智能分析,了解商业动态,为管理者提供决策依据。1 系统功能分析系统功能结构图如下:(三) 可行性分析1 人员角度的可行性鉴于本组人员实力薄弱,无系统开发技术基础,我们决定根据老师提供的文件资料作为项目实施的参考依据,通过项目实训来锻炼我们的动手能力、实际操作能力。评价尺度:以能参照资料制作出完成的进销存管理系统为标准。2 技术角度的可行性本系统采用Java Swing+SQL server 2005实现。使用集成开发工具MyEclipse 8.5进行开发。从前人的开发经验来看,小组采用的进销存管理系统应用软件的开
7、发手段是完全可行的。二、 项目计划书(一) 项目背景通过项目模拟实训来锻炼同学们的动手能力,为将来毕业求职实习、考研做准备。(二) 项目目标1) 界面简洁友好,操作简单。2) 系统功能包括基础信息、进货管理、销售管理、库存管理、查询统计、系统管理6个部分。3) 文档结构清晰,包括(项目需求分析、项目开发过程、项目技术说明、项目功能实现、项目测试结果等)4) 小组成员都应参与到整个项目的实现过程中来,对每个环节都应该有所了解,掌握整个项目开发的每一个细节,成员之间要多沟通,工作上要协调配合好。(三) 项目实现准备阶段1 业务逻辑编码规则1) 数据库名称统一为:db_JXC(进销存管理系统数据库)
8、2) 数据表统一tb开头,如:tb_sell_main(销售主表),tb_sell_detail(销售明细表)。字段名(一律采用英文单词,不知道的在线翻译一下),如:ID(流水号),Name(名称),ProductInfo(商品信息)。3) tb_spinfo(商品信息表)。商品信息表主要是用来保存商品的名称、产地等基本信息。表结构如下图所示:4) tb_khinfo(客户信息表)。客户信息表主要保存客户的姓名、地址、联系方式等基本信息等。表结构如下图所示:5) tb_gysinfo(供应商信息表)。供应商信息表主要保存供应商的名称、地址等供应商的基本信息。表结构如下图所示:6) tb_kuc
9、un(库存管理表)。库存管理表中主要保存着每一件商品的单价、在仓库中的存储数量、一共的金额等信息。表结构如下图所示:7) tb_ruku_main(入库主表)和tb_ruku_detail(入库明细表)。入库表中主要保存的是商品入库之后的基本信息如商品名称、产地、金额等信息。表结构职下图所示:8) tb_rkth_main(入库退货主表)和tb_ruku_detail(入库退货明细表)。入库退货表中主要保存的是入库之后的退货信息,信息内容基本与入库表相同。表结构如下图所示:9) tb_sell_main(销售主表)和tb_sell_detail(销售明细表)。销售表主要保存销售情况的信息,并且
10、添加了销售日期等信息。表结构如下图所示:10) tb_xsth_main(销售退货表)和tb_xsth_detail(销售退货明细表)。销售退货表主要是用来保存在销售出的商品产生退货情况的基本信息。表结构如下图所示:2 业务编码规则1) 供应商编号(如gys1000,gys1001)2) 客户编号(如kh1000,kh1001,kh1002)3) 商品编号(如sp2045,sp2046,sp2047)4) 销售单编号(XS+日期+编号,如XS20150509001)5) 入库编号(RK+日期+编号,如RK20150511003)6) 入库退货编号(RT+日期+编号,如RT20150512004
11、)3 系统E-R图1) 客户实体E-R图,包括客户编号、客户名称、简称、地址、电话、邮政编码、联系人、联系人电话、传真、开户行和账号等属性。2) 供应商E-R图,包括编号、名称、简称、地址、电话、邮政编码、传真、联系人、联系电话、开户行和E-mail等属性。3) 商品实体E-R图,包括编号、商品名称、商品简称、产地、单位、规格、包装、生产日期、保质期、商品简介和供应商等属性。4) 使用PowerDesigner建模进行数据库设计。具体请参照JAVA项目开发全程实录1.4.3章。并用SQL server 2005创建数据库。(四) 项目实现开发阶段1 人员分工1) 龙浩:美工设计、主窗体设计、公
12、共模块设计2) 钟秀:进货管理模块设计、销售管理模块设计3) 邢亚可:查询统计模块设计、库存管理模块设计、系统数据库设4) 马姝婷:项目进度安排、基础信息模块设计、系统功能设计5) 成波:系统需求分析、系统项目说明书、系统测试2 模块分工1) 主窗体设计。代码参照JAVA项目开发全程实录1.5章。2) 公共模块设计。代码参照JAVA项目开发全程实录1.6章。3) 基础信息模块。代码参照JAVA项目开发全程实录1.7章。4) 进货管理模块。代码参照JAVA项目开发全程实录1.8章。5) 销售管理模块。无参考代码,自行开发。6) 库存管理模块。代码参照JAVA项目开发全程实录1.10章。7) 查询
13、统计模块。代码参照JAVA项目开发全程实录1.9章。8) 系统管理模块。无参照代码,自行开发。(五) 项目测试1 单元测试每个模块开发时进行单元测试。2 系统测试开发后进行系统测试,并编写系统测试报告。三、 系统实施(一) 开发环境准备安装SQL server 2005和myeclipse8.5。(二) 创建数据库连接1 软件安装和帐户设定1-1:安装“MS Sql Server 2005(SP2)”(内置帐户选择sa,密码设为123;如果没有设置内置帐户sa的话,请直接使用WinNT登录“SQL Server Management Studio”,选择安全性登录名sa登录属性,然后设置密码1
14、23,关闭“SQL Server Management Studio”)1-2:安装“MyEclipse 5.5.1 GA”1-3:下载连接驱动包“sqljdbc.jar”1-4:设置SQL Server服务器:a. “开始”“程序”“Microsoft SQL Server 2005”“配置工具”“SQL Server Configuration Manager”(确认“SQL Server Management Studio”已关闭)b. “SQL Server 2005服务”中停止服务“SQL Server(SQLEXPRESS)”(默认是启动状态)c. “SQL Server 2005
15、网络配置”“MSSQLSERVER的协议”,启动“TCP/IP”(默认是禁用状态),然后双击“TCP/IP”进入属性设置,在“IP地址”里,确认“IPAll”中的“TCP端口”为1433d. “SQL Server 2005服务”中启动服务“SQL Server(MSSQLSERVER)”(默认是停止状态)e. 关闭“SQL Server Configuration Manager”(此时可以启动“SQL Server Management Studio”,并用帐户sa、密码123登录,SQL Server服务器设置正确的话应该能登录成功)2 创建测试数据库和表2-1:启动“SQL Serve
16、r Management Studio”,并用帐户sa、密码123登录(SQL Server服务器设置正确的话应该能登录成功),创建一个数据库JSPTest,内建一个表regist2-2:创建测试的Java工程和代码2-3:启动“MyEclipse”“File”“New”“Project”“Java Project”,命名为Test2-4:打开Test的“Properties”“Java Build Path”“Libraries”“Add External JARs”,选择下载好的连接驱动包“sqljdbc.jar”,然后点击“OK”确定2-5:SQL Server 2005中加载驱动和UR
17、L的语句为: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;四、 系统总体设计(一) 主窗体设计主窗体是系统的欢迎界面。用程序的主窗体包括系统菜单和工具栏,其中系统菜单是包含系统中所有功能
18、的菜单项,工具栏是提供常用的功能的快捷访问按钮。(该系统采用了导航面板综合了系统菜单和工具栏的优点,导航面板的界面更美观,操作更快捷。)1 创建主窗体1) 创建JXCFrame类,在类中创建和初始化窗体对象,为窗体添加桌面面板,并且设置背景图片。Frame=new JFrame(“企业进销存管理系统”);/创建窗体对象desktopPanel=new JDeskPanel();/创建桌面面板JTabbedPane navigationPanel=createNavigationPanel();/创建导航面板2) 编写updateBackImage()方法,初始化背景标签,背景标签使用HTML超
19、文本语言设置了主窗体的背景图片(该图片会随着主窗体的大小自动缩放)。3) 在类的静态代码中设置了系统的外观样式。使用了UIManager类的setLookAndFeel()方法设置程序界面使用本地外观。4) 编写主窗体的mian()入口方法,创建登录窗体对象(登录窗体会验证登录信息,并显示主窗体界面)(二) 创建导航面板1) 在JXCFrame类中编写createNavigationPanel()方法,创建JTabbePanel选项卡面板对象。(为了突出选项卡的立体效果,设置该选项卡使用了BevelBorder边框效果。)然后依次创建了基础信息管理面板、库存管理面板、销售管理面板、查询统计面板
20、、进货管理面板和系统管理面板的选项卡。JTabbedPane tabbedPane=new JTabbedPane();/创建JTabbePanel选项卡面板对象JPanel baseManagePanel=new JPanel();/基础信息管理面板JPanel depotManagePanel=new JPanel();/库存管理面板JPanel sellManagePanel=new JPanel();/销售管理面板JPanel searchStatisticPanel=new JPanel();/查询统计面板JPanel stockManagePanel=new JPanel();/进
21、货管理面板JPanel sysManagePanel=new JPanel();/管理系统面板2) 编写createFrameButton()方法,该方法负责创建Action对象,该对象是用来创建并显示窗体对象,(图标、文本等属性),本系统没有使用系统菜单,所以该方法直接创建按钮对象。Icon icon=new ImageIcon(imgUrl);/创建按钮图标Icon_roll=new ImageIcon(imgUrl_roll);/创建鼠标经过按钮的图标Icon_down=new ImageIcon(imgUrl_down);/创建按钮按下的图标Action action=new open
22、FrameAction(fName,cname,icon);/用openFrameAction类创建Actio对象3) 编写内部类openFrameAction,它必须要继承AbstraAction类实现Action接口。该类用于创建导航按钮的Ation对象,并且为每一个导航按钮定义创建不同窗体对象的动作监听器,当这个监听器的按钮被按下时,调用getFrame()方法获取相应的窗体对象,并显示在主窗体中。4) 编写getIFrame()方法。该方法就是用来创建指定名称的窗体对象,使用了java反射技术,调用不同窗体类的默认构造方法创建窗体对象。(三) 公共模块设计1 编写Dao公共类1) Da
23、o类主要负责有关数据库的操作,该类在静态代码段中驱动并连接数据库,然后将所有的数据库访问方法定义为静态的。Class.forName(dbClassName).newInstance();/加载数据库驱动类conn=DriverManager.getConnection(dbUrl,dbUser,dbPwd);/获取数据库连接2) addGys()方法(添加供应商信息的方法)该方法用于添加供应商的基础信息,它接收供应商的实体类TbGysinfo作方法的参数,然后把实体对象中的所有属性存入供应商数据表中。3) getGysinfo()方法(读取指定供应商的信息)该方法将根据Item对象中封装的供
24、应商ID编号和供应商名称获取供应商的数据,然后将该供应商的数据封装到实体对象中,然后返回该实体对象。4) updateGys()方法(修改供应商信息的方法)该方法用于更新供应商的基础信息,它接收供应商的实体类TbGysinfo作方法参数,在方法中直接解析供应商实体对象中的属性,并且将这些属性更新到数据表中。5) insertRukuInfo()方法该方法负责完成入库单信息的添加,(库存表、入库主表、入库详细表等多个数据表的操作)。为了保证数据的完整性,该方法将入库信息的添加操作放在事务中完成,方法将接收入库主表的实体类TbRukuMain作为参数,该实体类中包含了入库详细表的引用。6) get
25、Kucun()方法该方法用于获取指定商品ID编号或者名称的库存信息,方法接收一个Item对象作参数,该对象中封装了商品的ID编号和商品的名称信息,如果库存表中存在该商品的库存记录,就获取该记录并将记录中的数据封装到库存表的实体对象中,然后将该实体对象作为方法的返回值。2 编写Item类Item类主要用于封装和传递参数信息,这是典型命令模式的实现。在Dao类中经常使用该类作为方法参数;在各个窗体界面中也经常使用该类作组件数据,其toString()方法将返回name属性值,所以显示到各个组件上的内容是Item类的对象所代表的商品、供应商、或者客户等信息的名称。(四) 基础信息主要功能模块详细设计
26、基础信息管理模块的有三个功能:客户信息管理、商品信息管理和供应商信息管理。其中客户信息管理所使用的的数据表是tb_khinfo,其功能类包括KeHuTianJiaPanel类和KeHuXiuGaiPanel类;商品信息管理所使用的数据表是tb_spinfo,其功能类包括ShangPinTianJiaPanel类和ShangPinXiuGaiPanel类;供应商信息管理所使用的数据表是tb_gysinfo,其功能类包括GysTianJiaPanel类和GysXiuGaiPanel类。整个基础信息管理模块的技术分析以供应商信息管理面板为例,下面简单介绍一下供应商信息管理的添加、修改和删除的实现过程
27、。1 GysTianJiaPanel类该类用于实现系统供应商添加功能,实现在界面将显示多个用于输入供应商信息的文本框。界面中主要包括以下控件:控件类型控件名称主要属性用途JtextFieldquanChengF无供应商全称JianChengF无简称BianMaF无邮政编码DiZhiF无地址DianHuaF无电话ChuangZhenF无传真LianXiRenF无联系人lianXiRenDianHuaF无联系人电话YinHangF无银行EmailF无邮箱JbuttonTjButton设置按钮文本为“添加”设置动作监听器为TjActionListener类的实例对象添加ResetButton设置按钮
28、文本为“重填”设置动作监听器为ResetActionListener类的实例对象重填要点介绍:1) ResetActionListener类。作为“重填”按钮的事件监听器。该类必须实现ActionListener接口,并在actionPerformed()方法中清除界面中的所有文本框内容。代码如下:2) TjActionListener类。作为“添加”按钮的事件监听器。该类必须实现ActionListener接口,并在actionPerformed()方法中实现用户输入的验证和供应商信息的保存。代码如下:2 GysXiuGaiPanel类该类主要实现供应商修改和删除的功能。在该界面中有许多文本
29、框用于输入供应商信息,这些文本框会根据所选供应商自动填充内容,点击修改按钮后回自动写入修改后的供应商内容。控件类型控件名称主要属性用途JtextFieldquanChengF无供应商全称JianChengF无简称BianMaF无邮政编码DiZhiF无地址DianHuaF无电话ChuangZhenF无传真LianXiRenF无联系人lianXiRenDianHuaF无联系人电话YinHangF无银行EmailF无邮箱JComboBoxGys设置初始大小为(230,21)调用initComboBox()方法初始化下拉列表设置组件选择事件调用doGysSelectAction()方法选择供应商Jbu
30、ttontjjButton设置按钮文本为“修改”设置动作监听器为ModifyActionListener类的实例对象修改resetButton设置按钮文本为“删除”设置动作监听器为DeltActionListener类的实例对象删除要点介绍:1) initComboBox()方法。用于初始化选择供应商的下拉列表框。该方法先获取Dao类中的getGysInfos()方法,然后再将获取到的信息封装成Item对象并添加到下拉列表框中(主要是获取ID和供应商名称)。然后再下拉列表框的Item对象中用toString()方法显示供应商名称。代码:2) doGysSelectAction()方法。在使用下
31、拉列表框时选择或更改供应商信息的时候被调用。主要根据选择的供应商名称,填充相应的供应商信息到文本框中。代码如下:3) ModifyActionListener类。修改按钮的事件监听器。必须实现ActionListener接口,并在actionPerformed()方法中获取文本框内容,并可以将修改后的供应商信息,通过调用Dao类的updateGys()方法,把修改后的信息写入到数据库。代码:4) DeltActionListener类。删除按钮的事件监听器。必须实现ActionListener接口,并在actionPerformed()方法中获取文本框内容,通过调用Dao类中的delete()
32、实现把供应商信息从后台数据库删除。代码:(五) 进货管理模块设计企业进销存管理系统中的进货模块管理主要包括进货单和进货退货两个部分。由于它们的实现方法相似,这里主要以进货单功能为主,介绍进货模块对本系统的意义和实现的业务逻辑。1 进货单主要负责记录企业的商品进货信息,可以单击“添加”按钮,在商品表中添加进货的商品信息。在“供应商”下拉列表框中选择不同的供应商,将会改变商品中可以添加的商品。进货单的程序界面如下图:2 进货退货进货退货功能主要负责记录进货管理中的退货信息,界面效果如下图。在选择了退货的商品之后,单价“退货”,将把表格中商品退货信息更新到数据库中。3 技术分析进货管理模块使用JDB
33、C实现事务操作,因为进货和退货的业务逻辑涉及到3个数据表,为保证数据的完整性,将3个数据表的操作放在事务中实现,如果对任何一个数据表的操作出现错误或是不可执行的操作,那么事务中的所有操作都将取消,并恢复到事务执行的数据状态;否则3个数据表的操作全部执行。下面是JDBC事务操作的关键方法。1) setAutoCommit()方法该方法用于连接对象的自动提交模式。如果连接处对象的自动提交模式为true,则它的所有SQL语句被执行作为单个事务提交;否则,该连接对象的SQL语句将聚集到事务中,直到调用commit()方法或rollback()方法为止。默认情况下,新连接的自动提交模式为true。语句:
34、Void setAutoCommit(boolean autoCommit)autoCommit:该参数为true表示启用连接对象的自动提交模式:false表示禁用链接对象的自动提交模式。getAutoCommit()判断此连接对象是否启用了自动提交模式。语法:Boolean getAutoCommit()2) commit()方法该方法将执行提交SQL语句执行数据库操作,并释放此连接对象当前持有的所有数据库锁。此方法只在禁用自动提交模式情况下使用。语法:Void commit()3) rollback()方法该方法将取消在事务中进行的所有更改,并释放此连接对象当前持有的所有数据库锁。此方法只
35、在禁止自动提交模式情况下使用。语法:Void rollback()4 进货单实现过程创建jinhuodan类,用于实现本系统的进货单功能的界面和业务逻辑。界面中定义的主要控件如表:进货单界面中的主要控件1) 编写inittable()方法,该方法用于初始化食品表格的表头,列编辑器等。设置表格中第一个列的编辑器使用下拉列表框样式的编辑器,通过编辑器选择商品的名称,其他的商品信息将自动填充,代码如下:private void initTable()StringcolumnNames=商品名称,商品编号,产地,单位,规格,包装,单价,数量,批号,批准文号;(DefaultTableModel)tab
36、le.getModel().setColumnIdentifiers(columnNames);TableColumn column=table.getColumnModel().getColumn(0);final DefaultCellEditor editor=new DefaultCellEditor(sp);editor.setClickCountToStart(2);column.setCellEditor(editor);2) 编写initSpBox()方法,该方法用于初始化表格中的商品下拉表框。它首先调用Dao类的query()方法获取指定供应商所提供的所有商品信息,然后将这些
37、商品信息封装成商品对象,并把这些对象添加到商品下拉框中。代码如:private void initSpBox()List list=new ArrayList();ResultSet set=Dao.query(select*from tb_spinfo where gysName=+gys.getSelectedItem()+);sp.removeAllItems();sp.addItem(new TbSpinfo();for(int i=0;table!=null&itable.getRowCount();i+)TbSpinfo tmpInfo=(TbSpinfo)table.getVal
38、ueAt(i,0);if(tmpInfo!=null&tmpInfo.getId()!=null)list.add(tmpInfo.getId();trywhile(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.getStri
39、ng(cd).trim();spinfo.setJc(set.getString(jc).trim();spinfo.setDw(set.getString(dw).trim();spinfo.setGg(set.getString(gg).trim();spinfo.setBz(set.getString(bz).trim();spinfo.setPh(set.getString(ph).trim();spinfo.setPzwh(set.getString(pzwh).trim();spinfo.setMemo(set.getString(memo).trim();spinfo.setGy
40、sname(set.getString(gysname).trim();sp.addItem(spinfo);catch(SQLException e)e.printStackTrace();(六) 库存管理模块设计1 库存业务库存管理是指在上产经营中为销售和耗用而存储的各种资产。企业存货不当都会增加不必要的费用:存货过多将导致物资的积压、存储费用增加、流动资金周转不利,并且过量的库存会掩盖管理不善的问题。存货不足则影响企业的正常销售活动。库存管理的目标是需求最佳存货数量,使库存的成本总额最小化。其主要功能如下:库存盘点和价格调整等日常处理。价格调整功能主要用于调整库存中指定商品的单价,当用户
41、选择了此商品,价格调整功能的界面会显示该商品在库存中的单价、数量、金额、单位、产地等信息,用户可以单击“单价”后即可修改商品的价格。如下图所示:库存管理模块中包括库存盘点和价格调整两个功能,库存盘点功能是将库存信息显示在表格中,由操作员输入盘点的商品数量,然后自动计算损益值,价格调整功能涉及下拉列表框的选择事件监听和事件处理技术,为防止用户的错误输入,程序界面经常需要将可枚举的输入内容封装在下拉列表框中,限制用户的输入。但是,想要知道下拉列表框的改变,还需要为下拉列表框添加相应的事件监听器。下面就进行简单的介绍:1) addItemListener()方法可以为下拉列表框添加ItemListe
42、ner监听器,当更改下拉列表框的选项时,将产生相应的事件,这个事件会被添加的ItemListener监听器捕获。价格调整实现过程:创建JiaGeTiaoZheng类,用于实现本系统的价格调整功能界面和业务逻辑。界面中的主要控件如下:控件类型控件名称主要属性设置用途JTextFieldKuCunJinE无库存金额KuCunShuLiang无库存数量DanJia无库存单价JlabelShangPinMingCheng无商品名称GuiGe无规格ChanDi无产地DanWei无单位JbuttonOkButton无确定CloseButton无关闭2) 编写UpdateJinE()方法,用于更新库存金额,
43、该方法将“单价”文本框的内容转换为Double类型,将“库存数量”文本框的内容转换为Integer类型,然后用它们的乘积更新“库存金额”文本框的内容,代码如下:private void updateJinE()/更新库存金额的方法Double dj=Double.valueOf(danJia.getText();Integer sl=Integer.valueOf(kuCunShuLiang.getText();kuCunJinE.setText(dj*sl)+);3) 创建ItemActionListener类,它必须实现ItemListener接口和接口中的itemStateChanged
44、()方法,成为下拉列表框的事件监听器。当改变界面中选择的商品时,相应的ItemEvent事件会通知监听器处理业务逻辑,也就是根据摆选择的商品名称更新其他的控件内容。代码如下:ItemListener:下拉列表框的事件监听器必须实现的分接口。ITemStateChanged():当下拉列表框的选中项发生改变时将触发该方法。ItemEvent:这是选项事件类,在用户更改带有多项选择内容的组件选项时,将产生该事件。例如下拉选择框组件。4) 创建OKActionListener类,它必须实现ActionListener接口和接口中的actionPerformed()方法,在这个方法中获取新的库存商品价
45、格,然后调用Dao类的updateKuCunDj()方法更新库存价格。代码如下:(七) 查询统计模块设计该模块主要管理客户信息查询、商品信息查询、供应商信息查询、销售查询、商品销售退货查询、商品入库查询、商品入库退货查询。1 客户信息的查询客户信息的查询主要是查询客户的基本信息。操作员可以根据条件进行查询,有客户全称和简称,包含和等于等条件。如图所示:2 商品信息的查询商品信息的查询主要是查询商品的库存、销售等信息。操作员可以根据条件进行查询,有商品名称、供应商全称、产地和规格,包含和等于等条件。如图所示:3 供应商信息查询供应商信息的查询主要是查询供应商的基本信息。操作员可以根据条件进行查询
46、,有供应商全称和简称,包含和等于等条件。如图所示:4 销售信息的查询销售信息的查询主要是查询商品销售的数量与销售额度。操作员可以根据条件进行查询,有客户全称和销售票号,包含和等于等条件。如图所示5 销售退货查询退货查询主要是查询商品退后的信息。6 商品入库查询入库查询主要是查询商品入库的信息。(八) 系统设置主要功能模块详细设计系统设置页面主要是对操作员的信息进行添加、修改、删除的操作。主要包括操作员管理、更改密码、权限管理3部分。具体通过ShanChuCaoZuoYuan类和TJCzy类来实现。代码如下:用户可以通过单击菜单主导航“系统设置”-“操作员管理”按钮,进入操作员管理页面,用户单击“添加操作员”图片链接进行操作员的添加操作。操作员管理页面的设计效果如图所示。五、 项目发布1) 打开sqlsever 200