进销存信息管理系统报告参考模板

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

进销存管理信息系统
设计报告
目录
1.绪论 (3)
1.1 系统开发背景 (3)
1.1.1 社会背景 (3)
1.1.2 课程背景 (3)
1.2需求分析 (3)
1.3可行性分析 (3)
2.系统设计 (4)
2.1 系统功能结构 (4)
2.1.1基本资料 (4)
2.1.2进货管理 (5)
2.1.3销售管理 (5)
2.1.4 库存管理 (5)
2.1.5系统设置 (5)
2.2系统业务流程 (5)
2.3系统数据模型 (7)
2.3.1数据字典 (7)
2.3.2数据表结构 (9)
3系统功能实现 (11)
3.1 开发工具的选择 (11)
3.2 系统库存管理的实现 (12)
3.2.1公共模块设计 (12)
3.2.2系统启动设计 (13)
3.2.3系统登录设计: (13)
3.2.4入库管理 (14)
3.2.5出库管理 (19)
3.2.6库存盘点 (21)
3.2.7库存上下限预警 (25)
4小结 (28)
1.绪论
1.1 系统开发背景
1.1.1 社会背景
在信息技术的催化之下,世界经济的变革已经进入了加速状态。

世界经济一体化,企业经营全球化,以及高度竞争造成的高度个性化与迅速改变的客户需求,令企业与顾客、企业与供方的关系变得更加密切和复杂。

强化管理,规范业务流程,提高透明度,加快商品资金周转,以及为流通领域信息管理全面网络化打下基础,是商品销售公司乃至众多商业企业梦寐以求的愿望。

随着技术发展,电脑操作及管理日趋简化,电脑知识日趋普及,同时市场经济快速多变,竞争激烈,因此企业采用电脑管理进货、库存等诸多环节也已成为趋势及必然。

1.1.2 课程背景
由于课程的需要,也基于大社会背景下的对于进货存储系统的需要,管理者和销售人员对这样类似系统的需求,我们小组决定设计一个进销存管理系统。

1.2需求分析
通过实际调查,要求本系统具有以下功能:
❑由于操作人员的计算机知识普遍偏低,因此要求系统具有良好的人机界面。

❑如果系统的使用对象较多,则要求有较好的权限管理。

❑方便的数据查询,支持多条件查询。

❑批量填写进货单及销售单。

❑与代理商和供应商往来账本明细,绝不存在假账、漏账、差账等情况。

❑报表打印功能。

1.3可行性分析
经济上可行性分析
现在,计算机的价格已经十分低廉,性能却有了长足的进步。

而本系统的开发,为企业的工作效率带来了一个质的飞跃,为此主要表现有以下几个方面:
第一,本系统的运行可以代替人工进行许多繁杂的劳动;
第二,本系统的运行可以节省许多资源;
第三,本系统的运行可以大大的提高企业的工作效率;
第四,本系统可以使敏感文档更加安全,等等。

本系统所需的设备在现有条件下,只需要少量的投入资金就可以实现。

因此在经济上

可行的。

技术上可行性分析
软件可行性
VB具有丰富的数据库功能,可以直接建立和编辑数据库,使用结构化查询语言直接访问数据库,并提供简单的面向对象的库操作命令、多用户数据库的加锁机制和网络数据库的编程技术。

ACCESS是由微软公司推出的,一定的数据库服务,并对数据库提供全面的保护,具有防止问题发生的安全措施,它是一个简易的关系型数据库管理系统。


管理上可行性分析
课设指导老师给与了精心的讲解和大力的支持。

综上所述,系统在技术上、经济上、管理上都是可行的。

2.系统设计
2.1 系统功能结构
我们设计的系统是进销存管理系统,其实现的主要功能是对企业的进销存活动进行集中化以及电子化的信息处理。

系统的功能结构如下图2.1所示
图2.1
2.1.1基本资料
对产品资料、供应商资料和客户资料进行记录
2.1.2进货管理
这一部分的功能是为了实现对进货源、进货渠道和进货商品的管理。

供应商供货信息

理以购货价格为中心,完善地记录、控制并管理供应商的供货业务资料,包括对不同供应商、不同物料、不同数量段、不同币别的价格和折扣信息的详细记录,以及业务传递、自动更新及数据分析。

同时进行采购最高限价的控制和预警管理,是整个管理系统,乃至整个供应链体系中重要的综合数据处理中心之一。

其中包括“计划管理”和“订单处理”。

