库存管理系统(下)

时间:2024-04-26 02:50:46 5A范文网 浏览: 论文范文 我要投稿

第五章 系统实施
5.1、开发工具简介
本系统的前端开发工具,我选择了Visual Basic6.0,后台数据库采用Access2000。
5.1.1 VB简介
Visual意为“可视化的”,指的是一种开发图形用户界面的方法,所以Visual Basic是基于Basic的可视化的程序设计语言。在Visual Basic中,一方面继承了Basic所具有的程序设计语言简单易用的特点,另一方面在其编程系统中采用了面向对象、事件驱动的编程机制,用一种巧妙的方法把Windows的编程复杂性封装起来,提供了一种所见即所得的可视化程序设计方法。
5.1.2 VB功能特点
 具有面向对象的可视化设计工具
在VB中,应用面向对象的程序设计方法(OOP),把程序和数据封装起来视为一 个对象,每个对象都是可视的。程序员在设计时只需用现有工具根据界面设计要求,直接在屏幕上“画”出窗口、菜单、按钮、滚动条等不同类型的对象,并为每个对象设置属性。程序员的编程工作仅限于编写相关对象要完成的功能程序,因而程序设计的效率可大大提高。
 事件驱动的编程机制
事件驱动是非常适合图形用户界面的编程方式。在图形用户界面的应用程序中,是由用户的动作即事件掌握着程序运行的流向,每个事件都能驱动一段程序的运行。程序员只要编写响应用户动作的代码,而各个动作之间不一定有联系。
 提供了易学易用的应用程序集成开发环境
在VB集成开发环境中,用户可设计界面、编写代码、调试程序,直至把应用程序编译成可执行文件在Windows中运行,使用户在友好的开发环境中工作。
 结构化的程序设计语言
VB具有丰富的数据类型和结构化程序结构,作为一种程序设计语言,它还有如下一些特点:
 强大的数值和字符串处理功能
 丰富的图形指令,可方便地绘制各种图形
 提供静态和动态数组,有利于简化内存的管理
 过程可递归调用,使程序更为简练
 支持随机文件和顺序文件的访问
 提供了一个可供应用程序调用的包含多种类型的图标库
 具有完善的运行出错处理
 支持多种数据库系统的访问
利用数据控件可访问的数据库系统有:Microsoft Access、Btrieve、DBASE、Microsfot FoxPro和Paradox等,也可以访问Microsoft Excel、Lotus1-2-3等多种电子表格。
 支持动态数据交换(DDE)、动态链接库(DLL)和对象的链接与嵌入(OLE)技术
 完备的HELP联机帮助功能
与Windows环境下的软件一样,在VB中,利用帮助菜单和F1功能键,用户可以随时方便地得到所需要的帮助信息。VB帮助窗口中显示了有关的示例代码,通过复制、粘贴操作可获取大量的示例代码,为用户的学习和使用提供了极大的方便。
VB程序设计的概念就是面向对象的概念,对象就是数据(DATA)和代码(CODE)互相结合的综合体。Windows上面的每一个图标,包括窗口本身都是对象,如果没有任何事情发生,对象处于停顿状态。当存在外来事件时,程序段执行,它的执 行是由外来事件决定的。因此是“事件”驱动的。
编写VB程序较为简单,首先将各个对象放在空白窗体上,然后将程序代码分别添加给对象或图标,将它们组合起来就可以随意运行了。
在VB中,窗体实际上是一个对象,VB的窗体含有许多内嵌特性,这使得用户界面部分的建立像是从一个目录中挑选一个个合适的控件,而不是从零开始一步一步地建立控件。这种开发者能亲眼看到的程序设计过程就是“可视化程序设计”(Visual Programming)
5.1.3 VB中的基本概念
   对象:面向对象编程(OOP)的提法大家一定也很耳熟,虽然Visual Basic并不是完全的面向对象编程,但也利用了对象编程技术。对象简单地说就是大家经常看到的各种窗口、按钮、文本框甚至打印机等。
  属性:如同电视有黑白、彩色之分一样,作为对象的Windows中的窗口也是有大有小,文本框的位置不可能完全一样,菜单要显示出不同的功能,这些都是由对象的属性决定的。不同对象的属性可能不同。属性一般决定了对象的位置、大小、显示等情况。
  方法:就是对象能够做的事,如打印机对象就有打印(Print)方法、窗口对象支持隐藏(Hide)方法、很多对象支持移动(Move)方法等。
  事件:就是对象对用户各种操作的反映情况。如用户用鼠标按一下按钮,就会触发按钮的“按”(Click)事件。
  控件:控件就是Visual Basic提供的编程用的模块,与对象有直接的联系,如同积木的木块,使用这样的控件,就可以像拼图或堆积木一样“搭”、“拼”你的程序界面。Visual Basic中使用控件,简化了Windows中的窗口、按钮等对象的编程设计。每个控件都有各自的属性、事件及方法。只需修改这些特征你就可以随心所欲地编程了。最重要的是,你可以利用成千上万的各种扩充的控件来快速构造几乎能满足你任何要求的程序。例如,如果你不满意Windows简陋的媒体播放器,你就可以使用VB的多媒体控件在1小时以内设计一个完全自己风格的能够播放CD、VCD的多媒体播放器,而功能完全与之相当。
