企业进销存管理系统实训报告.docx
《企业进销存管理系统实训报告.docx》由会员分享,可在线阅读,更多相关《企业进销存管理系统实训报告.docx(22页珍藏版)》请在冰豆网上搜索。
![企业进销存管理系统实训报告.docx](https://file1.bdocx.com/fileroot1/2023-2/7/89f7c429-9068-4dfa-b788-7415044c8fbb/89f7c429-9068-4dfa-b788-7415044c8fbb1.gif)
企业进销存管理系统实训报告
企业进销存管理系统实训报告
小组成员:
成波、钟秀、马姝婷、邢亚可、龙浩
一、系统分析
(一)需求概述
在目前食材配送过程中,食材的管理至关重要。
这里对食材的管理包括进、销、存3个方面。
可以建立一个进销存管理系统,对企业的管理者、营业员、库存管理员等减轻其工作量,便于经营管理。
功能需求:
基础信息管理功能模块:
主要负责管理供应商信息、商品信息以及客户信息。
进货管理功能模块:
采购计划、采购订单、采购入库、采购退货、应付款、采购付款。
销售管理功能模块:
、报价单、销售订单、销售出库、销售退货、应收款、销售收款。
查询统计功能模块:
主要负责统计企业的客户查询、商品查询、供应商查询、销售查询、销售退货查询、商品出入库情况以及销售排行查询。
库存管理功能模块:
其它入库、其它出库、库存警报、库存报表、基本资料设计。
系统管理,主要负责管理用户信息和用户登录,以及初期建账。
食材配送公司需要处理大量的库存信息,还要时刻更新产品的销售信息,不断添加商品信息。
面对不同种类的信息,需要合理的数据库结构来保存数据信息,需要有效的程序结构支持各种数据操作的执行。
它最主要的特点是能够实时的和准确的控制店内的销售情况。
如果可以能够实时掌握销售流程及销售情况,则可以有效地加速商品的周转率并提高服务质量,而且可以减少产品售价不符等所产生的问题。
顾客的消费要求的是希望能及时采购到所需的新鲜的食材,并且还要保证在食材配送过程中提供优质、方便的服务。
(二)系统概述
本系统的开发适用于多个行业,可以帮助企业快速有效管理进货、销售、库存、查询统计等各项业务,合理控制进销存各个环节,提高资金利用率,实现管理高效率和实时性。
本系统是根据人们在日常生活中的实际需求而开发的,完全能够实现人们对商品的基础信息管理、进货管理、销售管理、查询统计、库存管理、系统管理等功能,一般而言,通过使用进销存管理系统,可以在以下几方面提高企业的管理水平:
1)更好地了解供应商和客户信息,加强对商品资料的管理。
2)降低采购成本,及时了解采购情况。
3)准确了解销售动态,及时调整营销策略。
4)了解库存情况,及时进行价格管理以及库存数量维护。
5)减少储备资金占用,加速资金周转,提高资金利用率。
6)提供商业数据智能分析,了解商业动态,为管理者提供决策依据。
1.系统功能分析
系统功能结构图如下:
(三)可行性分析
1.人员角度的可行性
鉴于本组人员实力薄弱,无系统开发技术基础,我们决定根据老师提供的文件资料作为项目实施的参考依据,通过项目实训来锻炼我们的动手能力、实际操作能力。
评价尺度:
以能参照资料制作出完成的进销存管理系统为标准。
2.技术角度的可行性
本系统采用JavaSwing+SQLserver2005实现。
使用集成开发工具MyEclipse8.5进行开发。
从前人的开发经验来看,小组采用的进销存管理系统应用软件的开发手段是完全可行的。
二、项目计划书
(一)项目背景
通过项目模拟实训来锻炼同学们的动手能力,为将来毕业求职实习、考研做准备。
(二)项目目标
1)界面简洁友好,操作简单。
2)系统功能包括基础信息、进货管理、销售管理、库存管理、查询统计、系统管理6个部分。
3)文档结构清晰,包括(项目需求分析、项目开发过程、项目技术说明、项目功能实现、项目测试结果等)
4)小组成员都应参与到整个项目的实现过程中来,对每个环节都应该有所了解,掌握整个项目开发的每一个细节,成员之间要多沟通,工作上要协调配合好。
(三)项目实现准备阶段
1.业务逻辑编码规则
1)数据库名称统一为:
db_JXC(进销存管理系统数据库)
2)数据表统一tb开头,如:
tb_sell_main(销售主表),tb_sell_detail(销售明细表)。
字段名(一律采用英文单词,不知道的在线翻译一下),如:
ID(流水号),Name(名称),ProductInfo(商品信息)。
3)tb_spinfo(商品信息表)。
商品信息表主要是用来保存商品的名称、产地等基本信息。
表结构如下图所示:
4)tb_khinfo(客户信息表)。
客户信息表主要保存客户的姓名、地址、联系方式等基本信息等。
表结构如下图所示:
5)tb_gysinfo(供应商信息表)。
供应商信息表主要保存供应商的名称、地址等供应商的基本信息。
表结构如下图所示:
6)tb_kucun(库存管理表)。
库存管理表中主要保存着每一件商品的单价、在仓库中的存储数量、一共的金额等信息。
表结构如下图所示:
7)tb_ruku_main(入库主表)和tb_ruku_detail(入库明细表)。
入库表中主要保存的是商品入库之后的基本信息如商品名称、产地、金额等信息。
表结构职下图所示:
8)tb_rkth_main(入库退货主表)和tb_ruku_detail(入库退货明细表)。
入库退货表中主要保存的是入库之后的退货信息,信息内容基本与入库表相同。
表结构如下图所示:
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)
4)销售单编号(XS+日期+编号,如XS20150509001)
5)入库编号(RK+日期+编号,如RK20150511003)
6)入库退货编号(RT++日期+编号,如RT20150512004)
3.系统E-R图
1)客户实体E-R图,包括客户编号、客户名称、简称、地址、电话、邮政编码、联系人、联系人电话、传真、开户行和账号等属性。
2)供应商E-R图,包括编号、名称、简称、地址、电话、邮政编码、传真、联系人、联系电话、开户行和E-mail等属性。
3)商品实体E-R图,包括编号、商品名称、商品简称、产地、单位、规格、包装、生产日期、保质期、商品简介和供应商等属性。
4)使用PowerDesigner建模进行数据库设计。
具体请参照JAVA项目开发全程实录1.4.3章。
并用SQLserver2005创建数据库。
(四)项目实现开发阶段
1.人员分工
1)龙浩:
美工设计、主窗体设计、公共模块设计
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)查询统计模块。
代码参照JAVA项目开发全程实录1.9章。
8)系统管理模块。
无参照代码,自行开发。
(五)项目测试
1.单元测试
每个模块开发时进行单元测试。
2.系统测试
开发后进行系统测试,并编写系统测试报告。
三、系统实施
(一)开发环境准备
安装SQLserver2005和myeclipse8.5。
(二)创建数据库连接
1.软件安装和帐户设定
1-1:
安装“MSSqlServer2005(SP2)”(内置帐户选择sa,密码设为123;如果没有设置内置帐户sa的话,请直接使用WinNT登录“SQLServerManagementStudio”,选择安全性→登录名→sa→登录属性,然后设置密码123,关闭“SQLServerManagementStudio”)
1-2:
安装“MyEclipse5.5.1GA”
1-3:
下载连接驱动包“sqljdbc.jar”
1-4:
设置SQLServer服务器:
a.“开始”→“程序”→“MicrosoftSQLServer2005”→“配置工具”→“SQLServerConfigurationManager”(确认“SQLServerManagementStudio”已关闭)
b.“SQLServer2005服务”中停止服务“SQLServer(SQLEXPRESS)”(默认是启动状态)
c.“SQLServer2005网络配置”→“MSSQLSERVER的协议”,启动“TCP/IP”(默认是禁用状态),然后双击“TCP/IP”进入属性设置,在“IP地址”里,确认“IPAll”中的“TCP端口”为1433
d.“SQLServer2005服务”中启动服务“SQLServer(MSSQLSERVER)”(默认是停止状态)
e.关闭“SQLServerConfigurationManager”(此时可以启动“SQLServerManagementStudio”,并用帐户sa、密码123登录,SQLServer服务器设置正确的话应该能登录成功)
2.创建测试数据库和表
2-1:
启动“SQLServerManagementStudio”,并用帐户sa、密码123登录(SQLServer服务器设置正确的话应该能登录成功),创建一个数据库JSPTest,内建一个表regist
2-2:
创建测试的Java工程和代码
2-3:
启动“MyEclipse”→“File”→“New”→“Project”→“JavaProject”,命名为Test
2-4:
打开Test的“Properties”→“JavaBuildPath”→“Libraries”→“AddExternalJARs”,选择下载好的连接驱动包“sqljdbc.jar”,然后点击“OK”确定
2-5:
SQLServer2005中加载驱动和URL的语句为:
protectedstaticStringdbClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver";
protectedstaticStringdbUrl="jdbc:
sqlserver:
//localhost:
1433;DatabaseName=db_JXC";
protectedstaticStringdbUser="sa";
protectedstaticStringdbPwd="123";
四、系统总体设计
(一)主窗体设计
主窗体是系统的欢迎界面。
用程序的主窗体包括系统菜单和工具栏,其中系统菜单是包含系统中所有功能的菜单项,工具栏是提供常用的功能的快捷访问按钮。
(该系统采用了导航面板综合了系统菜单和工具栏的优点,导航面板的界面更美观,操作更快捷。
)
1.创建主窗体
1)创建JXCFrame类,在类中创建和初始化窗体对象,为窗体添加桌面面板,并且设置背景图片。
Frame=newJFrame(“企业进销存管理系统”);//创建窗体对象
desktopPanel=newJDeskPanel();//创建桌面面板
JTabbedPanenavigationPanel=createNavigationPanel();//创建导航面板
2)编写updateBackImage()方法,初始化背景标签,背景标签使用HTML超文本语言设置了主窗体的背景图片(该图片会随着主窗体的大小自动缩放)。
3)在类的静态代码中设置了系统的外观样式。
使用了UIManager类的setLookAndFeel()方法设置程序界面使用本地外观。
4)编写主窗体的mian()入口方法,创建登录窗体对象(登录窗体会验证登录信息,并显示主窗体界面)
(二)创建导航面板
1)在JXCFrame类中编写createNavigationPanel()方法,创建JTabbePanel选项卡面板对象。
(为了突出选项卡的立体效果,设置该选项卡使用了BevelBorder边框效果。
)然后依次创建了基础信息管理面板、库存管理面板、销售管理面板、查询统计面板、进货管理面板和系统管理面板的选项卡。
JTabbedPanetabbedPane=newJTabbedPane();//创建JTabbePanel选项卡面板对象
JPanelbaseManagePanel=newJPanel();//基础信息管理面板
JPaneldepotManagePanel=newJPanel();//库存管理面板
JPanelsellManagePanel=newJPanel();//销售管理面板
JPanelsearchStatisticPanel=newJPanel();//查询统计面板
JPanelstockManagePanel=newJPanel();//进货管理面板
JPanelsysManagePanel=newJPanel();//管理系统面板
2)编写createFrameButton()方法,该方法负责创建Action对象,该对象是用来创建并显示窗体对象,(图标、文本等属性),本系统没有使用系统菜单,所以该方法直接创建按钮对象。
Iconicon=newImageIcon(imgUrl);//创建按钮图标
Icon_roll=newImageIcon(imgUrl_roll);//创建鼠标经过按钮的图标
Icon_down=newImageIcon(imgUrl_down);//创建按钮按下的图标
Actionaction=newopenFrameAction(fName,cname,icon);//用openFrameAction类创建Actio对象
3)编写内部类openFrameAction,它必须要继承AbstraAction类实现Action接口。
该类用于创建导航按钮的Ation对象,并且为每一个导航按钮定义创建不同窗体对象的动作监听器,当这个监听器的按钮被按下时,调用getFrame()方法获取相应的窗体对象,并显示在主窗体中。
4)编写getIFrame()方法。
该方法就是用来创建指定名称的窗体对象,使用了java反射技术,调用不同窗体类的默认构造方法创建窗体对象。
(三)公共模块设计
1.编写Dao公共类
1)Dao类主要负责有关数据库的操作,该类在静态代码段中驱动并连接数据库,然后将所有的数据库访问方法定义为静态的。
Class.forName(dbClassName).newInstance();//加载数据库驱动类
conn=DriverManager.getConnection(dbUrl,dbUser,dbPwd);//获取数据库连接
2)addGys()方法(添加供应商信息的方法)
该方法用于添加供应商的基础信息,它接收供应商的实体类TbGysinfo作方法的参数,然后把实体对象中的所有属性存入供应商数据表中。
3)getGysinfo()方法(读取指定供应商的信息)
该方法将根据Item对象中封装的供应商ID编号和供应商名称获取供应商的数据,然后将该供应商的数据封装到实体对象中,然后返回该实体对象。
4)updateGys()方法(修改供应商信息的方法)
该方法用于更新供应商的基础信息,它接收供应商的实体类TbGysinfo作方法参数,在方法中直接解析供应商实体对象中的属性,并且将这些属性更新到数据表中。
5)insertRukuInfo()方法
该方法负责完成入库单信息的添加,(库存表、入库主表、入库详细表等多个数据表的操作)。
为了保证数据的完整性,该方法将入库信息的添加操作放在事务中完成,方法将接收入库主表的实体类TbRukuMain作为参数,该实体类中包含了入库详细表的引用。
6)getKucun()方法
该方法用于获取指定商品ID编号或者名称的库存信息,方法接收一个Item对象作参数,该对象中封装了商品的ID编号和商品的名称信息,如果库存表中存在该商品的库存记录,就获取该记录并将记录中的数据封装到库存表的实体对象中,然后将该实体对象作为方法的返回值。
2.编写Item类
Item类主要用于封装和传递参数信息,这是典型命令模式的实现。
在Dao类中经常使用该类作为方法参数;在各个窗体界面中也经常使用该类作组件数据,其toString()方法将返回name属性值,所以显示到各个组件上的内容是Item类的对象所代表的商品、供应商、或者客户等信息的名称。
(四)基础信息主要功能模块详细设计
基础信息管理模块的有三个功能:
客户信息管理、商品信息管理和供应商信息管理。
其中客户信息管理所使用的的数据表是tb_khinfo,其功能类包括KeHuTianJiaPanel类和KeHuXiuGaiPanel类;商品信息管理所使用的数据表是tb_spinfo,其功能类包括ShangPinTianJiaPanel类和ShangPinXiuGaiPanel类;供应商信息管理所使用的数据表是tb_gysinfo,其功能类包括GysTianJiaPanel类和GysXiuGaiPanel类。
整个基础信息管理模块的技术分析以供应商信息管理面板为例,下面简单介绍一下供应商信息管理的添加、修改和删除的实现过程。
1.GysTianJiaPanel类
该类用于实现系统供应商添加功能,实现在界面将显示多个用于输入供应商信息的文本框。
界面中主要包括以下控件:
控件类型
控件名称
主要属性
用途
JtextField
quanChengF
无
供应商全称
JianChengF
无
简称
BianMaF
无
邮政编码
DiZhiF
无
地址
DianHuaF
无
电话
ChuangZhenF
无
传真
LianXiRenF
无
联系人
lianXiRenDianHuaF
无
联系人电话
YinHangF
无
银行
EmailF
无
邮箱
Jbutton
TjButton
设置按钮文本为“添加”
设置动作监听器为TjActionListener类的实例对象
添加
ResetButton
设置按钮文本为“重填”
设置动作监听器为
ResetActionListener类的实例对象
重填
要点介绍:
1)ResetActionListener类。
作为“重填”按钮的事件监听器。
该类必须实现ActionListener接口,并在actionPerformed()方法中清除界面中的所有文本框内容。
代码如下:
2)TjActionListener类。
作为“添加”按钮的事件监听器。
该类必须实现ActionListener接口,并在actionPerformed()方法中实现用户输入的验证和供应商信息的保存。
代码如下:
2.GysXiuGaiPanel类
该类主要实现供应商修改和删除的功能。
在该界面中有许多文本框用于输入供应商信息,这些文本框会根据所选供应商自动填充内容,点击修改按钮后回自动写入修改后的供应商内容。
控件类型
控件名称
主要属性
用途
JtextField
quanChengF
无
供应商全称
JianChengF
无
简称
BianMaF
无
邮政编码
DiZhiF
无
地址
DianHuaF
无
电话
ChuangZhenF
无
传真
LianXiRenF
无
联系人
lianXiRenDianHuaF
无
联系人电话
YinHangF
无
银行
EmailF
无
邮箱
JComboBox
Gys
设置初始大小为(230,21)
调用initComboBox()方法初始化下拉列表
设置组件选择事件调用doGysSelectAction()方法
选择供应商
Jbutton
tjjButton
设置按钮文本为“修改”
设置动作监听器为ModifyActionListener类的实例对象
修改
resetButton
设置按钮文本为“删除”
设置动作监听器为
DeltActionListener类的实例对象
删除
要点介绍:
1)initComboBox()方法。
用于初始化选择供应商的下拉列表框。
该方法先获取Dao类中的getGysInfos()方法,然后再将获取到的信息封装成Item对象并添加到下拉列表框中(主要是获取ID和供应商名称)。
然后再下拉列表框的Item对象中用toString()方法显示供应商名称。
代码:
2)doGysSelectAction()方法。
在使用下拉列表框时选择或更改供应商信息的时候被调用。
主要根据选择的供应商名称,填充相应的供应商信息到文本框中。
代码如下:
3)ModifyActionListener类。
修改按钮的事件监听器。
必须实现ActionListener接口,并在actionPerformed()方法中获取文本框内容,并可以将修改后的供应商信息,通过调用Dao类的updateGys()方法,把修改后的信息写入到数据库。
代码:
4)DeltActionListener类。
删除按钮的事件监听器。
必须实现ActionListener接口,并在actionPerformed()方法中获取文本框内容,通过调用Dao类中的delete()实现把供应商信息从后台数据库删除。
代码:
(五)进货管理模块设计
企业进销存管理系统中的进货模块管理主要包括进货单和进货退货两个部分。
由于它们的实现方法相似,这里主要以进货单功能为主,介绍进货模块对本系统的意义和实现的业务逻辑。
1.进货单
主要负责记录企业的商品进货信息,可以单击“添加”按钮,在商品表中添加进货的商品信息。
在“供应商”下拉列表框中选择不同的供应商,将会改变商品中可以添加的商品。
进货单的程序界面如下图:
2.进货退货
进货退货功能主要负责记录进货管理中的退货信息,界面效果如下图。
在选择了退货的商品之后,单价“退货”,将把表格中商品退货信息更新到数据库中。
3.技术分析
进货管理模块使用JDBC实现事务操作,因为进货和退货的业务逻辑涉及到3个数据表,为保证数据的完整性,将3个数据表的操作放在事务中实现,如果对任何一个数据表的操作出现错误或是不可执行的操作,那么事务中的所有操作都将取消,并恢复到事务执行的数据状态;否则3个数据表的操作全部执行。
下面是JDBC事务操作的关键方法。
1)setAutoCommit()方法
该方法用于连接对象的自动提交模式。
如果连接处对象的自动提交模式为true,则它的所有SQL语句被执行作为单个事务提交;否则,该连接对象的SQL语句将聚集到事务中,直到调用commit()方法或rollback()方法为止。
默认情况下,新连接的自动提交模式为true。
语句:
VoidsetAutoCommit(booleanautoCommit)
autoCommit:
该参数为true表示启用连接对象的自动提交模式:
false表示禁用链接对象的自动提交模式。
getAutoCommit()
判断此连接对象是否启用了自动提交模式。
语法:
BooleangetAutoCommit()
2)com