计划管理下分为“需求计划管理”、“生成采购计划”、“计划完成情况分析”,是对采购活动前期的一个预处理过程,在计划完善的前提再进行采购活动可以提高效率,并且减少损失。

订单处理下分为“生成采购订单”、“订单完成”、“订单终止或取消”,旨在为采购订单做详细的管理,包括前期的生成和填写订单,完成订单和后期的有可能出现的订单终止服务或者取消订单服务。

2.1.3销售管理
主要实现销售的管理,记录商品销售的总体情况,并将信息反馈给库存数据库。

2.1.4 库存管理
这一部分的功能是为了实现对存货的分类管理,存放货物的地点、货物的分类、货物量等都需要纳入考虑范围,更可以帮助我们方便地查找库存资源。

其中包括“收获处理”,收获处理下又分为“订单收获处理”、“入库处理”、“支付订单”、“退货处理”。

2.1.5系统设置
实现系统的其他功能如数据备份与恢复,数据清理。

2.2系统业务流程
企业在商品的进销存上其职能机构有采购部门、销售部门和仓储部门,其职能分别是对商品进行进货管理、销售管理和仓储管理。

商品及其信息流通的过程如下图2.2所示
系统业务流程图:
图2.2
从上述的系统业务流程图中,我们可以得出系统总体的E-R 图,图2-3
系统总体E-R 图:
2.3系统数据模型 2.
3.1数据字典
销售部
生成采购订单
采购合同
进货单
库存管理 库存信息更
出库单
仓储部门
入库单
采购部门
供应商
采购单存底
销售订
客户
提交订商品
销售单存底
客户信息存
库存数据
重要数据及其简要描述如下所示:
(1)数据元素:
表21 商品编号
名称:商品编号总编号:1-001
说明:唯一标识商品编号:001
数据值:(连续/离散)离散有关编码说明:
类型:(字符/数字)数字
长度:4
有关数据结构:商品卡片
表2.2 销售单编号
名称:销售编号总编号:1-002
说明:唯一标识每次销售登记编号:002
数据值:(连续/离散)连续有关编码说明:
类型:(字符/数字)数字
长度:17
有关数据结构:销售登记卡
表2.3 入库票号
名称:入库票号总编号:1-003
说明:记录一次入库信息并唯一标识编号:003
数据值:(连续/离散)离散有关编码说明:
类型:(字符/数字)数字
长度:17
有关数据结构:入库一览表库存信息表
(2)数据结构:
表2.4 商品卡片
名称:商品登记卡总编号:2-001
说明:商品信息卡片编号:001
结构:有关数据流,数据存储:编号商品信息表
名称
商品创建时间
销售单价
[商品备注]
(3)数据存储:
表2.5 入库一览表
名称:进货文件总编号:3-01 说明:一段时间内所入库信息的存储编号:D1
结构:
入库时间入库编号
入库数量
商品编号
表2.6 出库一览表
名称:出货文件总编号:3-01 说明:一段时间内所有出库信息的存储编号:D2
结构:
出库时间出库编号
出库数量
商品编号
表2.7 销售一览表
名称:销售文件总编号:4-03 说明:一段时间内所有销售信息的存储编号:D3
结构:
销售编号销售时间商品编号
销售数量销售单价销售备注
表2.8 库存一览表
名称:库存文件总编号:4-04 说明:一段时间内所有库存信息的存储编号:D4
结构:
更新日期库存编号库存数量
商品编号
(4)数据流:
表2.9 销售信息单
数据流名称:销售信息单总编号:4-001 说明:记录所销售商品的详细信息编号:P1
来源:顾客
去向:P2→D3
数据流组成:销售单号+商品名称+商品编号+型号+供应商+单价+数量+销售时间表2.10 进货信息单
名称:进货信息单总编号:4-002
说明:所进商品的详细信息编号:P2
来源:销售部门
去向:P2→D2,D4
数据流组成:出库单号+商品名称+商品编号+型号+供应商+单价+数量+销售时间
表.2.11 入库信息单
名称:入库信息单总编号:4-003
说明:商品存储的详细信息编号:P3
来源:采购部门
去向:P3→D3,D4
数据流组成:出库单号+商品名称+商品编号+型号+供应商+单价+数量+销售时间
2.3.2数据表结构
(本小组只实现了进销存系统的库存功能,只列出相应的表单)
表2.12 库存商品信息表(tbS_Stock)
表2.13 入库表(tbS_warehouse_main)
表2.13 出库表(tbS_warehouse_main)
表2.14 入库一览表(tbS_warehouse_main)
表2.15 出库一览表(tbS_warehouse_main)
3系统功能实现
3.1 开发工具的选择
VisualBasic6.0(以下简称VB)是美国著名软件公司Microsoft推出的成功产品,具有简单易学、功能强大、可扩充性好等特点。

