1、小型企业进销存管理系统摘要: 随着我国市场经济的蓬勃发展和人们对计算机的普遍应用,批发、零售行业正处在一个高速发展的时期。行业的快速发展必然导致竞争的加剧,要想在激烈的市场竞争中谋求发展,客观上要求企业必须加强内部管理,提高运营效率。而我国大部分小型批发、零售企业在信息机制上还没有摆脱原有的手工模式,企业内部没有形成完善的、有效的信息化管理机制,企业发展的动力不足,从而影响企业的持续、稳定、快速的发展。本文介绍了笔者编写的一个用于小型企业进销存管理系统。其中拥有功能比较全面的进销存管理系统。该系统包括用户注册和登录、日常业务管理、库存管理、查询统计管理、应收应付管理、统计报表管理、基础信息管理
2、和系统设置几个模块。Abstract:关键字: 进销存管理 查询 信息管理 日常业务一、 引言随着计算机的普遍应用,企业对内部机制形成完善的、有效的信息化管理机制,是使企业的各项管理实现现代化,在确定了本系统的设计目标之后,特开发了本管理系统,来完善企业内部的管理机制。二、开发和运行的环境开发工具:Microsoft Visual Studio 2008中文版,后台所用数据库是SQL2008,团队开发工具Microsoft Visual Softsafe。运行环境:1、运行 Intel 或兼容的 Pentium、Pentium Pro 或 Pentium II 处理器的计算机上运作。处理器必须
3、以最低 166 MHz 的速度运行。内存要求最低 64 MB。2、SQL Server 2000,Visual Basic 6.0三、 正文1、 流程分析 库存表 商品入库表商品入库 供应商明细表 商品退货表退货返厂 库存表 商品销售表商品销售 商品销售退货表销售退货进入系统验证登录操作员 客户明细表 说明: 供应商明细表付款单 数据源点和汇点 加工 客户明细表收款单 数据文件 数据流 库存查询、盘点库存管理 出入库、销售、退货查询查询统计商品信息查询、修改、删除 应收应付款查询应收应付管理进入系统验证登录管理员职员信息查询、修改、删除仓库信息查询、修改、删除 说明:供应商信息查询、修改、删除
4、基础信息管理 数据源点和汇点 客户信息查询、修改、删除 加工 本单位定义、操作员及密码增加、修改、删除,权限设置,系统初始化系统设置 数据文件 数据流 2、 数据库的设计(1)E-R图:商品出入库:仓库基础信息表CKINF商品基础信息表SPINF员工基础信息表YGINF供应商基础信息表GYS商品编号一对多关系仓库代码一对多关系员工编号一对多关系供应商编号一对多关系商品入库表RKD退货返厂表RKTH商品编号多对一关系供应商编号多对多关系库存表KC供应商明细表GYSMX商品销售、退货:仓库基础信息表CKINF商品基础信息表SPINF员工基础信息表YGINF客户基础信息表KH商品编号一对多关系仓库代
5、码一对多关系员工编号一对多关系客户编号一对多关系商品销售表XSD销售退货表XSTH商品编号多对一关系客户编号多对多关系库存表KC客户明细表KHMX(2)关系模型(数据库的结构)本单位信息表:字段名称数据类型字段大小公司简称Char 10公司电话Char20公司全称Char50公司地址Char50税务登记号Char20开户银行及账号Char60备注Char50仓库信息表:(仓库代码为主键)字段名称数据类型字段大小仓库代码Char10仓库名称Char20库管员Char10仓库说明Char100员工信息表:(员工编号为主键)字段名称数据类型字段大小员工编号Char10员工姓名Cha16性别Cha10
6、出生年月Datetime文化程度Cha20所属部门Cha30职务Cha30身份证号Varchar30联系电话Varchar20联系地址Cha50聘用日期Datetime薪金Money商品信息表:(商品编号为主键)字段名称数据类型字段大小商品编号Char8商品名称Char100简称Char10规格Char40产地Char50单位Char6进价Money批发价Money零售价Money供货信息Char200备注Char200权限设置信息表:字段名称数据类型字段大小商品入库Bit退货返厂Bit商品销售Bit销售退货Bit库存查询Bit库存盘点Bit入库查询Bit退货返厂查询Bit销售查询Bit销售退
7、货查询Bit收款单Bit付款单Bit应收款查询Bit应付款查询Bit销售日报表Bit销售月报表Bit客户销售报表Bit职员销售报表Bit商品信息管理Bit员工信息管理Bit仓库信息管理Bit供应商信息管理Bit客户信息管理Bit本单位定义Bit操作员编号及密码设置Bit权限设置Bit系统初始化Bit操作员编号Char10操作员名称Cha10密码Cha10供应商信息表:(供应商编号为主键)字段名称数据类型字段大小供应商编号Char20供应商全称Char50简称Char10地址Char30所属地区Char20邮政编码Char10电话Char30传真Char10联系人Char30联系人电话Char3
8、0开户银行Char20纳税人登记Char30网址邮箱Char20客户信息表:(客户编号为主键)字段名称数据类型字段大小客户编号Char20客户全称Char50简称Char10地址Char30所属地区Char20邮政编码Char10电话Char30传真Char30联系人Char10联系人电话Char30开户银行Char30银行账号Char20纳税人登记Char30网址邮箱Char20库存商品信息表:(商品编号为主键)字段名称数据类型字段大小商品编号Char8商品名称Char100规格Char40产地Char50单位Char6进价Money库存数量Number18库存金额Money仓库Char10
9、商品入库信息表:(商品编号为主键)字段名称数据类型字段大小商品编号Char8商品名称Char100规格Char40产地Char50单位Char6进价Money数量Numeric18金额Money仓库Char10供应商Char50操作员Char10经手人Char10日期Datetime票号Char30供货退货信息表:(商品编号为主键)字段名称数据类型字段大小商品编号Char8商品名称Char100规格Char40产地Char50单位Char6进价Money数量Numeric18金额Money仓库Char10供应商全称Char50操作员Char10经手人Char10日期Datetime票号Char
10、30供应商账款往来信息表:(供应商全称为主键)字段名称数据类型字段大小日期Datetime时间Datetime摘要Varchar200数量Numeric18单位Char10单价Money金额小计Money欠款记账Money付款合计Money累计金额Money供应商全称Char50票号Char30备注Char60销售信息表:(商品编号为主键)字段名称数据类型字段大小商品编号Char8商品名称Char100简称Char10规格Char40产地Char50单位Char6进价Money数量Numeric18金额Money仓库Char10客户全称Char50操作员Char10经手人Char10日期Dat
11、etime票号Char30销售退货信息表:(商品编号为主键)字段名称数据类型字段大小商品编号Char8商品名称Char100规格Char40产地Char50单位Char6单价Money数量Numeric18金额Money仓库Char10客户全称Char50操作员Char10经手人Char10日期Datetime票号Char30客户往来账款信息表:(客户全称为主键)字段名称数据类型字段大小日期Datetime时间Datetime摘要Varchar200数量Numeric18单位Char10单价Money金额小计Money欠款记账Money收款合计Money累计金额Money客户全称Char50票
12、号Char30备注Char603、 总体设计汽车发油管理系统统计查询业务合同计量管理作业管理通知单管理系统维护合同间转入转出合同信息管理合同信息手工调账审批通过业务计划生产作业计划评审作业计划评审记录储罐基本信息登陆页面管理菜单管理油品基本信息储罐监控及历史油品存量分布图汽车出库业务计划业务计划评审业务计划评审记录汽车发油计量储罐计量4、 主要功能模块分析一)、系统登录模块Start选择用户名并输入密码符合条件吗? .F. 在数据库中验证用户的密码。.T.进入系统End功能:用户登录验证成功后进入进销存管理系统。如是第一次直接进入系统设置操作员及密码。说明:在窗体中需要Adodc和DataCo
13、mbo控件,则需要加载“Microsoft ADO Data Control 6.0(SP4)(OLEDB)”和“Microsoft DataList Control 6.0(SP3) (OLEDB)”部件,将控件添加到工具箱。二)、日常业务管理(一)、商品入库、出库 商品入库 商品出库(二)、商品销售、退货 商品销售(一)、商品入库、出库流程图:新建业务计划分配财务部经理生产部经理查看具体业务信息查看具体业务信息 通过?通过?是否都通过?发货工发货T F END . .F. .T.功能:完成商品入库工作,付供应商货款方式可采用现金和支票,并可挂帐。说明:入库采用智能化表单录入,可一次录入多种
14、商品,在“商品名称”栏内输入商品名称或简称的前几个字或找PageDown键,系统将自动利用表格显示相关商品信息。使用方向键、 选择商品,按回车键,该商品信息将自动录入到表格中,只需输入如哭数量(系统自动计算商品金额),回车后即可入库下一商品。系统自动生成入库票号,可利用组合键选择供应商信息、经手人、仓库。自动统计商品入库功能:完成退还给供应商货物的工作。说明:同商品入库工作相似,同商品入库成正反关系。(二)、商品销售、退货流程图:Start登记选择供应商,经手人,入库仓号,商品信息等 信息是否输入完整? .F. .T. 是否保存? .F. .T.End功能:完成商品销售工作,客户货款方式可采用
15、现金和支票,并可挂帐。说明:销售采用录入方式同商品入库录入方式,自动生成销售票号,自动统计商品销售品种、数量、金额、计算折扣、税率。但如果销售商品数量大于库存商品数量时,此笔交易将被取消,所以在商品销售模中销售的商品数量一定要小于等于该商品的库存数量。功能:完成客户退货的工作。说明:退货采用录入方式同商品销售。功能:四)、库存管理(一)、库存商品查询功能:查询商品库中所有商品的信息。说明:可选择不同字段查询商品库存信息,并支持模糊查询和键盘操作。(二)、库存盘点功能:查询各仓库中商品库存情况。说明:选择仓库名称、查询该仓库中库存商品的情况。五)、查询统计管理(一)、入库查询功能:查询商品入库信
16、息。说明:选择字段查询商品入库信息,支持模糊查询,按任意时间段查询商品入库信息,统计入库品种、入库数量、入库金额。(二)、出库查询功能:查询退供应商货物信息。说明:选择字段查询商品入库信息,支持模糊查询,按任意时间段查询商品入库信息,统计入库品种、入库数量、入库金额。(三)、销售查询功能:查询商品销售信息。说明:选择任意字段、不同条件查询商品销售信息,也可按任意时间段查询商品销售信息,支持模糊查询和精确查询,可统计销售品种、数量、金额。(四)、销售退货功能:查询客户退货信息。说明:选择任意字段、不同条件查询商品销售信息,也可按任意时间段查询商品销售信息,支持模糊查询和精确查询,可统计销售品种、
17、数量、金额。六)、应收应付管理(一)、付款单功能:实现向供应商付款的功能。说明:可查询与供应商之间的往来帐款信息,提供供应商列表选择,并计算欠供应商的累计余额。(二)、收款单功能:实现向客户收款的功能。说明:可查询与客户之间的往来帐款信息,提供客户列表选择、并计算应收客户累计余额。(三)、应收款查询功能:查询客户付款信息。说明:查询任意时间段内与客户往来帐款信息,输入或选择客户名称查询应收款,统计欠款金额,尚欠余额。(四)、应付款查询功能:查询向供应商付款信息。说明:查询任意时间段内与供应商之间的往来帐款信息,提供供应商列表供用户选择、支持键盘操作,统计欠款余额,付款金额,尚欠余额。七)、统计
18、报表管理(一)、销售日报表功能:查询当天的商品销售日报,同时统计商品销售品种、销售数量、销售金额。(二)、销售月报表功能:查询任意一个月或任意时间段的商品销售报表,统计销售品种、销售数量、销售余额。(三)、客户销售报表功能:统计所有客户销售商品的情况。说明:可以按商品名称、仓库、职员或任意时间段统计所有客户销售商品的情况,采用组合式查询方法。(四)、职员销售报表功能:统计公司所有职员销售商品的情况。说明:可以按商品名称、仓库或客户名称或任意时间段统计所有职员销售商品的情况。八)、基础信息管理(一)、商品信息管理功能:完成商品基本信息的录入、保存、修改、删除,支持键盘操作,选择字段查询商品基本信
19、息,并可列表浏览商品信息。说明:录入时单击“登记”按钮,将自动生成8位商品编号,在处理数据时,列表浏览商品信息不可用。(二)、职员信息管理功能:完成职员基本信息的录入、保存、修改、删除,可按任意字段查询职员基本情况,支持列表浏览职员信息。说明:登记职员信息时自动生成职员编号。(三)、仓库信息管理功能:完成仓库基本信息的录入、保存、修改、删除,可按列表方式查询仓库信息。(四)、供应商信息管理功能:完成供应商基本信息的录入、保存、修改、删除,可以按任意字段查询供应商基本信息。(五)、客户信息管理功能:完成客户基本信息的录入、保存、修改、删除,可以按任意字段查询客户基本信息。九)、系统设置(一)、本
20、单位定义功能:定义本单位的基本信息,可以修改。(二)、操作员及密码功能:操作员信息的添加、修改、删除、密码的修改及操作员信息浏览。(三)、权限设置功能:对操作员进行不同的权限设置。(四)、系统初始化功能:对系统数据库进行清空记录说明:第一次进入系统时清空测试数据,可以选择初始化对象。十)、帮助(一)、帮助功能:帮助提示信息。(二)、关于功能:版权说明及查看计算机系统信息。四、各个重要模块的程序简介1. 公用模块Option ExplicitPublic Function cnn() As String cnn = Provider=MSDASQL.1;Persist Security Info
21、=False;User ID=sa;Data Source=Gcgl;Initial Catalog=GcglEnd FunctionPublic Sub Enter(KeyCode As Integer) If KeyCode = vbKeyReturn Then SendKeys Tab End IfEnd Sub2. 系统登录模块Dim TIM As Integer 声明一个整型变量Dim rs1 As New ADODB.Recordset 定义一个数据集对象Dim myval As String Private Sub Form_Activate()显示软件名称及版本信息Me.Cap
22、tion = App.Title & 版本: V & App.Major & . & App.Minor & . & App.Revisionrs1.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 Ifrs1.CloseEnd SubPrivate
23、Sub DataCombo1_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyReturn Then Text2.SetFocus End SubPrivate Sub text2_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyReturn Then Cmd1.Visible = True Cmd1.SetFocus End IfEnd SubPrivate Sub cmd1_Click() rs1.Open select * fro
24、m 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(商品销售
25、) 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
26、 = 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(付款单)
27、 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.Enable
28、d = 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.T
29、oolbar1.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.Enab
30、led = 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
31、(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 (查无此操作员,请重新输入操作员!) DataCo
32、mbo1.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.CloseEnd SubPrivate Sub cmd2_Click() EndEnd Sub3. 主程序模块Private Sub ckcx_Click() Load main_cxtj_ckcxmain_cxtj_ckcx.Showfrm_main.Enabled = FalseE
33、nd SubPrivate 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.RevisionEnd SubPrivate Sub Toolbar1_ButtonClick(ByVal Button As
34、 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_ClickCase Is = xs spxs_ClickCase Is = xsth xsth_ClickCase Is = s
35、kd skd_ClickCase Is = tc End End SelectEnd SubPrivate Sub Timer1_Timer() St1.Panels(2).Text = Format(Date, long date) & & TimeEnd SubPrivate Sub rkd_Click() Load main_rcyw_rk main_rcyw_rk.Show frm_main.Enabled = FalseEnd SubPrivate Sub rktd_Click() Load main_rcyw_rktdmain_rcyw_rktd.Showfrm_main.Enab
36、led = FalseEnd SubPrivate Sub kccx_Click() Load main_kcgl_kccx main_kcgl_kccx.Show frm_main.Enabled = FalseEnd SubPrivate Sub kcpd_Click() Load main_kcgl_kcpd main_kcgl_kcpd.Show frm_main.Enabled = FalseEnd SubPrivate Sub xscx_Click() Load main_cxtj_xscx main_cxtj_xscx.Show frm_main.Enabled = FalseEnd SubPrivate Sub rkcx_Click() Load main_cxtj_rkcx main_cxtj_rkcx.Show frm_main.Enabled = FalseEnd SubPrivate Sub fkd_Cli