企业进销存管理系统开发与实现

本文详细介绍了使用Visual Basic 6.0和SQL Server 2000开发企业进销存管理系统的全过程,从系统的需求分析、可行性研究、系统设计到具体实现。系统旨在提高工作效率,减少管理漏洞,通过自动化处理进货、销售和库存,提供全面的管理功能。系统分析中强调了技术、经济和运行的可行性,并展示了数据库设计和主要模块的实现细节。

摘 要

企业进销存管理系统是典型的信息管理系统,作为一种企业管理软件可以帮助企业快速有效地管理进货、销售、库存等各项业务。每个功能又有自己的子功能,可以完成对各类信息的查询、添加、删除、修改等功能。并且论述了商业进销存管理系统的设计思想,并给出了相应实现技术。系统中的数据格式和字段设置不具体针对某一个行业或企业,因而具有普遍的适用性,能够满足一般企业或者单位的进销存管理的需要。开发此软件是用的Visual Basic 6.0,Microsoft SQL Server 2000 作为后台数据库。

关键词:1、Visual Basic 6.0 2、SQL Server 2000 3、进销存管理系统

目 录

一、绪论 7
(一)开发背景 7
(二)系统优点 7
二、开发此系统所用软件的介绍 8
(一) 开发工具的介绍 8
(二) SQL Server2000 介绍 8
三、系统分析 11
(一)进销存系统的调查 11
(二)系统流程调查 13
(三)项目规划 13
四、系统设计 14
(一)数据库结构设计 14
(二)数据库表具体设计 14
(三)系统模块功能图: 23
(三)设计目标 24
(四)开发与运行环境 24
五、系统实现 25
(一)系统模块介绍 25
(二)系统详细设计 25
1 系统登录设计 25
2 进货单 27
3月销售状况 30
4 库存状况 32
5 库存盘点 37
六、总结 41
致谢 42
参考文献: 43

一、绪论

(一)开发背景
随着人类社会的进步与发展,当今的社会已经进入了信息化的社会,中小企业在我国经济发展中具有重要地位,越来越多的信息已无法通过手工记录、人工管理来实现,信息在社会经济中发挥着越来越重要的作用,企业的来往业务也不断增加,这就要求通过一个好的管理软件来实现。因此,我国的中小企业必须借助先进的管理思想转变经营观念、使用信息化提高企业的管理水平和工作效率,只有这样在竞争激烈中才能取胜。要想在激烈的市场竞争中立于不败之地,没有现代化的管理是万万不行的,进销存管理的全面自动化、信息化则是其中极其重要的。为了加快企业管理自动化的步伐,提高企业的管理业务处理效率,建立进销存管理系统已经变得十分必要,进货、库存、销售还是现在企业管理的常规基本模式。所以如何设计好进销存管理系统,尽可能地减少企业管理的重复性和低效性就成为当前最为重要的问题,而且这也将为企业管理带来前所示有的改变和意想不到的效益,同时也会为企业的飞速发展提供无限潜力。采用计算机管理信息系统已成为企业管理科学化和现代化的重要标志,它给企业管理带来了明显的经济效益。
(二)系统优点
主在体现在:
极大提高了工作人员的工作效率,大减少了以往进、销、存流程繁琐,杂乱,周期长的弊端。
基于进销存管理的全面自动化,可以减少进货管理、销售管理及库存管理中的漏洞,可以节约不少管理开支,增加企业收入。
进销存管理的操作自动化和信息的电子化,全面提高了企业的管理水平,很好的处理了进货、销售、库存三者之间的关系。

二、开发此系统所用软件的介绍

(一) 开发工具的介绍
本系统采用的VB为开发工具,Windows为前台开发平台﹑Microsoft SQL Server 2000 为后台数据库,采用C/S结构,客户/服务器的采用可以有效地为多个用户分配可用的资源。
Visual Basic是一种可视化的、面对对象和利用事件驱动方式的结构化高级程序设计,可用于开发Windows环境下的种类应用程序。它简单易学、效率高,且功能强大,可以与Windows的专业开发工具SDK相媲美,而且程序开发人员不必具有C/C++编程基础。在Visual Basic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的应用程序接口(API)函数,以及动态链接库(DLL)、动态数据交换(DDE)、对象的链接与嵌入(OLE)、开放式数据访问(ODBC)等技术,可以高效、快速地开发出Windows环境下功能强大、图形界面丰富的应用软件系统。
Visual Basic是一种高级程序设计语言,不具备低级语言的功能,对访问机器硬件的操作不太容易实现。但它可以通过动态链接库技术将C/C++或汇编语言编写的程序加入到Visual Basic应用程序中,可以像调用内部函数一样调用其他语言编写的函数。此外,通过动态链接库,还可以调用Windows应用程序接口(API)函数,实现SDK所具有的功能。
Visual Basic6.0 连接数据库的主要方式以下几种方式:一是:用data控件时行数据库链接,二是:利用adodc ( ADO Data Control )进行数据库链接。三是:利用 DataEnviroment 进行数据库链接。
(二) SQL Server2000 介绍
SQL Server 是Microsoft公司开发的大型关系数据库管理系统,具有强大的关系数据库创建、开发、设计和管理功能。其最新版本SQL Server2000将数据库与Internet紧密连接,可以通过Web浏览器显示数据的操作,具有客户机/服务器的结构。SQL Server 2000 提供了对分布式事务处理的支持,并对开发工具有良好的支持,为大型数据库项目提供了企业级解决方案。
SQL Server2000 是在SQL Server 7.0 的基础上发展来的,作为在Windows NT .Windows 2000上运行的最好数据库,SQL Server 是企业用户和独立软件供应商们(Indepent Software Vendors,ISVs)创建企业应用程序时首选的关系数据库系统(RDVBMS).随着用户需求的不断增长,SQL Server 已经在易用性,可收缩性和可靠性,数据仓库等方面获得了重大的创新。