VB是一个可视亿的集成开发环境,使用VB编写应用程序,不需要编写大量的代码去描述界面元索的外观和位置,而只要把预先建立的对象添加到屏幕上即可。

VB是完全按照面向对象的程序设计思想研制,采用图形化的应用界面,集应用程序开发、测试、查错功能于一体的集成开发环境。

VB的数据库系统由三部分组成:用户界面、数据引擎和数据仓库。

其中数据库引擎存在于用户界面和数据仓库之间,起着中介作用,用户通过它与要访问的特定数据库相连。

用户界面是进行人机交互的界面,用于察看、显示数据或更新数据。

驱动用户界面窗体的是VB编写的代码,这些代码使得用户的操作能作用到数据库上,如添加或删除记录、执行查询等。

VB缺省的数据引擎是Microsoft Jet数据库,它包含在一组动态链接库(DLL)中,运行时这些动态链接库被锻接到VB程序。

数据库引擎的作用是把应用程序的请求翻译成对数据库的物理操作。

VB支持多种数据库.默认的数据库是Microsoft Access数据库。

3.2 系统库存管理的实现
3.2.1公共模块设计
获得拼音简码——商品进货或销售时,可以直接输入商品名称或拼音简码来完成商品检索,这样为以后的数据录入工作带来极大的方便。

例如,手机的拼音简码是SH。

Public Function py(mystr As String) As String '获得汉字的拼音简码
On Error Resume Next '会使程序从产生错误的语句之后的语句继续执行
If Asc(mystr) < 0 Then
If Asc(Left(mystr, 1)) < Asc("啊") Then
py = "0"
Exit Function
End If
If Asc(Left(mystr, 1)) >= Asc("啊") And Asc(Left(mystr, 1)) < Asc("芭") Then
py = "A"
Exit Function
End If
If Asc(Left(mystr, 1)) >= Asc("芭") And Asc(Left(mystr, 1)) < Asc("擦") Then
py = "B"
Exit Function
End If
If Asc(Left(mystr, 1)) >= Asc("擦") And Asc(Left(mystr, 1)) < Asc("搭") Then
py = "C"
Exit Function
End If
If Asc(Left(mystr, 1)) >= Asc("搭") And Asc(Left(mystr, 1)) < Asc("蛾") Then
py = "D"
Exit Function
End If
If Asc(Left(mystr, 1)) >= Asc("蛾") And Asc(Left(mystr, 1)) < Asc("发") Then
py = "E"
Exit Function
End If
If Asc(Left(mystr, 1)) >= Asc("发") And Asc(Left(mystr, 1)) < Asc("噶") Then
py = "F"
Exit Function
End If
Else
If UCase(mystr) <= "Z" And UCase(mystr) >= "A" Then
py = UCase(Left(mystr, 1))
Else
py = mystr
End If
End If
End Function
3.2.2系统启动设计
系统启动主要用于检测用户是否为已注册用户,并在没有创建数据库的情况下将其自动创建到Access中。

图3.1
3.2.3系统登录设计:
系统登录主要用于对进入进销存管理系统的用户进行安全性检查,以防止非法用户进入该系统。

只有合法的用户,才可以进入该系统,同时根据管理员分配的权限,给予操作员相应的操作权限。

验证操作员及其密码,主要通过记录集结果(RecordSet)并结合If语句,判断用户选定的操作员及其输入的密码是否符合数据库中的操作员和密码,如果符合则允许登录,并给予相应的权限,否则提示用户非法登录。

系统登录窗体运行结果如图3.2所示。

图3.2
窗体设计步骤:
(1)新建一个窗体,将窗体的名称设置为“frm_login”,BorderStyle属性设置为“0-None”,设置Picture属性,为窗体添加图片。

(2)在窗体上添加Adodc控件,由于该控件属于ActiveX控件,在使用之前必须
从“部件”对话框将其添加到工具箱中。

添加方法为:在“部件”对话框中选择“Microsoft Ado Data Controls 6.0(SP4)”列表项。