5.1.4 Access2000数据库简介
作为Microsoft的office套件产品之一,access已经成为世界上最流行的桌面数据库系统。Access与许多优秀的关系数据库一样,可以让你很容易地连接相关的信息而且还对其他的数据库系统有所补充。它能操作其它来源的资料,包括许多流行的PC数据库程序(如dBASE,Paradox,Microsoft FoxPro)和服务器、小型机及大型机上的许多SQL数据库。Access还完全支持Microsoft的OLE技术。
Access还提供windows操作系统的高级应用程序开发系统。Access与其它数据库开发系统之间相当显著的区别就是:您不用写一行代码,就可以在很短的时间里开发出一个功能强大而且相当专业的数据库应用程序,并且这一愉快的过程是完全可视的!如果您能给它加上简短的VBA代码,那么您的程序决不比专业程序员潜心开发的程序差。

Access的总体结构
Access将所有有名字的东西都成为对象(object),在Access 2000中,最重要的对象有表,查询,窗体,报表,宏和模块。
表 用户定义的存储资料的对象。每一个表都包含有关某个主体的信息。表包括存储不同种类资料的字段(列),而记录(行)则收集特定主体实例的所有信息。
查询 为来自一个或多个表的资料提供定制视图的对象。在Access中,可以利用图形化的实例查询机制(QBE)或通过SQL语句来建立查询。你可以在查询中选择、更新、插入或删除资料,也可以用查询来建立新表。
窗体 窗体是主要的人机接口。大量的操作(几乎所有)都要通过窗体完成。窗体通过运行宏(macro)或Visual Basic for Applicatinns(VBA)过程,来响应大量的事件。Access 2000为我们提供了强大的(同时也是相当方便的向导)来建立标准的Windows窗体。
报表 为格式化、计算、打印选定资料而设计的对象。它是衡量一个优秀的数据库的重要标准(有时甚至是唯一的标准)。
宏 为了响应已定义的事件,需要让Access去执行一个或多个操作,而宏就是对这些操作的结构化的定义对象。它可以让你像堆积木一样建立一个功能强大的程序,而无须写大量的代码。
模块 包括用VBA编码的定制过程的一个对象。模块提供了独立的动作流以捕获错误,而宏做不到。模块能直接响应窗体或报表事件,也可以从应用程序的任何地方被调用。

 Adodc1.RecordSource = frmLogin.Adodc1.RecordSource

    Adodc1.Refresh

    Set Text4.DataSource = Adodc1

    Text4.DataField = "密码"

    If Text1 = "" Then

        MsgBox "请输入原密码!", , "修改密码"

        Exit Sub

    ElseIf Text1.Text <> Adodc1.Recordset.Fields("密码") Then

        MsgBox "原密码错误!", , "修改密码"

        Exit Sub

    ElseIf Text2 = "" Or Text3 = "" Then

        MsgBox "请输入新密码!!", , "修改密码"

        Exit Sub

    ElseIf Text2 <> Text3 Then

        MsgBox "密码不一致!!", , "修改密码"

        Exit Sub

    Else

        Text4.Text = Text2.Text

        Adodc1.Recordset.MoveFirst

        MsgBox "密码修改成功!!", , "修改密码"

        Unload Me

    End If

  Dim I, J As Integer

    Dim STR As String

    If Text1.Text = "" Or Text2 = "" Or Combo1.Text = "" Or Text4 = "" Or Text5 = "" Or Text6 = "" Or Text7 = "" Then

        MsgBox "请输入完整信息!"

        Exit Sub

    Else 将记录存入入库记录表

        设备入库表.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.Text

        MsgBox "已经成功入库!"

    End If


  [8]电大学习网.免费论文网[EB/OL]. /d/file/p/2024/0424/fontbr />  设备入库表.Adodc1.RecordSource = "select * from 现有库存表 where 设备号='" & Text1.Text & "'"

    设备入库表.Adodc1.Refresh

    设备入库表.DataGrid1.Refresh

    If 设备入库表.Adodc1.Recordset.RecordCount > 0 Then

                  将记录加入现有库存表中

        设备入库表.Text9.Text = CInt(设备入库表.Text9.Text) + CInt(Text2.Text)

        设备入库表.Text9.Refresh

        J = 设备入库表.Text9

        设备入库表.Adodc1.Recordset.MoveFirst

        设备入库表.Adodc1.Recordset.Fields.Refresh

        设备入库表.DataGrid1.Refresh

        MsgBox "现有库存量为:" & J

    Else

        STR = "现有库存表中无此设备!" & vbCrLf & "请在设备代码表和现有库存表中手动添加记录!!"

        MsgBox STR

        Load frm现有库存表

        frm现有库存表.Show

        Call frm现有库存表.Command1_Click

        FrmAddNewEqu.Text1.Text = frmInput.Text1.Text

        FrmAddNewEqu.Text2.Text = frmInput.Text2.Text

        Load frm设备代码表

        frm设备代码表.Show

    End If

 

