资源描述
小型企业进销存管理系统
摘要:
随着我国市场经济的蓬勃发展和人们对计算机的普遍应用,批发、零售行业正处在一个高速发展的时期。行业的快速发展必然导致竞争的加剧,要想在激烈的市场竞争中谋求发展,客观上要求企业必须加强内部管理,提高运营效率。而我国大部分小型批发、零售企业在信息机制上还没有摆脱原有的手工模式,企业内部没有形成完善的、有效的信息化管理机制,企业发展的动力不足,从而影响企业的持续、稳定、快速的发展。
本文介绍了笔者编写的一个用于小型企业进销存管理系统。其中拥有功能比较全面的进销存管理系统。该系统包括用户注册和登录、日常业务管理、库存管理、查询统计管理、应收应付管理、统计报表管理、基础信息管理和系统设置几个模块。
Abstract:
关键字:
进销存管理 查询 信息管理 日常业务
一、 引言
随着计算机的普遍应用,企业对内部机制形成完善的、有效的信息化管理机制,是使企业的各项管理实现现代化,在确定了本系统的设计目标之后,特开发了本管理系统,来完善企业内部的管理机制。
二、开发和运行的环境
开发工具:Microsoft Visual Studio 2008中文版,后台所用数据库是SQL2008,团队开发工具Microsoft Visual Softsafe。
运行环境:1、运行 Intel 或兼容的 Pentium、Pentium Pro 或 Pentium II 处理器的计算机上运作。处理器必须以最低 166 MHz 的速度运行。内存要求最低 64 MB。
2、SQL Server 2000,Visual Basic 6.0
三、 正文
1、 流程分析
库存表
商品入库表
商品入库
供应商明细表
商品退货表
退货返厂
库存表
商品销售表
商品销售
商品销售退货表
销售退货
进入系统
验证登录
操作员
客户明细表
说明:
供应商明细表
付款单
数据源点和汇点
加工
客户明细表
收款单
数据文件
数据流
库存查询、盘点
库存管理
出入库、销售、退货查询
查询统计
商品信息查询、修改、删除
应收应付款查询
应收应付管理
进入系统
验证登录
管理员
职员信息查询、修改、删除
仓库信息查询、修改、删除
说明:
供应商信息查询、修改、删除
基础信息管理
数据源点和汇点
客户信息查询、修改、删除
加工
本单位定义、操作员及密码增加、修改、
删除,权限设置,系统初始化
系统设置
数据文件
数据流
2、 数据库的设计
(1)E-R图:
商品出入库:
仓库基础信息表CKINF
商品基础信息表SPINF
员工基础信息表YGINF
供应商基础信息表GYS
商品编号一对多关系
仓库代码一对多关系
员工编号一对多关系
供应商编号一对多关系
商品入库表RKD
退货返厂表RKTH
商品编号多对一关系
供应商编号多对多关系
库存表KC
供应商明细表GYSMX
商品销售、退货:
仓库基础信息表CKINF
商品基础信息表SPINF
员工基础信息表YGINF
客户基础信息表KH
商品编号一对多关系
仓库代码一对多关系
员工编号一对多关系
客户编号一对多关系
商品销售表XSD
销售退货表XSTH
商品编号多对一关系
客户编号多对多关系
库存表KC
客户明细表KHMX
(2)关系模型(数据库的结构)
本单位信息表:
字段名称
数据类型
字段大小
公司简称
Char
10
公司电话
Char
20
公司全称
Char
50
公司地址
Char
50
税务登记号
Char
20
开户银行及账号
Char
60
备注
Char
50
仓库信息表:(仓库代码为主键)
字段名称
数据类型
字段大小
仓库代码
Char
10
仓库名称
Char
20
库管员
Char
10
仓库说明
Char
100
员工信息表:(员工编号为主键)
字段名称
数据类型
字段大小
员工编号
Char
10
员工姓名
Cha
16
性别
Cha
10
出生年月
Datetime
文化程度
Cha
20
所属部门
Cha
30
职务
Cha
30
身份证号
Varchar
30
联系电话
Varchar
20
联系地址
Cha
50
聘用日期
Datetime
薪金
Money
商品信息表:(商品编号为主键)
字段名称
数据类型
字段大小
商品编号
Char
8
商品名称
Char
100
简称
Char
10
规格
Char
40
产地
Char
50
单位
Char
6
进价
Money
批发价
Money
零售价
Money
供货信息
Char
200
备注
Char
200
权限设置信息表:
字段名称
数据类型
字段大小
商品入库
Bit
退货返厂
Bit
商品销售
Bit
销售退货
Bit
库存查询
Bit
库存盘点
Bit
入库查询
Bit
退货返厂查询
Bit
销售查询
Bit
销售退货查询
Bit
收款单
Bit
付款单
Bit
应收款查询
Bit
应付款查询
Bit
销售日报表
Bit
销售月报表
Bit
客户销售报表
Bit
职员销售报表
Bit
商品信息管理
Bit
员工信息管理
Bit
仓库信息管理
Bit
供应商信息管理
Bit
客户信息管理
Bit
本单位定义
Bit
操作员编号及密码设置
Bit
权限设置
Bit
系统初始化
Bit
操作员编号
Char
10
操作员名称
Cha
10
密码
Cha
10
供应商信息表:(供应商编号为主键)
字段名称
数据类型
字段大小
供应商编号
Char
20
供应商全称
Char
50
简称
Char
10
地址
Char
30
所属地区
Char
20
邮政编码
Char
10
电话
Char
30
传真
Char
10
联系人
Char
30
联系人电话
Char
30
开户银行
Char
20
纳税人登记
Char
30
网址邮箱
Char
20
客户信息表:(客户编号为主键)
字段名称
数据类型
字段大小
客户编号
Char
20
客户全称
Char
50
简称
Char
10
地址
Char
30
所属地区
Char
20
邮政编码
Char
10
电话
Char
30
传真
Char
30
联系人
Char
10
联系人电话
Char
30
开户银行
Char
30
银行账号
Char
20
纳税人登记
Char
30
网址邮箱
Char
20
库存商品信息表:(商品编号为主键)
字段名称
数据类型
字段大小
商品编号
Char
8
商品名称
Char
100
规格
Char
40
产地
Char
50
单位
Char
6
进价
Money
库存数量
Number
18
库存金额
Money
仓库
Char
10
商品入库信息表:(商品编号为主键)
字段名称
数据类型
字段大小
商品编号
Char
8
商品名称
Char
100
规格
Char
40
产地
Char
50
单位
Char
6
进价
Money
数量
Numeric
18
金额
Money
仓库
Char
10
供应商
Char
50
操作员
Char
10
经手人
Char
10
日期
Datetime
票号
Char
30
供货退货信息表:(商品编号为主键)
字段名称
数据类型
字段大小
商品编号
Char
8
商品名称
Char
100
规格
Char
40
产地
Char
50
单位
Char
6
进价
Money
数量
Numeric
18
金额
Money
仓库
Char
10
供应商全称
Char
50
操作员
Char
10
经手人
Char
10
日期
Datetime
票号
Char
30
供应商账款往来信息表:(供应商全称为主键)
字段名称
数据类型
字段大小
日期
Datetime
时间
Datetime
摘要
Varchar
200
数量
Numeric
18
单位
Char
10
单价
Money
金额小计
Money
欠款记账
Money
付款合计
Money
累计金额
Money
供应商全称
Char
50
票号
Char
30
备注
Char
60
销售信息表:(商品编号为主键)
字段名称
数据类型
字段大小
商品编号
Char
8
商品名称
Char
100
简称
Char
10
规格
Char
40
产地
Char
50
单位
Char
6
进价
Money
数量
Numeric
18
金额
Money
仓库
Char
10
客户全称
Char
50
操作员
Char
10
经手人
Char
10
日期
Datetime
票号
Char
30
销售退货信息表:(商品编号为主键)
字段名称
数据类型
字段大小
商品编号
Char
8
商品名称
Char
100
规格
Char
40
产地
Char
50
单位
Char
6
单价
Money
数量
Numeric
18
金额
Money
仓库
Char
10
客户全称
Char
50
操作员
Char
10
经手人
Char
10
日期
Datetime
票号
Char
30
客户往来账款信息表:(客户全称为主键)
字段名称
数据类型
字段大小
日期
Datetime
时间
Datetime
摘要
Varchar
200
数量
Numeric
18
单位
Char
10
单价
Money
金额小计
Money
欠款记账
Money
收款合计
Money
累计金额
Money
客户全称
Char
50
票号
Char
30
备注
Char
60
3、 总体设计
汽车发油管理系统
统计查询
业务合同
计量管理
作业管理
通知单管理
系统维护
合同间转入转出
合同信息管理
合同信息手工调账
审批通过业务计划
生产作业计划评审
作业计划评审记录
储罐基本信息
登陆
页面管理
菜单管理
油品基本信息
储罐监控及历史
油品存量分布图
汽车出库业务计划
业务计划评审
业务计划评审记录
汽车发油计量
储罐计量
4、 主要功能模块分析
一)、系统登录模块
Start
选择用户名并输入密码
符合条件吗?
.F.
在数据库中验证用户的密码。
.T.
进入系统
End
功能:用户登录验证成功后进入进销存管理系统。如是第一次直接进入系统设置操作员及密码。
说明:在窗体中需要Adodc和DataCombo控件,则需要加载“Microsoft ADO Data Control 6.0(SP4)(OLEDB)”和“Microsoft DataList Control 6.0(SP3) (OLEDB)”部件,将控件添加到工具箱。
二)、日常业务管理
(一)、商品入库、出库
商品入库
商品出库
(二)、商品销售、退货
商品销售
(一)、商品入库、出库流程图:
新建业务计划
分配
财务部经理
生产部经理
查看具体业务信息
查看具体业务信息
通过?
通过?
是否都通过?
发货工发货
T F
END
.
.F.
.T.
功能:完成商品入库工作,付供应商货款方式可采用现金和支票,并可挂帐。
说明:入库采用智能化表单录入,可一次录入多种商品,在“商品名称”栏内输入商品名称或简称的前几个字或找〈PageDown〉键,系统将自动利用表格显示相关商品信息。使用方向键〈↑〉、〈↓〉 选择商品,按回车键,该商品信息将自动录入到表格中,只需输入如哭数量(系统自动计算商品金额),回车后即可入库下一商品。系统自动生成入库票号,可利用组合键选择供应商信息、经手人、仓库。自动统计商品入库
功能:完成退还给供应商货物的工作。
说明:同商品入库工作相似,同商品入库成正反关系。
(二)、商品销售、退货流程图:Start
登记
选择供应商,经手人,入库仓号,商品信息等
信息是否输入完整?
.F.
.T.
是否保存?
.F.
.T.
End
功能:完成商品销售工作,客户货款方式可采用现金和支票,并可挂帐。
说明:销售采用录入方式同商品入库录入方式,自动生成销售票号,自动统计商品销售品种、数量、金额、计算折扣、税率。但如果销售商品数量大于库存商品数量时,此笔交易将被取消,所以在商品销售模中销售的商品数量一定要小于等于该商品的库存数量。
功能:完成客户退货的工作。
说明:退货采用录入方式同商品销售。
功能:
四)、库存管理
(一)、库存商品查询
功能:查询商品库中所有商品的信息。
说明:可选择不同字段查询商品库存信息,并支持模糊查询和键盘操作。
(二)、库存盘点
功能:查询各仓库中商品库存情况。
说明:选择仓库名称、查询该仓库中库存商品的情况。
五)、查询统计管理
(一)、入库查询
功能:查询商品入库信息。
说明:选择字段查询商品入库信息,支持模糊查询,按任意时间段查询商品入库信息,统计入库品种、入库数量、入库金额。
(二)、出库查询
功能:查询退供应商货物信息。
说明:选择字段查询商品入库信息,支持模糊查询,按任意时间段查询商品入库信息,统计入库品种、入库数量、入库金额。
(三)、销售查询
功能:查询商品销售信息。
说明:选择任意字段、不同条件查询商品销售信息,也可按任意时间段查询商品销售信息,支持模糊查询和精确查询,可统计销售品种、数量、金额。
(四)、销售退货
功能:查询客户退货信息。
说明:选择任意字段、不同条件查询商品销售信息,也可按任意时间段查询商品销售信息,支持模糊查询和精确查询,可统计销售品种、数量、金额。
六)、应收应付管理
(一)、付款单
功能:实现向供应商付款的功能。
说明:可查询与供应商之间的往来帐款信息,提供供应商列表选择,并计算欠供应商的累计余额。
(二)、收款单
功能:实现向客户收款的功能。
说明:可查询与客户之间的往来帐款信息,提供客户列表选择、并计算应收客户累计余额。
(三)、应收款查询
功能:查询客户付款信息。
说明:查询任意时间段内与客户往来帐款信息,输入或选择客户名称查询应收款,统计欠款金额,尚欠余额。
(四)、应付款查询
功能:查询向供应商付款信息。
说明:查询任意时间段内与供应商之间的往来帐款信息,提供供应商列表供用户选择、支持键盘操作,统计欠款余额,付款金额,尚欠余额。
七)、统计报表管理
(一)、销售日报表
功能:查询当天的商品销售日报,同时统计商品销售品种、销售数量、销售金额。
(二)、销售月报表
功能:查询任意一个月或任意时间段的商品销售报表,统计销售品种、销售数量、销售余额。
(三)、客户销售报表
功能:统计所有客户销售商品的情况。
说明:可以按商品名称、仓库、职员或任意时间段统计所有客户销售商品的情况,采用组合式查询方法。
(四)、职员销售报表
功能:统计公司所有职员销售商品的情况。
说明:可以按商品名称、仓库或客户名称或任意时间段统计所有职员销售商品的情况。
八)、基础信息管理
(一)、商品信息管理
功能:完成商品基本信息的录入、保存、修改、删除,支持键盘操作,选择字段查询商品基本信息,并可列表浏览商品信息。
说明:录入时单击“登记”按钮,将自动生成8位商品编号,在处理数据时,列表浏览商品信息不可用。
(二)、职员信息管理
功能:完成职员基本信息的录入、保存、修改、删除,可按任意字段查询职员基本情况,支持列表浏览职员信息。
说明:登记职员信息时自动生成职员编号。
(三)、仓库信息管理
功能:完成仓库基本信息的录入、保存、修改、删除,可按列表方式查询仓库信息。
(四)、供应商信息管理
功能:完成供应商基本信息的录入、保存、修改、删除,可以按任意字段查询供应商基本信息。
(五)、客户信息管理
功能:完成客户基本信息的录入、保存、修改、删除,可以按任意字段查询客户基本信息。
九)、系统设置
(一)、本单位定义
功能:定义本单位的基本信息,可以修改。
(二)、操作员及密码
功能:操作员信息的添加、修改、删除、密码的修改及操作员信息浏览。
(三)、权限设置
功能:对操作员进行不同的权限设置。
(四)、系统初始化
功能:对系统数据库进行清空记录
说明:第一次进入系统时清空测试数据,可以选择初始化对象。
十)、帮助
(一)、帮助
功能:帮助提示信息。
(二)、关于
功能:版权说明及查看计算机系统信息。
四、各个重要模块的程序简介
1. 公用模块
Option Explicit
Public Function cnn() As String
cnn = "Provider=MSDASQL.1;Persist Security Info=False;User ID=sa;Data Source=Gcgl;Initial Catalog=Gcgl"
End Function
Public Sub Enter(KeyCode As Integer)
If KeyCode = vbKeyReturn Then
SendKeys "{Tab}"
End If
End Sub
2. 系统登录模块
Dim TIM As Integer '声明一个整型变量
Dim rs1 As New ADODB.Recordset 定义一个数据集对象
Dim myval As String
Private Sub Form_Activate()
'显示软件名称及版本信息
Me.Caption = App.Title & "版本: V" & App.Major & "." & App.Minor & "." & App.Revision
rs1.Open "select * from qxsz ", cnn, adOpenKeyset, adLockOptimistic '打开数据库
If rs1.RecordCount = 0 Then
myval = MsgBox("进入系统后先设置操作员和操作员权限!",0")
Load frm_main
frm_main.Show
Unload Me
Else
DataCombo1.SetFocus
End If
rs1.Close
End Sub
Private Sub DataCombo1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then Text2.SetFocus
End Sub
Private Sub text2_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then
Cmd1.Visible = True
Cmd1.SetFocus
End If
End Sub
Private Sub cmd1_Click()
rs1.Open "select * from qxsz where 操作员名称='" & DataCombo1.BoundText & "'", cnn, adOpenKeyset, adLockOptimistic
If rs1.RecordCount > 0 Then
frm_main.rkd.Enabled = rs1.Fields("商品入库")
frm_main.Toolbar1.Buttons(1).Enabled = rs1.Fields("商品入库")
frm_main.spxs.Enabled = rs1.Fields("商品销售")
frm_main.Toolbar1.Buttons(8).Enabled = rs1.Fields("商品销售")
frm_main.rktd.Enabled = rs1.Fields("退货返厂")
frm_main.xsth.Enabled = rs1.Fields("销售退货")
frm_main.Toolbar1.Buttons(10).Enabled = rs1.Fields("销售退货")
frm_main.kccx.Enabled = rs1.Fields("库存查询")
frm_main.Toolbar1.Buttons(5).Enabled = rs1.Fields("库存查询")
frm_main.kcpd.Enabled = rs1.Fields("库存盘点")
frm_main.rkcx.Enabled = rs1.Fields("入库查询")
frm_main.Toolbar1.Buttons(3).Enabled = rs1.Fields("入库查询")
frm_main.ckcx.Enabled = rs1.Fields("退货返厂查询")
frm_main.xscx.Enabled = rs1.Fields("销售查询")
frm_main.Toolbar1.Buttons(12).Enabled = rs1.Fields("销售查询")
frm_main.xsthcx.Enabled = rs1.Fields("销售退货查询")
frm_main.fkd.Enabled = rs1.Fields("付款单")
frm_main.Toolbar1.Buttons(15).Enabled = rs1.Fields("付款单")
frm_main.skd.Enabled = rs1.Fields("收款单")
frm_main.Toolbar1.Buttons(16).Enabled = rs1.Fields("收款单")
frm_main.skcx.Enabled = rs1.Fields("应收款查询")
frm_main.fkcx.Enabled = rs1.Fields("应付款查询")
frm_main.xsrbb.Enabled = rs1.Fields("销售日报表")
frm_main.xsybb.Enabled = rs1.Fields("销售月报表")
frm_main.khxsbb.Enabled = rs1.Fields("客户销售报表")
frm_main.zyxsbb.Enabled = rs1.Fields("职员销售报表")
frm_main.spinf.Enabled = rs1.Fields("商品信息管理")
frm_main.yginf.Enabled = rs1.Fields("员工信息管理")
frm_main.ckinf.Enabled = rs1.Fields("仓库信息管理")
frm_main.gysinf.Enabled = rs1.Fields("¹供应商信息管理")
frm_main.Toolbar1.Buttons(21).Enabled = rs1.Fields("¹供应商信息管理")
frm_main.khinf.Enabled = rs1.Fields("客户信息管理")
frm_main.Toolbar1.Buttons(19).Enabled = rs1.Fields("客户信息管理")
frm_main.bdwdy.Enabled = rs1.Fields("本单位定义")
frm_main.czysz.Enabled = rs1.Fields("操作员及密码")
frm_main.qxsz.Enabled = rs1.Fields("权限设置")
frm_main.xtcsh.Enabled = rs1.Fields("系统初始化")
Dim MESSAGE As String
Textime.Text = TIM
Adodc1.RecordSource = "select * from qxsz where 操作员名称='" + DataCombo1.BoundText + "'"
Adodc1.Refresh
If DataCombo1.BoundText <> "" And Text2.Text = Trim(Adodc1.Recordset.Fields("密码")) Then
Load frm_main
frm_main.Show
frm_main.St1.Panels(3).Text = Trim(DataCombo1.Text)
Unload Me
Else
If TIM = 3 Then
MESSAGE = MsgBox("密码输入错误,请向系统管理员查询!", 0, "")
If MESSAGE = vbOK Then End
End If
If DataCombo1.BoundText = "" Then
MsgBox ("请输入操作员!")
DataCombo1.SetFocus
Else
If Trim(DataCombo1.BoundText) <> Trim(Adodc1.Recordset.Fields("操作员名称")) Then
MsgBox ("查无此操作员,请重新输入操作员!")
DataCombo1.SetFocus
Else
If Text2.Text <> Adodc1.Recordset.Fields("密码") Then
MsgBox ("密码错误,请重新输入密码!")
TIM = TIM + 1
Text2.SetFocus
End If
End If
End If
End If
End If
rs1.Close
End Sub
Private Sub cmd2_Click()
End
End Sub
3. 主程序模块
Private Sub ckcx_Click()
Load main_cxtj_ckcx
main_cxtj_ckcx.Show
frm_main.Enabled = False
End Sub
Private Sub Form_Load()
Me.Caption = App.Title & " 版本: V" & App.Major & "." & App.Minor & "." & App.Revision
Dim i As Integer
For i = 0 To 1
Label1(i).Caption = App.Title
Next i
Label2.Caption = "版本: V" & App.Major & "." & App.Minor & "." & App.Revision
End Sub
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
Select Case Button.Key
Case Is = "rk"
rkd_Click
Case Is = "kc"
kccx_Click
Case Is = "xscx"
xscx_Click
Case Is = "rkcx"
rkcx_Click
Case Is = "fkd"
fkd_Click
Case Is = "kh"
khinf_Click
Case Is = "gys"
gysinf_Click
Case Is = "bz"
bz1_Click
Case Is = "xs"
spxs_Click
Case Is = "xsth"
xsth_Click
Case Is = "skd"
skd_Click
Case Is = "tc"
End
End Select
End Sub
Private Sub Timer1_Timer()
St1.Panels(2).Text = Format(Date, "long date") & " " & Time
End Sub
Private Sub rkd_Click()
Load main_rcyw_rk
main_rcyw_rk.Show
frm_main.Enabled = False
End Sub
Private Sub rktd_Click()
Load main_rcyw_rktd
main_rcyw_rktd.Show
frm_main.Enabled = False
End Sub
Private Sub kccx_Click()
Load main_kcgl_kccx
main_kcgl_kccx.Show
frm_main.Enabled = False
End Sub
Private Sub kcpd_Click()
Load main_kcgl_kcpd
main_kcgl_kcpd.Show
frm_main.Enabled = False
End Sub
Private Sub xscx_Click()
Load main_cxtj_xscx
main_cxtj_xscx.Show
frm_main.Enabled = False
End Sub
Private Sub rkcx_Click()
Load main_cxtj_rkcx
main_cxtj_rkcx.Show
frm_main.Enabled = False
End Sub
Private Sub fkd_Cli
展开阅读全文