(3)在窗体中添加两个文本框,分别设置名称(Name属性)为“txtName”和“txtPassword”,设置“BorderStyle”属性为“0-None”、“Text”属性分别为“mingrisoft”和“”。

(4)在窗体中添加两个Label控件,使用默认名称、设置“BackStyle”属性为“0-Transparent”,设置Label3和Label4的“Caption”属性为“Sign In”和“Lost Yours Passport?”。

3.2.4入库管理
在商品进货过程中,如果进货的商品品种较多、数量也很大,那么使用文本框一条一条的录入数据,效率将会很低。

VB提供的DataGrid控件,处理数据比较灵活,可以通过Adodc控件连接数据库,将入库信息及时的更新到数据库的表中。

入库一览功能:
(1)新建1个窗体,将窗体的“名称”属性设置为frm_rkgl,Caption属性设置为“入库管理”、其余为默认设置。

(2)在窗体上添加Adodc控件和DataGrid控件,由于这两个控件属于ActiveX控件,在使用前必须从“部件”对话框(如图3.3所示)将其添加到工具箱中,添加方法为:在“工程”/“部件”对话框中勾选“Microsoft Ado Data Controls 6.0(SP4)”列表项(Adodc控件)和勾选“Microsoft DataGrid Controls 6.0(SP5)”列表项(DataGrid控件)。

1
图3.3 添加ActiveX控件
(3)在窗体中添加1个DataGrid控件,使用默认名称,分别设置控件的选取框样式,在DataGrid控件上单击鼠标右键,选择“属性”菜单,弹出“属性页”,选择“拆分”选项卡,将DataGrid控件的选取边框样式设置为6-dbgHighlightRowRaise,如图3.4所示。

图3.4 设置边框样式
(4)在窗体中添加1个ADO控件,名称为Adodc1Visible属性均设置为False。

(5)入库管理窗体的设计结果如图3.5所示。

图3.5 进货单窗体的设计结果
(6)窗体的装载过程中,主要实现以下功能:
(7)建立数据库的连接,初始化ADO数据源。

图3.6
将已有的部分入库单内容通过Select语句绑定到相应的DataGrid表格中。

图3.7
b最终效果
图3.8
入库登记功能
(1)新建1个窗体,将窗体的“名称”属性设置为frm_rkd,Caption属性设置为“入库单”、其余为默认设置。

然后,在窗体上添加Adodc控件和DataGrid控件
(2)在窗体中添加1个DataGrid控件,使用默认名称,分别设置控件的选取框样式,在DataGrid控件上单击鼠标右键,选择“属性”菜单,弹出“属性页”,选择“拆分”选项卡,将DataGrid控件的选取边框样式设置为6-dbgHighlightRowRaise,如图3.9所示。

图3.9 设置边框样式
(3)在窗体中添加1个ADO控件,名称为Adodc1Visible属性均设置为False。

入库单窗体的设计结果如图3.10所示。

图3.10 进货单窗体的设计结果
(4)窗体的装载过程中,主要实现以下功能:
(5)a建立数据库的连接,初始化ADO数据源。

图3.11
b将已有的部分入库单内容通过Select语句绑定到相应的DataGrid表格中。

图3.12
c并在入库单窗口中用过按钮实现数据的添加删除和数据库的更新。

图3.13
(6)最终效果
图3.14
3.2.5出库管理
出库一览功能
新建1个窗体,将窗体的“名称”属性设置为frm_sale,Caption属性设置为“出库管理”、其余为默认设置。

图3.15 添加ActiveX控件
在窗体中添加1个DataGrid控件,使用默认名称,分别设置控件的选取框样式,在DataGrid控件上单击鼠标右键,选择“属性”菜单,弹出“属性页”,选择“拆分”选项卡,将DataGrid控件的选取边框样式设置为6-dbgHighlightRowRaise,如图3.16所示。

图3.16 设置边框样式
在窗体中添加1个ADO控件,名称为Adodc1Visible属性均设置为False。

出库管理窗体的设计结果如图3.17所示。

图3.17 出货一览窗体的设计结果
窗体的装载过程中,主要实现以下功能:
(1)建立数据库的连接,初始化ADO数据源。

图3.18
(2)将已有的部分出库单内容通过Select语句绑定到相应的DataGrid表格中。

图3.19
(3)通过按钮实现出库信息的修改
最终效果
图3.20
3.2.6库存盘点
库存盘点主要对库存商品数量进行核实,并计算盘点盈亏数量和盈亏金额及对查询盘点商品、对盘点商品进行数据打印。