End Sub

Private Sub cmdDelete_Click( ) 删除入库表中记录

  On Error GoTo DeleteErr

  Dim YesNo As String

  YesNo = MsgBox("删除", vbYesNo, "删除记录")

  If YesNo = vbYes Then

    With datPrimaryRS.Recordset

        .Delete

        .MoveNext

        If .EOF Then .MoveLast

    End With

  Else

    Exit Sub

End If

DeleteErr:

  MsgBox Err.Description

End Sub

Private Sub cmdUpdate_Click( ) 更新纪录程序

  On Error GoTo UpdateErr

  datPrimaryRS.Recordset.UpdateBatch adAffectAll

   Exit Sub

UpdateErr:

  MsgBox Err.Description

Private Sub Command1_Click( )设备出库程序

    Dim i, J, k As Integer

    Dim STR As String

    frm设备出库表.Adodc1.RecordSource = "select * from 现有库存表 where 设备号='" & Text1.Text & "'"

    frm设备出库表.Adodc1.Refresh

    frm设备出库表.DataGrid1.Refresh

    If IsNumeric(Text2) = False Then

        MsgBox "数量必须是数字!"

        Exit Sub

    End If

    If Text1.Text = "" Or Text2 = "" Or Combo1.Text = "" Or Text4 = "" Or Text5 = "" Or Text6 = "" Or Text7 = "" Then

        MsgBox "请输入完整信息!"

        Exit Sub

    ElseIf frm设备出库表.Adodc1.Recordset.RecordCount <= 0 Then

        STR = "现有库存表中无此设备!请检查输入是否正确!!"

        MsgBox STR

        Exit Sub

    Else

        frm设备出库表.datPrimaryRS.Recordset.Fields("设备号") = Text1.Text

        frm设备出库表.datPrimaryRS.Recordset.Fields("出库数量") = Text2.Text

        frm设备出库表.datPrimaryRS.Recordset.Fields("出库时间") = Combo1.Text

        frm设备出库表.datPrimaryRS.Recordset.Fields("经手人") = Text4.Text

        frm设备出库表.datPrimaryRS.Recordset.Fields("领取人") = Text5.Text

        frm设备出库表.datPrimaryRS.Recordset.Fields("使用部门") = Text6.Text

        frm设备出库表.datPrimaryRS.Recordset.Fields("用途") = Text7.Text

        MsgBox "已经成功存入设备出库表库!"

    End If

   

    If frm设备出库表.Adodc1.Recordset.RecordCount > 0 Then

        k = CInt(frm设备出库表.Text9.Text) - CInt(Text2.Text)

        If k >= 0 Then

            frm设备出库表.Text9.Text = CInt(frm设备出库表.Text9.Text) - CInt(Text2.Text)

            frm设备出库表.Text9.Refresh

            J = frm设备出库表.Text9

            frm设备出库表.Adodc1.Recordset.MoveFirst

            frm设备出库表.Adodc1.Recordset.Fields.Refresh

            frm设备出库表.DataGrid1.Refresh

            MsgBox "现有库存量为:" & J

        Else

            MsgBox "现有库存量不足!请输入合适数量!!"

            Exit Sub

        End If

    Else

        STR = "现有库存表中无此设备!请检查输入是否正确!!"

        MsgBox STR     

End If

End Sub

Private Sub cmdDelete_Click( )删除出库记录

  On Error GoTo DeleteErr

  Dim YesNo As String

  YesNo = MsgBox("删除", vbYesNo, "删除记录")

  If YesNo = vbYes Then

    With datPrimaryRS.Recordset

        .Delete

        .MoveNext

        If .EOF Then .MoveLast

    End With

  Else

    Exit Sub

End If

DeleteErr:

  MsgBox Err.Description

End Sub


  [8]电大学习网.免费论文网[EB/OL]. /d/file/p/2024/0424/fontbr /> 

