库存管理系统(下)_第1页
库存管理系统(下)_第2页
库存管理系统(下)_第3页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

库存管理系统(下)

第五章系统实施5.1、开发工具简介本系统的前端开发工具,我选择了VisualBasic6.0,后台数据库采用Access2000。5.1.1VB简介Visual意为“可视化的”,指的是一种开发图形用户界面的方法,所以VisualBasic是基于Basic的可视化的程序设计语言。在VisualBasic中,一方面继承了Basic所具有的程序设计语言简单易用的特点,另一方面在其编程系统中采用了面向对象、事件驱动的编程机制,用一种巧妙的方法把Windows的编程复杂性封装起来,提供了一种所见即所得的可视化程序设计方法。5.1.2VB功能特点具有面向对象的可视化设计工具在VB中,应用面向对象的程序设计方法(OOP),把程序和数据封装起来视为一个对象,每个对象都是可视的。程序员在设计时只需用现有工具根据界面设计要求,直接在屏幕上“画”出窗口、菜单、按钮、滚动条等不同类型的对象,并为每个对象设置属性。程序员的编程工作仅限于编写相关对象要完成的功能程序,因而程序设计的效率可大大提高。事件驱动的编程机制事件驱动是非常适合图形用户界面的编程方式。在图形用户界面的应用程序中,是由用户的动作即事件掌握着程序运行的流向,每个事件都能驱动一段程序的运行。程序员只要编写响应用户动作的代码,而各个动作之间不一定有联系。提供了易学易用的应用程序集成开发环境在VB集成开发环境中,用户可设计界面、编写代码、调试程序,直至把应用程序编译成可执行文件在Windows中运行,使用户在友好的开发环境中工作。结构化的程序设计语言VB具有丰富的数据类型和结构化程序结构,作为一种程序设计语言,它还有如下一些特点:强大的数值和字符串处理功能丰富的图形指令,可方便地绘制各种图形提供静态和动态数组,有利于简化内存的管理过程可递归调用,使程序更为简练支持随机文件和顺序文件的访问提供了一个可供应用程序调用的包含多种类型的图标库具有完善的运行出错处理支持多种数据库系统的访问利用数据控件可访问的数据库系统有:MicrosoftAccess、Btrieve、DBASE、MicrosfotFoxPro和Paradox等,也可以访问MicrosoftExcel、Lotus1-2-3等多种电子表格。支持动态数据交换(DDE)、动态链接库(DLL)和对象的链接与嵌入(OLE)技术完备的HELP联机帮助功能与Windows环境下的软件一样,在VB中,利用帮助菜单和F1功能键,用户可以随时方便地得到所需要的帮助信息。VB帮助窗口中显示了有关的示例代码,通过复制、粘贴操作可获取大量的示例代码,为用户的学习和使用提供了极大的方便。VB程序设计的概念就是面向对象的概念,对象就是数据(DATA)和代码(CODE)互相结合的综合体。Windows上面的每一个图标,包括窗口本身都是对象,如果没有任何事情发生,对象处于停顿状态。当存在外来事件时,程序段执行,它的执行是由外来事件决定的。因此是“事件”驱动的。编写VB程序较为简单,首先将各个对象放在空白窗体上,然后将程序代码分别添加给对象或图标,将它们组合起来就可以随意运行了。在VB中,窗体实际上是一个对象,VB的窗体含有许多内嵌特性,这使得用户界面部分的建立像是从一个目录中挑选一个个合适的控件,而不是从零开始一步一步地建立控件。这种开发者能亲眼看到的程序设计过程就是“可视化程序设计”(VisualProgramming)5.1.3VB中的基本概念

对象:面向对象编程(OOP)的提法大家一定也很耳熟,虽然VisualBasic并不是完全的面向对象编程,但也利用了对象编程技术。对象简单地说就是大家经常看到的各种窗口、按钮、文本框甚至打印机等。

属性:如同电视有黑白、彩色之分一样,作为对象的Windows中的窗口也是有大有小,文本框的位置不可能完全一样,菜单要显示出不同的功能,这些都是由对象的属性决定的。不同对象的属性可能不同。属性一般决定了对象的位置、大小、显示等情况。

方法:就是对象能够做的事,如打印机对象就有打印(Print)方法、窗口对象支持隐藏(Hide)方法、很多对象支持移动(Move)方法等。

事件:就是对象对用户各种操作的反映情况。如用户用鼠标按一下按钮,就会触发按钮的“按”(Click)事件。