库存盘点模块的运行结果如图
图3.21
1.窗体设计
(1)新建1个窗体,将窗体的“名称”属性设置为“frm_checkStock”,Caption属性设置为“库存盘点(自动盘盈盘亏)”、MaxButton属性为False。

(2)在窗体上添加Adodc控件和MSFlexGrid控件,设置MSFlexGrid控件名称为MS1,其他属性均为默认设置。

(3)添加Textbox控件、Label控件、CommandButton控件。

库存盘点窗体设计结果如图3.22
图3.22
2.代码设计
当库存中含有大量商品时,需将指定的商品查询结果筛选出来并通过MSFlexGrid表格显示。

【查询】按钮Click事件的代码如下:
Private Sub cmdFind_Click()
MS1.Clear
'ADO控件的RecordSource执行SQL语句
Adodc1.RecordSource = "SELECT tradecode, fullname, type, standard, produce, unit, qty, stockcheck FROM tbS_stock WHERE (tradecode LIKE '%" & txtTradecode & "%') AND (fullname LIKE '%" + txtFullname + "%') AND (type LIKE '%" + txtType + "%') AND (standard LIKE '%" + txtStandard + "%') AND (produce LIKE '%" + txtProduce + "%')"
Adodc1.Refresh
Call MSF1 '调用过程,初始化MSFlexGrid控件
If Adodc1.Recordset.RecordCount > 0 Then
MS1.Rows = Adodc1.Recordset.RecordCount
For i = 1 To Adodc1.Recordset.RecordCount '将控件
MS1.TextMatrix(i, 1) = Adodc1.Recordset.Fields(0)
MS1.TextMatrix(i, 2) = Adodc1.Recordset.Fields(1)
MS1.TextMatrix(i, 3) = Adodc1.Recordset.Fields(2)
MS1.TextMatrix(i, 4) = Adodc1.Recordset.Fields(3)
MS1.TextMatrix(i, 5) = Adodc1.Recordset.Fields(4)
MS1.TextMatrix(i, 6) = Adodc1.Recordset.Fields(5)
MS1.TextMatrix(i, 7) = Adodc1.Recordset.Fields(6)
On Error Resume Next '可以赋值空
MS1.TextMatrix(i, 8) = Adodc1.Recordset.Fields(7)
Adodc1.Recordset.MoveNext '将记录移动到下一条
Next i
'定义MS1表的列序号
For i = 1 To MS1.Rows
MS1.TextMatrix(i, 0) = i
Next i
Else
MsgBox "无此商品"
End If
End Sub
窗体的Load事件主要用于初始化数据库连接和设置MSFlexGrid表格相关属性。

Private Sub Form_Load()
Adodc1.ConnectionString = PublicStr
'ADO控件的RecordSource执行SQL语句
Adodc1.RecordSource = "SELECT tradecode, fullname, type, standard, produce, unit, qty, stockcheck FROM tbS_stock"
Adodc1.Refresh
Call MSF1 '调用过程,初始化MSFlexGrid控件
If Adodc1.Recordset.RecordCount > 0 Then
MS1.Rows = Adodc1.Recordset.RecordCount
For i = 1 To Adodc1.Recordset.RecordCount
MS1.TextMatrix(i, 1) = Adodc1.Recordset.Fields(0)
MS1.TextMatrix(i, 2) = Adodc1.Recordset.Fields(1)
MS1.TextMatrix(i, 3) = Adodc1.Recordset.Fields(2)
MS1.TextMatrix(i, 4) = Adodc1.Recordset.Fields(3)
MS1.TextMatrix(i, 5) = Adodc1.Recordset.Fields(4)
MS1.TextMatrix(i, 6) = Adodc1.Recordset.Fields(5)
MS1.TextMatrix(i, 7) = Adodc1.Recordset.Fields(6)
On Error Resume Next '可以赋值空
MS1.TextMatrix(i, 8) = Adodc1.Recordset.Fields(7)
Adodc1.Recordset.MoveNext '将记录移动到下一条
Next i
'定义MS1表的列序号
For i = 1 To MS1.Rows
MS1.TextMatrix(i, 0) = i
Next i
Else
MsgBox "仓库没有商品"
End If
End Sub
自定义过程MSF1,主要用于初始化MSFlexGrid表格的总列数、总行数和列标题等。

Sub MSF1()
MS1.Cols = 11 '定义MS1控总列数。

