VB+Access仓库管理系统
课程设计任务书内容
1、新的货物信息的录入;(若图片无法显示请联系站长QQ3710167
2、在入库、出库时对货物信息的修改;
3、对出库货物信息的删除;
4、按照一定的条件查询、统计符合条件的设备信息;查询功能至少应该包括设备基本信息的查询、按时间段(如在2006年1月1日到2007年10月10日入库、出库的货物等)查询、按时间点(入库时间,出库时间,库存时间)查询等,统计功能至少包括按时间段(如在2006年1月1日到2007年10月10日入库、出库的货物等)统计、按货物基本信息的统计等;
5、对查询、统计的结果打印输出。
系统应该包含的数据表:
1、货物基本信息表;
2、货物入库、出库、库存的信息表;
3、管理员信息表。
VB+Access仓库管理系统
第一章 系统设计
随着公司业务两的逐渐增长,业务范围的不断扩大,特别是中国进入WTO之后,时常竞争尤其是IT行业的竞争日趋激烈,公司需要更多的人力、物力、财力来稳固并拓展公司商品在市场的销售额。如何更加有效地管理仓库存已成为公司领导的重要决策事项。到目前为止,公司还没有一套完整的、行之有效的管理系统,公司进行信息管理的主要方式是基于文本、表格等纸介质的手工处理,信息处理工作量大查询困难。为了使公司的管理工作科学话、规范化,为了降低管理成本,实现管理现代化,扩大市场的竞争优势,公司领导提出开发进销存管理信息系统,希望通过建立管理信息系统来提高企业现有资源的利用率,使企业管理工作规范化、制度化和程序化,避免业务管理的随意性,提高信息处理的速度和准确性,及时、准确地把握企业内部、市场和其他外部信息,以提高领导决策的水平。
1.1任务描述
通过与公司管理层的沟通和对系统的初步调查,发现目前,公司还没有一套完整的、行之有效的管理系统,公司进行信息管理的主要方式是基于文本、表格等纸介质的手工处理,信息处理工作量大查询困难。由此明确了系统开发的目标为:按照管理信息系统的原理和方法,采用成熟、先进的信息技术和手段,支持仓库进、销、存管理工作的全过程,加强销售活动中的各种信息资源的管理和应用,实现销售管理现代化,及时、准确地提供各种信息报表辅助领导决策。
本系统初步调查采用的主要方式是系统分析人员与本公司各个主要管理人员进行交流,并到现场参观了解情况,主要参加人员是公司的销售部、采购部、库存部、MIS中心和行政部的员工代表。
由于近年来企业规模不断的扩大,公司的整个业务数量也在不断扩大。然而在业务增加的同时也出现了一系列的问题:信息化不足,大量的日常工作皆是手工处理,因此造成工作效率低落、企业内部沟通不良等等,这样的直接后果就是信息传递、管理方式不仅效率低,可靠性、安全性和保密性都无法满足要求,而且数据统计时间严重滞后,往往是当领导了解到企业的“进、销、存”环节出现问题时,就已经远离了问题出现的时间和地点。
另外传统的手工方式的管理,也并不能及时地将决策信息传递给相关决策人,从而不能及时发现问题、解决问题,以致不能更好地把握机会。这一切都缺乏系统、规范的信息管理手段,严重阻碍了公司的健康发展,因此开发进销存管理系统非常有必要。
公司领导希望通过建立管理信息系统,使企业管理工作规范化、制度化和程序化,促进企业管理的基础工作,避免随意性,提高信息处理的速度和准确性,及时、准确地把握企业内部、市场和其他外部信息,以提高领导决策的水平。
1.2任务目标
仓库管理信息系统主要是为公司的经营活动提供信息服务,它涵盖了仓库的各项管理工作,涉及多方面的职能。系统能够对客户信息管理、订单管理、报价单管理、供应商管理、出货管理等信息提供存储、更新、查询、统计的功能,使公司能够合理控制进销存的各个环节,提高资金的利用率和结算速度,实现管理的高效率、实时性、安全性、科学化、现代化和智能化。
按照管理信息系统的原理和方法,采用成熟的信息技术和手段,支持公司管理工作的全过程,加强各种信息资源的管理与运用,提高企业管理工作的现代化水平,优化人、财、物和信息资源在供、销等各环节的运行机制。
管理信息系统应逐步覆盖公司内部的所有部门和一切经营活动,使所有业务部门的工作人员在信息系统的辅助下进行工作,提高管理的整体水平,同时企业领导可以通过系统及时了解各部门工作的进展情况。
VB+Access仓库管理系统
第二章 需求分析
2.1需求分析的任务
2.1.1功能需求
该系统主要分为三大功能: 管理员功能、用户功能。
管理员功能包括 :产品入库登记、确认入库信息、删除库内信息、借出信息登记、产品分类管理、添加人员、删除人员、查询库内信息、系统配置、查看系统事件。
用户功能包括:查询库内信息、查询出库信息、查询入库信息、修改本用户密码。
2.1.2用户需求
根据用户需求,该系统应该实现以下功能:
(1)进、出库管理。对进、出库信息进行记录。
(2)查询功能。仓库管理对查询要求高,通过主菜单记录当前操作用户的用户编号,保证了对进、出库信息录入负责人的确认。
(3)部门资料管理与库存报表生成。资料管理包括了人员信息管理,财政支出信息管理,以及各项业务单据的资料管理。报表主要分类为:日报表,月报表,销售报表,入库报表等等。
(4)应用计算机管理后,由于计算机能存贮大量的数据,而且数据只要一次存入,便可多次重复使用,所以管理数据达到完整,统一,原始记录能保证及时,准确。
(5)应用计算机管理后,许多重复性的工作,都可由计算机去执行,从而使管理人员从事务性工作解脱出来,真正变为从事一些信息的分析,判断,决策等创造性的工作。
2.2数据流图
当数据在软件系统中移动时,它将被一系列“变换”所修改。数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程。数据流图是系统逻辑功能的图形表示,即使不是专业的计算机技术人员也容易理解它,因此是分析员与用户之间极好的通信工具。
本系统的数据流图如下所示:若图片无法显示请联系站长QQ3710167
图2.1 顶层数据流图
细化后的数据流图如下图:
图2.2 细化后的数据流图
图2.3 细化入库数据流图
图2.4 细化出库数据流图
2.3数据字典
数据流图表达了数据和处理的关系,数据字典则是系统中各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要成果。数据字典在数据库设计中占有很重要的地位。
数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。
任何字典最主要的用途是供人查阅对不了解的条目的解释,数据字典的作用也正是在软件分析和设计的过程中给人提供关于数据的描述信息。
数据流图和数据字典共同构成系统的逻辑模型,没有数据字典数据流图就不严格,然而没有数据流图数据字典也难于发挥作用。只有数据流图和对数据流图中每个元素的精确定义放在一起,才能共同构成系统的规格说明。
名字:入库单数据
别名:
描述:学生提交给系统的所有相关信息
定义:入库单数据=产品基本信息+入库信息
位置:入库信息
名字:产品基本信息
别名:产品基本信息
描述:目前生产的全部基本信息
定义:产品基本信息=产品基本信息+产品规格
位置:产品基本信息表
名字:出库信息
别名:出库信息
描述:用户每天所销售产品的信息
定义:出库信息=出库信息表
位置:出库信息表
名字:入库信息
别名:入库信息
描述:用户所购入的产品信息
定义:入库信息=入库信息表
位置:入库信息表
名字:入库流水账
别名:入库流水账
描述:每一个入库单上所描述的数据信息
定义:入库流水账=产品品名+规格
位置:入库流水账表
名字:库存数据
别名:库存数据
描述:库中每天剩余产品的基本信息
定义:库存数据=入库信息+出库信息
位置:库存数据表
名字:当日入库数据
别名:
描述:每日同一产品入库量的总和
定义:当日入库数据=产品基本信息+产品品名+产品数量
位置:库存汇总
名字:当日出库数据
别名:
描述:每日同一产品入库量的总和
定义:当日出库数据=产品基本信息+产品品名+产品数量
位置:库存汇总
2.4数据库设计
2.4.1数据库的概念模型
用E—R图表示当前的数据库概念模型
VB+Access仓库管理系统
图2.4入库实体
图2.5 出库实体
若图片无法显示请联系站长QQ3710167
图2.6 库存台账实体
图2.7总 E-R图
第三章 总体设计
3.1系统流程分析
有系统的工作流图分析,可以得出,该系统的业务流程主要有入库过程,出库过程和出入库信息查询三个部分,其业务流程图如下:
图3.1 系统流程图
3.2功能模块图
库存管理人员可能对数据库的管理有不同的权限,根据要求赋予不同人员对数据库管理的权限
根据系统的业务流程和用户的需求分析可以得出,本系统应该包含产品基本信息管理、出入库管理、库存管理、系统管理、操作人员管理、查询、打印、统计等几大功能,如下图所示:
图3.2 总体功能模块图
其中入库管理包括新物品初次入库(包含基本信息的入库)和非新物品入库,打印可以按需要采购的物品和借出,进库,入库信息进行打印.
1)基本管理:具体用户是系统管理员,对于出库进库成功时系统直接算出该产品的余料
2)进库管理:主要完成对产品品名,规格型号,数量,单价,入库日期,入料人编号,入料人(入料人和编号为统一的,一入料人编号对应于一个入料人),经手人出库管理主要完成产品品名,规格型号,数量,单价,出库日期,出料人编号,出料人3)交接班是为了便于用户交接班时不用退出系统就可以进行数据库用户更换
4)修改密码必须先输入原始密码才让修改密码,防止用户离开时的疏忽而被其他人篡改用户信息和密码。
5)查询
按日期:查询某个时间段的出入库信息。
按人员:查询某个入料人或领料人的相关信息
按物品:查询某种商品的出入库信息和余料。
6)统计:提供一种统计方式,一般要求按月统计,可以查出该月内的出入库总次数,及相关详细信息。
7)设置:该操作只允许数据库管理员进行设置,对于无该权限的数据库管理员进入系统后无该功能。
VB+Access仓库管理系统
第四章 详细设计
4.1程序流程图
详细设计的结果基本上决定了总终的程序代码的质量。结构程序设计技术是实现上述目标的关键技术,是详细设计的逻辑基础,用程序流程图来表示。
图4.1 程序流程图
描述程序处理过程的工具称为过程设计的工具,它们可以分为图形,表格和语言三类。程序流程图又称为程序框图,一直是软件设计的主要工具,对控制流程的描绘很直观,便于掌握,它是历史最悠久,使用最广泛的描述过程设计的方法,然而它也是用得最混乱的一种方法,上图为本系统的程序流程图,直观地描述了上机管理系统。
4.2数据库的逻辑结构设计
数据库的逻辑模型若图片无法显示请联系站长QQ3710167
表4-1入库表(InStorehouse)
字段描述
字段名
字段类型
字段大小
品名
品名
文本
20
规格
规格
文本
20
导电
导电
文本
20
硬度
硬度
文本
20
数量
数量
数字型
单精度型
单位
单位
文本
4
入库日期
入库日期
日期型
8
入料人编号
入料人编号
文本
3
入料人
入料人
文本
8
经手人
经手人
文本
8
说明
说明
文本
40
入库标示
入库标示
文本
10
自动编号
自动编号
数字型
8
表4-2出库表(OutStorehouse)
字段描述
字段名
字段类型
字段大小
品名
品名
文本
20
规格
规格
文本型
20
导电
导电
文本
20
数量
数量
文本
单精度型
硬度
硬度
文本
20
单位
单位
文本
4
出库日期
入库日期
日期型
8
领料人编号
领料人编号
文本
3
领料人
领料人
文本
8
经手人
经手人
文本
8
说明
说明
文本
40
自动编号
自动编号
数字型
8
表4-3库存表(Stock)
字段描述
字段名
字段类型
字段大小
品名
品名
文本
20
规格
规格
文本
20
导电
导电
文本
20
硬度
硬度
文本
20
数量
数量
数字型
单精度型
单位
单位
文本
4
表4-4借出表(LendThings)
字段描述
字段名
字段类型
字段大小
借条编码
借条编码
文本
10
品名
品名
文本
20
规格
规格
文本
20
导电
导电
文本
20
数量
数量
文本
单精度型
硬度
硬度
文本
20
单位
单位
文本
4
借出日期
借出日期
日期型
8
借出人编号
借出人编号
文本
3
借出人人
借出人
文本
8
经手人
经手人
文本
8
说明
说明
文本
40
表4-5系统管理员表(Operater)
字段描述
字段名
字段类型
字段大小
姓名
姓名
文本
8
密码
密码
文本
12
权限
权限
文本
1
表4-6入库人、出库人、借出人表(Person )
字段描述
字段名
字段类型
字段大小
编号
编号
文本
3
姓名
姓名
文本
8
表4-7按需要的采购的物品打印
品名
规格
导电
硬度
数量
单位
表4-8入库信息打印
品名
规格
导电
硬度
数量
单位
入库日期
入料人编码
入料人
备注
表4-9出库信息打印
品名
规格
导电
硬度
数量
单位
出库日期
领料人编码
领料人
备注
表4-10借出信息打印
入库单编码
品名
规格
导电
硬度
数量
单位
借出日期
借出人编码
借出人
备注
VB+Access仓库管理系统
第五章 编码实现
5.1系统物理实施
(1)硬件选择。系统中计算机能够运行Windows98以上操作系统即可。
(2)操作系统。Windows98以上操作系统。
(3)开发工具。面向对象程序设计语言Visual Basic 6.0。
(4)数据库管理系统。Microsoft Access数据库管理系统。
5.2创建仓库管理信息系统各界面并编写代码
5.2.1显示软件版本信息界面
打开Visual Basic 6.0后,单击File---New Project菜单,在工程模板中选择“展示屏幕”将产生一个展示屏幕窗体。设置各控件后如下图。
图5.1仓库管理信息系统若图片无法显示请联系站长QQ3710167
与该窗体相关的程序
Option Explicit
Private Sub Form_KeyPress(KeyAscii As Integer)
Unload Me
End Sub
Private Sub Form_Load()
lblCompanyProduct.ForeColor = RGB(238, 78, 48)
lblVersion.ForeColor = RGB(238, 78, 48)
End Sub
Private Sub Frame1_Click()
Unload Me
Load Login
Login.Show
End Sub
Private Sub imgLogo_Click()
Unload Me
Load Login
Login.Show
End Sub
Private Sub Label1_Click()
Unload Me
Load Login
Login.Show
End Sub
Private Sub lblPlatform_Click()
Unload Me
Load Login
Login.Show
End Sub
Private Sub lbladdress_Click()
Unload Me
Load Login
Login.Show
End Sub
Private Sub lblCompany_Click()
Unload Me
Load Login
Login.Show
End Sub
Private Sub lblCopyright_Click()
Unload Me
Load Login
Login.Show
End Sub
Private Sub lblProductName_Click()
Unload Me
Load Login
Login.Show
End Sub
Private Sub lblVersion_Click()
Unload Me
Load Login
Login.Show
End Sub
Private Sub Timer1_Timer()
Unload Me
Load Login
Login.Show
End Sub
Private Sub Timer2_Timer()
Timer1.Enabled = False
End Sub
5.2.2设置登录主窗体界面
在工程的窗体栏中添加一个窗体,点住窗体文件夹点右键----添加——添加窗体,设置各控件后如下图。
VB+Access仓库管理系统
图5.2添加操作
与登录窗体相关的程序
Dim datacount As Integer '操作员个数
Private Sub cmdCancel_Click() '取消
If Login1 = 1 Then
Unload Login
Else
End
End If
operater.Recordset.Close
End Sub
Private Sub cmdDate_Click()
DTPicker1.Visible = True
End Sub
Private Sub CmdOK_Click() '登录
If txtPassword = Password And Trim(Password) <> "" Or datacount = 0 Then
If Login1 = 1 Then
Load Mainform
Else
Mainform.Show
End If
If Rights = 2 Then
Mainform.M_Setup.Visible = False
Else
Mainform.M_Setup.Visible = True
End If
Me.Hide
If Login1 = 1 Then Mainform.StatusBar1.Panels.Item(1).Text = "管理员: " & Operater1
If Rights = 1 Then
Mainform.M_ChangePassword.Visible = True
Else
Mainform.M_ChangePassword.Visible = False
End If
Else
MsgBox "输入的密码有误,请重新输入!!!!"
txtPassword.SetFocus
End If
txtPassword = ""
End Sub
Private Sub Combo1_Click() '选择操作员
If Trim(Combo1.Text) <> "" And datacount <> 0 Then
txtPassword.Enabled = True
txtPassword.SetFocus
operater.RecordSource = "select * from operater where 姓名='" & Trim(Combo1.Text) & "'"
operater.Refresh
Operater1 = operater.Recordset.Fields(0)
Password = operater.Recordset.Fields(1)
Rights = operater.Recordset.Fields(2)
End If
End Sub
Private Sub DTPicker1_Change() '改变日期
Date = DTPicker1.Value
DTPicker1.Visible = False
txtDate = Year(Date) & "年" & Month(Date) & "月" & Day(Date) & "日"
MsgBox ("日期更改成功!!!")
If Login1 = 1 Then Mainform.StatusBar1.Panels.Item(3).Text = Date
End Sub
Private Sub Form_Load() '初始化
Login.Caption = "登录"
txtDate = Year(Date) & "年" & Month(Date) & "月" & Day(Date) & "日"
DTPicker1.Value = Date
Call pd
If datacount = 0 Then
Operater1 = "无"
Combo1.Enabled = False
txtPassword.Enabled = False
cmdOK.Enabled = True
Text1.Visible = True
Else
operater.Recordset.MoveFirst
Do While operater.Recordset.EOF = False
Combo1.AddItem operater.Recordset.Fields(0)
operater.Recordset.MoveNext
Loop
Text1.Visible = False
End If
End Sub
Private Sub Text2_Change()
End Sub
Private Sub Timer1_Timer()
txtTime.Text = Time
End Sub
Private Sub pd() '判断是否存在操作员
operater.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Storehouse.mdb;Persist Security Info=False"
operater.CommandType = adCmdUnknown
operater.RecordSource = "select * from Operater"
operater.Refresh
datacount = operater.Recordset.RecordCount
End Sub
Private Sub txtPassword_Change() '判断是否输入密码
If Len(Trim(txtPassword)) = 0 Then
cmdOK.Enabled = False
Else
cmdOK.Enabled = True
End If
End Sub
Private Sub txtPassword_GotFocus()
txtPassword.BackColor = &HC0FFFF
txtPassword.SelStart = 0
txtPassword.SelLength = 12
End Sub
Private Sub txtPassword_LostFocus()
txtPassword.BackColor = &HFFC0C0
End Sub
5.2.3主界面设置
新建一个窗体,建好界面后如下图
VB+Access仓库管理系统
图5.3主界面设置
与主界面窗体相关的程序
Private Sub FirstInStore_Click()
FrmInstorehouse.Show
FrmInstorehouse.Option1.Value = True
End Sub
Private Sub M_ChangePassword_Click()
ChangePassword.Show
End Sub
Private Sub M_ClearData_Click()
FrmClearData.Show
End Sub
Private Sub M_DataBackup_Click()
FrmDataBackup.Show
End Sub
Private Sub M_DataMake_Click()
FrmDataMake.Show
End Sub
Private Sub M_Exchange_Click()
Login1 = 1
Login.Caption = "交接班"
Login.Show 1
Mainform.Show
End Sub
Private Sub M_Exit_Click()
aa = MsgBox("退出前请确定数据是否保存!!", 1 + 32)
If aa = 1 Then End
End Sub
Private Sub M_FindArticle_Click()
FrmFindArticle.Show
End Sub
Private Sub M_FindDate_Click()
FrmFinddate.Show
End Sub
Private Sub M_FindPerson_Click()
FrmFindperson.Show
End Sub
Private Sub laterInstore_Click()
FrmInstorehouse.Show
FrmInstorehouse.Option2.Value = True
End Sub
Private Sub M_LendThings_Click()
FrmLendThings.Show
End Sub
Private Sub M_ManSetup_Click()
frmPerson.Show
End Sub
Private Sub M_OperaterSetup_Click()
frmOperater.Show
End Sub
Private Sub M_OutStorehouse_Click()
FrmOutstorehouse.Show
End Sub
Private Sub M_PrintDay_Click()
DataReport1.Show
End Sub
Private Sub M_Printjgj_Click()
Frmprintgz.Show
End Sub
Private Sub M_PrintMonth_Click()
FrmPrintMonth.Show
End Sub
Private Sub M_Printmustbuy_Click()
DataReport3.Show
End Sub
Private Sub M_ProducePlan_Click()
FrmProduceplanManage1.Show
End Sub
Private Sub M_Sparelist_Click()
FrmSpareList.Show
End Sub
Private Sub M_StorehouseManage_Click()
FrmStorehousemanage.Show
End Sub
Private Sub M_StorehouseSetup_Click()
frmStorehouse.Show
End Sub
Private Sub M_PrintMust_Click()
FrmPrintMust.Show
End Sub
Private Sub M_TEMP_Click()
frmTEMP.Show 1
End Sub
Private Sub M_TotalDay_Click()
FrmTotalDay.Show
End Sub
Private Sub M_TotalMonth_Click()
FrmTotalmonth.Show
End Sub
Private Sub MDIForm_Load()
Mainform.BackColor = &H80000003
Mainform.WindowState = 2
str1 = "日一二三四五六"
StatusBar1.Panels.Item(4).Text = "星期" & Mid(str1, Weekday(Date), 1)
StatusBar1.Panels.Item(3).Text = Date
StatusBar1.Panels.Item(1).Text = "管理员: " & Operater1
End Sub
Private Sub MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Cancel = MsgBox("退出前请确定数据是否保存!!", 1 + 32)
If Cancel = 1 Then End
End Sub
Private Sub MDIForm_Resize()
' Mainform.WindowState = 2
End Sub
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
Select Case Button.Key
Case "T_InStorehouse"
FirstInStore_Click
Case "T_Calc"
Shell (App.Path + "\calc.exe")
Case "T_Lend"
Call M_LendThings_Click
Case "T_Exchange"
Call M_Exchange_Click
Case "T_Temp"
Call M_TEMP_Click
Case "T_Exit"
Call M_Exit_Click
Case "T_OutStorehouse"
Call M_OutStorehouse_Click
Case "T_StorehouseManage"
Call M_StorehouseManage_Click
Case "T_FindPerson"
Call M_FindPerson_Click
Case "T_FindArticle"
Call M_FindArticle_Click
Case "T_ProducePlan"
Call M_ProducePlan_Click
End Select
End Sub
VB+Access仓库管理系统
图5.4入库界面设置
与入库界面相关代码
Public rk As String '入库的类型
Public reccount As Integer '记录条数
Public row1 As Integer '单击list2时返回的行数
Private Sub Command1_Click() '补充数据
'判断输入的数据是否都为空
'-----------------------------------------------补充出库信息 --------------------------
If Trim(Text1(13)) <> "" Or Trim(Text1(14)) <> "" Or Trim(Text1(15)) <> "" Or Trim(Text1(16)) <> "" Then
outstorehouse.RecordSource = "select * from outstorehouse where 编号=" + list2.TextMatrix(row1, 4)
outstorehouse.Refresh
With outstorehouse.Recordset
.Fields(8) = Text1(13)
.Fields(9) = Text1(14)
.Fields(10) = Text1(15)
.Fields(11) = Text1(16)
.Update
End With
Call Command2_Click
Command1.Enabled = False
Else
MsgBox ("请输入数据!")
End If
'---------------------------------------------
End Sub
Private Sub Command2_Click() '补充出库信息时的数据清零
For i = 13 To 16
Text1(i).Text = ""
Next i
End Sub
Private Sub Command3_Click() '按确定按钮
'-------------------------------判断输入----------------------------
If Option2.Value = False Then
If Trim(Text1(0).Text) = "" Or Trim(Text1(1).Text) = "" Then '当不要补充出库的信息时
MsgBox ("品名与规格不能为空!")
Text1(0).SetFocus
Exit Sub
End If
If Trim(Text1(8).Text) = "" Then
MsgBox ("请输入领料人!")
Text1(7).SetFocus
Exit Sub
End If
Else
If Trim(Text1(0).Text) = "" Or Trim(Text1(1).Text) = "" Then '入库的关键信息
MsgBox ("品名与规格不能为空!")
Text1(0).SetFocus
Exit Sub
End If
If Trim(Text1(11).Text) = "" Or Trim(Text1(12).Text) = "" Then '当要补充出库的信息时
MsgBox ("品名与规格不能为空!")
Text1(11).SetFocus
Exit Sub
End If
If Trim(Text1(8).Text) = "" Then
MsgBox ("请输入领料人!")
Text1(7).SetFocus
Exit Sub
End If
End If
If IsNumeric(Text1(4)) = False Then '判断数量是否为数值
MsgBox ("你输入的数量有误,请输入数值!")
Text1(4).Text = ""
Text1(4).SetFocus
Exit Sub
End If
'-------------------------- -----------------------------------------
Text1(9).Text = Operater1
'----------给进库表增加信息
instorehouse.RecordSource = "select * from instorehouse"
instorehouse.Refresh
With instorehouse.Recordset
.AddNew
.Fields(0) = Text1(0).Text
.Fields(1) = Text1(1).Text
.Fields(2) = Text1(2).Text
.Fields(3) = Text1(3).Text
.Fields(4) = Val(Text1(4).Text)
.Fields(5) = Text1(5).Text
.Fields(6) = Date
.Fields(7) = Text1(7).Text
.Fields(8) = Text1(8).Text
.Fields(9) = Text1(9).Text
.Fields(10) = Text1(10).Text
.Fields(11) = rk
.Update
End With
Call list1disp
'--------------------
'----------给库存表增加信息
stock.RecordSource = "select * from stock where 品名 ='" + Trim(Text1(0)) _
+ "' and 规格 = '" + Trim(Text1(1).Text) + "'" '查找库中是否有该物品
stock.Refresh
If stock.Recordset.EOF = True Then
With stock.Recordset
.AddNew
.Fields(0) = Text1(0).Text
.Fields(1) = Text1(1).Text
.Fields(2) = Text1(2).Text
.Fields(3) = Text1(3).Text
.Fields(4) = Val(Text1(4).Text)
.Fields(5) = Text1(5).Text
.Update
End With
Else
With stock.Recordset
.Fields(4) = .Fields(4) + Text1(4)
.Update
End With
End If
'--------------------
'----------给出库表增加信息
outstorehouse.RecordSource = "select * from stock where 品名 ='" + Trim(Text1(0)) _
+ "' and 规格 = '" + Trim(Text1(1).Text) + "'" '查找库中是否有该物品
outstorehouse.Refresh
'--------------------
Call clearzore
Text1(6) = Date
Text1(9) = Operater1
Text1(0).SetFocus
End Sub
Private Sub Command4_Click() '取消
Call clearzore
Text1(0).SetFocus
End Sub
Private Sub Command5_Click() '返回
Unload Me
End Sub
Private Sub command6_Click() '出库材料的查询
'---------------------判断出库查询输入的数据--------------
If Trim(Text1(11).Text) = "" Or Trim(Text1(12).Text) = "" Then '当要补充出库的信息时
MsgBox ("品名与规格不能为空!")
Text1(11).SetFocus
Exit Sub
End If
Call list2disp
Command1.Enabled = False
'-------------------------------------------------
End Sub
Private Sub Form_Load()
Me.Top = (Mainform.Height - Me.Height) / 2 - 800
Me.Left = (Mainform.Width - Me.Width) / 2
Me.Caption = "仓库管理系统→" & "入库操作"
instorehouse.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Storehouse.mdb;Persist Security Info=False"
outstorehouse.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Storehouse.mdb;Persist
VB+Access仓库管理系统
Security Info=False"
person.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Storehouse.mdb;Persist Security Info=False"
stock.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Storehouse.mdb;Persist Security Info=False"
Call clearzore
Call option1def
Call list2def
Call list1def
Call list1disp
Text1(6).Text = Date
Text1(9).Text = Operater1
Command1.Enabled = False
End Sub
Private Sub list2_Click()
row1 = list2.Row '返回单击的行值
If row1 <> 0 Then
Command1.Enabled = True
End If
outstorehouse.RecordSource = "select * from outstorehouse where 编号=" + list2.TextMatrix(row1, 4)
outstorehouse.Refresh
If outstorehouse.Recordset.EOF = False Then '此if 为了判断LIST1中是否有数据
Frame6.Enabled = True
With outstorehouse.Recordset
If IsNull(.Fields(8)) = True Then
Text1(13).Text = ""
Else
Text1(13).Text = .Fields(8)
End If
If IsNull(.Fields(9)) = True Then
Text1(14).Text = ""
Else
Text1(14).Text = .Fields(9)
End If
If IsNull(.Fields(10)) = True Then
Text1(15).Text = ""
Else
Text1(15).Text = .Fields(10)
End If
If IsNull(.Fields(11)) = True Then
Text1(16).Text = ""
Else
Text1(16).Text = .Fields(11)
End If
End With
Else
Frame6.Enabled = False
End If
End Sub
Private Sub Option1_Click()
rk = "初次入库"
Call option1def
End Sub
Private Sub Option2_Click()
rk = "余料入库"
Command1.Enabled = False
Call option2def
list2.Enabled = False '一开始就屏蔽list2的单击事件
End Sub
Private Sub Text1_GotFocus(Index As Integer)
Text1(Index).BackColor = &HC0FFFF
End Sub
Private Sub Text1_LostFocus(Index As Integer)
Text1(Index).BackColor = &HFFC0C0
If Index = 7 Then
person.RecordSource = "select * from person where 编号 = '" + Trim(Text1(7)) + "'"
person.Refresh
If person.Recordset.EOF Then
MsgBox ("库中无此人,请重新输入编号!")
Text1(7).Text = ""
Text1(8).Text = ""
'Text1(7).SetFocus
Else
Text1(8).Text = person.Recordset.Fields(1)
End If
End If
End Sub
Private Sub list2def() '将list2的表头初始化
list2.TextMatrix(0, 0) = "品名"
list2.TextMatrix(0, 1) = "规格"
list2.TextMatrix(0, 2) = "领料人"
list2.TextMatrix(0, 3) = "出库日期"
list2.TextMatrix(0, 4) = "编号"
End Sub
Private Sub list1def() '将list1的表头初始化
list1.TextMatrix(0, 0) = "品名"
list1.TextMatrix(0, 1) = "规格"
list1.TextMatrix(0, 2) = "导电"
list1.TextMatrix(0, 3) = "硬度"
list1.TextMatrix(0, 4) = "数量"
list1.TextMatrix(0, 5) = "单位"
list1.TextMatrix(0, 6) = "入料日期"
End Sub
Private Sub option1def() '按option1屏蔽补充出库信息项
list2.Enabled = False
Frame6.Enabled = False
Frame5.Enabled = False
End Sub
Private Sub option2def() '按option2打开补充出库信息项
list2.Enabled = True
Frame6.Enabled = True
Frame5.Enabled = True
End Sub
Private Sub clearzore() '将数据项初始化
For i = 0 To 16
Text1(i).Text = ""
Text1(i).BackColor = &HFFC0C0
Next i
Option1.Value = True
rk = "初次入库"
End Sub
Private Sub list2disp()
Dim roww As Integer ''行
list2.Clear
Call list2def
roww = 1
list2.rows = 1
outstorehouse.RecordSource = "select * from outstorehouse where 品名 ='" + Trim(Text1(11).Text) + _
"' and 规格 ='" + Trim(Text1(12).Text) + "'"
outstorehouse.Refresh
If outstorehouse.Recordset.EOF = True Then
list2.Enabled = False '屏蔽list2的单击事件
Exit Sub
Else
list2.Enabled = True
End If
outstorehouse.Recordset.MoveFirst
Do While outstorehouse.Recordset.EOF = False
list2.rows = list2.rows + 1
list2.TextMatrix(roww, 0) = outstorehouse.Recordset.Fields(0)
list2.TextMatrix(roww, 1) = outstorehouse.Recordset.Fields(1)
list2.TextMatrix(roww, 2) = outstorehouse.Recordset.Fields(7)
list2.TextMatrix(roww, 3) = outstorehouse.Recordset.Fields(6)
list2.TextMatrix(roww, 4) = outstorehouse.Recordset.Fields(11)
roww = roww + 1
outstorehouse.Recordset.MoveNext
Loop
reccount = outstorehouse.Recordset.RecordCount
End Sub
Private Sub list1disp()
Dim roww As Integer ''行
roww = 1
list1.Clear
list1.rows = 1
Call list1def
instorehouse.RecordSource = "instorehouse"
instorehouse.Refresh
If instorehouse.Recordset.EOF = False Then
instorehouse.Recordset.MoveFirst
End If
Do While instorehouse.Recordset.EOF = False
list1.rows = list1.rows + 1
list1.TextMatrix(roww, 0) = instorehouse.Recordset.Fields(0)
list1.TextMatrix(roww, 1) = instorehouse.Recordset.Fields(1)
list1.TextMatrix(roww, 2) = instorehouse.Recordset.Fields(2)
list1.TextMatrix(roww, 3) = instorehouse.Recordset.Fields(3)
list1.TextMatrix(roww, 4) = instorehouse.Recordset.Fields(4)
list1.TextMatrix(roww, 5) = instorehouse.Recordset.Fields(5)
list1.TextMatrix(roww, 6) = instorehouse.Recordset.Fields(6)
roww = roww + 1
instorehouse.Recordset.MoveNext
Loop
End Sub
VB+Access仓库管理系统
图5.5出库界面设置
与出库界面相关的代码
Private Sub Command1_Click()
Dim YesNo As String
'-------------------------------判断输入----------------------------
If Trim(Text1(0).Text) = "" Or Trim(Text1(1).Text) = "" Then '当不要补充出库的信息时
MsgBox ("品名与规格不能为空!")
Text1(0).SetFocus
Exit Sub
End If
If Trim(Text1(8).Text) = "" Then
MsgBox ("请输入领料人!")
Text1(7).SetFocus
Exit Sub
End If
If IsNumeric(Text1(4)) = False Then '判断数量是否为数值
MsgBox ("你输入的数量有误,请输入数值!")
Text1(4).Text = ""
Text1(4).SetFocus
Exit Sub
End If
'---------------------------------------------------------------------
'-------------------------修改库存中的信息----------------------------
stock.RecordSource = "select * from stock where 品名='" + Trim(Text1(0)) + "' and 规格='" + Trim(Text1(1)) + "'"
stock.Refresh
If stock.Recordset.EOF = True Then
MsgBox ("仓库中无此物品,请采购!")
Text1(0).SelStart = 0
Text1(0).SelLength = Len(Text1(0).Text)
Text1(0).SetFocus
Exit Sub
Else '存在此物,判断它的数量值
With stock.Recordset
If .Fields(4) < Val(Text1(4)) And .Fields(4) <> 0 Then
YesNo = MsgBox("数量超出库存数量【" + Trim(Str(.Fields(4))) + "】是否全取!", vbYesNo)
'------------------- '根据操作来进行操作
If YesNo = "6" Then
temp = .Fields(4)
.Fields(4) = 0
.Update
'给出库加信息
outstorehouse.RecordSource = "outstorehouse"
outstorehouse.Refresh
With outstorehouse.Recordset
.AddNew
.Fields(0) = Text1(0)
.Fields(1) = Text1(1)
.Fields(2) = Text1(2)
.Fields(3) = Text1(3)
.Fields(4) = temp
.Fields(5) = Text1(5)
.Fields(6) = Date
.Fields(7) = Text1(7)
.Fields(8) = Text1(8)
.Fields(9) = Text1(9)
.Fields(10) = Text1(10)
.Update
End With
Call list1disp
Call Command2_Click
'------------------------------
Else
Text1(4).SelStart = 0
Text1(4).SelLength = Len(Text1(4))
Text1(4).SetFocus
Exit Sub
End If
'-------------------
Else
'--------------------
If .Fields(4) = 0 Then
MsgBox ("此物品已为空!")
Text1(0).SelStart = 0
Text1(0).SelLength = Len(Text1(0))
Text1(0).SetFocus
Exit Sub
Else
.Fields(4) = .Fields(4) - Val(Text1(4))
.Update
'给出库加信息
outstorehouse.RecordSource = "outstorehouse"
outstorehouse.Refresh
With outstorehouse.Recordset
.AddNew
.Fields(0) = Text1(0)
.Fields(1) = Text1(1)
.Fields(2) = Text1(2)
.Fields(3) = Text1(3)
.Fields(4) = Text1(4)
.Fields(5) = Text1(5)
.Fields(6) = Text1(6)
.Fields(7) = Text1(7)
.Fields(8) = Text1(8)
.Fields(9) = Text1(9)
.Fields(10) = Text1(10)
.Update
End With
Call list1disp
Call Command2_Click
End If
'--------------------
End If
End With
End If
'---------------------------------------------------------------------
'-------------------------给出库添加信息------------------------------
'---------------------------------------------------------------------
End Sub
Private Sub Command2_Click()
Call clearzore
Text1(6).Text = Date
Text1(9).Text = Operater1
Me.Text1(0).SetFocus
End Sub
Private Sub Command3_Click()
Unload Me
End Sub
Private Sub Form_Load()
Me.Top = (Mainform.Height - Me.Height) / 2 - 800
Me.Left = (Mainform.Width - Me.Width) / 2
Me.Caption = "仓库管理系统→" & "出库操作"
outstorehouse.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Storehouse.mdb;Persist Security Info=False"
person.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Storehouse.mdb;Persist Security Info=False"
stock.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Storehouse.mdb;Persist Security Info=False"
Call clearzore
Call list1def
Text1(9).Text = Operater1
Text1(6).Text = Date
Call list1disp
End Sub
Private Sub list1def() '将list1的表头初始化
list1.TextMatrix(0, 0) = "品名"
list1.TextMatrix(0, 1) = "规格"
list1.TextMatrix(0, 2) = "导电"
list1.TextMatrix(0, 3) = "硬度"
list1.TextMatrix(0, 4) = "数量"
list1.TextMatrix(0, 5) = "单位"
list1.TextMatrix(0, 6) = "出库日期"
list1.TextMatrix(0, 7) = "领料人编码"
list1.TextMatrix(0, 8) = "领料人"
list1.TextMatrix(0, 9) = "经手人"
list1.TextMatrix(0, 10) = "说明"
End Sub
Private Sub clearzore() '将数据项初始化
For i = 0 To 10
Text1(i).Text = ""
Text1(i).BackColor = &HFFC0C0
Next i
End Sub
Private Sub Text1_GotFocus(Index As Integer)
Text1(Index).BackColor = &HC0FFFF
End Sub
Private Sub Text1_LostFocus(Index As Integer)
Text1(Index).BackColor = &HFFC0C0
If Index = 7 Then
person.RecordSource = "select * from person where 编号 = '" + Trim(Text1(7)) + "'"
person.Refresh
If person.Recordset.EOF Then
MsgBox ("库中无此人,请重新输入编号!")
Text1(7).Text = ""
Text1(8).Text = ""
'Text1(7).SetFocus
Else
Text1(8).Text = person.Recordset.Fields(1)
End If
End If
End Sub
Private Sub list1disp()
Dim roww As Integer ''行
roww = 1
list1.Clear
list1.rows = 1
Call list1def
outstorehouse.RecordSource = "select * from outstorehouse"
outstorehouse.Refresh
If outstorehouse.Recordset.EOF = False Then
outstorehouse.Recordset.MoveFirst
End If
Do While outstorehouse.Recordset.EOF = False
list1.rows = list1.rows + 1
list1.TextMatrix(roww, 0) = outstorehouse.Recordset.Fields(0)
list1.TextMatrix(roww, 1) = outstorehouse.Recordset.Fields(1)
list1.TextMatrix(roww, 2) = outstorehouse.Recordset.Fields(2)
list1.TextMatrix(roww, 3) = outstorehouse.Recordset.Fields(3)
list1.TextMatrix(roww, 4) = outstorehouse.Recordset.Fields(4)
list1.TextMatrix(roww, 5) = outstorehouse.Recordset.Fields(5)
list1.TextMatrix(roww, 6) = outstorehouse.Recordset.Fields(6)
list1.TextMatrix(roww, 7) = outstorehouse.Recordset.Fields(7)
list1.TextMatrix(roww, 8) = outstorehouse.Recordset.Fields(8)
list1.TextMatrix(roww, 9) = outstorehouse.Recordset.Fields(9)
list1.TextMatrix(roww, 10) = outstorehouse.Recordset.Fields(10)
roww = roww + 1
outstorehouse.Recordset.MoveNext
Loop
End Sub
VB+Access仓库管理系统
图5.6管理员窗体设置
与该窗体相关的代码
Dim row1 As Integer '选择某条记录
Dim pd As Integer '判断是否选中某一项记录
Dim datacount As Integer '判断数据库中是否有记录
Private Sub cmdadd_Click() '添加操作员
operater.RecordSource = "select * from operater where 姓名='" & Trim(Text1(0)) & "'"
operater.Refresh
If operater.Recordset.EOF = False Then
MsgBox "该操作员已经存在!!!"
Else
If Option1(0).Value = True Then
czqx = 1
Else
czqx = 2
End If
operater.Recordset.AddNew
operater.Recordset.Fields(0) = Trim(Text1(0))
operater.Recordset.Fields(1) = Trim(Text1(1))
operater.Recordset.Fields(2) = czqx
operater.Recordset.Update
operater.Refresh
End If
List.Enabled = True
Call flash
Text1(0) = ""
Text1(1) = ""
Option1(1).Value = True
Text1(0).SetFocus
End Sub
Private Sub cmdCancel_Click() '取消
Text1(0) = ""
Text1(1) = ""
Text1(0).SetFocus
Text1(0).Locked = False
Text1(0).TabStop = True
pd = 0
cmdADD.Visible = True
cmdCancel.Enabled = False
cmdCancel.Visible = False
End Sub
Private Sub cmddel_Click() '删除操作员信息
operater.RecordSource = "select * from operater where 姓名='" & Trim(Text1(0)) & "'"
operater.Refresh
If operater.Recordset.EOF = True Then
MsgBox "没有这个操作员!!"
Text1(0).SetFocus
Else
aa = MsgBox("是否删除操作员【" & Text1(0) & "】的信息", 1 + 32)
If aa = 1 Then
operater.Recordset.Delete
operater.Recordset.Update
operater.Refresh
Call csf
Call pdd
If datacount <> 0 Then Call flash
End If
Call cmdCancel_Click
End If
End Sub
Private Sub cmdMODI_Click() '修改操作员信息
If Trim(Text1(1)) = "" Then
MsgBox "密码不能为空!!!"
Text1(1).SetFocus
Exit Sub
Else
aa = MsgBox("是否修改此操作员的信息", 1 + 32)
If aa = 1 Then
operater.RecordSource = "select * from operater where 姓名='" & Trim(Text1(0)) & "'"
operater.Refresh
operater.Recordset.Fields(1) = Text1(1)
If Option1(0).Value = True Then
operater.Recordset.Fields(2) = 1
Else
operater.Recordset.Fields(2) = 2
End If
operater.Recordset.Update
operater.Refresh
Call flash
End If
End If
Call cmdCancel_Click
End Sub
Private Sub cmdRet_Click() '返回
pd = 0
Unload frmOperater
End Sub
Private Sub Form_Load() '初始化
Me.Top = (Mainform.Height - Me.Height) / 2 - 800
Me.Left = (Mainform.Width - Me.Width) / 2
Me.Caption = "仓库管理系统→" & "操作员设置"
operater.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Storehouse.mdb;Persist Security Info=False"
Call csf
Call pdd
If datacount <> 0 Then Call flash
End Sub
Private Sub List_Click() '选中某一条记录
pd = 1
row1 = List.Row
Text1(0) = List.TextMatrix(row1, 0)
Text1(1) = ""
If List.TextMatrix(row1, 2) = 1 Then
Option1(0).Value = True
Else
Option1(1).Value = True
End If
cmdMODI.Enabled = True
CmdDel.Enabled = True
cmdADD.Enabled = False
cmdADD.Visible = False
cmdCancel.Enabled = True
cmdCancel.Visible = True
Text1(0).Locked = True
Text1(0).TabStop = False
Text1(1).SetFocus
End Sub
Private Sub Text1_Change(Index As Integer) '判断输入是否为空
If Trim(Text1(0)) = "" Or Trim(Text1(1)) = "" Then
cmdADD.Enabled = False
CmdDel.Enabled = False
Else
If pd = 1 Then
CmdDel.Enabled = True
Else
cmdADD.Enabled = True
CmdDel.Enabled = True
End If
End If
End Sub
Private Sub Text1_GotFocus(Index As Integer)
If Text1(Index).TabStop = True Then
Text1(Index).BackColor = &HC0FFFF
Text1(Index).SelStart = 0
Text1(Index).SelLength = 12
End If
End Sub
Private Sub Text1_LostFocus(Index As Integer)
Text1(Index).BackColor = &HFFC0C0
End Sub
Private Sub pdd() '判断数据库中是否有记录
operater.RecordSource = "select * from operater"
operater.Refresh
datacount = operater.Recordset.RecordCount
If datacount = 0 Then
List.Enabled = False
Else
List.Enabled = True
End If
End Sub
Private Sub flash() '刷新列表
Dim roww As Integer ''行
roww = 1
List.Clear
List.rows = 1
Call csf
operater.RecordSource = "operater"
operater.Refresh
operater.Recordset.MoveFirst
Do While operater.Recordset.EOF = False
List.rows = List.rows + 1
List.TextMatrix(roww, 0) = operater.Recordset.Fields(0)
List.TextMatrix(roww, 1) = operater.Recordset.Fields(1)
List.TextMatrix(roww, 2) = operater.Recordset.Fields(2)
roww = roww + 1
operater.Recordset.MoveNext
Loop
End Sub
Private Sub csf() '列表初始化
List.TextMatrix(0, 0) = "姓名"
List.TextMatrix(0, 1) = "密码"
List.TextMatrix(0, 2) = "权限"
List.ColWidth(0) = 1500
List.ColWidth(1) = 2500
List.ColWidth(2) = 1000
End Sub
VB+Access仓库管理系统
第六章 软件测试
单元测试也称模块测试或程序测试,单元测试是对每个模块单独进行的,验证模块接口与设计说明书是否一致,对模块的所有主要处理路径进行测试且与预期的结构进行对照,还要对所有错误处理路径进行测试。对源码进行审查,对照设计说明书,表态地检查源程序是否符合功能的逻辑要求,是进行单元测试前的重要工作工。单元测试一般是由程序员完成,也称程序调试。
组合测试也称集成测试或子系统测试,通常采用自顶向下测试和自底向上测试两种测试方法。组合测试的对象是指已经通过单元测试的模块,不是对零散模块进行单个测试,而是用系统化的方法装配和测试软件系统,是一个严格的过程,必须认真地进行,其计划的产生和单元模块测试的完成日期要协调起来,这种测试应在系统目标机上进行,造成系统应用的环境条件,除了开发部分项目负责人参加以外,还应该有相应系统的用户参加,给评审员进行演示。
确认测试是对通过组合测试的软件进行的,这些软件已经存于系统目标设备的介质上,确认测试的目的是对表明软件是可以工作的,并且符合“软件需求说明书”中规定的全部功能和性能要求。确认测试是按照这些要求定出的“确认测试计划”进行的。测试工作是由一个独立的组织进行,而且测试要从用户的角度出发。
系统测试是对整体性能的测试,主要解决各子系统之间的数据通信和数据共享问题以及检测系统不否达到用户的实际要求,系统测试的依据是系统分析报告。系统测试应在系统的整个范围内进行,这种测试不只对软件进行,而是对构成系统的硬、软件一起进行。系统测试与建构同时进行或略慢。系统测试需要确认从头到尾的功能正常才算完成,应当尽量避免系统测试延到项目末尾进行。
在系统测试完成后,进行用户的验收测试,它是用户在实际应用环境中所进行的真实数据测试。在具体的测试中,一般应遵循以下原则:由程序设计者之外的人进行测试;测试用例应由两部分组成:输入数据和预期输出结果;应选用不合理的输入数据与非法输入测试;不仅要检验程序是否实现预期功能,还应检查程序是否做了不应该做的工作;集中测试容易出错的程序模块;对程序修改以后,必须重新进行测试。
对于软件测试而言,黑盒测试法把程序看作一个黑盒子,完全不考虑程序的内部结构和处理过程。也就是说,黑盒测试是在程序接口进行的测试,它只检查程序功能是否按照规格说明书的规定正常使用,程序是否能适当地接收输入数据并产生正确的输出信息,程序在运行过程中能否保持外部信息(例如,数据库或文件)的完整性。
黑盒测试又称为功能测试,着重测试软件功能。黑盒测试力图发现下述类型的错误:①功能不正确或遗漏了功能;②界面错误;③数据结构错误或外部数据库访问错误;④性能错误;⑤初始化和终止错误。
当进行数据更新时,没有确定或取消,系统将提示以下对话框,如下图:
图6.1
若图片无法显示请联系站长QQ3710167当主要关键字段“型号”没有输入时,系统也将提示以下对话框,如下图:
图6.2
当用户要删除记录时,为了保证不误操作,系统也将提出一个对话框,如下图若图片无法显示请联系站长QQ3710167
图6.3
为了便有运行,还将程序打包,进行安装,在打包过程中,也出现以下对话框,如下图若图片无法显示请联系站长QQ3710167
VB+Access仓库管理系统
总 结
在这次课程设计中,由于我做的是仓库管理信息系统,根据赵老师的要求并结合本人实际能力,选择了用Visual Basic6.0作为开发环境,Microsoft Access作为数据环境制作该系统。通过这次课程设计,我对软件工程库设计的各个阶段(系统设计、需求分析、总体设计、详细设计)的目标、方法、应注意的事项有了比较深刻的了解同时也提高了用Visual Basic 6.0 的编程能力。在实际设计过程中也碰到了不少问题,例如用Visual Basic 6.0连接数据库时,开始总是连不上,经反复调试并且翻阅了一些介绍Visual Basic 6.0与数据库连接的书籍,经过一段时间后解决了该问题。
本系统的设计已经初步完成,由于时间的仓促以及经验的不足,难免存在许多问题,这就需要在今后的实践中加以修改和完善。本系统经过调试后,应该说基本上是可行的。当然,本系统仍有未完成的遗憾,比如说,对借出管理的归还方面实现的不是太理想。
在程序设计中,我觉得测试是一个复杂而重要的步骤,应该认真对待,当一个功能或一个函数过程完成后,必须认真测试,可以采取书本上学到的黑盒测试和白盒测试两种方法,黑盒测试时应该尽量把所有的可能性都一一试过,验证其正确性;而白盒测试则可以通过设置断点,添加监视来一步一步检查它的流程和数值的正确性。只有经过认真的测试,软件的质量才能得到保证。
同时了解到程序清单的布局对于程序的可读性也有很大影响,利用适当的阶梯形式可以使程序的层次结构清晰明显,还有经常作好一些代码的注释,这样对自己或别人检查程序时带来很大方便。
通过此次软件工程课程设计,我学习掌握了一个软件开发的整个过程,同时也深刻的体会到软件工程中的结构化,模块化的设计方法,以及提高软件可靠性、可维护性、提高效率的重要性。通过使用Visual Basic 6.0语言作为编程工具体会到其软件的强大功能及易学、易用的特性。由于时间限制,此设计中还有许多需要完善和优化的地方,真诚地希望大家指正,在此也特别感谢指导老师对本人的帮助和指导。
参考文献
[1] 萨师煊.王珊编.数据库系统概论.北京:高等教育出版社,2003年
[2] 张海藩.软件工程导轮.北京:清华大学出版社,2004年
[3] 徐士良.常用算法程序集.北京:清华大学出版社,2004年
[4] 龚沛曾.陆慰民.杨志强编.北京:高等教育出版社,2000.7