物流管理系统.docx
《物流管理系统.docx》由会员分享,可在线阅读,更多相关《物流管理系统.docx(31页珍藏版)》请在冰豆网上搜索。
物流管理系统
物流管理系统
一.引言
实习目的:
通过实习,参与具体的java开发项目,进一步提高了java开发的
基本技术,丰富java开发的实战经验。
过学习,巩固大学所学专业的基础知识,提高分析,
判断和处理实际问题的能力,锻炼自己的实际动手能力,增强自己的团队协作意识,了解
计算机专业软件开发的具体流程,完善了自己的知识结构。
为毕业之后能够更快地进入工
作状态并且能够更好地工作,打好一定的基础。
实习要求:
能够熟练运用Java,独立设计和编制一个具有一定难度的、解决实际应
用问题的物流管理系统的应用程序。
2.系统设计
软件系统的总体设计大约要经历可行性分析和项目开发计划,需求分析,概
要设计,详细设计,编码,测试以及维护等七个阶段。
可行性分析和项目开发计划在前面
已经叙述,下面所要做的是进行软件需求分析,概要设计和详细设计。
编码过程将在下一
章节论述,而测试和维护过程不在本文中叙述。
系统需求分析
在经过前一阶段的分析之后,我确定了我的开发课题为仓库物流管理系统。
现在所要
做的是要准确定义系统必须做什么以及系统必须具备的功能。
软件需求分析中我采用结构化分析方法(StructuredAnalysis,简称SA),SA是面向数
据流进行需求分析的方法,像所有的软件分析方法(如面向对象分析方法、IDEF方法等等)
一样,SA也是一种建模活动,它使用简单易读的符号,根据软件内部数据传递、变换的关
系,自顶向下逐层分解,描绘满足功能要求的软件模型。
在系统中我采用数据流图(DFD)这种半形式化的描述方式表达需求。
它是一种功能
模型,以图形的方式描绘数据在系统中流动和处理的过程,只反映系统必须完成的逻辑功
能。
它有四种基本图形符号:
◆→:
箭头,表示数据流;
◆〇:
圆或椭圆,表示加工;
◆═:
双杠,表示数据存储;
◆□:
方框,表示数据的源点或终点。
为了表达较为复杂问题的数据处理过程,用一张数据流图是不够的,要按照问题的层
次结构进行逐步分解,并以一套分层的数据流图反映这种结构关系。
在这里我一共使用了
三层数据流图,即顶层图,0层图和1层图(也是底层图)。
在多层数据流图中,顶层流图仅包含一个加工,它代表被开发系统,它的输入流是该
系统的输入数据了,输出流是该系统的输出数据;底层流图是指其加工不需要再做分解的
数据流图,中间层流图表示对其上层父图的细化,它的每一步加工可能继续细化成子图。
:
1-1,如图DFD经过对系统的分析首先得到系统的顶层.
物品入库、物流管理员物流管理员物品出库、物品查询、物品报损、物品汇总、物品查询、仓库物流管理系统物品报表等物品汇总、……信息物品报表等工作人员工作人员……操作
图1-1物流管理系统顶层图
:
,如图层DFD1-2进一步细化得到系统的0管作人员工人员信息表理物品类别信息表管物别品类理物流管理员物流管理员管护数据维理物品登记信息表
与记物品登物品流通信息表管流处理物理工作人员工作人员查情况物流询
汇况流情物总
图1-2物流管理系统的0层图
再进一步细化每一个数据加工功能,得到系统的1层DFD图(略)。
在这里只给出有关顶层和0层数据流图,它们体现出了系统的功能部分,而1层DFD
图暂略,后面具体说明其内容。
通过以上对数据流图的分析之后,我们已大体地了解了系
统的功能和目标,接下来所要做的就是系统功能模块的划分和数据库的设计,也就是系统
的概要设计。
系统概要设计
在软件需求分析阶段,搞清楚了软件“做什么”的问题,形成了目标系统的逻辑模型。
现在我们所要做的就是要把软件“做什么”的逻辑模型变换为“怎么做”的物理模型,即着手
实现软件的需求。
首先,我们需要描述的是系统的总的体系结构。
.
1.1.1系统结构设计
系统的概要设计中最重要的就是系统的模块化。
模块化是指解决一个复杂问题时自项
向下逐层把软件系统划分成若干个模块的过程。
每个模块完成一个特定的功能,所有的模
块按某种方法组织起来,成为一个整体,完成整个系统所要求的功能。
将系统划分为多个模块是为了降低软件系统的复杂性,提高可读性、可维护性,但模
块的划分不能是任意的,应尽量保持其独立性。
也就是说,每个模块只完成系统要求的独
立的子功能,并且与其他模块的联系最少且接口简单,即尽量做到高内聚低耦合,提高模
块的独立性,为设计高质量的软件结构奠定基础。
在系统的概要设计中我采用结构化设计(StructureDesign,简称SD),SD以需求分析
阶段产生的数据流图DFD为基础,按一定的步骤映射成软件结构。
我首先将整个系统化分
为几个小问题,小模块,在系统中,我设计了工作人员管理,物品类别管理,数据维护管
理,物品登记与物流处理管理,物流情况查询和物流情况汇总6个模块。
然后,进一步细
分模块,添加细节。
比如,工作人员管理我又将其分为工作人员注册、工作人员注销、授
权、密码修改、增加照片等;物品登记与物流处理管理分为物品登记、进库、出库、报损
等。
以下就是系统功能模块图,如图1-3:
图1-3系统功能模块图
1.1.2数据库设计
在信息世界中,信息从客观事物出发流经数据库,通过决策机构最后又回到客观世界,
信息的这一循环经历了三个领域:
信息世界,数据世界,现实世界。
现实世界的事物反映
到人的头脑中,人的大脑对它有个认识过程,经过分析(选择、命名、分类等)进入信息
世界。
这些信息再进一步加工、编码,然后进数据世界,而软件系统的开发工作需要考虑
这两个方面的问题,也就是要考虑系统开发所需要的数据,以及如何对这些数据进行操作。
这两个问题贯穿了整个软件系统的开发过程,这也就是数据库的设计问题,软件设计的一
个核心。
1.E-R图设计
在系统设计的开始,我首先考虑的是如何用数据模型来数据库的结构与语义,以对现.
实世界进行抽象。
目前广泛使用的数据模型可分为两种类型,一种是独立于计算机系统的
“概念数据模型”,如“实体联系模型”;另一种是直接面向数据库逻辑结构的“结构数据模型”
。
在本系统中我采用“实体联系模型”(E-R模型)来描述数据库的结构与语义,以对现实
世界进行第一次抽象。
E-R模型直接从现实世界抽象出实体类型及实体间联系,然后用E-
R图来表示数据模型。
它有两个明显的优点:
接近于人的思维,容易理解;与计算机无关,
用户容易接受。
但E-R模型只能说明实体间语义的联系,不能进一步说明详细的数据结构,
它只是数据库设计的第一步。
ER图是直观表示概念模型的工具,它有四个基本成分:
◆矩形框,表示实体类型(考虑问题的对象)。
◆菱形框,表示联系类型(实体间的联系)。
◆椭圆形框,表示实体类型和联系类型的属性。
对于关键码的属性,在属性名下划一
横线。
◆直线,联系类型与其涉及的实体类型之间以直线连接。
本系统为仓库物流管理,主要管理物品的登记、流通以及种类和工作人员等事项。
仓
库根据需要可以查询物品的信息,同时还需要了解在库存流通中员工的参与情况。
依据物
流管理的实际情况,考虑了多方面的因素以后,确定系统的E-R图如下:
工作人员
联系电话ID职员
操作权限姓名日期密码说明停用照片图1-4工作人员表E-R图
物品登记
ID物品照片说明名称单价ID类别
图E-R物品登记表1-5图
ID物流ID物品
物流类型经手人图1-6图
类别ID
图1-7
物品流通
数量物品流通表
E-R
物品种类
说明物品种类表E-R图
说日
图1-8数据库表关系图
在该数据库中,本系统中的物品流通是核心,也是基本,没有了物品流通其它的也就
没有什么意义了。
经手人的添加是考虑到责任问题,也就是说,在物流管理的实际运用中,
出现了责任不清的现象,特别是由于仓库的进出物品数量都比较大时产生了一系列问题,
所以在设计数据库时,我特别考虑到这一点,在物品流通表中加入了经手人。
2.数据库表格设计
在完成系统的E-R图之后,需要将E-R模型转化为关系模型,也就是说,要设计出数
据库所需要的表格。
在这里,我选用的是关系数据库。
因为关系数据库中的二维表格可以
很清楚地描述数据之间的联系。
根据系统E-R图,针对本系统的特点,在对所搜集的数据进行规范化之后,定义了如
下四张表格,分别是工作人员信息表,物品流通信息表,物品登记信息表和物品种类信息
表。
通过对这四张表格的操作可以较好地完成系统设计的各项功能,四张表格之间有着不
同程度的联系。
:
)1-9工作人员信息表(图
图1-9工作人员信息表图
工作人员信息表主要用于记录物流管理人员的详细信息,包括职员ID、姓名、密码、
操作权限、停用、联系电话、说明、照片和日期类型等有关工作人员的各类信息。
在该表中职员ID是主键,它是工作人员的值是登记时自行填写的,它会和经手人相
对应的,体现出物品是经谁的手出入库的。
姓名和密码的值也是登记时自行填写的,但必
须要记住。
它们是在用户登陆时用来确定用户和密码的正确性,以防止非法用户登陆。
操
作权限则是工作人员在操作系统的时所授权的范围,分为物品登记、物流处理、物流查询
和物流汇总。
停用则是指该注册工作人员是否可以操作本系统。
联系电话、说明和照片则
是介绍个人情况的。
日期则是系统当时默认时间的,是不可以修改的。
物品流通信息表(图1-10):
图1-10物品流通信息表图
物品流通信息表主要用于记录各物品经仓库和物流管理人员的详细信息,包括物流
ID、物品ID、物流类型、数量、经手人、日期、说明和记录特征类型等各类信息。
该信息
表是数据库的主表,是不可缺少的。
在该表中物流ID是主键,它是记录每一次物品流动时的唯一编号,不会有重复,而
且是计算机自动编号。
物品ID则是记录每一件物品本身的编号,它跟物流ID是有区别的。
数量则是每次流通数量的多少。
而经手人前面已经说过,这里就不在叙述了。
日期则是记
录当时物流的时间,是当时的默认时间,是系统给定的。
说明是指记录物品当时的情况或
物品的特征的。
记录特征就很好理解了,就是该操作是否被记录。
物流类型则是记录物品
流通的一种形式,包括:
进库Or出库Or报损。
值得提出的一点是入库记录和出库
记录的添加不仅仅是单表操作,由于它们都与库存记录相联系,所以,无论您是添中入库
记录还是添加出库记录,都必须同时修改库存记录,以保持数据的一致性,否则将引发系
统出错而这些我都让其在系统中自动完成。
无论您是添加入库记录,还是添加出库记录,
系统都将自动修改库存中物品的数量,而且,在您出库的数量大于库存数量时,系统还会
自动提示错误,这样就可以防止一定错误的发生。
:
)1-11物品登记信息表(图
图1-11物品登记信息表图
物品登记信息表主要用于记录仓库中各各物品的详细信息,包括物品ID、名称、类别
ID、单价、说明和照片类型等有关物品的各类信息。
在该表中物品ID作为主键,它是管理员每增加一件物品时,物品ID就会自动为其编
上一个号码。
类别ID则是说明该物品属于某一物品种类的。
而名称、单价、说明和照片
是介绍物品本身的信息。
物品种类信息表(图1-12):
图1-12物品种类信息表图
物品种类信息表主要用于记录仓库中物品种类的信息,包括类别ID和说明两个类型
的信息。
类别ID是指创建一类物品的种类的称呼。
而说明则是对类别ID进行描述。
3.系统实现
登录窗体的设计及实现
登录界面是一个系统的开始,所以我就从系统的开始进行说明。
登录窗体是系统的一
个门,只有通过它才能进入主界面,所以登录界面是非常关键的。
如下图2-1:
图2-1登录窗体图
该窗体主要是完成职员ID和密码的校对,所以下面这段代码就是校对职员ID和密码,
其与数据库的链接采用代码来完成。
DimstrZyIDAsString,strMmAsString
DimrsAsADODB.Recordset
strZyID=Trim(txtZyID)
strMm=Trim(txtMm)
Setrs=mCdt.rsGZRYDL(strZyID,strMm)
'验证用户
Thenrs.EOFIf
MsgBox登录失败!
vbInformation
txtZyID.SetFocus
txtZyID.SelStart=0
txtZyID.SelLength=Len(txtZyID.Text)
Else
gbytZyQX=獲尨操作权限)
gstrZyID=strZyID
gblnOK=True
Hide
EndIf
”下图2-2是“修改密码窗体,只有通过鼠标点击登录窗体中的修改密码键,才能进入
其窗体。
图2-2修改密码窗体图
其下面代码如上图所示“确定鍵”的代码。
'更新密码
mCdt.UpdataMmlblZyID,Trim(txtYmm),Trim(txtXmm)
UnloadMe
但在修改密码之前一定要解决两个问题,一是身份验证过程,二是更新密码前调用身
份验证过程。
这两点很重要,只有通过这两点,才可以修改密码。
下面是解决这两点的代
码程序,如下:
PublicFunctioncheckMm(strZyIDAsString,strMmAsString)AsInteger
'身份验证过程
OnErrorResumeNext
DimrsAsADODB.Recordset
DimIAsInteger
Setrs=mCdt.rsGzryYzmm(strZyID,strMm)
I=rs(0)
rs.Close
checkMm=I
EndFunction
PrivateSubtxtYmm_LostFocus()
'更新密码前调用身份验证过程
IfcheckMm(lblZyID,txtYmm)=1Then
txtYmm.Enabled=False
txtXmm.Enabled=True
cmdOK.Enabled=True
txtXmm.SetFocus
Else
MsgBox该职员身份或密码验证无效!
vbInformation
txtYmm.SetFocus
EndIf
SubEnd
系统主窗体的设计及实现
系统主窗体的主要设计结构有菜单栏、工具栏和状态栏三部分。
如下图2-3所示:
图2-3系统主窗体图
为了实现这三部分的功能,就必须赋于它们相对应功能的代码。
下面就一一列举:
显示工作人员登记窗的代码是:
PrivateSubmnuXtGzrydj_Click()
DimfrmNewWinAsNewfrmGZRYDJ
'显示工作人员登记窗frmNewWin.ShowvbModalSetfrmNewWin=Nothing
EndSub
显示物品类别登记窗的代码是:
PrivateSubmnuXtWplbdj_Click()
DimfrmNewWinAsNewfrmWpzldj
'显示物品类别登记窗vbModalfrmNewWin.ShowSetfrmNewWin=Nothing
EndSub
显示数据维护窗的代码是:
PrivateSubmnuXtSjwh_Click()
DimfrmNewWinAsNewfrmSJWH
'显示数据维护窗vbModalfrmNewWin.ShowSetfrmNewWin=Nothing
EndSub
显示打印设置的代码是:
PrivateSubmnuXtSetPrint_Click()
SetPrint
EndSub
显示物品登记与物流处理窗体的代码是:
PrivateSubmnuWlcl_Click()
frmWlcl.SetFocus
EndSub
显示物品流通查询窗体的代码是:
PrivateSubmnuWlcx_Click()
frmWlcx.SetFocus
EndSub
显示物品流通汇总窗体的代码是:
PrivateSubmnuWlhz_Click()
frmWlhz.Show
EndSub
显示或隐藏工具栏的代码是:
PrivateSubmnuWindowToolbar_Click()
'显示或隐藏工具栏
IfmnuWindowToolbar.CheckedThen
tbToolBar.Visible=False
mnuWindowToolbar.Checked=False
Else
tbToolBar.Visible=True
mnuWindowToolbar.Checked=True
EndIf
EndSub
'显示或隐藏状态栏的代码是:
PrivateSubmnuWindowStatusBar_Click()
'显示或隐藏状态栏
IfmnuWindowStatusBar.CheckedThen
sbStatusBar.Visible=False
mnuWindowStatusBar.Checked=False
Else
sbStatusBar.Visible=True
mnuWindowStatusBar.Checked=True
EndIf
EndSub
以上就是对菜单栏内各项其功能所编写的代码。
下面是对工具栏所编写的代码。
如下:
PrivateSubtbToolBar_ButtonClick(ByValButtonAsMSComctlLib.Button)
'选择执行工具栏命令
SelectCaseButton.Index
Case1
mnuXtGzrydj_Click
Case2
mnuXtWplbdj_Click
Case3
mnuXtSjwh_Click
Case4
mnuWlcl_Click
Case5
mnuWlcx_Click
Case6
mnuWlhz_Click
Case7
mnuHelpSearch_Click
EndSelect
EndSub
本界面引用了几个组件,分别是Imagelist,Toolbar,StatusBar,CommonDialog和
MDIForm菜单编辑器。
这里我分别介绍一下他们各自的用途。
1.Windows窗体ImageList组件用于在控件(如
ListView、TreeView、ToolBar、Button和TabControl控件)上显示图像。
图像列表使
您能够为一致的单个图像目录编写代码。
其下图2-4就是通过该组件对工具栏上的按键添加图像的。
3.Windows窗体StatusBar控件用作窗体中的一块区域,通常显示在窗口的底部,
控件可包含状态栏面板,用以显示应用程序可在该区域中显示各种状态信息。
StatusBar指示状态的图标,或一系列指示进程正在执行的动画图标(如MicrosoftWord指示正在
保存文档)。
其下图2-6就是状态栏的各窗格设置其属性的对话框。
图2-6属性页图
4.CommonDialog控件提供一组标准的操作对话框,进行诸如打开和保存文件,设置
打印选项,以及选择颜色和字体等操作。
在应用程序中要使用CommonDialog控件,可将其添加到窗体中并设置其属性。
控件
所显示的对话框由控件的方法确定。
在运行时,当相应的方法被调用时,将显示一个对话
控件是以图标的形式显示在窗体中。
该图CommonDialog框或是执行帮助引擎;在设计时,
标的大小不能改变。
使用指定的方法,CommonDialog控件能够显示下列对话:
方法所显示的对话框
ShowOpen显示“打开”对话框
ShowSave显示“另存为”对话框
ShowColor显示“颜色”对话框
ShowFont显示“字体”对话框
ShowPrinter显示“打印”或“打印选项”对话框
ShowHelp调用Windows帮助引擎
5.菜单编辑器主要是提供了一个设计菜单的工具。
下图2-7就是菜单编辑器对话框。
工作人员登记窗体的设计及实现
工作人员登记窗体上放置一个DataList控件,一个Image控件,一个ListBox控件,
四个TextBox控件,七个CommandButton控件,七个Label控件和一个CheckBox控件。
而数据库的链接采用代码来完成。
其窗体如图2-8所示:
工作人员登记窗体图2-8图
该窗体主要是完成工作人员登记的,所以重要完成添加工作人员登记的编码是本窗体。
其代码如下:
PrivateSubcmdAdd_Click()