'定义MS1表的宽度
MS1.ColWidth(0) = 12 * 25 * 1
MS1.ColWidth(1) = 12 * 25 * 3
MS1.ColWidth(2) = 12 * 25 * 6
MS1.ColWidth(3) = 12 * 25 * 3
MS1.ColWidth(4) = 12 * 25 * 3
MS1.ColWidth(5) = 12 * 25 * 5
MS1.ColWidth(6) = 12 * 25 * 3
MS1.ColWidth(7) = 12 * 25 * 3
MS1.ColWidth(8) = 12 * 25 * 3
MS1.ColWidth(9) = 12 * 25 * 4
MS1.ColWidth(10) = 12 * 25 * 4
'设置固定行、列
MS1.FixedRows = 1: MS1.FixedCols = 1
'定义MS1表的表头
MS1.TextMatrix(0, 0) = "NO。

"
MS1.TextMatrix(0, 1) = "商品编号"
MS1.TextMatrix(0, 2) = "商品名称"
MS1.TextMatrix(0, 3) = "商品型号"
MS1.TextMatrix(0, 4) = "商品规格"
MS1.TextMatrix(0, 5) = "商品产地"
MS1.TextMatrix(0, 6) = "商品单位"
MS1.TextMatrix(0, 7) = "库存数量"
MS1.TextMatrix(0, 8) = "盘点数量"
MS1.TextMatrix(0, 9) = "盘点盈亏数量"
MS1.TextMatrix(0, 10) = "盘点盈亏金额"
Text1.Text = ""
Text1.Width = MS1.CellWidth: Text1.Height = MS1.CellHeight
Text1.Left = MS1.CellLeft + MS1.Left
Text1.Top = MS1.CellTop + MS1.Top
MS1.Col = 8
End Sub
单击MSFlexGrid控件选中的单元格,将选中单元格中的数据赋给Text1,如果选中的列为盘点数量列,则Text1控件可用,否则Text1控件不可用。

Private Sub MS1_Click()
MS1.Text = Text1.Text
Text1.Text = MS1.Text
If MS1.Col = 8 Then
Text1.Visible = True '设置text3可见
Text1.SetFocus '使控件获得焦点'text3获得焦点
Text1.Locked = False ‘解除控件锁定
Else
Text1.Locked = True ‘锁定控件
End If
End Sub
确定Text1控件大小与MSFlexGrid控件的单元格大小。

在MSFlexGrid的EnterCell事件添加如下代码:
Private Sub MS1_EnterCell()
Dim X As String, y As String, p As String
If MS1.CellWidth <= 0 Or MS1.CellHeight <= 0 Then Exit Sub
X = MS1.TextMatrix(MS1.FixedRows, MS1.Col)
y = MS1.TextMatrix(MS1.Row, 0)
If y <> "" Then
If MS1.Col - MS1.LeftCol <= 3 Then
MS1.LeftCol = MS1.LeftCol + 1
End If
If MS1.CellWidth > 0 And MS1.CellHeight > 0 Then
Text1.Width = MS1.CellWidth
Text1.Height = MS1.CellHeight
Text1.Left = MS1.CellLeft + MS1.Left
Text1.Top = MS1.CellTop + MS1.Top
End If
X = MS1.TextMatrix(MS1.FixedRows, MS1.Col)
y = MS1.TextMatrix(MS1.Row, 0)
p = MS1.TextMatrix(MS1.Row, MS1.Col)
Text1.Text = MS1.Text '赋值给text1.text
End If
End Sub
当Text1控件中位于MSFlexGrid控件的第8列时,在Text1中按〈Enter〉键后将盘点的数量、盘点盈亏数量和盘点盈亏金额添加到数据表中。