更新记录程序同入库的更新程序相同,在此略

5.2.5设备采购模块实现,程序略

 主要程序
Private Sub cmdAdd_Click( ) 添加设备
On Error GoTo AddErr
datPrimaryRS.Recordset.AddNew

Exit Sub
AddErr:
MsgBox Err.Description
End Sub
5.2.8 库存报警模块实现

主要程序

Private Sub Command1_Click() 显示高于最大警戒库存的设备

   datPrimaryRS.RecordSource = "select * from 现有库存表 where 现有库存>最大库存"

   datPrimaryRS.Refresh

   grdDataGrid.Refresh

   If datPrimaryRS.Recordset.RecordCount > 0 Then

        Beep

        MsgBox "表中设备已过量!"

   Else

        MsgBox "没有设备库存过量!"

   End If

End Sub

 

Private Sub Command2_Click()显示低于于最小警戒库存的设备

  

   datPrimaryRS.RecordSource = "select * from 现有库存表 where 现有库存<最小库存"

   datPrimaryRS.Refresh

   grdDataGrid.Refresh

   If datPrimaryRS.Recordset.RecordCount > 0 Then

        Beep

        MsgBox "表中设备库存量已过警戒线!请采购!!"

   Else

        MsgBox "没有设备库存量过少!"

                         End If

                  End sub

Private Sub Timer1_Timer() 自动报警程序

   frmAlarm.datPrimaryRS.RecordSource = "select * from 现有库存表 where 现有库存>最大库存"

   frmAlarm.datPrimaryRS.Refresh

      If frmAlarm.datPrimaryRS.Recordset.RecordCount > 0 Then

        Beep

        MsgBox "有设备库存超过警戒库存!" & vbCrLf & "请查看库存报警记录"

        Timer1.Enabled = False

        frmAlarm.Show

        Exit Sub

     End If

   End Sub

 

Private Sub Timer2_Timer()

   frmAlarm.datPrimaryRS.RecordSource = "select * from 现有库存表 where 现有库存<最小库存"

   frmAlarm.datPrimaryRS.Refresh

      If frmAlarm.datPrimaryRS.Recordset.RecordCount > 0 Then

        Beep

        MsgBox "有设备库存低于警戒库存!" & vbCrLf & "请查看库存报警记录"

        Timer2.Enabled = False

        frmAlarm.Show

        Exit Sub

    End If

主要程序
Private Sub Command2_Click( ) 填写日志记录
If Text1.Text = "" Or Combo1.Text = "" Or Combo2.Text = "" Then
MsgBox "请输入完整信息!"
Exit Sub
Else
frmLog.Adodc1.Recordset.Fields("操作员") = Text1.Text
frmLog.Adodc1.Recordset.Fields("操作内容") = Combo1.Text
frmLog.Adodc1.Recordset.Fields("操作时间") = Combo2.Text
frmLog.Adodc1.Recordset.MoveLast
End If
End Sub
Private Sub Form_Load() 设置填写时间
Dim STRtime As String
STRtime = Now()
Combo2.Text = STRtime
Combo2.AddItem (STRtime)
End Sub

5.2.10还库操模块实现
 

具体程序同其他查询相似,在此略
第六章 系统使用说明
本系统使用简单方便,各操作界面如第五章所示,在此不再累述。
系统经调试,可以安装使用。
主界面如下:
 

参考文献:

1. 数据库系统原理教程 王珊 陈红 清华大学出版社
2. 管理信息系统 王虎 张俊 武汉理工大学出版社
3. Visual Basic 数据库开发 E.Winemiller,J.Roff B.Heyman,R.Groom 着 清华大学出版社
4. PowerBuilder 8.0数据库系统开发实例导航 何旭洪 余建英 人民邮电出版社
5. VB6从入门道精通 ‘美’Gary cornell 着 北京希望电子出版社
6. managing Information Systems David L.Anderson着 清华大学出版社
7. Management Information Systems Raymond Mcleod,Jc George Schell 着 北京大学出版社


  [8]电大学习网.免费论文网[EB/OL]. /d/file/p/2024/0424/fontbr /> 

相关文章:

日本绿色发展的基本特点及其经验借鉴04-26

建筑工程施工中工程监理的价值与质量控制策略04-26

建筑工程造价超预算的主因与管控措施04-26

环境工程不同阶段的造价控制探析04-26

工程监理现状与解决方案探析04-26

提升医务人员薪酬满意度的可行性方法研究04-26

员工满意度论文(热门推荐6篇)04-26

创业板上市公司的股权激励模式探讨04-26

分析房地产员工工作环境满意度及建议04-26

塑料企业员工满意度提升路径研究04-26

热搜文章
最新文章