三、系统分析

(一)进销存系统的调查
通过对进销存管理各个方面进行了具体的了解之后,现对进销存管理系统的可行性进行分析。
技术上可行:该系统所需硬件设备,市场上销售且价格较低,甚至可以使用原有的设备,软件上,操作系统采用Windows 系列操作系统,数据库管理系统采用Visual Basic,这些软件在MIS开发中已被大量应用,技术上都比较成熟。因此在技术上是可行的。
经济上可行:由于各个急需采用计算机来进行仓库的管理,因此对开发进销存系统大力支持,开发经费没有问题。
管理上可行:进销存管理有很多的管理体制,每位入库物品都要有相应的记录,销售也要对相应入库的物品进入删减,同时入库和销售必须对每个物品的相应数量和单价进行录入。因此管理上可行。别外,进销存管理对开发该系统也是大力支持的,同时制定了培训计划,并进行了实施MIS的物质准备和工作准备。
系统分析阶段的目标,就是按系统规划所定的某个开发范围内明确系统开发的目标和用户的信息需求,提出系统的逻辑方案。
1、需求分析
通过实际调查,要求本系统具有以下功能:
由于操作人员的计算机知识普遍偏低,因此要求系统具有良好的人机界面。
如果系统的使用对象较多,则要求有较好的权限管理。
方便的数据查询,支持多条件查询。
批量填写进货单及销售单。
在相应的权限下,删除数据方便简单、数据稳定性强。
数据计算自动完成,尽量减少人工干预。
2、可行性分析
在现行系统初步调查的基础上就可以提出新系统目标,即新系统建立后所要求达到的运行指标,这是系统开发和评价的依据。新系统目标应充分体现公司的战略目标、发展方向和基本特点,直接为公司管理服务,同时,新系统目标应该和现行系统的各项基本功能密切相关,并且可以分期分批实现。需要指出的是,新系统目标不可能在总体规划阶段就提得非常具体,它还将在开发过程中逐步明确和定量化。新系统目标的提法不尽相同,例如:
提高工作效率和减轻劳动强度;
提高信息处理速度和准确性;
提供新的处理功能和决策信息等等。
新系统的目标确定后,就可以从以下三方面对能否实现新系统目标进行可行性分析:
(1)技术可行性
根据新系统目标来衡量所需的技术是否具备,一般可从硬件、软件的性能要求、环境条件、技术人员水平和数量等方面去考虑和分析,其中开发人员的技术力量应首先考虑能力与水平,并考虑近期内可以培养和发展的技术人员。
(2)经济可行性
估算新系统的开发费用和今后的运行、维护费用,估计新系统将获得的效益,并将费用与效益进行比较,看是否有利。
购买和安装设备的费用:计算机硬件、系统软件、机房、电源、空调等,其它费用。
系统的效益可以从经济效益和社会效益两方面考虑。对于企业管理信息系统则应着重分析其社会效益。例如,系统投入运行后可以提供哪些以前无法及时提供的信息,用户查询和使用信息的方便程度提高多少、速度增加了多少,对于管理人员进行决策提供了多少帮助等等。
(3)运行可行性
对新系统运行后给现行系统带来的影响(包括组织机构、管理方式、工作环境等)和后果进行估计和评价。同时还应考虑现有管理人员的培训、补充,分析在给定时间里能否完成预定的系统开发任务等。
按上述三方面进行可行性分析、研究后,就可整理并编制出新系统开发的可行性报告,它是总体规划工作的阶段性成果。
(二)系统流程调查
进销存系统主要是对货物的进货、销售、库存的管理。企业采用人工方式对物流进行统计,随着物流的加大,各类数据的统计报表的繁琐,原本的人工管理方式已经无法应付不断加大的物流。这就要求企业要有一套完整的管理系统对货物进行统一管理,实现进销存管理的机械化。
通过调查得知系统应实现的功能:1、基本信息2、进货管理3、销售管理4、库存管理5、系统维护
(三) 项目规划
进销存管理系统具体规划如下:
基础数据管理模块
基础数据管理模块主要负责对系统基本数据录入,相关基础数据为:库存商品、往来单位、内部职员。
进货管理模块
该模块主要负责商品的进货数据录入、进货退货数据录入、进货分析、进货统计(不含退货)、与供应商往来对账。
销售管理模块
该模块主要负责商品的销售数据录入、销售退货数据录入、销售统计(不含退货)、月销售状况(销售分析、明细账本)、商品销售排行、商品销售成本表。
库存管理模块
库存管理模块主要负责库存状况、库存商品数量上限报警、库存商品数量下限报警、商品进销存变动表、库存盘点(自支盘赢盘亏)。
系统维护
本单位信息、操作员设置、操作权限设置、数据备份和数据库恢复、数据清理