Private Sub Text1_KeyPress(KeyAscii As Integer)
On Error Resume Next
'VbKeyReturn常数为键盘上的"回车键"
If KeyAscii = vbKeyReturn Then '按〈Enter〉键,text3向右移动
If MS1.Col = 8 Then: MS1.Text = Text1.Text: Text1.Text = MS1.Text
If MS1.Col = 8 Then
'ADO控件的RecordSource执行SQL语句
Adodc1.RecordSource = "select * from tbS_stock where tradecode='" + MS1.TextMatrix(MS1.Row, 1) + "'"
Adodc1.Refresh
If Adodc1.Recordset.RecordCount > 0 Then '计算盘点盈亏数量和金额
MS1.TextMatrix(MS1.Row, 9) = Val(MS1.TextMatrix(MS1.Row, 8)) -
Val(MS1.TextMatrix(MS1.Row, 7))
If Adodc1.Recordset.Fields("averageprice").Value = 0 Then
MS1.TextMatrix(MS1.Row, 10) = Val(MS1.TextMatrix(MS1.Row, 9)) *
Adodc1.Recordset.Fields("price").Value
Else
MS1.TextMatrix(MS1.Row, 10) = Val(MS1.TextMatrix(MS1.Row, 9)) *
Adodc1.Recordset.Fields("averageprice").Value
End If
Adodc1.Recordset.Fields("stockcheck") = Val(MS1.TextMatrix(MS1.Row, 8))
Adodc1.Recordset.Update
End If
MS1.Row = MS1.Row + 1
MS1.Col = 8
End If
End If
End Sub
3.2.7库存上下限预警
主要功能为查看库存商品数量、商品均价、库存商品总价及库存上下限设置,以及调用子窗体库存明细账本。

运行结果如图3.23所示。

图3.23
1.窗体设计
(1)新建1个窗体,将窗体的“名称”属性设置为frm_Stock,Caption属性设置为“库存状况”、MaxButton属性为False。

(2)在窗体上添加2个Adodc控件和DataGrid控件,由于二者属于ActiveX控件(添加方法前面已经讲解过了),在此其属性均为默认设置。

(3)在窗体上添加ToolBar控件和ImageList控件
(4)添加DataCombo控件,该控件属于ActiveX控件,在使用之前必须从“部件”对话框中添加到工具箱,添加方法为:在“工程”/“部件”对话框中勾选“Microsoft DataList Controls 6.0(SP5)”列表项。

其属性均为默认设置。

(5)添加Label控件、TextBox控件、CommandButton控件。

(6)在窗体上添加StatusBar控件,该控件属于ActiveX控件,添加Toobar控件时已经将StatusBar控件添加到工具箱中了,设置StatusBar控件。

本名称属性为默认值,添加3个窗格,第一个窗格文本设置为“时间”,其他属性均为默认设置。

2.程序代码设计
保存库存上下限报警设置。

在【确定】按钮的Click事件下添加代码如下:
Private Sub cmdsave_Click()
'ADO控件的RecordSource执行SQL语句
On Error Resume Next
Adodc2.RecordSource = "select * from tbS_stock where tradecode='" + Adodc1.Recordset.Fields(0) + "'"
Adodc2.Refresh
If Err.Number > 0 Then
If MsgBox("出现“数据库中无有效数据”错误,是否继续?", vbQuestion + vbYesNo, "系统提示") = vbNo Then
Frame2.Visible = False
Exit Sub
End If
End If
If Adodc2.Recordset.RecordCount > 0 Then
Adodc2.Recordset.Fields("upperlimit").Value = Val(Text1.Text)
Adodc2.Recordset.Fields("lowerlimit").Value = Val(Text2.Text)
Adodc2.Recordset.Update
MsgBox "设置成功!"
Frame2.Visible = False
Text1.Text = "": Text2.Text = ""
Else
MsgBox "无库存商品"
End If
End Sub
选择商品名称来提取上次设置的库存上下限设置。

在DataCombo1控件的Change事件下添加代码如下:
Private Sub DataCombo1_Change()
If DataCombo1.Text = "" Then MsgBox "请选择商品名称!": Exit Sub
Adodc1.RecordSource = "select * from tbS_stock where fullname='" + DataCombo1.Text + "'"
Adodc1.Refresh
If Adodc1.Recordset.RecordCount > 0 Then
On Error Resume Next
Text1.Text = Adodc1.Recordset.Fields("upperlimit")
Text2.Text = Adodc1.Recordset.Fields("lowerlimit")
End If
End Sub
窗体的Load事件主要初始化数据库连接和MSFlexGrid表格相关属性设置。

Private Sub Form_Load()
Adodc1.ConnectionString = PublicStr
'ADO控件的RecordSource执行SQL语句
Adodc1.RecordSource = "SELECT * FROM tbS_stock"
Adodc1.Refresh
Adodc2.ConnectionString = PublicStr
Adodc2.RecordSource = "select * from tbS_stock"
Adodc2.Refresh
Set DataCombo1.DataSource = Adodc2 '将数据源绑定到DataCombo1控件上
Set DataCombo1.RowSource = Adodc2 '填充DataCombo1控件列表
DataCombo1.ListField = "fullname" '指定列表中显示的字段值
MS1.Rows = Adodc1.Recordset.RecordCount + 1: MS1.Cols = 6 '定义MS1控件的总行数、总列数。

