公司仓库管理系统.docx
公司仓库管理系统第一章 公司介绍与系统的需求分析1.1公司简介佳雪公司是一个专销电动机的公司,主要业务是进行电动机的进货与分销,作为一个销售的中介公司,其要求有入库与出库的主要数据库,可以简单的记录数据,并且可以进行多方面的查询,使得公司有较详细的数据统计与分析。其主要业业务如以以下图所所示:1. 厂商商 仓库库 顾客图1.11.1 2.查查询功能能1) 按型号查查询有两个结结果:AA生成 入库量量、出库库量、节节余量 BB生成 两个数数据来源源表,包包括出库库来源与与入库来来源;2) 按单位查查询 结果:生成 型号、产品名名称、时时间(入入/出库库)、单单价 再生成成出入库库的两个个基本情情况表,包括供供应商和和顾客的的基本情情况,如如型号、出/入入库时间间,单价价,发票票编号、结帐情情况; 3.本本系统主主要运用用Vissuall Baasicc的内嵌嵌数据库库Acccesss来记录录数据;4.产品品信息: 序序号(自自动生成成)、型型号(文文本)、入库时时间(日日期)、出库时时间(日日期)、数量(数字)、发票票编号(文本)、单价价(货币币)、厂厂商名称称(文本本)、供供应商名名称(文文本)、厂商与与供应商商的电话话(数字字)、结结帐情况况(是/否)是为00,否为为-11. 2分析与与描述输入数据一.根据据1.11章节的的具体要要求,总总结出以以下的数数据流程程:顾客出库入库供应商型号删除修改单位增加删除修改增加出库查询 入库 图图1.22.1 数据流流程二.根据据以上情情况,按按要求设设计了几几个相关关的数据据库 表表:出库库、入库库 查查询:查查询结余余、出库库查询、入库查查询、型型号出库库查询、型号入入库查询询l 主要的出出库表属属性如以以下表所所示:字段名属性字段大小小序号自动生成成长整型型号文本50产品名称称文本50出库数量量数字长整型单价货币自动小数数出库时间间日期年-月-日发票编号号文本50顾客电话话文本50结帐情况况是/否2 表表1.22.1l 由于入库库表与出出库想类类似,所所以在此此不做详详细介绍绍。l 为了方便便查询,因此在在出库与与入库的的基础上上增加了了几个查查询表,具体字字段如下下:1. 查询结余余:型号号、产品品名称、出库数数量、入入库数量量2. 出库查询询:顾客客名称、型号、出库时时间、单单价、出出库数量量OF SUMM、发票票编号、结帐情情况3. 入库查询询:供应应商名称称、型号号、入库库时间、单价、入库数数量OFF SUUM、发发票编号号、结帐帐情况4. 出库型号号查询:型号、产品名名称、顾顾客名称称、单价价、发票票编号、结帐情情况5. 入库型号号查询:型号、产品名名称、供供应商名名称、单单价、发发票编号号、结帐帐情况1.3数数据库的的主要特特点u 数据库中中的每一一个表都都必须符符合下面面几个特特征:*表中的的每一个个单元的的内容只只有一个个值*所有字字段的名名称都不不相同*记录的的前后次次序和字字段的左左右次序序可以变变化,不不受限制制*数据库库中的表表的上下下次序不不受限制制*表中不不应有内内容完全全相同的的记录*表中的的每一个个字段都都必须有有相同的的数据类类型使用Viisuaal BBasiic开发发应用程程序的两两个主要要思想:*可视设设计*事件驱驱动编程程Visuual Bassic应应用程序序不同于于其他语语言开发发的单一一性程序序。使用用Vissuall Baasicc编程时时,必须须首先确确定应用用程序如如何与用用户交互互,如鼠鼠标单击击,用户户必须编编写代码码控制这这些事件件的响应应方法。使用Viisuaal BBasiic开发发数据库库应用程程序的一一般步骤骤如下所所示:(1) 建立数据据库(2) 建立用户户界面(3) 编写代码码(4) 调试运行行(5) 编译应用用程序(6) 发布应用用程序界面设计计(1) 控件的位位置(2) 界面元素素的一致致性(3) 保持界面面的简明明(4) 使用颜色色和图象象:增加加视觉的的感染力力(5) 图象和图图标:增增加应用用程序的的视觉上上的趣味味(6) 选取字体体Visuual Bassic应应用程序序的结构构: 由于VVisuual Bassic应应用程序序是基于于对象的的,所以以应用程程序的代代码结构构就是该该程序在在屏幕上上物理表表示的模模型。根根据定义义,对象象包含数数据和代代码。在在屏幕上上看到的的窗体代代表属性性,这些些属性定定义了窗窗体的外外观和内内在特性性。本设计主主要是运运用Daata控控件。 Datta控件件主要是是打开、访问并并操作已已有的数数据库,它是VVisuual Bassic 访问数数据库的的最常用用的工具具之一。由于DDataa控件使使用Miicroosofft的JJet引擎擎来实现现数据访访问(与与MiccrossofttAcccesss 所用用的数据据库引擎擎相同),使用用户可以以无缝地地访问很很多标准准的数据据库格式式,而且且无需编编写任何何代码就就可以创创建数据据应用程程序,因因此这种种Vissuall Baasicc 内部部的Daata控控件最合合适小的的(桌面面)数据据库,诸诸如Acccesss和IISAMM数据库库等。 由于DDataa控件是是Vissuall Baasicc 的内内部控件件,因此此可以直直接在标标准工具具箱中找找到该控控件。 在程序序运行过过程中,只要用用鼠标单单击控件件上的箭箭头按钮钮,系统统将自动动修改DDataa控件指指向的记记录和显显示在约约束控件件中的数数据,而而不需要要编写任任何代码码。 可以将将多个DDataa控件同同时添加加到一个个工程甚甚至是同同一个窗窗体中。另外,每个控控件可以以连接到到不同的的数据库库或同一一个数据据库的不不同表上上,还可可以和代代码一起起查询满满足的语语句的表表的记录录集。 使用DDataa控件可可以显示示、编辑辑和更新新来字各各种已有有的数据据库信息息。此外外,还可可以访问问和操作作远程的的开放式式数据库库连接。除了使用用Datta控件件之外,还运用用的Viisuaal BBasiic 66.0的的新增控控件功能能,Dbblisstboox它不不象标准准的列表表框或组组合框那那样需要要使用AAddIItemm方法添添加列表表项。另另外,它它们还可可以有选选择地把把某个选选定的字字段传递递给另一一个Daata控控件,使使得它对对于“查找表表”应用程程序很理理想。与其他的的约束控控件不同同,这些些控件可可以同时时显示多多个记录录。约束束数据列列表控件件类似于于普通的的列表框框控件,可以显显示记录录集中的的数据,网格中中的每一一行代表表记录集集中的一一个记录录。第二章 管理系系统的设设计与分分析2.1进进入界面面l 由于系统统的的界界面比较较单一,因此在在设计过过程中运运用了许许多网上上下载的的图片来来增添界界面的可可观性。l 在考虑到到操作员员的技术术水平有有限,因因此在控控件方面面只运用用了COOMMAAND,这样不不仅能是是界面清清楚,更更能是操操作者很很快学会会,简单单易懂。l 图2.11.1是是进入本本系统的的状态图图,单击击“确定”可以进进入界面面,如按按“系统信信息”的话,将显示示本系统统的具体体软硬件件情况。 图2.1.11当图2.1.11中的“确定”按钮被被激活时时,将进进入图22.1.3的屏屏幕,界界面的图图片是图图片引入入的,接接着将进进入正式式的编辑辑或查询询状态。具体的系系统情况况如图22.1.2所示示:图2.11.2图2.11.32. 2入库界界面l 当激活入入库按钮钮时将出出现以下下的界面面(图22.2.1) 图22.2.1l 入库窗体体(图22.2.1)及及其各个个控件的的主要属属性 控件类型型控件名主要属性性FormmFrmrrsg11Capttionn=“入库情情况”DataaDataa1Dataabassenaame=“Addb2.mdbb”Recoordssetttypee=1DynnaseetCapttionn=“入库情情况”CommmanddDiaaloggCommmandd1Capttionn=“上一个个”Commmandd2Capttionn=“下一个个”Commmandd3Capttionn=“确定”Commmandd4Capttionn=“取消”Commmandd5Capttionn=“退出”Commmandd6Capttionn=“增加”Commmandd7Capttionn=“修改”Commmandd8Capttionn=“删除”LablleLablle1Capttionn=“序号”Lablle2Capttionn=“型号”Lablle3Capttionn=“产品名名称”Lablle4Capttionn=“数量”Lablle5Capttionn=“单价”Lablle6Capttionn=“入库时时间”Lablle7Capttionn=“发票名名称”Lablle8Capttionn=“供应商商名称”Lablle9Capttionn=“电话”Lablle100Capttionn=“结帐情情况”TexttTextt1Capttionn=“序号”Dataasouurcee=“datta1”Textt2Capttionn=“型号”Dataasouurcee=“datta1”Textt3Capttionn=“产品名名称”Dataasouurcee=“datta1”Textt4Capttionn=“数量”Dataasouurcee=“datta1”Textt5Capttionn=“单价”Dataasouurcee=“datta1”Textt6Capttionn=“入库时时间”Dataasouurcee=“datta1”Textt7Capttionn=“发票名名称”Dataasouurcee=“datta1”Textt8Capttionn=“供应商商名称”Dataasouurcee=“datta1”Textt9Capttionn=“电话”Dataasouurcee=“datta1”Textt10Capttionn=“结帐情情况”Dataasouurcee=“datta1”表2.22.1l 控件说明明Ø 增加新记记录当单击“确定”按钮后后,“确定”和“取消”两个按按钮显示示,同时时使其他他的按钮钮不可见见,这样样做是为为了防止止用户的的误操作作。其主要程程序如下下:Privvatee Suub CCommmandd5_CClicck()xg = Trrue'显示“确定”和“取消”两个按按钮Commmandd3.VVisiiblee = TruueCommmandd4.VVisiiblee = Truue'取消其其他按钮钮功能Commmandd5.EEnabbledd = FallseCommmandd6.EEnabbledd = FallseCommmandd7.EEnabbledd = FallseCommmandd8.EEnabbledd = FallseCommmandd1.EEnabbledd = FallseCommmandd2.EEnabbledd = FallseDataa1.RRecoordsset.AdddNeww '添添加一个个新记录录Textt1.SSetFFocuus ''光标在在TEXXT1处处 end subbØ 修改记录录在调用EEDITT方法之之前,约约束控件件中的数数据是只只读的,用户无无法对其其进行修修改。调调用了EEDITT方法后后,用户户可以在在约束控控件中修修改记录录的值。如果在在对当前前记录进进行修改改之前修修改,未未使用EEDITT方法,将发生生运行时时错误。其主要程程序如下下:Privvatee Suub CCommmandd6_CClicck()xg = TrrueCommmandd3.EEnabbledd = TruueCommmandd4.EEnabbledd = Truue'取消其其他按钮钮功能Commmandd5.EEnabbledd = FallseCommmandd6.EEnabbledd = FallseCommmandd7.EEnabbledd = FallseCommmandd8.EEnabbledd = FallseCommmandd1.EEnabbledd = FallseCommmandd2.EEnabbledd = Fallse'对记录录进行编编辑Dataa1.RRecoordsset.EdiitTextt1.SSetFFocuusEnd SubbØ 删除记录录当用户单单击“删除”命令按按钮时,为了防防止用户户误删除除数据,程序将将调用MMsgbbox()函数数以弹出出对话框框,询问问用户是是否真的的要删除除该记录录。如果果用户单单击对话话框上的的“确定”按钮,程序调调用记录录集的DDeleete方方法,将将记录集集的当前前记录设设置为空空,并从从原始的的表中删删掉当前前记录。但是删删除的记记录仍然然是当前前记录,只是将将其变为为了无效效的记录录,任何何对其的的引用都都会产生生错误。其主要程程序如下下:Privvatee Suub CCommmandd6_CClicck()xg = TrrueCommmandd3.EEnabbledd = TruueCommmandd4.EEnabbledd = Truue'取消其其他按钮钮功能Commmandd5.EEnabbledd = FallseCommmandd6.EEnabbledd = FallseCommmandd7.EEnabbledd = FallseCommmandd8.EEnabbledd = FallseCommmandd1.EEnabbledd = FallseCommmandd2.EEnabbledd = Fallse'对记录录进行编编辑Dataa1.RRecoordsset.EdiitTextt1.SSetFFocuusEnd SubbPrivvatee Suub CCommmandd7_CClicck()ss = MssgBoox(""真的要要删除吗吗?", vbbYessNo + vvbInnforrmattionn, ""删除记记录")'如果要要删除If (ss = vvbYees) TheenDataa1.RRecoordsset.DelleteeDataa1.RRecoordsset.MovveNeextIf DDataa1.RRecoordsset.EOFF ThhenDataa1.RRecoordsset.MovveLaastCommmandd2.EEnabbledd = FallseEnd IfEnd IfEnd SubbØ 移动数据据当用户单单击“上一个个”和“下一个个”按钮是是,系统统将自动动转换数数据,但但注意,当移至至第一个个记录时时,“下一个个”按钮将将失效;移至最最后一个个记录是是,“上一个个”按钮也也将失效效。其中在设设计程序序时,为为了防止止“NO Currrennt RRecoord”这样的的错误,在移动动记录指指针时测测试记录录集的BBOF 和EOOF属性性。如果果单击“上一个个”和“下一个个”命令按按钮将导导致记录录指针指指向空指指针,则则分别调调用Mooveffirsst和Movvelaast方方法,这这是防止止“NO Currrennt RRecoord”错误出出现的最最简单和和最有效效的方法法。与此此同时,如果记记录集的的BOFF属性为为Truue,则则置“上一个个”命令按按钮为非非激活状状态,是是用户无无法再单单击该按按钮。同同样,当当记录集集的BOOF属性性为Trrue时时,置“下一个个”命令按按钮为非非激活状状态。其主要程程序如下下:Privvatee Suub CCommmandd1_CClicck()xg = FaalseeDataa1.RRecoordsset.MovvePrreviiouss'如果是是第一个个记录,BOFF属性为为TRUUEIf DDataa1.RRecoordsset.BOFF ThhenDataa1.RRecoordsset.MovveFiirsttCommmandd1.EEnabbledd = FallseElseeCommmandd2.EEnabbledd = TruueCommmandd1.EEnabbledd = TruueEnd IfEnd SubbPrivvatee Suub CCommmandd2_CClicck()xg = FaalseeDataa1.RRecoordsset.MovvePrreviiouss'如果当当前记录录是记录录集中最最后一个个记录,EOFF属性为为TRUUEIf DDataa1.RRecoordsset.BOFF ThhenDataa1.RRecoordsset.MovveLaastCommmandd2.EEnabbledd = FallseElseeCommmandd2.EEnabbledd = TruueCommmandd1.EEnabbledd = TruueEnd IfEnd SubbØ 用Upddataa方法确确认增加加和修改改当用户修修改和增增加完一一个记录录的数据据后,需需要将数数据保存存到数据据库中。可以通通过调用用记录集集的Uppdatta方法法把数据据保存到到数据库库中。单单击“确定”按钮时时,记录录将被记记如数据据库。其主要程程序如下下:Privvatee Suub CCommmandd3_CClicck()On EErroor GGoToo errrorr1xg = TrrueDataa1.RRecoordsset.UpddateeCommmandd3.EEnabbledd = FallseCommmandd4.EEnabbledd = FallseCommmandd2.EEnabbledd = TruueCommmandd1.EEnabbledd = TruueCommmandd4.EEnabbledd = TruueCommmandd5.EEnabbledd = TruueCommmandd6.EEnabbledd = TruueCommmandd7.EEnabbledd = TruueCommmandd8.EEnabbledd = TruueExitt Suuberroor1: MssgBoox EErr.Desscriiptiion, vbbOKOOnlyy, ""错误提提示"End SubbØ 用CanncellUpddataa方法放放弃增加加和修改改如果用户户修改了了约束控控件里的的数据后后,在没没有单击击“确定”命令按按钮之前前,想放放弃刚才才的增加加或修改改,则可可以单击击“取消”命令。 由由于其程程序与UUpdaata方方法相似似,因此此不做重重复解释释。Ø 定义Daata_Vallidaata事事件过程程对于一个个新记录录或编辑辑的记录录,如果果不能维维护引用用完整性性或不能能反映该该旧路的的实体原原型,那那么它就就是无效效的,并并且破坏坏了数据据库的完完整性。为了在在“入库情情况”表中建建立一个个有效的的记录,就必须须要有主主关键字字段“型号”的值。因此,对已经经存在和和新增加加的旧路路都要先先测试其其“型号”字段之之后才可可以执行行更新操操作。其主要程程序如下下:'当约束束控件中中内容改改变时If TTextt2.DDataaChaangeed TThennSavee = TruueIf DDataa1.RRecoordsset.ReccorddCouunt > 11 ThhenCommmandd1.EEnabbledd = TruueCommmandd2.EEnabbledd = TruueEnd IfElseeIf TTextt2.TTextt = "" Andd xgg = Truue TThenn ss = MMsgBBox("必须须要有型号!", vbbOKOOnlyy + vbIInfoormaatioon, "提示示") Acttionn = Fallse Commmannd3.Vissiblle = Trrue Coommaand44.Viisibble = TTruee Commmannd1.Vissiblle = Trrue Commmannd2.Vissiblle = Trrue Commmannd7.Vissiblle = Trrue Commmannd8.Vissiblle = Trrue Commmannd5.Vissiblle = Trrue Commmannd6.Vissiblle = Trrue Endd Iff Endd Iff If Acttionn = datta_aactiionuunlooad Or Acttionn = datta_aactiioncclosse TThenn Savve = Trrue Endd IffEnd Subb2.3出出库界面面当单击“出库”按钮的的时候,系统将将进入出出库信息息输入界界面,如如(图22.3.1)所所示,其其基本情情况与入入库相类类似,依依次不做做具体介介绍。图2.33.12.4查查询界面面l 当用户单单击“查询”按钮时时,系统统将出现现密码登登陆框,因为查查询的是是内部资资料,因因此,需需身份验验证,如如图2.4.11图2.44.1l 随后将进进入查询询功能,如图22.4.2图2.44.2l 用户可根根据不同同需要进进行“按型号号”和“按单位位”的查询询。Ø 单击“按按型号”,系统统将进入入以型号号为关键键字段的的查询,如图22.4.3。其其中根据据SQLL语句的的查询,选出出出库型号号与入库库型号相相同的记记录,统统计出入入库与出出库的总总数量,然后可可按“上一个个”和“下一个个”进行查查询,也也可按出出库与入入库分别别查询记记录。图2.44.3Ø 当用户单单击“查询出出库”按钮是是,系统统进入界界面,如如图2.4.44图2.44.4l 图2.44.4窗窗体及其其上面控控件的属属性设置置控件类型型控件名主要属性性FormmfrmddbliistCapttionn=“查询出出库”DataaDataa1DataabasseNaame=“a:db22.mddb”RecoordssetTTypee=1RecoordSSourrce=“出库型型号”FrammeFramme1Capttionn=“具体情情况”LablleLablle1Cqpttionn=“产品名名称”Lablle2Cqpttionn=“单价”Lablle3Cqpttionn=“发票编编号”Lablle4Cqpttionn=“顾客名名称”Lablle5Cqpttionn=“结帐情情况”TexttTextt1Dataafieeld=“具体情情况”Dataasouurcee=“Datta1”Textt2Dataafieeld=“具体情情况”Dataasouurcee=“Datta1”Textt3Dataafieeld=“具体情情况”Dataasouurcee=“Datta1”Textt4Dataafieeld=“具体情情况”Dataasouurcee=“Datta1”Textt5Dataafieeld=“具体情情况”Dataasouurcee=“Datta1”DBliistDbliist11Listtfieeld=“型号”Rowssourrce=“Dataa1”表2.44.1Ø 单击Dbblisst框中中的型号号,Frramee中将自自动显示示记录,以供用用户查询询。l 当用户单单击“查询入入库”按钮时时,将出出现图22.4.5的界界面。图2.44.5l 再回到查查询界面面,单击击“按单位位”按钮,此时系系统将进进入按单单位查询询的截面面,如图图2.44.6图2.44.6Ø 分别按“顾客”和“供应商商”按钮,系统将将分别进进入不同同的查询询界面,如图22.4.7和图图2.44.8由于以下下两个窗窗口的属属性以及及其设计计方法类类似与图图4.33,因此此也不做做详细介介绍。图2.44.7图2.44.82.5退退出程序序l 再回到登登陆主窗窗口,(图2.1.33),单单击“退出”按钮,系统将将退出程程序,显显示以下下窗口(图2.5.11),单单击图中中的“再见”,此程程序也将将结束。图2.55.1第三章 系统运运行与调调试测试本身身的目的的是尽可可能地暴暴露程序序中的错错误,因因此在编编译完成成后,我我也尝试试用现实实数据来来进行正正确的调调试。在在从中曾曾出现过过以下几几个具体体问题:1. MSDNN不存在在2. 524数数据转换换错误3. 当单击“上一个个”和“下一个个”按钮时时会出现现数据不不存在而而退出程程序4. DBLIIST控控件不能能正确引引入数据据当出现以以上问题题是,经经过严密密与反复复的调试试同样用用了一些些方法来来解决1. 改变数据据原来的的设计方方法,改改用文本本型的数数据为多多2. 仔细表明明正确的的日期输输入法3. 当进行数数据更新新时,没没有确定定或取消消,系统统将提示示以下对对话框,如图33.1图3.11 4.当当主要关关键字段段“型号”没有输输入时,系统也也将提示示以下对对话框,如图33.2图3.22 5.当当用户要要删除记记录时,为了保保证不误误操作,系统也也将提出出一个对对话框,如图33.3图3.33 6.为为了便有有运行,还将程程序打包包,进行行安装,在打包包过程中中,也出出现以下下对话框框,如图图3.44图3.44第四章 思想小小结在短短的的两个月月内,通通过参考考各种VVB编程程书籍、网上查查找信息息以及老老师的耐耐心知道道下,完完成了这这次毕业业设计浙江江佳雪仓仓库管理理系统。起初,我我看了许许多书籍籍,对该该公司的的要求也也只是初初步了解解,因此此在分析析软件需需求中碰碰到了一一些麻烦烦,但通通过赵敏敏媛老师师的正确确引导下下,把系系统分析析了比较较透彻了了。在编编译过程程中,最最让我印印象深刻刻的是用用DATTA控件件访问数数据,由由于DAATA控控件的局局限性,因此在在查询时时,碰到到了一些些不能查查询数据据的麻烦烦,但VVB6.0中有有新增的的DBLLISTT功能,可以直直接通过过此控件件来访问问数据库库,当我我找到此此方法时时,那么么所完成成的查询询就更为为完善了了。这次毕业业实际不不尽使我我了解了了VB在在数据库库方面编编程的概概要,更更让我知知道了计计算机的的变成秘秘诀在于于严密的的思考与与仔细的的推敲,只有这这样,才才会有一一个完善善的软件件生成。当然这这次的管管理系统统也一定定存在着着许多不不足之处处,但可可以适合合与如佳佳雪公司司这样的的小型销销售型公公司,但但为将来来的升级级提供了了更多的的方便的的途径。完成这次次设计,心理非非常高兴兴,也有有一点成成就感,因为这这是我独独立完成成的第一一个软件件,我相相信它将将在今后后的工作作生活中中为我带带来不小小的影响响。最后,我我还要感感谢多方方面的支支持以及及帮助过过我的人人,尤其其是我的的指导老老师,她她仔细认认真的态态度,对对我的帮帮助是非非常大的的,使得得我更完完善地完完成了次次管理系系统。22