物资管理系统设计毕业论文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
铁路职业技术学院
毕业设计说明书
论文题目:物资管理系统的设计
作者:王中玉
班级学号: 090443154 系部:信息工程系
专业:计算机应用技术
班级:计算机09A1
指导教师:俊红
2012 年 5 月 1 日
物资管理系统设计毕业论文
目录
第1章概述 (5)
1.1 技术综述 (5)
1.2 项目背景 (5)
1.3 开发平台 (5)
第2章需求分析 (7)
2.1 业务需求及功能列表 (7)
2.2 数据要求 (7)
第3章系统设计 (8)
第4章数据库设计 (9)
4.1 数据库需求分析 (9)
4.2 数据库概念结构设计 (10)
4.3 数据库逻辑结构的设计 (12)
第5章数据库结构实现 (135)
5.1 创建数据库Material (135)
5.2 创建视图 (157)
第6章代码设计 (168)
6.1 物资管理信息系统主窗体的创建 (18)
6.2 系统用户管理模块的创建 (21)
6.3 物资基本信息模块的创建 (235)
6.4 物资入库信息管理模块的创建 (33)
6.5 物资出库信息管理模块的创建 (34)
6.6 物资余额信息管理模块的创建 (34)
第7章测试 (346)
第8章毕业设计总结 (44)
参考文献 (45)
第1章概述
1.1 技术综述
本系统所使用的开发语言是Visual Basic6.0(简称VB6.0)。
VB6.0在和数据库应用程序的开发中,提供了包括数据窗体控件和数据窗体对象等功能强大的工具,连接数据库文件,并访问其中数据,该语言不仅具有一般数据库语言的特点,而且有可视化的特点,是一种非常优秀的计算机软件开发语言。
在屏幕的颜色搭配上突出了整体和协调原则,尽量减少多色调的无序使用,力求模块颜色搭配一致,又有一些变化,但风格统一。
在窗体的格式上,基本上采用了统一的标准,命令按钮采用了统一的布局。
本系统具有很强的针对性和实用性,主要是面向企业的具体的案例。
1.2 项目背景
物资管理是一般工业、商业企业生产管理环节中重要的一环,需要对物资基本信息管理、物资调配信息等进行完整的监控。
物资入库首先要登记物资的基本信息,包括物资的种类、名称、型号、单位、单价等;然后登记物资入库信息,包括物资基本信息、入库地点、入库人、经办人、数量等;根据物资的入库、出库过程的综合,得到各种物资的余额信息,方便进行后续工作。
因此物资管理信息系统需要纪录物资流通的全过程。
加强物资管理,不但有算得出、看得到的效益,还可以大大提高管理队伍的素质,加强职工的增产节约意识、爱护财产意识和学习科技的意识,使科学管理形成共识,并可以减少物资设备各个环节上的矛盾。
1.3 开发平台
硬件环境:服务器端基本要求:P41.8以上+256M存+10G以上硬盘;
客户机端:P4600,40M存,Win98、Win2000。
软件环境:Visual Basic + SQL Server 2000
Visual Basic6.0作为Microsoft公司开发的Basic Studio6.0套件的一部分,是一个功能丰富、方便实用的程序开发环境,它的一个很大的特色就是功能强大、编程简单的数据库操作能力。
可视化的开发环境、丰富的数据库访问空间的支持使得Visual Basic成为数据库应用程序项目中重要的开发工具。
Microsoft SQL Server 2000中文版是基于客户机/服务器模式的新一代大型数据库管理系统,它在电子商务、数据仓库和数据库解决方案等应用中起着重要的核心作用,可为企业的数据管理提供强大的支持,并采取有效的措施来实现数据的安全性、完整性、备份和恢复。
是目前广泛使用的关系型数据库。
ADO(ActiveX Data Object)是微软提出的数据访问接口,提供访问各种数
据类型的连接机制,其集中了DAO和ROD的优点,可以通过简单的变成完成和各种数据结构进行连接。
第2章需求分析
2.1 业务需求及功能列表
2.1.1 业务需求
长期以来,物资管理工作中的信息管理是采用人工的方式,要付出大量人力,填写各种表格、凭证、账册、卡片和文件。
由于信息是随着时间不断变化的,各业务部门对信息的使用要求也各不相同,所以要按照不同的分类经常不断地汇总、统计,往往要做许多重复登记和转抄。
这种手工操作的管理方式,不仅浪费人力,而且存在许多缺点:(1)处理速度慢,影响信息及时性。
(2)易出现错误,影响信息精确性。
(3)不便于查询。
(4)缺乏综合性,不能起控制作用。
由于这些缺点,大大降低了信息的利用价值,显然越来越不适应现代物资管理工作的需要。
因此,发展以电子计算机为基础的物资管理信息系统已是十分迫切和必要的了。
2.1.2 功能列表
有关物资信息的基本输入、查询和修改,入库物资信息的输入、查询和修改,出库物资信息的输入、查询和修改以及物资余额的查询和浏览。
2.2 数据要求
创建系统用户表 user_Info1
create table [dbo].[user_Info1](
[user_ID] [char] (10) collate chinese_PRC_CI_AS NOT NULL
[user_PWD] [char] (10) collate chinese_PRC_CI_AS NULL
[user_Des] [char] (10) collate chinese_PRC_CI_AS NULL 利用SQL Server 2000 数据库系统中的 SQL 查询分析器实现的,通过查询分析器来运行数据库系统。
第3章系统设计
系统开发的总体任务是实现物资信息的系统化、规化、和自动化。
系统功能分析是在系统开发的总体任务完成的基础上完成的,本物资管理信息系统需要完成的功能的主要有:
●有关物资信息的基本输入,包括物资编号、物资名称、规格型号、种类和
计量单位等。
●物资基本信息的查询。
●物资基本信息的修改。
●入库物资信息的输入。
●入库物资信息的修改。
●入库物资信息的查询。
●出库物资信息的输入。
●出库物资信息的修改。
●出库物资信息的查询。
●物资余额信息的查询。
●物资余额信息的浏览。
系统功能模块设计
对上述各项功能进行集中、分块,按照结构化程序设计的要求,得到如图3.1所示的系统功能模块图。
图3.1 系统功能模块图
第4章数据库设计
设计数据库系统时应该首先了解用户各个方面的需求,包括现有的以及将来可能增加的需求。
数据库设计一般包括如下几个步骤:
●数据库需要分析。
●数据库概念结构设计。
●数据库逻辑结构设计。
4.1 数据库需求分析
4.1.1数据流图
用户的需求具体体现在各种信息的提供、保存、更新和查询等方面,这就要求数据库结构能充分满足各种信息的输出和输入。
收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。
仔细分析调查有关物资管理信息需求的基础上,将得到如图4.1所示的本系统所处理的数据流程
图4.1 物资管理信息系统数据流程图
针对一般物资管理信息系统的需求,通过对物资调配工作过程的容和数据流程分析,设计如下面所示的数据项和数据结构:
●物资基本信息,包括的数据项有:物资编号、物资名称、规格型号、类别、计
量单位等。
●入库物资信息,包括的数据项有:物资编号、物资名称、规格型号、类别、计
量单位、数量、单价、金额、领用时间、领用人、经办人、保管人、仓库、备注等。
●出库物资信息,包括的数据项有:物资编号、物资名称、规格型号、类别、计
量单位、数量、单价、金额、领用时间、领用人、经办人、保管人、仓库、备注等。
物资余额信息,包括的数据项有:物资编号、物资名称、规格型号、类别、计量单位、数量、金额、仓库等。
4.2 数据库概念结构设计
得到上面的数据项和数据结构以后,就可以设计出能够满足用户需求的各种试题以及它们之间的关系,为后面的逻辑结构设计打下基础。
这些试题包含各种具体信息,通过相互间的作用形成数据的流动。
本系统根据上面的设计规划出的实体有:物资基本信息实体、物资入库信息实体、物资出库信息实体、物资余额信息实体。
各个实体具体的描述E-R图如图4.2、4.3、4.4、4.5、4.6所示:
图4.2 物资基本信息实体E-R图
图4.3 物资入库信息实体E-R图
图4.4 物资出库信息实体E-R图
图4.5 物资余额信息实体E-R图
图4.6 实体之间关系的E-R图
用powerdesigner设计该数据库的概念模型,如图4.7所示。
图4.7 物资出库和入库的概念模型图
4.3数据库逻辑结构的设计
4.3.1 powerdesigner设计物理模型
利用powerdesigner建立实体,并建立之间的关系。
再将概念模型转化为物理模型,如图4.8所示。
图4.8 物资出库和入库的物理模型图
现在将上面的数据库概念结构转化为SQL Server 2000数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。
4.3.2 表格设计
物资管理信息系统数据库中各个表格的设计结果如下面表格所示。
每个表格在数据库中的一个表。
表4.1 msurplus 物资余额信息表
表4.2 Material 物资基本信息表
表4.3 msave 入库物资信息表
4.3.3 数据库关系模式
根据关系模式转换规则,把E-R图转换为关系模式,如下所示(有实下划线的为主码):
·物资基本信息=(物资编号,物资名称,规格型号,类别,计量单位)
·入库物资基本信息=(入库编号,入库物资编号,物资名称,规格型号,种类,单位,数量,单价,金额,入库时间,经办人,保管人,仓库) ·出库物资基本信息=(出库编号,出库物资编号,物资名称,规格型号,种类,单位,数量,单价,金额,入库时间,经办人,保管人,仓库) ·物资余额信息=(物资编号,物资名称,规格型号,类别,计量单位,数量,金额,仓库)
·用户=(用户名,密码)
第5章数据库结构实现
经过前面的需求分析和概念结构设计以后,得到数据库的逻辑结构。
现在就可以在SQL Server 2000 数据库系统中实现该逻辑结构。
利用SQL查询分析器实现。
5.1创建数据库Material
5.1.1建数据库
在查询分析器输入以下语言
create database Material
on primary
(
Name=Material _data,
Filename=' E:\物资管理系统(谭卫军)\ Material.mdf ' ,
size=10,
Filegrowth=10%,
maxsize=unlimited
)
log on
(
Name= Material _log,
Filename=' E:\物资管理系统(谭卫军)\ Material.ldf',
size=1,
Filegrowth=10%,
maxsize=5
)
5.1.2创建物资基本信息表material
CREATE TABLE [dbo].[material] (
[wzid] [char] (8) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[wzname] [char] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[wzspec] [char] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[wzkind] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[wzunit] [char] (10) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
5.1.3创建入库物资基本信息表msave
CREATE TABLE [dbo].[msave] (
[rkno] [char] (14) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[rkid] [char] (8) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[rkname] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[rkspec] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[rkkind] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[rkunit] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[rkaccount] [numeric](5, 0) NOT NULL ,
[rkprice] [numeric](8, 2) NOT NULL ,
[rkvalue] [numeric](10, 2) NOT NULL ,
[rkdate] [datetime] NOT NULL ,
[rkdeal_person] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [rksave_person] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [rkbase] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[rkmemo] [text] COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
5.1.4创建物资余额信息表msurplus
CREATE TABLE [dbo].[msurplus] (
[yeid] [char] (8) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[yename] [char] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[yespec] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[yekind] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[yeunit] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ,
[yeaccount] [numeric](5, 0) NOT NULL ,
[yevalue] [numeric](10, 2) NOT NULL ,
[yebase] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[yememo] [text] COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
5.1.5创建出库物资基本信息表muse
CREATE TABLE [dbo].[muse] (
[lyno] [char] (14) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[lyid] [char] (8) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[lyname] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[lyspec] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[lykind] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[lyunit] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ,
[lyaccount] [numeric](5, 0) NOT NULL ,
[lyprice] [numeric](8, 2) NULL ,
[lyvalue] [numeric](10, 2) NULL ,
[lydate] [datetime] NOT NULL ,
[lyuse_person] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[lydeal_person] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[lybase] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[lymemo] [text] COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
5.2创建视图
5.2.1建立物资基本信息视图
CREATE VIEW view_material(wzid,wzname,wzspec,wzkind,wzunit)
AS
SELECT wzid,wzname, wzspec,wzkind,wzunit
FROM material
5.2.2建立入库物资信息视图
CREATE VIEW view_msave
AS
SELECT
rkno,rkid,rkspec,rkkind,rkunit,rkaccount,rkprice,rkvalue,rkdate
,,rksave_person
rkdeal_person,rksave_person,rkbase,rkmemo
FROM msave
其它视图依此同理建立
第6章代码设计
6.1 物资管理信息系统主窗体的创建
6.1.1 创建工程项目——Material_MIS
打开Viaual Basic 后,单击File/New Project菜单,在工程模版中选择Standard EXE,Visual Basic将自动产生一个Form窗体,属性都是缺省设置。
这里我们删除这个窗体,单击File/Save project菜单,将这个工程命名为Material_MIS。
6.1.2创建物资管理信息系统的主窗体
这个项目使用多文挡界面,单击工具栏中的ADD MDI Form按钮,产生一个窗体。
在这个窗体上添加所需的控件,然后设置窗体和控件的属性设置。
创建好的窗体如图6.1所示:
图6..1物资管理系统主窗体
在主窗体中加入状态栏控件,可以实时反映系统中的各个状态的变化。
状态栏控件需要在通常的属性窗口中设置一般属性,还需要在其特有的弹出式菜单中进行设置。
6.1.3创建功用模块
在Visual Basic中可以用公用模块来存放整个工程项目的函数、过程和全局变量等。
这样可以提高代码的效率。
在项目资源管理器中为项目添加一个Module,保存为Module1.bas。
由于系统各个功能模块都将频繁使用数据库中各种数据,因此需要一个公共的数据操作函数,用以执行各种SQL语句。
添加函数Execute SQL,代码如下:
‘传递参数为查询语句和查询信息,返回以数据集对象形式保存的查询结果
Public Function ExecuteSQL(ByVal SQL _
As String, MsgString As String) _
As ADODB.Recordset
'执行SQL语句,并返回记录集对象
‘声明一个连接
Dim cnn As ADODB.Connection
‘声明一个数据集对象
Dim rst As ADODB.Recordset
Dim sTokens() As String
‘异常处理
On Error GoTo ExecuteSQL_Error
‘用split函数产生一个包含各个子串的数组
sTokens = Split(SQL)
‘创建一个新连接
Set cnn = New ADODB.Connection
‘打开连接
cnn.Open ConnectString
‘判断查询语句是否包含指定容
If InStr("INSERT,DELETE,UPDATE", _
UCase$(sTokens(0))) Then
‘执行查询语句
cnn.Execute SQL
‘返回查询信息
MsgString = sTokens(0) & _
" query successful"
Else
‘创建一个数据集对象
Set rst = New ADODB.Recordset
‘执行查询语句
rst.Open Trim$(SQL), cnn, _
adOpenKeyset, _
adLockOptimistic
'rst.MoveLast 'get RecordCount
‘返回记录集对象
Set ExecuteSQL = rst
‘返回查询信息
MsgString = "查询到" & rst.RecordCount & _
" 条记录 "
End If
ExecuteSQL_Exit:
‘卸载对象
Set rst = Nothing
‘中断连接
Set cnn = Nothing
Exit Function
‘错误信息
ExecuteSQL_Error:
MsgString = "查询错误: " & _
‘显示错误信息
Err.Description
Resume ExecuteSQL_Exit
End Function
‘使用了connect string 函数,这个函数用来连接数据库
Public Function ConnectString() _
As String
’返回一个数据库连接
ConnectString = "FileDSN=wuzi.dsn;UID=sa;PWD="
End Function
在录入有关信息时,需要回车来进入下一个文本框,这样对软件使用者非常方便。
在所有的功能模块都需要这个函数,所以将它放在功用模块,代码如下:
Public Sub EnterToTab(Keyasc As Integer)
‘判断是否为回车键
If Keyasc = 13 Then
‘转换成Tab键
SendKeys "{TAB}"
End If
End Sub
Keyasc用来保存当前按键,SendKeys函数用来指定的按键。
一旦按下回车键,将返回Tab键,狭义个控件自动获得输入焦点。
添加全局变量,用来记录各个窗体的读写状态,代码如下:
Public flagMedit As Boolean
Public flagIedit As Boolean
Public flagLedit As Boolean
Public flagOedit As Boolean
Public gintMmode As Integer
Public gintImode As Integer
Public gintLmode As Integer
Public gintOmode As Integer
GintMmode变量用来记录是添加状态还是修改状态,赋值1为添加,赋值2为修改。
FlagMedit变量用来标示是否进入修改的窗体。
由于物资管理信息管理系统启动后,需要对用户进行判断。
如果登录者是授权用户,将进入系统,否则将停止程序的执行。
这个判断需要在系统运行的最初进行,因此代码放在公用模块中。
6.2 系统用户管理模块的创建
用户管理模块主要实现:
●用户登录
●添加用户
●修改用户密码
6.2.1用户登录窗体的创建
图6.2 用户登录窗体
其中注意adodc属性的设置。
同时应该将文本框的容通过adodc连接到数据库。
代码如下:
Private Sub txtUserName_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then
txtPassword.SetFocus
End If
End Sub
Private Sub txtPassword_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then
Adodc1.Recordset.MoveFirst
Adodc1.Recordset.Find "user_ID='" & txtUserName.Text & " '"
SQL = "SELECT user_ID FROM user_Info WHERE user_ID LIKE txtUserName.Text"
Adodc1.RecordSource = SQL
Static i As Integer
If Adodc1.Recordset.EOF And i < 3 Then
MsgBox "用户名错误,请重新输入!", 32, "提示信息"
i = i + 1
txtUserName.Text = ""
txtUserName.SetFocus
Exit Sub
End If
Adodc1.Recordset.MoveFirst
Adodc1.Recordset.Find "user_PWD='" & txtPassword.Text & " '"
SQL = "SELECT user_PWD FROM user_Info WHERE user_ID LIKE txtUserName.Text" Adodc1.RecordSource = SQL
Adodc1.RecordSource = SQL
If Adodc1.Recordset.EOF And i < 3 Then
MsgBox "密码错误,请重新输入!", 32, "提示信息"
i = i + 1
txtPassword.Text = ""
txtPassword.SetFocus
Exit Sub
End If
If i = 3 Then
MsgBox "请不起,您无权登录本系统!", 16, "提示信息"
Form3.Show
Form2.Hide
Exit Sub
End If
Mycon.ConnectionString="Driver={SQL
Server};Server=WWW-A0DDA338040;Database=Material"
Mycon.Open
frmMain.Show
Unload Me
txtUserName.Text = ""
txtPassword.Text = ""
End If
End Sub
6.2.2 添加用户窗体的创建
选择“管理系统/添加用户”菜单,将出现如图6.3所示的窗体
图6.3 添加用户窗体
代码如下:
Private Sub Command1_Click()
Dim txtSQL As String
Dim mrc As ADODB.Recordset
Dim MsgText As String
If Trim(Text1(0).Text) = "" Then
MsgBox "请输入用户名称", vbOKOnly + vbExclamation, "警告"
Exit Sub
Text1(0).SetFocus
Else
txtSQL = "select * from user_Info"
Set mrc = ExecuteSQL(txtSQL, MsgText)
While (mrc.EOF = False)
If Trim(mrc.Fields(0)) = Trim(Text1(0)) Then
MsgBox "用户已经存在,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
Text1(0).SetFocus
Text1(0).Text = ""
Text1(1).Text = ""
Text1(2).Text = ""
Exit Sub
Else
mrc.MoveNext
End If
Wend
End If
If Trim(Text1(1).Text) <> Trim(Text1(2).Text) Then
MsgBox "两次输入密码不一样,请确认!", vbOKOnly + vbExclamation, "警告" Text1(1).SetFocus
Text1(1).Text = ""
Text1(2).Text = ""
Exit Sub
Else
If Trim(Text1(1).Text) = "" Then
MsgBox "密码不能为空", vbOKOnly + vbExclamation, "警告"
Text1(1).SetFocus
Text1(1).Text = ""
Text1(2).Text = ""
Else
mrc.AddNew
mrc.Fields(0) = Trim(Text1(0).Text)
mrc.Fields(1) = Trim(Text1(1).Text)
mrc.Update
mrc.Close
Me.Hide
MsgBox "用户添加成功", vbOKOnly + vbExclamation, "添加用户"
End If
End If
End Sub
Private Sub Command2_Click()
Me.Hide
End Sub
6.2.3 修改密码窗体的创建
图6.4 修改密码窗体
代码略
6.3物资基本信息模块的创建
物资基本信息管理模块主要实现如下功能:
●添加物资基本信息。
●修改物资基本信息。
●删除物资基本信息。
●查询物资基本信息。
6.3.1 添加物资基本信息窗体的创建
选择“物资基本信息管理/添加物资基本信息”菜单,将出现如图6.5所示的窗体。
图6.5 添加物资基本信息窗体
在载入窗体时,程序首先判断所处状态,代码如下:
Private Sub Exit_Click()
If mblChange And Save.Enabled Then
If MsgBox("保存当前记录的变化吗?", vbOKCancel + vbExclamation, "警告") = vbOK Then
'保存
Call Save_Click
End If
End If
'卸载
Unload Me
End Sub
Private Sub Form_Load()
Dim intCount As Integer
Dim txtSQL As String
Dim MsgText As String
Dim mrc As ADODB.Recordset
'判断是否处于添加状态
If gintMmode = 1 Then
Me.Caption = Me.Caption & "添加"
ElseIf gintMmode = 2 Then
txtItem(0).Text = m_id
Me.Caption = Me.Caption & "修改"
End If
End Sub
Private Sub Save_Click()
Dim intCount As Integer
Dim sMeg As String
Dim MsgText As String
'判断文本框容是否为空
For intCount = 0 To 4
If Trim(txtItem(intCount) & "") = "" Then
Select Case intCount
Case 0
sMeg = "物资编号"
Case 1
sMeg = "物资名称"
Case 2
sMeg = "规格型号"
Case 3
sMeg = "类别"
Case 4
sMeg = "计量单位"
End Select
sMeg = sMeg & "不能为空!"
'提示信息
MsgBox sMeg, vbOKOnly + vbExclamation, "警告"
'获得输入焦点
txtItem(intCount).SetFocus
Exit Sub
End If
Next intCount
'判断是否有相同ID的记录
If gintMmode = 1 Then
'组成查询语句
txtSQL = "select * from material where wzid='" & Trim(txtItem(0)) & "'" Set mrc = ExecuteSQL(txtSQL, MsgText)
'判断是否有重复记录
If mrc.EOF = False Then
MsgBox "已经存在此物资编号的记录!", vbOKOnly + vbExclamation, "警告" '获得输入焦点
txtItem(0).SetFocus
Exit Sub
End If
'关闭数据集对象
mrc.Close
End If
'判断是否有相同容的记录
txtSQL = "select * from material where wzid<>'" & Trim(txtItem(0)) & "' and wzname='" & Trim(txtItem(1)) & "' and wzspec='" & Trim(txtItem(2)) & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
'判断数据集对象是否为空
If mrc.EOF = False Then
MsgBox "已经存在相同物资容的记录!", vbOKOnly + vbExclamation, "警告" txtItem(1).SetFocus
Exit Sub
End If
'先删除已有记录
txtSQL = "delete from material where wzid='" & Trim(txtItem(0)) & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
'再加入新记录
txtSQL = "select * from material"
Set mrc = ExecuteSQL(txtSQL, MsgText)
'在数据集对象中添加记录
mrc.AddNew
'赋值
mrc.Fields(0) = Trim(txtItem(0))
For intCount = 1 To 4
mrc.Fields(intCount) = Trim(txtItem(intCount))
Next intCount
'添加数据到数据库
mrc.Update
'关闭数据集对象
mrc.Close
'判断是否为添加状态
If gintMmode = 1 Then
'卸载窗体
Unload Me
If flagMedit Then
Unload frmMater
End If
'更新记录容
txtSQL = "select * from material"
frmMater.Show
'判断是否处于修改状态
ElseIf gintMmode = 2 Then
'卸载窗体
Unload Me
If flagMedit Then
Unload frmMater
End If
'更新记录容
txtSQL = "select * from material"
frmMater.Show
End If
End Sub
6.3.2修改物资基本信息窗体的创建
选择“物资基本信息管理/修改物资基本信息”将会显示所有物资信息如图6.6所示窗体,窗体中放置一个表格控件
图6.6 修改物资基本信息窗体
载入窗体时,触发窗体的Load事件,显示当前数据库中所有的记录,代码如下:
Option Explicit
Dim mrc As ADODB.Recordset
Dim MsgText As String
Public txtSQL As String
Private Sub Form_Load()
ShowTitle
ShowData
flagMedit = True
End Sub
Public Sub FormClose()
Unload Me
End Sub
'删除记录
Private Sub Form_Unload(Cancel As Integer)
flagMedit = False
gintMmode = 0
End Sub
'显示Grid的容
Private Sub ShowData()
Dim i As Integer
Set mrc = ExecuteSQL(txtSQL, MsgText)
With msgList
.Rows = 1
Do While Not mrc.EOF
.Rows = .Rows + 1
For i = 1 To mrc.Fields.Count
Select Case mrc.Fields(i - 1).Type
Case adDBDate
.TextMatrix(.Rows - 1, i) = Format(mrc.Fields(i - 1) & "", "yyyy-mm-dd")
Case Else
.TextMatrix(.Rows - 1, i) = mrc.Fields(i - 1) & ""
End Select
Next i
mrc.MoveNext
Loop
End With
mrc.Close
End Sub
'显示Grid表头
Private Sub ShowTitle()
Dim i As Integer
With msgList
.Cols = 6
.TextMatrix(0, 1) = "物资编号"
.TextMatrix(0, 2) = "物资名称"
.TextMatrix(0, 3) = "规格型号"
.TextMatrix(0, 4) = "类别"
.TextMatrix(0, 5) = "计量单位"
'固定表头
.FixedRows = 1
'设置各列的对齐方式
For i = 0 To 5
.ColAlignment(i) = 0
Next i
'表头项居中
.FillStyle = flexFillRepeat
.Col = 0
.Row = 0
.RowSel = 1
.ColSel = .Cols - 1
.CellAlignment = 4
'设置单元大小
.ColWidth(0) = 300
.ColWidth(1) = 1000
.ColWidth(2) = 2000
.ColWidth(3) = 2000
.ColWidth(4) = 1000
.ColWidth(5) = 1000
.Row = 1
End With
End Sub
Private Sub msgList_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
'右键弹出
If Button = 2 And Shift = 0 Then
PopupMenu frmMain.menuMaterial
End If
End Sub
选择记录,然后单击鼠标右键,将触发MouseUp事件,并出现图6.7所示的弹出式菜单。
图6.7 弹出式菜单
6.3.3删除物资基本信息
选择“物资基本信息管理/删除物资基本信息”菜单将出现记录列表,选择相应记录,单击鼠标右键,选择弹出式菜单,将删除当前记录。
代码如下:
Private Sub menuDeletematerial_Click()
Dim txtSQL As String
Dim intCount As Integer
Dim mrc As ADODB.Recordset
Dim MsgText As String
If flagMedit Then
If frmMater.msgList.Rows > 1 Then
If MsgBox("真的要删除这条文件记录么?", vbOKCancel + vbExclamation, "警告") = vbOK Then
intCount = frmMater.msgList.Row
txtSQL = "delete from material where wzid='" & Trim(frmMater.msgList.TextMatrix(intCount, 1)) & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
Unload frmMater
frmMater.txtSQL = "select * from material"
frmMater.Show
End If
End If
End If
End Sub
6.3.4查询物资基本信息窗体的创建
选择“物资基本信息管理/删除物资基本信息”菜单,出现图6.8所示窗体。
在这里可以按照各种方式以及他们的组合进行查询。
图6.8 查询物资基本信息窗体
首先选择查询方式,然后输入查询容,单击“确定”,触发Click事件进行查询,代码如下:
Private Sub cmdOK_Click()
Dim txtSQL As String
Dim sQSql As String
If chkItem(0).Value = vbChecked Then
sQSql = " wzname ='" & Trim(txtItem(0) & " ") & "'"
End If
If chkItem(1).Value = vbChecked Then
If Trim(sQSql & " ") = "" Then
sQSql = " wzspec ='" & Trim(txtItem(1) & " ") & "'"
Else
sQSql = sQSql & " and wzspec = '" & Trim(txtItem(1) & " ") & "'"
End If
End If
Me.Hide
If Trim(sQSql) = "" Then
MsgBox "请设置查询方式!", vbOKOnly + vbExclamation, "警告"
Exit Sub
Else
If flagMedit Then
Unload frmMater
End If
frmMater.txtSQL = "select * from material where" & sQSql
frmMater.Show
End If
End Sub
6.4 物资入库信息管理模块的创建
入库信息管理模块主要实现如下功能:
●添加物资入库信息。
●修改物资入库信息。
●删除物资入库信息。
●查询物资入库信息。
6.4.1添加物资入库信息窗体的创建
选择“物资入库信息管理/添加物资入库信息”菜单,出现如图6.9所示窗体。
图6.9 添加物资入库信息窗体
代码与前面的类似,省略。
6.4.2修改物资入库信息窗体的创建
选择“物资入库信息管理/修改物资入库信息”菜单,”将会显示所有物资信息如图6.10所示窗体,窗体中放置一个表格控件
图6.10 修改物资入库信息窗体
代码与6.3.2修改物资基本信息窗体类似
6.4.3删除物资入库信息窗体的创建
与删除物资入库信息窗体创建一样,这里就不再多说。
6.4.4查询物资入库信息窗体的创建
选择“物资入库信息管理/删除物资入库信息”菜单,出现图6.11所示窗体。
在这里可以按照各种方式以及他们的组合进行查询。
代码同上。
图6.11查询物资入库信息的窗体
6.5 物资出库信息管理模块的创建
出库信息管理模块主要实现如下功能:
●添加物资出库信息。
●修改物资出库信息。
●删除物资出库信息。
●查询物资出库信息。
该模块的创建同“物资入库信息管理模块的创建”一样,不再重复。
6.6 物资余额信息管理模块的创建
物资余额信息管理模块主要实现如下功能:
●查询物资余额信息。
●浏览物资余额信息。
6.6.1物资余额信息窗体的创建
选择“物资余额信息管理/查询物资余额信息”菜单,出现如图6.12所示窗体,自动加入所有物资余额信息。
图6.12物资余额信息窗体
然后点击设置各种查询方式对物资进行查询。
6.6.2浏览物资余额信息窗体的创建
在记录窗体中,双击选中的记录将出现图6.13所示窗体,可以详细查看当前记录的信息。
图6.13余额信息查询窗体
第7章测试
现在已经完成了程序各个功能模块的创建,现在运行整个系统。
运行程序,出现如图7.1所示的欢迎界面窗口。
图7.1 欢迎界面窗口
点击“进入”后,出现图7.2所示的登录窗口。
图7.2 用户登录窗口
输入用户名和密码后,进入系统的主窗口,如图7.3所示。
图7.3 主窗口
选择“管理系统/添加用户”,出现如图7.4所示窗口。
图7.4添加用户窗口
若该用户名已经存在则会出现警告窗口,如图7.5所示。
图7.5警告窗口
若用户名不存在,则添加成功,也会出现提示窗口,如图7.6所示。
图7.6添加成功信息窗口
选择“管理系统/修改密码”,出现如图7.7所示窗口。
图7.7 修改密码窗口
密码修改成功,会出现提示框,如图7.8所示。
图7.8 修改成功提示窗口
选择“物资基本信息管理/添加物资基本信息”菜单,出现如图7.9所示的窗口,输入容。
图7.9 添加物资基本信息
选择“物资基本信息管理/查询物资基本信息”菜单,查询物资名称,如图7.10所示。
图7.10 查询物资基本信息
查询结果如图7.11所示。
图7.11查询物资基本信息结果
选择“物资基本信息管理/修改物资基本信息”菜单,出现如图7.12窗体
图7.12 修改物资基本信息
点击“保存”时,注意到“物资列表”中焦炭的规格型号由105#变为100#。
选择“物资基本信息管理/删除物资基本信息”菜单,出现如下如下提示信息。
图7.13 删除物资信息提示窗口
选择“物资入库信息管理/添加物资入库信息”菜单,添加新记录的信息,如图7.14所示。