四、系统设计

(一)数据库结构设计
在企业进销存管理系统中,采用的是SQL Server 2000的数据库。数据库用来储存商品入库信息、商品出库信息、商品库存信息、操作员作息等。这里将数据库命名为db_SPJXC,其中包含了11张数据表,用于存储不同的信息。
企业进销存管理系统的数据库概要如下图所示。
在这里插入图片描述

(二)数据库表具体设计
表1 库存商品信息表(tb_kcspxx)

字段名 数据类型 长度 描述
tradecode varchar 5 商品编号
fullname varchar 20 商品全称
Name Varchar 10 商品简称
Typc varchar 10 商品型号
standard Varchar 10 商品规格
unit Varchar 10 单位
producc Varchar 20 产地
qty Float 8 库存数量
pricc Float 8 时货时的最后一次进价
avcragcpricc Float 8 加权平均价
salcpricc Float 8 销售时的最后一次销价
stockcbcck Float 8 盘点数量
uppcrlimit Int 4 存货报警上限
lowcrlimit Int 4 存货报警下限
providcinf Varchar 40 商品供货信息
mcmo Varchar 40 备注
spcll varchar 20 商品拼音简码

表2 进货表(tb_jh)
字段名 数据类型 长度 描述
billdotc datctimc 8 录单日期
billcodc Varchar 20 单据编号
units varchar 20 供货单位
handlc varchar 10 经手人
summary varchar 100 摘要
fullpaymcnt float 8 应付金额
paymcnt float 8 实会金额

表3 进货明细表(tb_jhmx)
字段名 数据类型 长度 描述
billcodc varchar 20 单据编号
tradccodc varchar 20 商品编号
fullname varchar 20 商品名称
type varchar 10 商品型号
standatd varchar 10 商品规格
produee varchar 20 产地
unit varchar 4 单位
qty float 8 数量
priee float 8 进价
tsum float 8 金额
billdatc datetime 8 入账日期

表4 销售表(tb_xs)
字段名 数据类型 长度 描述
billdate datetime 8 录单日期
billeode varchar 20 单据编号
units Vaarchar 20 购货单位
handle varchar 10 经手人
summary Varchar 100 摘要
Fullgatbering Float 8 应收金额
gathering Float 8 实收金额
tradccodc varchar 20 商品编号
fullname varchar 20 商品全称
typc varchar 10 商品类型
standard varchar 10 商品规格
producc varchar 20 商品产地
Unit varchar 4 单位
qty float 8 数量
pricc float 8 单价
tsum float 8 金额
billdate datetimc 8 入帐日期

表6 往来对账明细表(tb_wldzmx)
字段名 数据类型 长度 描述
Billdatc datcteme 8 录单日期
billeode varchar 20 单据编号
summary varchar 100 摘要
addgathcring float 8 应收增加
rcduccgathcring float 8 应收减少
balanee float 8 应收余额
units varchar 20 往来单位

表7 通讯录(tb_txl)
字段名 数据类型 长度 描述
id Int
姓名 varchar 10
性别 varchar 10
电子邮件 varchar 50
住宅电话 Varchar 50
移动电话 Varchar 20
个人网页 Varchar 50
业务电话 Varchar 20
业务传真 Varchar 20
职务 Varchar 12
部门 Varchar 20
办公室 Varchar 20
公司名称 Varchar 50
业务网页 Varchar 50

表8 员工信息表(tb_ygxx)
字段名 数据类型 长度 描述
cmpoyccodd varchar 5 员工编号
fullnaem varcahr 10 全称
name varchar 20 姓名
sex varchar 2 性别
departmcpt varchar 20 部门
tcl varchar 20 电话
mcmo varchar 40 备注

表9 系统用户表(tb_xtyh)
字段名 数据类型 长度 描述
sysuser varchar 20 用户名
password varchar 20 密码
stock Bit 库存
vcndition Bit 销售
stotage bit 存货
System bit 系统
base bit 基本信息

表10 销售退货明细表(tb_xsthmx)
字段名 数据类型 长度 描述
billeodc varchar 20 编号
tradccode varchar 20 贸易编号
fullname varchar 20 商品全称
standard varchar 10 标准
type varchar 10 类型
producc varchar 20 产品
unit varchar 4 单元
qty Float 数量
pricc Float 单价
tsum Float 统计
billdatc Datetime 入帐日期

表11 销售主表(tbs_xsz)
字段名 数据类型 长度 描述
billdatc Datctime 入帐日期
units varchar 20 帐单编号
units varchar 20 单位
handle varchar 10 经手人
summary varchar 100 摘要
fulpaymcnt float 付款总额
paymcnt float 付款金额
表12 销售退货明细表(tb_xsthmx)
字段名 数据类型 长度 描述
bilcodc varchar 20 帐单编号
tradccodc varchar 20 贸易编号
fullname varchar 20 商品全称
type varchar 10 类型
standard varchar 10 规格
produce varchar 20 产品
unit varchar 4 单位
qty Float 数量
priee Float 单价
tsum Float 统计数量
billdate Datetimc 入帐日期