'定义MS1表的宽度
MS1.ColWidth(0) = 12 * 25 * 1
MS1.ColWidth(1) = 12 * 25 * 4
MS1.ColWidth(2) = 12 * 25 * 8
MS1.ColWidth(3) = 12 * 25 * 3
MS1.ColWidth(4) = 12 * 25 * 3
MS1.ColWidth(5) = 12 * 25 * 3
On Error Resume Next
MS1.FixedRows = 1: MS1.FixedCols = 1
'定义MS1表的表头
MS1.TextMatrix(0, 0) = "NO。

"
MS1.TextMatrix(0, 1) = "产品编号"
MS1.TextMatrix(0, 2) = "产品全名"
MS1.TextMatrix(0, 3) = "库存数量"
MS1.TextMatrix(0, 4) = "成本均价"
MS1.TextMatrix(0, 5) = "库存总价"
'定义MS1表的列序号
For i = 1 To Adodc1.Recordset.RecordCount '动态创建MSFlexGrid行数
MS1.TextMatrix(i, 0) = I '设置行序号
Next i
Call YAO ‘调用自定义过程
End Sub
创建自定义过程,该过程用来将库存商品数据动态添加到MSFlexGrid表格中。

Sub YAO()
Dim qty As Integer
Dim price As Single
Adodc1.RecordSource = "SELECT * FROM tbS_stock ORDER BY qty"
Adodc1.Refresh
For i = 1 To Adodc1.Recordset.RecordCount
‘开始向单元格中添加数据
MS1.TextMatrix(i, 1) = Adodc1.Recordset.Fields("tradecode").Value
MS1.TextMatrix(i, 2) = Adodc1.Recordset.Fields("fullname").Value
MS1.TextMatrix(i, 3) = Val(Adodc1.Recordset.Fields("qty").Value)
If Adodc1.Recordset.Fields("averageprice").Value = 0 Then
MS1.TextMatrix(i, 4) = Adodc1.Recordset.Fields("price").Value
Else
MS1.TextMatrix(i, 4) = Val(Adodc1.Recordset.Fields("averageprice").Value)
End If
MS1.TextMatrix(i, 5) = Val(MS1.TextMatrix(i, 4)) * Val(MS1.TextMatrix(i, 3))
Adodc1.Recordset.MoveNext
qty = qty + Val(MS1.TextMatrix(i, 4))
price = price + MS1.TextMatrix(i, 5)
Next i
SBar1.Panels(2).Text = "库存总数量:" & qty
SBar1.Panels(3).Text = "库存总价值:" & Format(price, "#0.00") & " 元"
End Sub
4小结
通过本次数据库课程设计,使我们真正的了解了软件工程编程思想及数据库应用的开发技术,也是我们第一次尝试开发项目。

虽然不是很全面,但也是一次尝试,一次团队合作。

通过本次项目开发,使我们更系统的掌握了数据库的整个设计过程:概念结构设计、逻辑结构设计、物理结构设计,更全面的理解了各个设计的衔接与分工及其联系和转化。

每一层次的设计对我们来说都是一次挑战,尤其是系统的概念设计和逻辑设计阶段,如何对业务流程有一个全面的了解?如何掌握好用户的系统使用需求?如何设计系统才可以使信息流合理地流动?
如何能使设计出来的系统可以运用在实际应用中?等等。

这些都是我们需要解决的问题,从系统功能结构图,系统流程图到数据字典,数据表的设计,都是一环扣一环循序渐进地过程,思路逐渐清晰明了的过程。

在这一过程中,我们理解了构建一个管理信息系统的完整流程。

在实验过程中,我们第一次利用VB进行编程,通过半天的自学,基本上能够使用一些基础的用以构建
进销存信息管理系统报告
数据库的功能,然而,vb毕竟是一门比较老的语言,其在兼容性方面给我们团队带来了诸多麻烦,比如说安装了打开不了,对象库未注册,不明的编译错误等等,一致我们进度一直缓慢,最后也只实现了系统的仓库管理功能。

虽然如此,我们也学会了很多知识,积累了宝贵的经验。

总之此次课设使我们学到很多收获很多,更重要的是学会了团队合作项目开发。

友情提示:范文可能无法思考和涵盖全面,供参考!最好找专业人士起草或审核后使用,感谢您的下载!。

相关文档
最新文档