控件:控件就是VisualBasic提供的编程用的模块,与对象有直接的联系,如同积木的木块,使用这样的控件,就可以像拼图或堆积木一样“搭”、“拼”你的程序界面。VisualBasic中使用控件,简化了Windows中的窗口、按钮等对象的编程设计。每个控件都有各自的属性、事件及方法。只需修改这些特征你就可以随心所欲地编程了。最重要的是,你可以利用成千上万的各种扩充的控件来快速构造几乎能满足你任何要求的程序。例如,如果你不满意Windows简陋的媒体播放器,你就可以使用VB的多媒体控件在1小时以内设计一个完全自己风格的能够播放CD、VCD的多媒体播放器,而功能完全与之相当。5.1.4Access2000数据库简介作为Microsoft的office套件产品之一,access已经成为世界上最流行的桌面数据库系统。Access与许多优秀的关系数据库一样,可以让你很容易地连接相关的信息而且还对其他的数据库系统有所补充。它能操作其它来源的资料,包括许多流行的PC数据库程序(如dBASE,Paradox,MicrosoftFoxPro)和服务器、小型机及大型机上的许多SQL数据库。Access还完全支持Microsoft的OLE技术。Access还提供windows操作系统的高级应用程序开发系统。Access与其它数据库开发系统之间相当显著的区别就是:您不用写一行代码,就可以在很短的时间里开发出一个功能强大而且相当专业的数据库应用程序,并且这一愉快的过程是完全可视的!如果您能给它加上简短的VBA代码,那么您的程序决不比专业程序员潜心开发的程序差。Access的总体结构Access将所有有名字的东西都成为对象(object),在Access2000中,最重要的对象有表,查询,窗体,报表,宏和模块。表用户定义的存储资料的对象。每一个表都包含有关某个主体的信息。表包括存储不同种类资料的字段(列),而记录(行)则收集特定主体实例的所有信息。查询为来自一个或多个表的资料提供定制视图的对象。在Access中,可以利用图形化的实例查询机制(QBE)或通过SQL语句来建立查询。你可以在查询中选择、更新、插入或删除资料,也可以用查询来建立新表。窗体窗体是主要的人机接口。大量的操作(几乎所有)都要通过窗体完成。窗体通过运行宏(macro)或VisualBasicforApplicatinns(VBA)过程,来响应大量的事件。Access2000为我们提供了强大的(同时也是相当方便的向导)来建立标准的Windows窗体。报表为格式化、计算、打印选定资料而设计的对象。它是衡量一个优秀的数据库的重要标准(有时甚至是唯一的标准)。宏为了响应已定义的事件,需要让Access去执行一个或多个操作,而宏就是对这些操作的结构化的定义对象。它可以让你像堆积木一样建立一个功能强大的程序,而无须写大量的代码。模块包括用VBA编码的定制过程的一个对象。模块提供了独立的动作流以捕获错误,而宏做不到。模块能直接响应窗体或报表事件,也可以从应用程序的任何地方被调用。Adodc1.RecordSource=frmLogin.Adodc1.RecordSourceAdodc1.RefreshSetText4.DataSource=Adodc1Text4.DataField="密码"IfText1=""ThenMsgBox"请输入原密码!",,"修改密码"ExitSubElseIfText1.Text<>Adodc1.Recordset.Fields("密码")ThenMsgBox"原密码错误!",,"修改密码"ExitSubElseIfText2=""OrText3=""ThenMsgBox"请输入新密码!!",,"修改密码"ExitSubElseIfText2<>Text3ThenMsgBox"密码不一致!!",,"修改密码"ExitSubElseText4.Text=Text2.TextAdodc1.Recordset.MoveFirstMsgBox"密码修改成功!!",,"修改密码"UnloadMeEndIfDimI,JAsIntegerDimSTRAsStringIfText1.Text=""OrText2=""OrCombo1.Text=""OrText4=""OrText5=""OrText6=""OrText7=""ThenMsgBox"请输入完整信息!"ExitSubElse将记录存入入库记录表设备入库表.datPrimaryRS.Recordset.Fields("设备号")=Text1.Text设备入库表.datPrimaryRS.Recordset.Fields("入库数量")=Text2.Text设备入库表.datPrimaryRS.Recordset.Fields("入库时间")=Combo1.Text设备入库表.datPrimaryRS.Recordset.Fields("供应商")=Text4.Text设备入库表.datPrimaryRS.Recordset.Fields("供应商电话")=Text5.Text设备入库表.datPrimaryRS.Recordset.Fields("价格")=Text6.Text设备入库表.datPrimaryRS.Recordset.Fields("采购员")=Text7.TextMsgBox"已经成功入库!"EndIf设备入库表.Adodc1.Refresh设备入库表.DataGrid1.RefreshIf设备入库表.Adodc1.Recordset.RecordCount>0Then将记录加入现有库存表中设备入库表.Text9.Text=CInt(设备入库表.Text9.Text)+CInt(Text2.Text)设备入库表.Text9.RefreshJ=设备入库表.Text9设备入库表.Adodc1.Recordset.MoveFirst设备入库表.Adodc1.Recordset.Fields.Refresh设备入库表.DataGrid1.RefreshMsgBox"现有库存量为:"&JElseSTR="现有库存表中无此设备!"&vbCrLf&"请在设备代码表和现有库存表中手动添加记录!!"MsgBoxSTRLoadfrm现有库存表frm现有库存表.ShowCallfrm现有库存表.Command1_ClickFrmAddNewEqu.Text1.Text=frmInput.Text1.TextFrmAddNewEqu.Text2.Text=frmInput.Text2.TextLoadfrm设备代码表frm设备代码表.ShowEndIfEndSubPrivateSubcmdDelete_Click()删除入库表中记录OnErrorGoToDeleteErrDimYesNoAsStringYesNo=MsgBox("删除",vbYesNo,"删除记录")IfYesNo=vbYesThenWithdatPrimaryRS.Recordset.Delete.MoveNextIf.EOFThen.MoveLastEndWithElseExitSubEndIfDeleteErr:MsgBoxErr.DescriptionEndSubPrivateSubcmdUpdate_Click()更新纪录程序OnErrorGoToUpdateErrdatPrimaryRS.Recordset.UpdateBatchadAffectAllExitSubUpdateErr:MsgBoxErr.DescriptionPrivateSubCommand1_Click()设备出库程序Dimi,J,kAsIntegerDimSTRAsStringfrm设备出库表.Adodc1.RecordSource="select*from现有库存表where设备号='"&Text1.Text&"'"frm设备出库表.Adodc1.Refreshfrm设备出库表.DataGrid1.RefreshIfIsNumeric(Text2)=FalseThenMsgBox"数量必须是数字!"ExitSubEndIfIfText1.Text=""OrText2=""OrCombo1.Text=""OrText4=""OrText5=""OrText6=""OrText7=""ThenMsgBox"请输入完整信息!"ExitSubElseIffrm设备出库表.Adodc1.Recordset.RecordCount<=0ThenSTR="现有库存表中无此设备!请检查输入是否正确!!"MsgBoxSTRExitSubElsefrm设备出库表.datPrimaryRS.Recordset.Fields("设备号")=Text1.Textfrm设备出库表.datPrimaryRS.Recordset.Fields("出库数量")=Text2.Textfrm设备出库表.datPrimaryRS.Recordset.Fields("出库时间")=Combo1.Textfrm设备出库表.datPrimaryRS.Recordset.Fields("经手人")=Text4.Textfrm设备出库表.datPrimaryRS.Recordset.Fields("领取人")=Text5.Textfrm设备出库表.datPrimaryRS.Recordset.Fields("使用部门")=Text6.Textfrm设备出库表.datPrimaryRS.Recordset.Fields("用途")=Text7.TextMsgBox"已经成功存入设备出库表库!"EndIfIffrm设备出库表.Adodc1.Recordset.RecordCount>0Thenk=CInt(frm设备出库表.Text9.Text)-CInt(Text2.Text)Ifk>=0Thenfrm设备出库表.Text9.Text=CInt(frm设备出库表.Text9.Text)-CInt(Text2.Text)frm设备出库表.Text9.RefreshJ=frm设备出库表.Text9frm设备出库表.Adodc1.Recordset.MoveFirstfrm设备出库表.Adodc1.Recordset.Fields.Refreshfrm设备出库表.DataGrid1.RefreshMsgBox"现有库存量为:"&JElseMsgBox"现有库存量不足!请输入合适数量!!"ExitSubEndIfElseSTR="现有库存表中无此设备!请检查输入是否正确!!"MsgBoxSTREndIfEndSubPrivateSubcmdDelete_Click()删除出库记录OnErrorGoToDeleteErrDimYesNoAsStringYesNo=MsgBox("删除",vbYesNo,"删除记录")IfYesNo=vbYesThenWithdatPrimaryRS.Recordset.Delete.MoveNextIf.EOFThen.MoveLastEndWithElseExitSubEndIfDeleteErr:MsgBoxErr.DescriptionEndSub更新记录程序同入库的更新程序相同,在此略5.2.5设备采购模块实现,程序略主要程序PrivateSubcmdAdd_Click()添加设备OnErrorGoToAddErrdatPrimaryRS.Recordset.AddNewExitSubAddErr:MsgBoxErr.DescriptionEndSub5.2.8库存报警模块实现主要程序PrivateSubCommand1_Click()显示高于最大警戒库存的设备datPrimaryRS.RecordSource="select*from现有库存表where现有库存>最大库存"datPrimaryRS.RefreshgrdDataGrid.RefreshIfdatPrimaryRS.Recordset.RecordCount>0ThenBeepMsgBox"表中设备已过量!"ElseMsgBox"没有设备库存过量!"EndIfEndSubPrivateSubCommand2_Click()显示低于于最小警戒库存的设备datPrimaryRS.RecordSource="select*from现有库存表where现有库存<最小库存"datPrimaryRS.RefreshgrdDataGrid.RefreshIfdatPrimaryRS.Recordset.RecordCount>0ThenBeepMsgBox"表中设备库存量已过警戒线!请采购!!"ElseMsgBox"没有设备库存量过少!"EndIfEndsubPrivateSubTimer1_Timer()自动报警程序frmAlarm.datPrimaryRS.RecordSource="select*from现有库存表where现有库存>最大库存"frmAlarm.datPrimaryRS.RefreshIffrmAlarm.datPrimaryRS.Recordset.RecordCount>0ThenBeepMsgBox"有设备库存超过警戒库存!"&vbCrLf&"请查看库存报警记录"Timer1.Enabled=F

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论