表13 销售退货主表(tb_xsthz)
字段名 数据类型 长度 描述
billdate datetime 入帐日期
billeode varchar 20 帐单编号
units varchar 2 单位
handle varchar 10 经手人
wummary varchar 100 摘要
fullgathcring Float 收款总数
gatbering Float 收款

表14 销售排序表(tb_xspx)
字段名 数据类型 长度 描述
tradeeode varchar 20 贸易编号
fullname Varchar 20 商品全称
qty Float 数量
tsum Float 统计

表15 临时表(tb_lsb)
字段名 数据类型 长度 描述
billdate varchar 8 入帐日期
qty Float 数量
tsum Float 统计数量
tradeeode varchar 20 贸易代码

表16 商品单位表(tb_spdw)
字段名 数据类型 长度 描述
uniteode varchar 5 编号
fullname varchar 20 商品全称
name varchar 10 名称
tax varchar 30 传真
tel varchar 20 电话
linkman varchar 10 联系人
address varchar 60 地址
aeeounts varchar 80 帐号
gatbering Float 收款金额
paymept Float 付款金额
spell varchar 20 商品简称
表17 进货退货明细表(tb_jhthmx)
字段名 数据类型 长度 描述
billeode varchar 20 帐单编号
tradccodc varchar 20 贸易编号
fullname varchar 20 商品全称
type varchar 10 类型
standard varchar 10 规格
produee varchar 20 产品
unit varchar 4 单位
qty Float 数量
priee Float 单价
tsum Float 统计
billdate Datetime 入帐日期
表18 进货退货表(tb_jhth)
字段名 数据类型 长度 描述
billdate Datetime 入帐日期
billeode varchar 20 帐单编号
units varchar 20 单位
hardle varchar 10 经手人
wummary varchar 100 摘要
fullpayment Float 付款总额
payment float 付款金额

(三)系统模块功能图:
如下:

在这里插入图片描述

(四)设计目标
本系统属于小型数据库系统,可以对中小型企业进销存进行有效的管理。通过本系统可以达到以下目标。
灵活地运用表格批量录入数据,使信息传递快捷。
系统采用人机对话方式,界面友好美观,信息查询灵活、方便、数据存储安全可靠。
实施强大的后台监控功能。
实时功能强大的月营业分析。
实现各种查询,如定位查询、模糊查询等。
实现商品进货分析与统计、销售分析与统计、商品销售成本明细功能。
有强大的库存预警功能,尽可能减少商家不必要的损失。
对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。
系统最大限度地实现了安装易安装、易维护和易操作性。
(五)开发与运行环境
系统开发平台:Visual Basic 6.0
数据库管理系统软件:SQL Server2000
运行平台:Windows XP/Windows2000/Windows 2003
分辨率:最佳效果1034*768像素

五、系统实现

(一)系统模块介绍
(1)公共模块设计:公共模块中定义了在本系统中需要使用的公共变量和公共过程。
(2)系统登录模块设计:系统登录是用户进入到程序系统的门户,只有通过登录模块,才能对登录用户进行身份验证,只有系统的合法用户才可以进入系统的主界面。
(3)对商品的基础信息进行维护和管理模块:能够完成商品信息的添加、修改和删除,并按照一定的条件查询商品信息。
(4)库存商品查看功能模块:可按不同字段和条件查询库存商品信息。
(5)查询统计功能模块:要求既可以按日期查询也可以按用户选择的字段和输入的内容查询,并在查询过程中统计销售数量和销售金额。
(6)统计分析某个客户或所有客户某段时间内商品销售品种、销售数量和销售金额。
(二)系统详细设计
1、系统登录设计
系统登录主要用于对进入进销存管理系统的用户进行安全性检查,以防止非法用户进入该系统。只有合法的用户,才可以进入系统,同时根据管理员分配的权限,给予操作员相应的操作权限。
验证操作员及其密码,主要通过记录集结果并结合If语句判断用户选定的操作员及其输入的密码是否符合数据库中的操作员和密码,如果符合则允许登录,并给予登录,并给予相应的权限,否则提示用户非法登录。
系统登录窗体运行结果如下图所示:
在这里插入图片描述

