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