物流管理系统软件工程设计报告.docx
《物流管理系统软件工程设计报告.docx》由会员分享,可在线阅读,更多相关《物流管理系统软件工程设计报告.docx(18页珍藏版)》请在冰豆网上搜索。
物流管理系统软件工程设计报告
1.引言1
1.1实习目的1
1.2实习要求2
2.系统设计2
2.1系统需求分析3
2.2系统概要设计5
3数据库设计与实现6
4.1ER图6
4.2数据库表格设计8
4系统功能实现10
5.1登录窗体的设计及实现10
5.2系统主窗体的设计及实现11
5.3工作人员登记窗体的设计及实现15
6.结束语16
参考文献16
物流管理系统
一.引言
实习目的:
通过实习,参与具体的java开发项目,进一步提高了java开发的基本技术,丰富java开发的实战经验。
过学习,巩固大学所学专业的基础知识,提高分析,判断和处理实际问题的能力,锻炼自己的实际动手能力,增强自己的团队协作意识,了解计算机专业软件开发的具体流程,完善了自己的知识结构。
为毕业之后能够更快地进入工作状态并且能够更好地工作,打好一定的基础。
实习要求:
能够熟练运用Java,独立设计和编制一个具有一定难度的、解决实际应用问题的物流管理系统的应用程序。
2.系统设计
软件系统的总体设计大约要经历可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试以及维护等七个阶段。
可行性分析和项目开发计划在前面已经叙述,下面所要做的是进行软件需求分析,概要设计和详细设计。
编码过程将在下一章节论述,而测试和维护过程不在本文中叙述。
?
系统需求分析
在经过前一阶段的分析之后,我确定了我的开发课题为仓库物流管理系统。
现在所要做的是要准确定义系统必须做什么以及系统必须具备的功能。
软件需求分析中我采用结构化分析方法(Structured?
Analysis,简称SA),SA是面向数据流进行需求分析的方法,像所有的软件分析方法(如面向对象分析方法、IDEF方法等等)一样,SA也是一种建模活动,它使用简单易读的符号,根据软件内部数据传递、变换的关系,自顶向下逐层分解,描绘满足功能要求的软件模型。
在系统中我采用数据流图(DFD)这种半形式化的描述方式表达需求。
它是一种功能模型,以图形的方式描绘数据在系统中流动和处理的过程,只反映系统必须完成的逻辑功能。
它有四种基本图形符号:
◆?
→:
箭头,表示数据流;
◆?
〇:
圆或椭圆,表示加工;
◆?
═:
双杠,表示数据存储;
◆?
□:
方框,表示数据的源点或终点。
为了表达较为复杂问题的数据处理过程,用一张数据流图是不够的,要按照问题的层次结构进行逐步分解,并以一套分层的数据流图反映这种结构关系。
在这里我一共使用了三层数据流图,即顶层图,0层图和1层图(也是底层图)。
在多层数据流图中,顶层流图仅包含一个加工,它代表被开发系统,它的输入流是该系统的输入数据了,输出流是该系统的输出数据;底层流图是指其加工不需要再做分解的数据流图,中间层流图表示对其上层父图的细化,它的每一步加工可能继续细化成子图。
经过对系统的分析首先得到系统的顶层DFD,如图1-1:
图1-1物流管理系统顶层图
进一步细化得到系统的0层DFD,如图1-2:
图1-2物流管理系统的0层图
再进一步细化每一个数据加工功能,得到系统的1层DFD图(略)。
在这里只给出有关顶层和0层数据流图,它们体现出了系统的功能部分,而1层DFD图暂略,后面具体说明其内容。
通过以上对数据流图的分析之后,我们已大体地了解了系统的功能和目标,接下来所要做的就是系统功能模块的划分和数据库的设计,也就是系统的概要设计。
系统概要设计
在软件需求分析阶段,搞清楚了软件“做什么”的问题,形成了目标系统的逻辑模型。
现在我们所要做的就是要把软件“做什么”的逻辑模型变换为“怎么做”的物理模型,即着手实现软件的需求。
首先,我们需要描述的是系统的总的体系结构。
系统结构设计
系统的概要设计中最重要的就是系统的模块化。
模块化是指解决一个复杂问题时自项向下逐层把软件系统划分成若干个模块的过程。
每个模块完成一个特定的功能,所有的模块按某种方法组织起来,成为一个整体,完成整个系统所要求的功能。
?
将系统划分为多个模块是为了降低软件系统的复杂性,提高可读性、可维护性,但模块的划分不能是任意的,应尽量保持其独立性。
也就是说,每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单,即尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础。
在系统的概要设计中我采用结构化设计(Structure?
Design,简称SD),SD以需求分析阶段产生的数据流图DFD为基础,按一定的步骤映射成软件结构。
我首先将整个系统化分为几个小问题,小模块,在系统中,我设计了工作人员管理,物品类别管理,数据维护管理,物品登记与物流处理管理,物流情况查询和物流情况汇总6个模块。
然后,进一步细分模块,添加细节。
比如,工作人员管理我又将其分为工作人员注册、工作人员注销、授权、密码修改、增加照片等;物品登记与物流处理管理分为物品登记、进库、出库、报损等。
以下就是系统功能模块图
,如图1-3:
图1-3系统功能模块图
数据库设计
在信息世界中,信息从客观事物出发流经数据库,通过决策机构最后又回到客观世界,信息的这一循环经历了三个领域:
信息世界,数据世界,现实世界。
现实世界的事物反映到人的头脑中,人的大脑对它有个认识过程,经过分析(选择、命名、分类等)进入信息世界。
这些信息再进一步加工、编码,然后进数据世界,而软件系统的开发工作需要考虑这两个方面的问题,也就是要考虑系统开发所需要的数据,以及如何对这些数据进行操作。
这两个问题贯穿了整个软件系统的开发过程,这也就是数据库的设计问题,软件设计的一个核心。
1.E-R图设计
在系统设计的开始,我首先考虑的是如何用数据模型来数据库的结构与语义,以对现实世界进行抽象。
目前广泛使用的数据模型可分为两种类型,一种是独立于计算机系统的“概念数据模型”,如“实体联系模型”;另一种是直接面向数据库逻辑结构的“结构数据模型”。
在本系统中我采用“实体联系模型”(E-R模型)来描述数据库的结构与语义,以对现实世界进行第一次抽象。
E-R模型直接从现实世界抽象出实体类型及实体间联系,然后用E-R图来表示数据模型。
它有两个明显的优点:
接近于人的思维,容易理解;与计算机无关,用户容易接受。
但E-R模型只能说明实体间语义的联系,不能进一步说明详细的数据结构,它只是数据库设计的第一步。
ER图是直观表示概念模型的工具,它有四个基本成分:
◆?
矩形框,表示实体类型(考虑问题的对象)。
◆?
菱形框,表示联系类型(实体间的联系)。
◆?
椭圆形框,表示实体类型和联系类型的属性。
对于关键码的属性,在属性名下划一横线。
◆直线,联系类型与其涉及的实体类型之间以直线连接。
本系统为仓库物流管理,主要管理物品的登记、流通以及种类和工作人员等事项。
仓库根据需要可以查询物品的信息,同时还需要了解在库存流通中员工的参与情况。
依据物流管理的实际情况,考虑了多方面的因素以后,确定系统的E-R图如下:
图1-4工作人员表E-R图
图1-5物品登记表E-R图
图1-6物品流通表E-R图
图1-7物品种类表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)
'验证用户
Ifrs.EOFThen
MsgBox"登录失败!
",vbInformation
txtZyID.SetFocus
txtZyID.SelStart=0
txtZyID.SelLength=Len(txtZyID.Text)
Else
gbytZyQX=rs("操作权限")
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
EndSub
系统主窗体的设计及实现
系统主窗体的主要设计结构有菜单栏、工具栏和状态栏三部分。
如下图2-3所示:
图2-3系统主窗体图
为了实现这三部分的功能,就必须赋于它们相对应功能的代码。
下面就一一列举:
显示工作人员登记窗的代码是:
PrivateSubmnuXtGzrydj_Click()
DimfrmNewWinAsNewfrmGZRYDJ
frmNewWin.ShowvbModal'显示工作人员登记窗
SetfrmNewWin=Nothing
EndSub
显示物品类别登记窗的代码是:
PrivateSubmnuXtWplbdj_Click()
DimfrmNewWinAsNewfrmWpzldj
frmNewWin.ShowvbModal'显示物品类别登记窗
SetfrmNewWin=Nothing
EndSub
显示数据维护窗的代码是:
PrivateSubmnuXtSjwh_Click()
DimfrmNewWinAsNewfrmSJWH
frmNewWin.ShowvbModal'显示数据维护窗
SetfrmNewWin=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()
'追加新记录
OnErrorResumeNext
rs.AddNew
rs("职员ID")="新职员"
rs("姓名")=""
rs("操作权限")="00000"
rs("停用")=False
rs("联系电话")=""
rs("日期")=Date
rs("说明")=""
txtZyID.Enabled=True
txtZyID.SetFocus
EndSub
四结束语
本系统是一个面向通用型企业仓管系统,具有一定实用性的数据库信息管理系统。
它主要完成对仓库的一系列管理,包括物品登记以及物品流通和工作人员信息管理。
主要目的是熟悉数据库管理系统的开发过程和对数据库管理软件MicrosoftAccess2000的熟悉和使用。
由于时间关系,只给出简单的分析和设计过程,没给出太多细节的处理。
本系统具有相当的实用功能。
不管是在物品流通处理方面,还是在查询和汇总方面都大胆采用搜索树的方式,只不过在物品流通处理方面是采用不计时的浏览信息,而在查询和汇总方面则是采用计时(按一定时间范围)进行浏览信息的,这样浏览信息相当直观准确些。
在汇总方面还可以以二维三维图表的形式表示出来,这样浏览信息就更加直观了。
入库、出库、报损也更为灵活方便。
工作人员对系统的操作绝对权限制,不会越权。
系统在设计过程中不可避免地遇到了各种各样的问题,由于整个系统完全都是由个人设计的,有关VB许多细节问题都要靠自己去摸索,加之本人水平有限,并没有完全地理解VB的强大功能,而且还存在着许多不足之处。
如:
1.受开发条件和开发时间的限制,本系统只利用了本地数据库Access,它同应用程序处于同一系统中,能存储的数据量也有一定限制,并没有发挥出其数据库方面的优势;
2.报表打印功能尚不够全面完善,不能实现二三维报表打印;
3.在登录数据输入时没有及时的对数据库进行数据校验,不能保证程序的流畅性,但后来调整已基本解决;
4.由于时间关系,系统功能实现不够完善,使用不是很方便,还会留有一些BUG等。
这些都是需要完善的地方,该系统离实际使用也还有相当的距离,需要进行不断地补充和完善。
通过本次毕业设计我学到了不少新的东西,也发现了大量的问题,有些在设计过程中已经解决,有些还有待今后慢慢学习。
只要学习就会有更多的问题,有更多的难点,但也会有更多的收获。