图1 系统登录窗体
(一)窗体设计
(1) 新建一个窗体,将窗体的“名称”属性设置为frm_login , BordesStyle属性设置为0-None , 设置 Picture属性,为窗体添加图片。
(2) 在窗体上添加Adodc 控件,由于该控件属于ActiveX控件,在使用之前必须从“部件”对话框将其添加到工具箱中,添加方法为:
在“工程”/“部件”对话框中勾选“Microsoft Ado Data Controls6.0(SP4)”列表项。
(3) 在窗体中添加2个文本框控件,分别设置“名称”属性为txtName和txtPassword,设置BarderStyle属性为0-None.
(4) 在窗体中添加2个Label4的Caption属性为“确定”和“取消”。
(二)代码设计
在代码窗口的声明部分定义如下变量。
Dim txtRS As String
在窗体装载事件中,通过ADO控件的ConnectionString属性建立数据连接,代码如下:
Private Sub Form_Load()
Adodc1.ConnectionString=PublicStr ‘建立数据库连接
Adodc1.RecordSource=”select * from tb_enter” ‘执行SQL语句’
Adodc1.Refresh ‘刷新数据源
End Sub
2、进货单
在商品进货过程中,如果进货的商品品种较多、数量也很大,那么使用文本框一条一条的录入数据,效率将会很低。
VB提供的MSFlexGrid控件,处理数据比较灵活,虽然显示的数据是只读的,但可以通过TextBox换件向MSFlexGrid控件中输入数据,然后使用For循环逐一将表格中数据添加到数据表中。
(一)窗体设计
(1) 新建1个窗体,将窗体的“名称”属性设置为frm_stockBill, Caption属性设置为“进货单”、MaxButton属性为False。
(2)在窗体上添加Adodc控件和DataGrid控件,由于这两个控件属于ActiveX控件,在使用前必须从“部件”对话框(如图2所示)将其添加到工具箱中,添加方法;在“工程”/“部件”对话框中勾选“Microsoft Ado Data Controls6.0(SP4)”列表项(Adodc控件)和勾选“Microsoft DataGrid Controls6.0(SP5)”列表项(DataGrid控件)。
在这里插入图片描述

图2 添加ActiveX控件
在窗体中添加3个DataGrid控件,使用默认名称,分别设置控件的选取框样式,在DataGrid控件上单击鼠标右键,选择“属性”菜单,弹出“属性页”,选择“拆分”选项卡,将DataGrid控件的选取边框样式设置为4-dbgHighlightRowRaise,如图3所示。
在这里插入图片描述
A
图3设置边框样式
(3) 在窗体中添加6个ADO控件,名称分别为Adodc1、Adodc2、AdoCunt、AdoStock、AdoEmploy、AdoUnits, Visible属性均设置为False.
(4) 在窗体中添加TextBox控件、Label控件和CommandButton控件。
(5) 添加DTPicker控件,该控件属于ActiveX控件,在使用之前必须从“部件”对话框中添加到工具箱中。添加方法为:在“工程”/“部件”对话框中勾选“Microsoft Windows Common Controls 2.6.0”列表项,添加DTPicker控件后,其名称为默认的DTPicker1。
(6) .添加 MSFlexGrid控件,由于该控件属于ActiveX控件,在使用之前必须从“部件”对话框中添加到工具箱,添加方法为:在“工程”/“部件”对话框中勾选“Microsoft FlexGrid Controls6.0(SP3)”列表项,添加后,设置名称为“MSI”,其他属性均为默认设置。进化管理窗体的设计结果如图4所示:
在这里插入图片描述

图4进货窗体的设计结果
(二)代码设计
窗体的装载过程中,主要实现以下功能:
(1) 建立数据库的连接,初始化ADO数据源。
(2) 将职员表、往来单位表、库存表通过Set语句绑定到相应的DataGrid表格中。
(3) 初始化MSFlexGrid表格总行数和总列数、列标题。
Private Sub Form_Load()
Adodc1.ConnectionString=PublicStr ‘建立数据库连接
 Adodc1.RecordSource=”select *from tbS_warehouse_main” ‘初始化数据源
Adodc1.Refresh
Adodc2.ConnectionString=PublicStr
Adodc2.RecordSource=”select * from tbS_warehouse_detailed”
Adodc2.Refresh
adoCount.ConnectionString=PublicStr
adoCount.RecordSource=”select * from tbS_currentaccount”
adoCount.Refresh
AdoUnits.ConnectionString=PublicStr
AdoUnits.RecordSource=”select unitcode.fullname from tbS_units”
AdoUnits.Refresh
Set DataGrid2.DataSource=AdoUnits
AdoEmploy.ConnectionString=PublicStr
AdoEmploy.RecordSource=”select employecode,fullname from tbS_employ”
AdoEmploy.Refresh
Set DataGrid1.DataSource=AdoEmploy ‘使用Set语句设置
DataSource属性
3、月销售状况
月销售状况窗体下含有两个子窗体和一个商品销售状况报表。窗体别为销售分析窗体和明细账本窗体。
月销售状况主要先统计当年的所有商品销售数据信息(含销售退货)和净销售商品数据信息,然后根据分析出的基础数据,以商品为单位利用图表月销售分析;以商品为单位分析商品的销售明细账本和销售退货明细账本。月销售状况模块运行结果如图5所示。
在这里插入图片描述

图5 月销售状况模块运行结果
(一)月销售状况窗体设计
(1) 新建一个窗体,将窗体的“名称”属性设置为frm_saleStatus,Caption属性设置为“月销售状况”、MaxButton属性为False。
(2) 在窗体中添加1个DataGrid控件,使用默认名称;在窗体中添加3个Adodc控件均使用默认名称。
(3) 添加Toolbar控件和ImageList控件到工具箱在窗体上制作工具栏是通过Toolbar换件和ImageList控件工同来实现的。Toolbar控件和ImageList控件都属于ActiveX控件,使用时需要从“部件”对话框中添加。
(4) 在窗体上添加StatusBar控件,为窗体设计状态栏,在状态栏的空格中显示合计商品销售数量和销售金额。
(二)月销售状况代码设计
在窗体装载时统计全年的商品销售状况,主要使用SQL语句左外联接技术(左向外联接的结果集包括LEFT子句中指定的左表的所有行,而不仅仅是联接列所匹配的行,如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表均为空值。)将销售明细表(taS_sell_detailed)和销售退货明细表(tbS_resell_detailed)进行统计计算,并显示销售数量和销售金额及除去净销售数量和销售金额(不含退货)。
部分代码如下:
Private Sub For _Load()
Adodc1.ConnectionString=Publicstr ‘共享数据库连接
Adodc2.ConnectionString=Publicstr
Adodc3.ConnectionString=Publicstr
‘ADO控件的RecordSource执行SQL语句 统计销售状况
Adodc1.RecordSource=“select a.tradecode as 商品编号,a.tsum as 销售金额,a.qty-b.qty2 as ‘销售数量【含退货】‘,a.tsum-b.tsum2 as ‘销售金额【含退货】’from(SELECT tradecode,fullname,sum(qty) AS qty,sum(tsum)as tsum from tbS-sell-detailed groupby tradecode,fullname)a left join (SELECT tradecode,fullname,sum(qty) AS qty2, sum(tsum) as tsum2 from tbS_resell_detailed group by tradecode,fullname) b on a.tradecode=b.tradecode”
Adodc1.Refresh
Set DataGrid1.DataSource=Adodc1 ‘将数据源绑定到DataGrid控件上DataGrid1.Columns(0).Width=12253 ‘初始化DataGrid单元格的宽度
DataGrid1.Columns(1).Width=12257
DataGrid1.Columns(2).Width=12253
DataGrid1.Columns(3).Width=12253
DataGrid1.Columns(4).Width=12253
DataGrid1.Columns(5).Width=12256
DataGrid1.Columns(6).Width=12256
‘ADO控件的RecordSource执行SQL语句 统计销售数量和销售金额
Adodc2.RecordSource=”SELECT SUM(qty) AS 销售数量,SUM(tsum) AS 销售金额 FROM tbS_sell_detailed”
Adodc2.Refresh
Adodc3.RecordSource=”SELECT SUM(qty) AS 退货数量,SUM(tsum) AS 退货金额 FROM tbS_resell_detailed”
Adodc3.Refresh
SBar1.Panels(1).Alignment=sbrCenter ‘在状态栏的窗格中,显示文本
Sbar1.Panels(2).Alignment=sbrCenter
Sbar1.Panels(3).Alignment=sbrCenter ‘在状态栏的第2个窗格中显示销售数量
SBar1.Panels(2).Text = “销售数量:” &
Adodc2.Recordset.Fields(0).Value-Adodc3.Recordset.Fields(0).Value
SBar1.Panels(3).Text = “销售金额:” &
Format(Adodc2.Recordset.Fields(1).Value Adodc3.Recordset.Fields(1).Value,”#0.00”)
End Sub
4、库存状况
库存状况主要功能为查看库存商品数量、商品均价、库存商品总价以及库存上下限设置,及调用了窗体库存明细账本,库存状况模块运行结果如图6所示。
在这里插入图片描述

图6 库存状况运行模块
(一)窗体设计
(1) 新建1个窗体,将窗体的“名称”属性设置为frm_Stock,Caption属性设置为“库存状况”、MaxButton属性为False.
(2) 在窗体上添加2个Adodc控件和DataGrid控件,由于二者属于ActiveX控件(添加方法前面已经讲解过了),在此其属性均为默认设置。
(3) 在窗体上添加ToolBar控件和ImageList控件,设计二者控件的属性方法同“月销售状况窗体”的ToolBar控件和ImageList控件,设计二者控件设计控件属性方法完全相同。
(4) 添加DataCombo控件,该控件属于ActiveX控件,在使用之前必须从“部件”对话框中添加到工具箱,添加方法为:在“工程”/“部件”对话框中勾选”Microsoft DataList Controls 6.0(SP5)”列表项,其属性均为默认设置。
(5) 添加Labcl控件、TcxtBox控件、CommandButton控件。
(6) 在窗体上添加StausBar控件,该控件属于ActivcX控件,添加Toobar控件时已经将StatusBar控件添加到工具箱中了,设置StatusBar控件前面已经讲解过了在此不做介绍。本名称属性为默认值,添加3个窗格,第一个窗格文本设置为“合计“,其他属性均为默认设置。
库存状况窗体设计结果如图7所示。
在这里插入图片描述

图7 库存状况窗体设计结果
(二)程序代码设计
保存库存上下限报警设置。在【确定】按钮的Click事件下添加代码如下:
Privatc Sub cmdsavc_Click()
‘ADO控件的RccordSourcc执行SQL语句
On Error Rcsumc Next
Adodc2.RecordSouree=”selectfromtbS_stockwhere tradeeode=’ ”+Adodc1.recordset.Ficlds(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.Rceordset.RceordCount>0 Then
Adodc2.Rceordset.Fields(“upperlimit”).Valuc = Val(Text1.Text)
Adodc2.Rceordset.Fields(“lowerlimit”).Valuc = Val(Text2.Text)
Adodc2.Recordset.Update
MsgBox”设置成功!”
Frame2.Visiblc=False
Text1.Text=””: Text2.Text=””
Else
MsgBox”无库存商品”
End If
End Sub
选择商品名称来提取上次设置的库存上下限设置。在DataCombo1控件的Change事件下添加代码如下:
Private Sub DataCombo1_Change()
If Data Combol.Text=””Then MsgBox”请选择商品名称!”:Exit Sub
Adodc1.RecordSource=”select from tbS_stock where fullname=’” +DataCombol.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.DataSource=Adodc2 ‘填充datacombo1 控件列表
DataCombo1.ListFicld=”fullname” ‘指定列表中显示的字段值
MS1.Rows=Adodc1.Recordset.RecordCount+1:MS1.Cols=6 ‘定义MS1控件的总行数、总列数。
‘定义MSl表的宽度
MSl.ColWidth(0)=12251
MSl.ColWidth(1)=12254
MSl.ColWidth(2)=12258
MSl.ColWidth(3)=12253
MSl.ColWidth(4)=12253
MSl.ColWidth(5)=12253
MSl.FixedRws=1:MSl.FixedCols=1
‘定义MSl表的表头
MSl.TextNatrix(0,0)=”NO”
MSl.TextNatrix(0,1)=”商品编号”
MSl.TextNatrix(0,2)=”商品全名”
MSl.TextNatrix(0,3)=”库存数量”
MSl.TextNatrix(0,4)=”成本均价”
MSl.TextNatrix(0,5)=”库存总价”
‘定义MSl 表的列序号
For i =1 To Adodc1.Recordset.RecordCount ‘动态创建MsflexGrid行数
MSl.textMatrix(i,0)=I ‘设置行序号
Next i
Call YAO ‘调用自定义过程
End Sub
创建自定义过程,该过程用来将库存商品数据动态添加到MSFlexGrid表格中。
SubYAO()
Dim qty As Integer
Dim price AS Single
Adodc1.RecordSource=”SELECT*FROM tbS_stock ORDER BY qty”
Adodc1.Refrcsh
For i=1 To Adodc1.Recordset.RecorsCount
‘开始向单元格中添加数据
MSl.TextMatrix{i, 1}
Adocd1.Recordset.Fields(“tradceode”).Value
MSl.TextMatrix(i,2)=Adodc1.recordset.Fields(“fullname”).Value
MSl.TextMatrix(I,3)=Val(Adodc1.recordset.Fields(“qty”).Value)
If Adocd1.Recordset.Fields(“averagcprice”).Value=0 Then
MSl.TextMatrix(i,4)=Adodc1.recordset.Fields(“price”).Value
Else
MSl.TexMatrix(i, 4 ) =
Val(Adocd1.Recordset.Fields(“averagcprice”).Value)
End IF
MSl.TexMatrix(i, 5 ) = Val(MSl.TexMatrix(i, 4 )) *
Val(MSl.TexMatrix(i, 3 ))
Adocd1.Recordset.MoveNext
qty=qty+Val(MSl.TexMatrix(i, 4 ))
price=price+ MSl.TexMatrix(i, 5 )
Next i
Sbar1.Pancls(2).Text=”库存总数量:”& qyt
Sbar1.Pancls(3).Text=”库存总价值:”& Format(price,”#0.00”)&” 元 “
End Sub
5、库存盘点
库存盘点主要对库存商品数量进行核实,并计算盘点盈亏数量和盈亏金额及对查询盘点商品、对盘点商品进行数据打印。库存盘点模块的运行结果如图8所示。

在这里插入图片描述

图8 库存盘点模块运行结果
(一)窗体设计
(1) 新建1个窗体,将窗本的“名称”属性设置为“frm_chcckStock”,Caption属性设置为“库存盘点(自动盘盈盘亏)”、MaxButton属性为Falsc。
(2) 在窗体上添加Adodc控件和MSFlcxGrid控件,设置MSFlcxGrid控件名称为MSL,其他属性均为默认设置。
(3) 添加Tcxtbox控件、Labcl控件、Commandtutton控件。
库存盘点窗体设计结果如图 9 所示。
在这里插入图片描述

图9 库存盘点窗体设计结果
(二)代码设计
当库存中含有大量商品时,需将指定的商品查询结果筛选出来并通过MSFlcxGridg表格显示。[查询]按钮click事件的代码如下:
Privatc sub cmdfind_click()
MSl.clcar
‘ADO控件的RccordSourcc执行SQl语句
Adodc1.RccordSourcc=”select tradccodc,fullnamc,typc,standard.
Producc,unit,qty,stockchcck FROM tbS_stock WHERE (tradccodc LIKE ‘%’& txtTradccodc & “%”) AND (fullnamc LIKE “%”+ txtFUllnamc +”%”) AND (typc LIKE “%” + txtTypc +”%”)AND(standard LIKE “%” + txtStandard + “%”) AND(producc LIKE “%” + txtproducc + “%”)”
Adodc1.Rcfrcsh
Call MSF1 ‘调用过程,初始化MSF1cxGrid 控件
If adodc1.Rccordsct,Rccordcount>0 then
MS1.Rows=Adodc1.Rccordsct.RccordCount
For i=1 to adodc1.rccordsct,Rccordcount’将控件
NS1.TcxtMatrix(i,1)=adodc1.rccordsct.Ficlds(0)
NS1.tcxtmatrrx(i,2)=adodc1,rccordsct.Ficlds(1)
NS1.tcxtmatrix(i,3)=adodc1.rccotdsct.Ficlds(2)
NS1.tcxtmatrix(i,4)=adodc1.rccotdsct.Ficlds(3)
NS1.tcxtmatrix(i,5=adodc1.rccotdsct.Ficlds(4)
NS1.tcxtmatrix(i,6)=adodc1.rccotdsct.Ficlds(5)
NS1.tcxtmatrix(i,7)=adodc1.rccotdsct.Ficlds(6)
On Error Rcsumc Ncxt ‘可以赋值空
NS1.tcxtMatrix(i,8)=adodc1.rccordsct.Ficlds(7)
Adodc1.Rccordsct,MovcNcxt ‘将记示移支到下一条
Ncxt I ‘ 定义MS1表的列序号
For i=1 to Ms1.Rous
MS1.tcxtMatrix(i,0)=i
Ncxt i
Else
Msgbox “无此商品”
End if
End sub
窗体的Load确事件主要用于初始化数据库连接和设置MSF1cxGid表格相关属性。
Privatc Sub Form_Load()
Adodc1.conncctionString=PublicStr
‘ ADO控件的 RccordSourcc执行 SQL语句
Adodc1.RccordSourcc=”select tradccodc, fullnumc,typc,standard,producc,umit,qty,stockchcck FROM tbS_stock”
Adodc1.Rcfrcsh
Call MSF1 ‘调用过程,初始化MSF1cxGrid 控件

六、总结

通过本管理系统的开发,我对软件开发过程有了更清晰的了解,首先是问题定义、需求分析,然后是功能设计、详细设计等,并对软件测试的方法、手段有了较深的理解,同时对企业的进销存的流程有了一个系统的认识。在开发过程还认真学习了与系统相关的知识,极大地拓宽了我的知识面,我感到收获不小。
在系统的开发初期,必须要熟悉企业的管理流程,初步了解相关知识,这样才能进入到设计的过程中去。从开始熟悉这些知识到对整体设计有了解,再从概要设计、详细设计到开始编码,以及最后的测试,整个过程感觉很充实,虽然遇到了不少困难,但当我通过自己查资料、或是向指导老师请教以及向同学请教,而设计出解决方案并成功实现时,那种成就感和满足感足以鼓励自己再努力些辛苦些。
因为项目实习是使用Visal Basic设计管理软件的,在这次设计的过程中,我遇到专业知识方面的困难不是非常多,困难集中在管理知识、财务知识等方面的不足上。尤其是财务方面的知识,比如按月加权平均算法的实现,怎样处理商品收发存金额计算的误差等,在实际的开发中我深刻的体会到了自己做课程设计和实际客户的要求之间的距离,比如金额问题,一般存储单价保存小数点后4位即可,精确一点的保存到6位,但是不管是四位还是六位,当数据达到万或十万时,总帐和明细帐之间必然会产生误差,而财务上要求的是一份钱都不能差,这是我当时遇到的最束手无策问题,整整查了两天的有关于财务做帐的规定及特殊情况的处理知识,又和项目主管进行了详细的讨论之后才使这个问题得以解决。
还有就是操作界面的方面问题,尽管在设计的过程中,我们时刻考虑到了操作界面的友好性,但实际情况是远远不能满足客户的要求,考虑到软件使用群体将是一群几乎没有任何电脑操作经验的人,我们正在考虑设计出一种傻瓜式的界面。经过一学期的项目设计实习,确实学到了不少的东西,同时也深感自己知识的欠缺。虽然即将毕业,但在以后的学习工作中,一定要继续坚持不段地学习新兴的专业知识及相关的非专业知识,只有这样才能紧跟时代的潮流。

致 谢

在论文撰写过程中,指导老师提了很多建设性意见,给定了论文的方向,同时,同学们在我写作论文过程中提供了无私的帮助,在此一并表示感谢!

参考文献

[1]、]张宏林 孔艳 王哲 编著《Visual Basic 6.0开发数据库》人民邮电出版社
[2]、安剑、孙秀玫 编著《VB数据库系统开发自学手册》人民邮电出版社
[3]、张洪林 编著《Visual Basic 6.0编程实例》 北京:人民邮电出版社
[4]、 温贤发 编著《Visual Basic 6数据库程序设计高手》 北京:科学出版社
[5]、鸿志创作组 编著《VISUAL BASIC 6.0中文版应用与开发》 北京:科学技术出版社
[6]、陈海涛 编著《Visual Basic 6.0程序设计参考手册》 人民邮电出版社
[7]、刘萌 编著《Visual Basic企业办公系统开发实例导航》 人民邮电出版社
[8]、石连栓,张涛,李立宗 编著《Visual Basic程序设计教程.》清华大学出版社

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值