VF进销存管理系统论文(系统结构图+源代码)摘要【摘要】随着全球经济一体化,国内经济改革的逐年深化,使得国内中小企业都面临着巨大的挑战,管理体制的不完善、生产技术不能和集团性质的大公司相竞争,成为中小企业发展需要解决的首要问题,而即使企业具有了一定先进的技术,由于管理体制中种种问题的制约,也不能使企业在激烈的竞争中占有一席之地。 计算机技术的全面普及,给中小企业带来新鲜的血液,利用计算机对企业进行管理,不仅解决了传统管理方式中的管理效率低下、管理不全面,数据信息不能得到统计等问题。管理方式的转变,提高整个企业的工作效率,在某种意义上讲,给中小企业提供了新的有利条件,增强了企业的核心竞争力,成为企业管理的必备工具。本系统的开发适用于多个行业,可以帮助企业快速有效管理进货、销售、库存等各项业务,合理控制进销存各个环节,提高资金利用率,实现管理高效率和实时性。本系统是根据人们在日常生活中的实际需求而开发的,完全能够实现人们对各类药品信息及疑难病症查询的功能,通过本系统可以达到以下目标: 系统最大限度地实现了易安装性、易维护性和易操作性。 系统运行稳定,安全可靠。 操作灵活,界面友好,充分满足各类企业的进销存管理需求 实施规范的进、销、存一体化业务管理。 强大的库存预警功能,尽量避免损失。 图形化数据分析。 强大的查询分析功能。 灵活、细分的权限控制功能。 强大的报表功能,让您随时了解企业经营情况【关键词】 入库 销售 退货 通用进销存管理系统 目录
摘要 1目录 10 引言 11 需求分析 11.1 需求分析 11.2 可行性分析 12 总体设计 12.1 项目规划 12.2 系统功能结构 23 系统设计 23.1 设计目标 23.2 开发及运行环境 33.3 数据库设计 34 主要功能模块设计 34.1 程序主界面的设计 34.2 系统登录界面设计 64.3 商品信息管理模块设计 104.4 入库管理模块设计 164.5 销售管理模块设计 224.6 库存盘点模块设计 30附录A 参考文献 35附录B 数据表 37附录C 文件架构 132
VF进销存管理系统论文
0 引言
随着全球经济一体化,国内经济改革的逐年深化,使得国内中小企业都面临着巨大的挑战,管理体制的不完善、生产技术不能和集团性质的大公司相竞争,成为中小企业发展需要解决的首要问题,而即使企业具有了一定先进的技术,由于管理体制中种种问题的制约,也不能使企业在激烈的竞争中占有一席之地。
计算机技术的全面普及,给中小企业带来新鲜的血液,利用计算机对企业进行管理,不仅解决了传统管理方式中的管理效率低下、管理不全面,数据信息不能得到统计等问题。管理方式的转变,提高整个企业的工作效率,在某种意义上讲,给中小企业提供了新的有利条件,增强了企业的核心竞争力,成为企业管理的必备工具。
本系统的开发适用于多个行业,可以帮助企业快速有效管理进货、销售、库存等各项业务,合理控制进销存各个环节,提高资金利用率,实现管理高效率和实时性。
1 需求分析
1.1 需求分析
根据市场的需求,要求系统具有以下功能:
l 系统操作简单,界面友好。
l 规范、完善的基础信息设置。
l 支持多人操作,要求有较好的权限分配功能。
l 为了方便用户,要求系统支持多条件查询。
l 支持多种报表打印功能。
l 图表分析销售状况
l 具有数据备份及数据恢复功能,保证系统数据的安全。
1.2 可行性分析
随着经济的全球化以及中国经济改革的逐渐深化,中小企业面临着越来越激烈的竞争,改善企业内部以及整个供应链各个环节的管理、调度及资源配置,迅速适应客户的新需求和市场新机遇的能力,是企业赢得竞争胜利的决定性因素,进销存管理系统的开发是提高企业竞争力的最有效的方法之一。
进销存管理系统的开发实现了从进货、库存、到销售的一体化管理。提高了管理水平和工作效率,最大限度减少了手工操作带来的错误。
2 总体设计
2.1 项目规划
通用进销存管理系统是一款将进货、销售、库存进行一体化管理的系统。系统由系统管理、销售管理、库存管理、基础信息、往来管理、查询管理、报表管理、决策管理和维护管理等模块组成。特规划功能模块如下:
l 系统管理模块
系统管理模块:系统管理模块:系统设置、权限设置、操作员管理、更改密码、退出。
l 销售管理模块
销售管理模块:订货管理、销售管理、销售退货管理。
l 库存管理模块
库存管理模块:入库管理、入库退货、库存查询、库存盘点、商品有限期查询、库存上下限管理、商品报损报溢管理。
l 基础信息
基础信息模块:商品信息管理、供应商信息管理、客户信息管理、员工信息管理、银行帐户管理。
l 基础信息
基础信息模块:商品信息管理、供应商信息管理、客户信息管理、员工信息管理、银行帐户管理。
l 往来管理
往来管理模块:供应商帐目管理、客户帐目管理、超期应收应付款管理。
l 查询管理
查询管理模块:商品销售查询、商品入库查询、商品退货查询、商品报损报溢查询。
l 报表管理
报表管理模块:日销售报表、周销售报表、月销售报表、单商品销售报表。
l 决策管理
决策管理模块:商品销售排行、商品退货排行、利润分析、决策分析(进销存结转、供应商应收应付款结转、客户应收应付款结转)。
l 维护管理
初期建帐(往来帐目、库存商品)、系统初始化、数据备份、数据恢复。
2.2 系统功能结构
本系统共分9大部分、41个完整的功能模块。系统结构图如图1所示。若图片无法显示请联系QQ3710167,VF进销存管理系统论文免费,转发请注明源于www.lwfree.cn
图1 通用进销存管理系统结构图
3 系统设计
3.1 设计目标
本系统是根据人们在日常生活中的实际需求而开发的,完全能够实现人们对各类药品信息及疑难病症查询的功能,通过本系统可以达到以下目标:
l 系统最大限度地实现了易安装性、易维护性和易操作性。
l 系统运行稳定,安全可靠。
l 操作灵活,界面友好,充分满足各类企业的进销存管理需求
l 实施规范的进、销、存一体化业务管理。
l 强大的库存预警功能,尽量避免损失。
l 图形化数据分析。
l 强大的查询分析功能。
l 灵活、细分的权限控制功能。
l 强大的报表功能,让您随时了解企业经营情况。
3.2 开发及运行环境
系统开发平台:Microsoft Visual FoxPro 6.0。
运行平台:Windows XP/ Windows 2000/ Windows 2003
分辨率:最佳效果1024×768像素
3.3 数据库设计
本系统采用的是Visual FoxPro自带的数据库,系统数据库名为DataBase。
由于篇幅所限,关于数据库中的数据表请参见附录B。
VF进销存管理系统论文(系统结构图+源代码)
4 主要功能模块设计
4.1 程序主界面的设计
程序主界面的设计的好坏往往影响到软件的整体形象,因此首先要处理好程序主界面的设计问题。同时,程序主界面的设计也是程序控制的核心,操作权限、程序功能调用等都要通过主程序调用实现。通用进销存管理系统程序主界面设计的运行结果如图2所示
图2 程序主界面设计的运行结果
1.创建程序主界面
(1)新建一个项目,命名为“通用进销存管理系统”,在该项目中添加一个新表单,命名为“frmmain”,并设置表单的Caption属性为“通用进销存管理系统 v2.0版”,设置Icon属性为“sys(5)+sys(2003)+'\graphics\proICO.ico'”,设置KeyPreview属性为.T.,作用是截获表单内控件的KeyPress事件;设置ShowWindow属性为“2-作为顶层表单”;设置WindowState属性为“2-最大化”。
(2)在表单的Unload事件下添加如下代码:
_screen.visible=.t. &&恢复Visual FoxPro主窗体的位置,退出Visual FoxPro
_screen.top=0
QUIT在表单的QueryUnload事件下添加如下代码:
this.Lockdatebase1.lock(sys(5)+sys(2003)+"\data\DataBase.dbc",;
"正在加密,请稍后...") &&数据库加密
IF file(sys(5)+sys(2003)+'\Setup.tmp')=.t.
DELE FILE sys(5)+sys(2003)+'\Setup.tmp'
ENDIF
2.创建程序菜单
“通用进销存管理系统”的菜单是通过10个快捷菜单拼成的,并且具有彩色背景、动态增减菜单项的功能。
(1)在表单中增加ToolBar控件,命名为“ToolBarMenu”,ImageList控件,命名为“ImageMenu”,将制作完成的图片添加到ImageMenu中。
(2)更改ToolBarMenu控件的属性,如表1所示。
表1 更改ToolBarMenu控件属性
对象
属性
值
ToolBarMenu
Appearance
0-Flat
ToolBarMenu
BorderStyle
0-None
ToolBarMenu
Style
0-standard
(3)将ToolBarMenu控件与ImageMenu控件联系起来,在ToolBarMenu控件中添加10个按钮,并将ImageMenu控件中的图片与按钮相对应。在ToolBarMenu控件的Init事件下添加如下代码:
this.imagelist=thisform.imagemenu
this.disabledimagelist=thisform.imagemenu
this.hotimagelist=thisform.imagemenu
FOR m=1 TO 10
mnuname="mnu"+alltrim(str(m))
this.buttons.add(,mnuname,'',0,m)
ENDFOR
(4)在ToolBarMenu控件的ButtonClick事件下添加如下代码:
*** ActiveX 控件事件 ***
LPARAMETERS button
DO CASE
CASE button.index=1
DO mnus\系统管理.mpr
CASE button.index=2
DO mnus\销售管理.mpr
CASE button.index=3
DO mnus\库存管理.mpr
CASE button.index=4
DO mnus\基础信息.mpr
CASE button.index=5
DO mnus\配送管理.mpr
CASE button.index=6
DO mnus\往来管理.mpr
CASE button.index=7
DO mnus\查询管理.mpr
CASE button.index=8
DO mnus\报表管理.mpr
CASE button.index=9
DO mnus\决策管理.mpr
CASE button.index=10
DO mnus\维护管理.mpr
ENDCASE
3.创建工具栏
本程序的工具栏中共有12个按钮,分别是订单管理、销售管理、配送申请、配送开票、配送结款、入库管理、库存查询、商品信息管理、商品销售查询、商品销售排行、日销售报表、数据备份。创建工具栏的方法与创建程序菜单类似,也是通过ToolBar控件与ImageList控件来完成的。
(1)在表单中添加一个ToolBar控件,更改其重要属性如表2所示。
表2 更改ToolBar控件属性
对象
属性
值
ToolBar
Appearance
0-Flat
ToolBar
BorderStyle
0-None
ToolBar
Style
0-standard
(2)将ToolBar控件与ImageList控件联系起来,在ToolBar控件中添加12个按钮,并将ImageMenu控件中的图片与按钮相对应。代码如下:
*增加快捷工具栏按钮
thisform.toolbar.imagelist=thisform.imagelist
thisform.toolbar.disabledimagelist=thisform.imagelist
thisform.toolbar.buttons.add(,'bar1','',3,0)
thisform.toolbar.buttons.add(,'DD','',,1)
thisform.toolbar.buttons.add(,'xs','',,2)
thisform.toolbar.buttons.add(,'bar2','',3,0)
thisform.toolbar.buttons.add(,'sq','',,3)
thisform.toolbar.buttons.add(,'kp','',,4)
thisform.toolbar.buttons.add(,'jz','',,5)
thisform.toolbar.buttons.add(,'bar3','',3,0)
thisform.toolbar.buttons.add(,'rk','',,6)
thisform.toolbar.buttons.add(,'cx','',,7)
thisform.toolbar.buttons.add(,'bar4','',3,0)
thisform.toolbar.buttons.add(,'xx','',,8)
thisform.toolbar.buttons.add(,'tj','',,9)
thisform.toolbar.buttons.add(,'bb','',,10)
thisform.toolbar.buttons.add(,'bar5','',3,0)
thisform.toolbar.buttons.add(,'ph','',,11)
thisform.toolbar.buttons.add(,'bar6','',3,0)
thisform.toolbar.buttons.add(,'bf','',,12)
thisform.toolbar.buttons.add(,'bar7','',3,0)
thisform.toolbar.buttons(2).tooltiptext="订单管理"
thisform.toolbar.buttons(3).tooltiptext="销售管理"
thisform.toolbar.buttons(5).tooltiptext="配送申请"
thisform.toolbar.buttons(6).tooltiptext="配送开票"
thisform.toolbar.buttons(7).tooltiptext="配送结账"
thisform.toolbar.buttons(9).tooltiptext="入库管理"
thisform.toolbar.buttons(10).tooltiptext="库存查询"
thisform.toolbar.buttons(16).tooltiptext="日销售报表"
thisform.toolbar.buttons(18).tooltiptext="数据备份"
FOR m=1 TO 18
IF empty(thisform.toolbar.buttons(m).tooltiptext)=.f.
blName=thisform.rainfunction1.htop(;
alltrim(thisform.toolbar.buttons(m).tooltiptext))
IF &blname. =.f.
thisform.toolbar.buttons(m).enabled=.f.
ENDIF
ENDIF
ENDFOR
VF进销存管理系统论文(系统结构图+源代码)(3)调整ToolBar控件的位置,在ToolBar控件下方添加一张图片,作为工具按钮的显示区域。(4)添加一个Container控件,作为设置“超期应收应付款预警功能”的复选按钮区域。在此容器控件中添加一个Shape控件,更改其属性,如表3所示。表3 更改Shape控件属性对象 属性 值Container.Shape1 BorderStyle 0-透明Container.Shape1 Curvature 90(5)在Container容器中添加一个Label控件和一个Check控件,将Check控件的Caption属性更改为“超期应收应付款预警”。(6)在ToolBar控件的ButtonClick事件下添加如下代码:*** ActiveX 控件事件 ***LPARAMETERS buttonDO CASE CASE button.index=2 DO FROM forms\frm订单 CASE button.index=3 DO FROM forms\frm销售管理 CASE button.index=5 DO FROM forms\frm配送申请 CASE button.index=6 DO FROM forms\frm配送开票 CASE button.index=7 DO FROM forms\frm配送结款 CASE button.index=9 DO FROM forms\frm入库管理 CASE button.index=10 DO FROM forms\frm库存查询 CASE button.index=12 DO FROM forms\frm商品信息 CASE button.index=13 DO FROM forms\frm商品销售查询 CASE button.index=14 DO FROM forms\frm商品销售排行 CASE button.index=16 DO FROM forms\frm日报表 CASE button.index=18 DO FROM forms\frm数据备份 ENDCASE4.创建状态栏(1)在表单中添加一个StatusBar控件,并在该控件上单击鼠标右键,在弹出的快捷菜单中选择“SBarCtrl properties”菜单项,将打开“SBarCtrl属性”对话框。(2)选择“Panels”页,单击“Insert Panel”按钮,向StatusBar控件中添加一个Panels对象,设置此Panels对象的宽度为“180”,如图3所示。(3)按照上面的方法,再为StatusBar控件添加4个Panels对象,它们的宽度分别为320、100、100、100。
VF进销存管理系统论文(系统结构图+源代码)图4 系统登录模块运行结果1.表单设计(1)新建一个表单,命名为Frm登录。(2)向表单内添加Label控件、ListView控件、ImageList控件、Text控件、Command控件、Container控件、FormIn类控件、LockDateBase类控件。(3)重要控件的属性设置如表4所示。表4 重要控件及属性对象 属性 值Form1 AutoCenter .T.Form1 ShowWindows 2-作为顶层表单ListView1 BackColor 131606602.代码设计在表单的 Init 事件下添加如下代码:PUBLIC noSET SAFT OFFno=0SELE 操作员信息表thisform.listview.view=0thisform.listview.icons=thisform.imagelist.objectIF reccount()<>0 FOR m=1 TO reccount() SELE 操作员信息表 GOTO m =thisform.listview.listitems.add(,,操作员信息表.用户名,操作员信息表.头像) ENDFORELSE =thisform.listview.listitems.add(,,"超级管理员",rand(-11)*12)ENDIF在表单的Unload事件下添加如下代码:QUIT在“登录”按钮的Click事件下添加如下代码:IF alltrim(thisform.text1.value)="超级管理员" gly="超级管理员" thisform.top=-1100 thisform.visible=.f. DO FROM forms\frmmainELSE SELECT * FROM 操作员信息表 WHERE 用户名=alltrim(thisform.text3.value) ; INTO CURSOR lsb IF alltrim(lsb.密码)==alltrim(thisform.text2.value) gly=lsb.编号 thisform.top=-1100 thisform.visible=.f. DO FROM forms\frmmain ELSE no=no+1 IF no>=3 messagebox("您输入密码不正确!”,16,”系统提示") thisform.Lockdatebase1.lock(sys(5)+sys(2003)+"\data\Database.dbc","正在加密,请稍后...") _screen.visible=.t. _screen.top=0 thisform.release ELSE messagebox("您输入的密码不正确!请注意大小写!",16,"系统提示") thisform.text2.value="" thisform.listview.setfocus ENDIF ENDIFENDIF在“密码”文本框的KeyPress事件下添加如下代码:IF nkeycode=13 thisform.command1.clickENDIF在Listview控件的KeyPress事件下添加如下代码:IF keyascii=13 this.clickENDIF在ListView控件的Click事件下添加如下代码:thisform.text1.value=thisform.listview.selecteditem.textselect * from 操作员信息表 where 用户名=alltrim(thisform.listview.selecteditem.text) into cursor lsb_czythisform.text3.value=thisform.listview.selecteditem.textthisform.text1.value=lsb_czy.编号thisform.text2.setfocus在“退出”按钮的Click事件下添加如下代码:thisform.Lockdatebase1.lock(sys(5)+sys(2003)+"\data\database.dbc","正在加密,请稍后...")IF file(sys(5)+sys(2003)+"\Setup.tmp")=.t. DELE FILE (sys(5)+sys(2003)+"\Setup.tmp")ENDIF_screen.visible=.t._screen.top=0thisform.release为了保证应用程序的安全,通常要设计系统登录表单验证用户是否合法。只有合法的用户才可进入系统。系统登录模块运行结果。如图5所示
VF进销存管理系统论文图5 系统登录模块运行结果1.表单设计(1)新建一个表单,命名为Frm登录。(2)向表单内添加Label控件、ListView控件、ImageList控件、Text控件、Command控件、Container控件、FormIn类控件、LockDateBase类控件。(3)重要控件的属性设置如表5所示。表5 重要控件及属性对象 属性 值Form1 AutoCenter .T.Form1 ShowWindows 2-作为顶层表单ListView1 BackColor 131606602.代码设计在表单的 Init 事件下添加如下代码:PUBLIC noSET SAFT OFFno=0SELE 操作员信息表thisform.listview.view=0thisform.listview.icons=thisform.imagelist.objectIF reccount()<>0 FOR m=1 TO reccount() SELE 操作员信息表 GOTO m =thisform.listview.listitems.add(,,操作员信息表.用户名,操作员信息表.头像) ENDFORELSE =thisform.listview.listitems.add(,,"超级管理员",rand(-11)*12)ENDIF在表单的Unload事件下添加如下代码:QUIT在“登录”按钮的Click事件下添加如下代码:IF alltrim(thisform.text1.value)="超级管理员" gly="超级管理员" thisform.top=-1100 thisform.visible=.f. DO FROM forms\frmmainELSE SELECT * FROM 操作员信息表 WHERE 用户名=alltrim(thisform.text3.value) ; INTO CURSOR lsb IF alltrim(lsb.密码)==alltrim(thisform.text2.value) gly=lsb.编号 thisform.top=-1100 thisform.visible=.f. DO FROM forms\frmmain ELSE no=no+1 IF no>=3 messagebox("您输入密码不正确!”,16,”系统提示") thisform.Lockdatebase1.lock(sys(5)+sys(2003)+"\data\Database.dbc","正在加密,请稍后...") _screen.visible=.t. _screen.top=0 thisform.release ELSE messagebox("您输入的密码不正确!请注意大小写!",16,"系统提示") thisform.text2.value="" thisform.listview.setfocus ENDIF ENDIFENDIF在“密码”文本框的KeyPress事件下添加如下代码:IF nkeycode=13 thisform.command1.clickENDIF在Listview控件的KeyPress事件下添加如下代码:IF keyascii=13 this.clickENDIF在ListView控件的Click事件下添加如下代码:thisform.text1.value=thisform.listview.selecteditem.textselect * from 操作员信息表 where 用户名=alltrim(thisform.listview.selecteditem.text) into cursor lsb_czythisform.text3.value=thisform.listview.selecteditem.textthisform.text1.value=lsb_czy.编号thisform.text2.setfocus在“退出”按钮的Click事件下添加如下代码:thisform.Lockdatebase1.lock(sys(5)+sys(2003)+"\data\database.dbc","正在加密,请稍后...")IF file(sys(5)+sys(2003)+"\Setup.tmp")=.t. DELE FILE (sys(5)+sys(2003)+"\Setup.tmp")ENDIF_screen.visible=.t._screen.top=0thisform.release4.3 商品信息管理模块设计商品信息管理模块主要用于进行商品基础信息的管理,通过此模块可以对商品进行添加、修改、删除、保存等相关功能的操作。商品信息模块运行结果如图6所示。
VF进销存管理系统论文
图6 商品信息模块运行结果1.表单设计(1)在“通用进销存管理系统”项目文件中添加一个表单,命名为Frm商品信息。(2)向表单内添加自制类控件Back、Line控件、Label控件、Picture控件、Container控件、Combo控件、OptionGroup控件、Text控件、Spinner控件、LocateButton控件、Grid控件和OftenButton类控件。(3)重要控件的属性设置如表6所示。表6 重要控件及属性对象 属性 值Form1 AutoCenter .T.Form1 ShowWindows 2-作为顶层表单OftenButtons1 RecordSource 商品信息表LocateButtons1 RecordSource 商品信息表Grid1 RecordSource 商品信息表Spinner1 SpecialEffect 1-平面OptionGroup1.Option1 Style 1-图形Form1 AutoCenter .T.2.代码设计在表单的Resee方法程序下添加如下代码:SELE 商品信息表thisform.text1.value=商品信息表.编号thisform.text2.value=商品信息表.名称thisform.text3.value=商品信息表.简称thisform.text4.value=商品信息表.规格thisform.text5.value=商品信息表.计量单位thisform.text6.value=商品信息表.产地thisform.text7.value=商品信息表.出厂日期thisform.text8.value=商品信息表.保质期thisform.text9.value=商品信息表.进价thisform.text10.value=商品信息表.批发价thisform.text11.value=商品信息表.零售价thisform.text12.value=商品信息表.备注thisform.combo1.displayvalue=thisform.rainfunction1.;numbertoname("供应商信息表","全称",商品信息表.供应商编号,1) &&取出供应商名称SELE 商品信息表 thisform.label24.caption=padl(alltrim(str(reccount())),5,"0")thisform.spinner1.Spinnerhighvalue=reccount()thisform.spinner1.value=recno()SELE 商品信息表在表单的Init事件中添加如下代码:SET DELE ONthisform.resee在表单的Unload事件中添加如下代码:CLOSE ALL databaseUSE data\商品信息表 EXCLPACKUSEUSE data\库存信息表 EXCLPACKUSE在“名称”文本框的InterActiveChange事件下添加如下代码:thisform.text3.value=lower(thisform.rainfunction1.htop(this.value))在“名称”文本框的Click事件下添加如下代码:thisform.text3.value=thisform.rainfunction1.htop(this.value)在Locatebuttons1控件的_FirstButtonClick方法程序下添加如下代码:SELE 商品信息表thisform.resee在Locatebuttons1控件的 _LastButtonClick 方法程序下添加如下代码:SELE 商品信息表thisform.resee在Locatebuttons1控件的_NextButtonClick方法程序下添加如下代码:SELE 商品信息表thisform.resee在Locatebuttons1控件的_PreviousButtonClick方法程序下添加如下代码:SELE 商品信息表thisform.resee在Oftenbuttons1控件的_SaveButtonClick方法程序下添加如下代码:DIME txt(13),get(9)***存入信息SELE 商品信息表thisrecno=recno()FOR m=1 TO 6 txtname="text"+alltrim(str(m)) txt(m)=alltrim(thisform.&txtname..value) &&将字符型数据存入数组ENDFORFOR m=7 TO 11 txtname="text"+alltrim(str(m)) txt(m)=thisform.&txtname..value &&将数值及日期型数据存入数组ENDFORtxt(12)=alltrim(thisform.text12.value)txt(13)=thisform.rainfunction1.numbertoname("供应商信息表","全称",;alltrim(thisform.combo1.displayvalue),0)handle1=fopen("系统设置.Rtt",2)IF handle1<0 handle2=fcreate("系统设置.Rtt") IF handle2>=0 fclose(handle2) ELSE messagebox("无法创建!请手工删除程序目录下[系统设置.Rtt]文件,; 然后再试一次!",16, "系统提示") ENDIF get(8)="9999" get(9)="1"ELSE FOR m=1 TO 9 get(m)=fgets(handle1) ENDFORENDIFfclose(handle1)IF this.butstyle=1 INSERT INTO 商品信息表 VALUES(txt(1),txt(2),lower(txt(3)),Txt(4),; txt(6),txt(5),txt(7),txt(8),txt(9),txt(10),txt(11),txt(13),txt(12)) INSERT INTO 库存信息表 (商品编号,库存上限,库存下限) ; VALUES(txt(1),val(alltrim(get(8))),val(alltrim(get(9))))ELSE UPDATE 商品信息表 SET 名称=txt(2),简称=lower(txt(3)),规格=txt(4),; 计量单位=txt(5),产地=txt(6),出厂日期=txt(7),; 保质期=txt(8),进价=txt(9),批发价=txt(10),零售价=txt(11),备注=txt(12),; 供应商编号=txt(13) WHERE 编号=txt(1)ENDIF FOR m=1 TO 6 &&清空文本框 textname="text"+alltrim(str(m)) thisform.&textname..value=""ENDFORthisform.text7.value={}thisform.text8.value={}thisform.text9.value=0thisform.text10.value=0thisform.text11.value=0thisform.text12.value=''thisform.combo1.displayvalue=''FOR m=2 TO 12 &&使文本框失效 textname="text"+alltrim(str(m)) thisform.&textname..enabled=.f.ENDFORthisform.combo1.enabled=.f.SELE 商品信息表thisform.reseethisform.command1.enabled=.t.thisform.grid1.readonly=.t.thisform.grid1.enabled=.t.thisform.locatebuttons1.enabled=.t.在Oftenbuttons1控件的_DeleteButtonClick方法程序下添加如下代码:DELETE FROM 库存信息表 WHERE 商品编号=alltrim(thisform.text1.value)SELE 库存信息表USE USE data\库存信息表 EXCL &&以独占方式打开库存信息表PACKUSEUSE data\库存信息表thisform.grid1.initthisform.command2.clickthisform.resee在Oftenbuttons1控件的_UndoButtonClick方法程序下添加如下代码:SELE 商品信息表FOR m=2 TO 12 &&使文本框失效 textname="text"+alltrim(str(m)) thisform.&textname..enabled=.f.ENDFORthisform.combo1.enabled=.f.GOTO 1thisform.reseethisform.command1.enabled=.t.thisform.grid1.readonly=.t.thisform.grid1.enabled=.t.thisform.locatebuttons1.enabled=.t.在Oftenbuttons1控件的_AddButtonClick方法程序下添加如下代码:PRIVATE bhFOR m=1 TO 6 &&清空文本框 textname="text"+alltrim(str(m)) thisform.&textname..value=""ENDFORthisform.text7.value={}thisform.text8.value={}thisform.text9.value=0thisform.text10.value=0thisform.text11.value=0thisform.text12.value=''thisform.combo1.displayvalue=''bh=""thisform.text1.value=bhFOR m=2 TO 12 textname="text"+alltrim(str(m)) thisform.&textname..enabled=.t.ENDFOR thisform.combo1.enabled=.t. thisform.text2.setfocus thisform.command1.enabled=.f. thisform.grid1.enabled=.f. thisform.locatebuttons1.enabled=.f.
VF进销存管理系统论文在Oftenbuttons1控件的_ChangeButtonClick事件下添加如下代码:FOR m=4 TO 12 textname="text"+alltrim(str(m)) thisform.&textname..enabled=.t.ENDFORthisform.combo1.enabled=.t.thisform.command1.enabled=.f.thisform.grid1.readonly=.f.thisform.grid1.enabled=.f.thisform.locatebuttons1.enabled=.f.在Oftenbuttons1控件的AreyouOK方法程序下添加如下代码:a=messagebox("确定要保存吗?",32+4,"系统提示")IF a=6DO CASE CASE empty(thisform.text2.value)=.t. messagebox("请添加商品名称!!",16, "系统提示") this.sure=.f. thisform.text2.setfocus CASE empty(thisform.text4.value)=.t. messagebox("请添加商品规格!",16, "系统提示") this.sure=.f. thisform.text4.setfocus CASE empty(thisform.text5.value)=.t. messagebox("请添加计量单位!",16, "系统提示") this.sure=.f. thisform.text5.setfocus CASE empty(thisform.combo1.displayvalue)=.t. messagebox("请选择供应商!",16, "系统提示") this.sure=.f. thisform.combo1.setfocus CASE empty(thisform.text9.value)=.t. messagebox("请添加商品进价!",16, "系统提示") this.sure=.f. thisform.text9.setfocus CASE empty(thisform.text10.value)=.t. messagebox("请添加商品批发价!",16, "系统提示") this.sure=.f. thisform.text10.setfocus CASE empty(thisform.text11.value)=.t. messagebox("请添加商品零售价!",16, "系统提示") this.sure=.f. thisform.text11.setfocus OTHERWISE cs=0 IF this.butstyle=1 SELECT * FROM 商品信息表 WHERE 名称 = alltrim(thisform.text2.value) ; INTO CURSOR lssp &&查询同名商品 IF reccount()<>0 thisform.text2.value=alltrim(thisform.text2.value)+; "("+alltrim(thisform.text4.value)+")["+; alltrim(thisform.text6.value)+"]" SELE lssp FOR m=1 TO reccount() SELE lssp GOTO m IF alltrim(thisform.text2.value)==alltrim(lssp.名称) messagebox("对不起!您输入的商品在数据表中已经存在!",16; ,"添加错误") thisform.text2.value="" thisform.text2.setfocus this.Sure=.f. RETURN ENDIF ENDFOR IF right(alltrim(lssp.名称),1)<>"]" UPDATE 商品信息表 SET 名称=alltrim(lssp.名称)+; "("+alltrim(lssp.规格)+")["+alltrim(lssp.产地)+"]" WHERE 编号=lssp.编号 ENDIF ENDIF this.sure=.t. ENDIF ENDCASEENDIF在表格控件Grid1的AfterRowColChange事件下添加如下代码:thisform.resee在Grid1控件的Init事件下添加如下代码:SELE 商品信息表this.setall("DynamicBackColor","iif(recno()%2=0,rgb(188,240,209),rgb(255,255,255))","Column")在“查询字段”组合框的Init事件下添加如下代码:PUBLIC mygg,jlhmygg=.f.jlh=1this.additem("编号")this.additem("名称")this.additem("简称")this.additem("规格")this.additem("计量单位")this.additem("产地")在“查询字段”组合框的InterActiveChange事件下添加如下代码:mygg=.f.在“查询条件”文本框的InterActivechange事件下添加如下代码:mygg=.f.在“查询”按钮的 Click 事件下添加如下代码:zd=alltrim(thisform.combo2.displayvalue) &&查询字段FOR m=1 TO 4 &&连接符号 optionmc="OPTION"+alltrim(str(m)) IF thisform.optiongroup1.&optionmc..value=1 fh=alltrim(thisform.optiongroup1.&optionmc..caption) exit ENDIFENDFORIF empty(thisform.combo2.displayvalue) OR empty(thisform.text13.value) RETURNENDIFIF fh="LIKE" tj=alltrim(thisform.text13.value)+"%" &&查询条件ELSE tj=alltrim(thisform.text13.value)ENDIFSELECT * FROM 商品信息表 WHERE &zd. &fh tj INTO CURSOR lssxb &&根据条件建立查询SELE 商品信息表IF mygg=.f. &&记录是否更改查询条件或字段的变量 LOCA FOR 编号=lssxb.编号 &&没有更改,重新查找ELSE &&如果并没有更改也就是说是继续查找 SELE lssxb IF eof()=.f. &&如果没到文件尾 SELE lssxb GOTO jlg &&记录当前记录号的变量 SKIP &&向下移动一条记录 jlh=recno() &&记录新的记录号 SELE 商品信息表 LOCA FOR 编号=lssxb.编号 &&用新的记录号在商品信息表中查找 ENDIFENDIFIF found()=.f. WAIT WINDOWS "没有查找到指定记录..." TIMEOUT 1 jlh=1 mygg=.f.ELSE thisform.resee thisform.grid1.setfocus mygg=.t.ENDIF
VF进销存管理系统论文(系统结构图+源代码)图7 入库管理模块运行结果1.表单设计(1)在“通用进销存管理系统”项目文件中添加一个表单,命名为Frm入库管理。(2)向表单内添加自制类控件Back、Label控件、Text控件、Combo控件、MSHFlexGrid控件、Container控件、Command控件、Container控件、Image控件、RainFunction类控件、FormIn类控件。(3)重要控件的属性设置如表所示。表7 重要控件及属性对象 属性 值Form1 AutoCenter .T.Form1 ShowWindows 2-作为顶层表单RainSupInput1 数据库 供应商信息表RainSupInput1 字段 全称RainSupInput2 数据库 LSSPXXBRainSupInput2 临时表名 LSRainSupInput2 字段 名称2.代码设计在表单的Into方法程序下添加如下代码:SELE lsthisform.text5.value=ls.规格thisform.text6.value=ls.产地thisform.text9.value=ls.计量单位thisform.text7.value=ls.出厂日期thisform.text8.value=ls.保质期thisform.text10.value=ls.进价thisform.text11.value=ls.批发价thisform.text12.value=ls.零售价IF thisform.msgrid.rows=2 thisform.combo1.enabled=.t.ENDIFFOR m=7 TO 13 textname="text"+alltrim(str(m)) thisform.&textname..enabled=.t.ENDFOR在表单的Init事件下添加如下代码:PUBLIC gys,sp,rzbhrzbh=thisform.rainfunction1.autonumber("入库日志","R")thisform.rainsupinput1.enabled=.f.thisform.rainsupinput2.enabled=.f.在表单的Unload事件下添加如下代码:IF file("lsspxxb.dbf")=.t. SELE lsspxxb USE DELE FILE lsspxxb.*ENDIF在“入库时间”文本框的ProgrammaticChange事件下添加如下代码:thisform.msgrid.textmatrix(thisform.msgrid.rows-1,2)=this.value在表格控件Msgrid的Init事件下添加如下代码:thisform.msgrid.cols=10thisform.msgrid.colwidth(0)=this.rowheight(0)thisform.msgrid.textmatrix(0,1)="编号"thisform.msgrid.textmatrix(0,2)="入库时间"thisform.msgrid.textmatrix(0,3)="供应商编号"thisform.msgrid.textmatrix(0,4)="商品编号"thisform.msgrid.textmatrix(0,5)="入库数量"thisform.msgrid.textmatrix(0,6)="付款方式"thisform.msgrid.textmatrix(0,7)="单价"thisform.msgrid.textmatrix(0,8)="金额"thisform.msgrid.textmatrix(0,9)="操作员"在“进货价格”文本框的ProgrammaticChange事件下添加如下代码:thisform.msgrid.textmatrix(thisform.msgrid.rows-1,7)=this.value在“进货价格”文本框的InterActiveChange事件下添加如下代码:thisform.msgrid.textmatrix(thisform.msgrid.rows-1,7)=this.value在“数量”文本框的GotFocus事件下添加如下代码:gg=alltrim(thisform.text5.value)cd=alltrim(thisform.text6.value)jldw=alltrim(thisform.text9.value)ccrq=thisform.text7.valuebzq=thisform.text8.valuejj=thisform.text10.valuepfj=thisform.text11.valuelsj=thisform.text12.valueUPDATE 商品信息表 SET 规格=gg,产地=cd,计量单位=jldw,出厂日期=ccrq,保质期=bzq,;进价=jj,批发价=pfj,零售价=lsj WHERE 编号=sp在“数量”文本框的KeyPress事件下添加如下代码:IF nkeycode=13 a=messagebox("还有其他进货商品吗?",32+4,"系统提示") IF a=6 thisform.msgrid.additem('') thisform.combo1.enabled=.f. thisform.rainfunction1.setall("Text",6,4,'Value',"") thisform.rainfunction1.setall("Text",8,7,"value",{}) thisform.rainfunction1.setall("Text",17,10,"value",0) thisform.text9.value="" thisform.rainfunction1.setall("Text",17,5,"enabled",.f.) thisform.msgrid.textmatrix(thisform.msgrid.rows-1,1)=rzbh thisform.text2.programmaticchange thisform.combo1.programmaticchange thisform.rainsupinput1.执行 thisform.rainsupinput2.value="" thisform.rainsupinput2.setfocus ELSE thisform.rainfunction1.setall("Text",17,4,"enabled",.f.) thisform.combo1.enabled=.f. thisform.rainsupinput2.enabled=.f. IF thisform.combo1.displayvalue="挂账" FOR m=1 TO thisform.msgrid.rows-1 thisform.text15.value=thisform.text15.value+; val(thisform.msgrid.textmatrix(m,8)) ENDFOR thisform.text16.value=0 thisform.command2.click ELSE thisform.text16.enabled=.t. FOR m=1 TO thisform.msgrid.rows-1 thisform.text15.value=thisform.text15.value+; val(thisform.msgrid.textmatrix(m,8)) ENDFOR ENDIF ENDIFENDIF在“数量”文本框的InterActiveChange事件下添加如下代码:ENDIFthisform.msgrid.textmatrix(thisform.msgrid.rows-1,5)=this.valuethisform.msgrid.textmatrix(thisform.msgrid.rows-1,8)=;thisform.text10.value*this.valuethisform.text14.value=thisform.msgrid.rows-1thisform.text18.value=thisform.text10.value*this.value
VF进销存管理系统论文在“合计金额”文本框的ProgrammaticChange事件下添加如下代码: thisform.text17.value=this.value在“实付金额”文本框的KeyPress事件下添加如下代码:IF nkeycode=13 thisform.command2.clickENDIF在“实付金额”文本框的InterActiveChange事件下添加如下代码:thisform.text17.value=thisform.text15.value-this.value在“实付金额”文本框的GotFocus事件下添加如下代码:thisform.text2.enabled=.t.在“付款方式”组合框的ProgrammaticChange事件下添加如下代码:this.interactivechange在“付款方式”组合框的InterActiveChange事件下添加如下代码:thisform.msgrid.textmatrix(thisform.msgrid.rows-1,6)=this.valueDO CASE CASE this.value="现金" thisform.label11.caption="实付金额" thisform.label12.caption='未付金额' CASE this.value="挂账" thisform.label11.caption="应付金额" thisform.label12.caption='未付金额' CASE this.value="预付" thisform.label11.caption="预付金额" thisform.label12.caption='未付金额' CASE this.value="支票" thisform.label11.caption="支票金额" thisform.label12.caption='未付金额'ENDCASE在“金额”文本框的InterActiveChange事件下添加如下代码:thisform.msgrid.textmatrix(thisform.msgrid.rows-1,5)=this.valuethisform.msgrid.textmatrix(thisform.msgrid.rows-1,8)=;thisform.text10.value*this.valuethisform.text14.value=thisform.msgrid.rows-1thisform.text15.value=thisform.text10.value*this.value在“金额”文本框的KeyPress事件下添加如下代码:IF nkeycode=13 a=messagebox("还有其他进货商品吗?",32+4,"系统提示") IF a=6 thisform.msgrid.additem('') thisform.rainfunction1.setall("Text",6,4,'Value',"") thisform.rainfunction1.setall("Text",8,7,"value",{}) thisform.rainfunction1.setall("Text",17,10,"value",0) thisform.text9.value="" thisform.rainfunction1.setall("Text",17,5,"enabled",.f.) thisform.text1.programmaticchange thisform.text2.programmaticchange thisform.rainsupinput1.执行 thisform.combo1.programmaticchange ELSE thisform.rainfunction1.setall("Text",17,4,"enabled",.f.) IF thisform.combo1.displayvalue<>"挂账" thisform.text16.enabled=.t. FOR m=1 TO thisform.msgrid.rows-1 thisform.text15.value=thisform.text15.value+; val(thisform.msgrid.textmatrix(0,8)) ENDFOR ENDIF ENDIFENDIF在“添加”按钮的Click事件下添加如下代码:thisform.text1.value=thisform.rainfunction1.autonumber("入库信息表","RK")thisform.text2.value= datetime()this.enabled=.f.thisform.command2.enabled=.t.thisform.rainsupinput1.enabled=.t.thisform.rainsupinput1.setfocusthisform.msgrid.textmatrix(thisform.msgrid.rows-1,1)=RZBH在“修改”按钮的Click事件下添加如下代码:DIME rk(9)a=messagebox("确定要保存操作吗?",32+4,"系统提示")IF a=6 FOR m=1 TO thisform.msgrid.rows-1 FOR n=1 TO 9 rk(n)=thisform.msgrid.textmatrix(m,n) &&将表格中的数据存入数组 ENDFOR INSERT INTO 入库日志 (编号,入库时间,供应商编号,商品编号,入库数量,; 付款方式,单价,金额,操作员)VALUES(rk(1),thisform.text2.value,rk(3),; rk(4),val(rk(5)),rk(6),val(rk(7)),val(rk(8)),rk(9)) UPDATE 库存信息表 SET 库存数量=库存数量+val(rk(5)) WHERE 商品编号=rk(4) ENDFOR **存入欠款** &&判断是否有未付金额。如果未付金额小于应付的千分之一,则程序忽略未付金额 IF alltrim(thisform.combo1.value)="现金" OR alltrim(thisform.combo1.value)="支票" IF thisform.text15.value-thisform.text16.value> thisform.text15.value*0.0001 a=messagebox("并没有付清应付款数,是否当做欠款保存?",32+4,"系统提示") IF a=6 bh=thisform.rainfunction1.autonumber("欠款信息表","QK") ddbh=thisform.text1.value khbh=thisform.rainfunction1.numbertoname("供应商信息表",; "全称",alltrim(thisform.rainsupinput1.value),0) yfje=thisform.text15.value sfje=thisform.text16.value wfje=thisform.text17.value INSERT INTO 欠款信息表 ; VALUES(bh,khbh,ddbh,yfje,sfje,wfje,date(),1,.f.,date()+20) ENDIF ENDIF ELSE bh=thisform.rainfunction1.autonumber("欠款信息表","QK") ddbh=thisform.text1.value khbh=thisform.rainfunction1.numbertoname("供应商信息表",; "全称",alltrim(thisform.rainsupinput1.value),0) yfje=thisform.text15.value sfje=thisform.text16.value wfje=thisform.text17.value INSERT INTO 欠款信息表 ; VALUES(bh,khbh,ddbh,yfje,sfje,wfje,date(),1,.f.,date()+20) ENDIF bh=thisform.text1.value sj=thisform.text2.value jkfs=thisform.combo1.displayvalue hjzl=thisform.text14.value hjje=thisform.text15.value DO CASE CASE jkfs="现金" OR jkfs="支票" yfje=0 sfje=thisform.text16.value wfje=hjje-sfje CASE jkfs="挂账" hjje=thisform.text17.value yfje=0 sfje=0 wfje=hjje CASE jkfs="预付" yfje=thisform.text16.value wfje=thisform.text17.value sfje=yfje ENDCASE INSERT INTO 入库信息表 (编号,入库时间,供应商编号,日志编号,结款方式,合计种类,; 合计金额,操作员,预付金额,实付金额,未付金额); VALUES(bh,sj,gys,rzbh,jkfs,hjzl,hjje,gly,yfje,sfje,wfje) thisform.command1.enabled=.t. thisform.command2.enabled=.f. thisform.text16.enabled=.f. &&将text1~text6的Value属性设置为空 thisform.rainfunction1.setall("TEXT",6,1,"value","") thisform.rainfunction1.setall("TEXT",8,7,"value",{}) thisform.rainfunction1.setall("TEXT",17,10,"value",0) thisform.text9.value="" thisform.combo1.value="" thisform.rainsupinput2.enabled=.f. thisform.rainsupinput2.value="" thisform.rainsupinput1.value="" thisform.text2.enabled=.f. thisform.msgrid.rows=2 FOR m=1 TO thisform.msgrid.cols-1 thisform.msgrid.textmatrix(1,m)="" ENDFORENDIF
VF进销存管理系统论文在Rainsupinput1控件的执行方法程序下添加如下代码:thisform.rainsupinput2.enabled=.t.thisform.rainsupinput2.setfocusgys=thisform.rainfunction1.numbertoname("供应商信息表","全称",;alltrim(this.value),0)thisform.msgrid.textmatrix(thisform.msgrid.rows-1,3)=gysSELECT * FROM 商品信息表 WHERE 供应商编号=gys INTO DBF lsspxxb在Rainsupinput2控件的执行方法程序下添加如下代码:thisform.intospbh=thisform.rainfunction1.numbertoname("商品信息表","名称",alltrim(this.value),0)thisform.Msgrid.textmatrix(thisform.msgrid.rows-1,4)=spbhthisform.rainsupinput1.enabled=.f. thisform.msgrid.textmatrix(0,9)=gly4.5 销售管理模块设计销售管理模块主要用于进行商品销售信息的录入。销售管理模块运行结果。如图8所示。图8 销售管理模块运行结果1.表单设计(1)在“通用进销存管理系统”项目文件中添加一个表单,命名为Frm销售管理。(2)向表单内添加自制类控件Back、Label控件、Text控件、Combo控件、RainSupInput类控件、MSHFlexGrid控件、Command控件、RainFunction类控件、FormIn类控件。(3)重要控件的属性设置如表8所示。表8 重要控件及属性对象 属性 值Form1 AutoCenter .T.Form1 ShowWindows 2-作为顶层表单RainSupInput1 数据库 商品信息表RainSupInput1 字段 名称2.代码设计在表单的 Init 事件下添加如下代码:PUBLIC khbh,back &&声明两个全局变量thisform.command2.enabled=.f. &&使保存按钮失效thisform.rainsupinput1.enabled=.f.在Combo2控件的KeyPress事件下添加如下代码:IF nKeyCode=13 SELECT * FROM 订单表 WHERE 编号 = this.value INTO CURSOR ls1 nb= reccount() FOR m=1 TO nb GOTO m SELECT * FROM 客户信息表 WHERE 编号=ls1.客户编号 INTO CURSOR lsb kh=lsb.全称 SELECT * FROM 商品信息表 WHERE 编号=ls1.商品编号 INTO CURSOR lsb sp=lsb.名称 SELE ls1 thisform.msgrid.additem("") thisform.msgrid.TextMatrix(m,1)=ls1.编号 thisform.msgrid.TextMatrix(m,2)=ls1.订货时间 thisform.msgrid.TextMatrix(m,3)=KH thisform.msgrid.TextMatrix(m,4)=SP thisform.msgrid.TextMatrix(m,5)=销售类型 thisform.msgrid.TextMatrix(m,6)=ls1.订货数量 thisform.msgrid.TextMatrix(m,7)=ls1.金额 ENDFOR thisform.msgrid.rows=thisform.msgrid.rows-1 thisform.combo3.enabled=.t. thisform.combo4.enabled=.t. FOR m=1 TO nb thisform.text11.value=thisform.text11.value+; val(thisform.msgrid.TextMatrix(m,7)) ENDFOR thisform.text12.value=nbENDIF在Msgrid控件的Init事件下添加如下代码:thisform.msgrid.cols=9thisform.msgrid.colwidth(0)=this.rowheight(0) thisform.msgrid.colwidth(1)=1500thisform.msgrid.colwidth(2)=1500thisform.msgrid.colwidth(3)=2200thisform.msgrid.colwidth(4)=2200thisform.msgrid.TextMatrix(0,1)="销售编号"thisform.msgrid.TextMatrix(0,2)="销售时间"thisform.msgrid.TextMatrix(0,3)="销售类型"thisform.msgrid.TextMatrix(0,4)="商品名称"thisform.msgrid.TextMatrix(0,5)="商品单价"thisform.msgrid.TextMatrix(0,6)="销售数量"thisform.msgrid.TextMatrix(0,7)="总计金额"thisform.msgrid.TextMatrix(0,8)="操作员"在“数量”文本框的KeyPress事件下添加如下代码:IF nkeycode=13 IF empty(this.value)=.f. a=messagebox("此客户是否购买其他商品?",32+4,"系统提示") IF a=6 thisform.msgrid.additem("") thisform.msgrid.TextMatrix(thisform.msgrid.rows-1,1)=; thisform.text1.value thisform.msgrid.TextMatrix(thisform.msgrid.rows-1,2)=; thisform.text2.value thisform.msgrid.TextMatrix(thisform.msgrid.rows-1,3)=; thisform.combo1.displayvalue thisform.rainsupinput1.value='' thisform.text4.value='' thisform.text5.value='' thisform.text6.value='' thisform.text7.value=0 thisform.text8.value=0 thisform.JE.setfocus ELSE thisform.rainsupinput1.enabled=.f. thisform.text8.enabled=.f. FOR m=1 TO thisform.msgrid.rows-1 thisform.text11.value=thisform.text11.value+; val(thisform.msgrid.TextMatrix(m,7)) ENDFOR thisform.text12.value=thisform.msgrid.rows-1 thisform.text13.enabled=.t. thisform.text14.value=thisform.text11.value ENDIF ELSE messagebox("销售数量不允许为空!",16,"系统提示") this.setfocus ENDIFENDIF在“数量”文本框的InterActiveChange事件下添加如下代码:bh=thisform.rainfunction1.numbertoname("商品信息表",;"名称",thisform.rainsupinput1.value,0)SELECT * FROM 库存信息表 WHERE 商品编号=BH INTO CURSOR lskckcxx=lskc.库存下限IF this.value>=thisform.text10.value-kcxx messagebox("库存数量已经低于库存下限!请马上进货!",64,"系统提示")ELSE thisform.text9.value=thisform.text7.value*this.value thisform.MSgrid.TextMatrix(thisform.msgrid.rows-1,6)=this.value thisform.MSgrid.TextMatrix(thisform.msgrid.rows-1,7)=thisform.text9.valueENDIF在“金额”文本框的InterActiveChange事件下添加如下代码:thisform.text10.value=thisform.text8.value*this.valuethisform.MSgrid.TextMatrix(thisform.msgrid.rows-1,6)=this.valuethisform.msgrid.TextMatrix(thisform.msgrid.rows-1,7)=thisform.text10.value
VF进销存管理系统论文(系统结构图+源代码)在Text1控件的ProgrammaticChange事件下添加如下代码:thisform.msgrid.TextMatrix(thisform.msgrid.rows-1,1)=this.value在Text2控件的ProgrammaticChange事件下添加如下代码:thisform.msgrid.TextMatrix(thisform.msgrid.rows-1,2)=this.value在“销售类型”组合框的KeyPress事件下添加如下代码:IF nkeycode=13 this.enabled=.f.ENDIF在“销售类型”组合框的InterActiveChange事件下添加如下代码:IF this.displayvalue="零售" FOR m=3 TO 10 IF m<>3 textname="text"+alltrim(str(m)) thisform.&textname..visible=.t. &&使文本框Text4~Text10都可见 ENDIF labname="Lab"+alltrim(str(m)) &&使标签lab3~lab10都可见 thisform.&laBname..visible=.t. ENDFOR thisform.rainsupinput1.visible=.t. &&使“销售类型”有效果并可见 thisform.rainsupinput1.enabled=.t. thisform.text8.enabled=.t. thisform.label6.visible=.f. thisform.combo2.visible=.f. thisform.msgrid.TextMatrix(thisform.msgrid.rows-1,3)=this.value &&客户名称 thisform.msgrid.top=177 thisform.back1.height=405 thisform.back1.container3.height=362 FOR m=11 TO 14 &&设置文本框Text11~Text14和标签Label11到Label14的位置 lablename="label"+alltrim(str(m)) textname="text"+alltrim(str(m)) IF m%2=0 &&如果是Text2或Text4 thisform.&Lablename..top=332 thisform.&textname..top=328 ELSE thisform.&Lablename..top=308 thisform.&textname..top=303 ENDIF ENDFOR FOR m=1 TO 3 commandname="command"+alltrim(str(m)) thisform.&commandname..top=359 ENDFOR thisform.container1.top=357 thisform.height=414 thisform.msgrid.cols=9 &&设置表格中的列 thisform.msgrid.colwidth(0)=thisform.msgrid.rowheight(0) thisform.msgrid.colwidth(1)=1500 thisform.msgrid.colwidth(2)=1500 thisform.msgrid.colwidth(3)=2200 thisform.msgrid.colwidth(4)=2200 thisform.msgrid.TextMatrix(0,1)="销售编号" &&设置表头 thisform.msgrid.TextMatrix(0,2)="销售时间" thisform.msgrid.TextMatrix(0,3)="销售类型" thisform.msgrid.TextMatrix(0,4)="商品名称" thisform.msgrid.TextMatrix(0,5)="商品单价" thisform.msgrid.TextMatrix(0,6)="销售数量" thisform.msgrid.TextMatrix(0,7)="总计金额" thisform.msgrid.TextMatrix(0,8)="操作员"ELSE FOR m=3 TO 10 IF m<>3 textname="text"+alltrim(str(m)) &&使Text4~Text10都不可见 thisform.&textname..visible=.f. ENDIF labname="Lab"+alltrim(str(m)) &&使Lab3~lab10都不可见 thisform.&laBname..visible=.f. ENDFOR FOR m=11 TO 14 lablename="label"+alltrim(str(m)) textname="text"+alltrim(str(m)) IF m%2=0 &&设置Text12和Text14的位置 thisform.&Lablename..top=287 thisform.&textname..top=282 ELSE thisform.&Lablename..top=263 thisform.&textname..top=257 ENDIF ENDFOR FOR m=1 TO 3 commandname="command"+alltrim(str(m)) thisform.&commandname..top=314 ENDFOR thisform.container1.top=312 thisform.back1.Height=372 thisform.back1.container3.height=321 thisform.height=372 thisform.rainsupinput1.visible=.f. thisform.combo2.enabled=.t. thisform.msgrid.TextMatrix(thisform.msgrid.rows-1,3)=this.value thisform.label6.visible=.t. thisform.combo2.visible=.t. thisform.msgrid.top=101 SELECT 编号 FROM 订单表 GROUP BY 编号 WHERE 结款否<>.t.INTO CURSOR ls1 thisform.combo2.rowsource="ls1" thisform.msgrid.cols=8 thisform.msgrid.colwidth(0)=thisform.msgrid.rowheight(0) thisform.msgrid.colwidth(1)=1500 thisform.msgrid.colwidth(2)=1500 thisform.msgrid.colwidth(3)=2200 thisform.msgrid.colwidth(4)=2200 thisform.msgrid.TextMatrix(0,1)="订单编号" thisform.msgrid.TextMatrix(0,2)="订货时间" thisform.msgrid.TextMatrix(0,3)="客户名称" thisform.msgrid.TextMatrix(0,4)="商品名称" thisform.msgrid.TextMatrix(0,5)="销售类型" thisform.msgrid.TextMatrix(0,6)="订货数量" thisform.msgrid.TextMatrix(0,7)="金额"ENDIFthisform.text11.value=0.00thisform.text12.value=0thisform.text13.value=0.00thisform.text14.value=0.00thisform.text8.enabled=.f.在Combo4控件的KeyPress事件下添加如下代码:IF nkeycode=13 OR nkeycode=32 FOR m=2 TO 4 comname="Combo"+alltrim(str(m)) thisform.&comname..enabled=.f. ENDFORENDIF在Combo4控件的Init事件下添加如下代码:FOR m=1 TO 0.1 STEP -0.05 this.additem(alltrim(str(m,3,2)))ENDFORthis.listitemid=1在“折扣”组合框的InterActiveChange事件下添加如下代码:thisform.text11.value=thisform.je.value*val(this.value)在“结款方式”组合框的InterActiveChange事件下添加如下代码:DO CASE CASE this.value="现金" thisform.label13.caption="实付金额" thisform.label14.caption='未付金额' CASE this.value="挂账" thisform.label13.caption="应付金额" thisform.label14.caption='未付金额' CASE this.value="预付" thisform.label13.caption="预付金额" thisform.label14.caption='未付金额' CASE this.value="支票" thisform.label13.caption="支票金额" thisform.label14.caption='未付金额'ENDCASEthisform.text13.enabled=.t.在“结款方式”组合框的LostFocus事件下添加如下代码:thisform.je.value=thisform.text11.valueIF this.value="挂账" thisform.text13.value=0 thisform.text14.value=thisform.text11.value FOR m=2 TO 4 comname="Combo"+alltrim(str(m)) thisform.&comname..enabled=.f. ENDFOR thisform.command2.clickENDIF在“添加”按钮的Click事件下添加如下代码:bh=thisform.rainfunction1.autonumber("销售信息表","XS") &&产生自动编号thisform.text1.value=bh thisform.text2.value= datetime()this.enabled=.f. &&使保存按钮有效thisform.command2.enabled=.f. &&使添加按钮失效thisform.combo1.enabled=.t.thisform.combo1.setfocus
VF进销存管理系统论文(系统结构图+源代码)
在“保存”按钮的Click事件下添加如下代码:STORE 0 TO yfje,sfje,wfjea=messagebox("确定要保存信息吗?",32+4,"系统提示")IF a=6 ON ERROR bh=thisform.rainfunction1.autonumber("零售信息表","LS") &&产生自动编号 sj=thisform.text2.value IF thisform.combo1.displayvalue="零售" FOR m=1 TO thisform.msgrid.rows-1 SELECT * FROM 商品信息表 WHERE ; 名称=alltrim(thisform.msgrid.TextMatrix(m,4)) INTO CURSOR ls1 spbh=ls1.编号 &&取出商品编号 sl=val(thisform.msgrid.TextMatrix(m,6)) je=val(thisform.msgrid.TextMatrix(m,7)) lx=thisform.combo1.displayvalue &&存入临时销售表中 INSERT INTO 零售信息表 (编号,时间,商品编号,数量,金额); VALUES (bh,sj,spbh,sl,je) &&更新库存表 UPDATE 库存信息表 SET 库存信息表.库存数量=库存信息表.库存数量-sl; WHERE 库存信息表.商品编号=spbh ENDFOR ddh=bh &&订单号为零售编号 fkfs="现金" zk=1 ELSE **存入欠款** &&判断是否有未付金额。如果未付金额小于应付的千分之一,则程序忽略未付金额 IF alltrim(thisform.combo3.value)="现金" OR ; alltrim(thisform.combo3.value)="支票" IF thisform.text11.value-thisform.text13.value> ; thisform.text11.value*0.0001 a=messagebox("客户并没有付清应结款数!; 是否将未付清的款数作为欠款保存?",32+4,"系统提示") IF a=6 bh=thisform.rainfunction1.autonumber("欠款信息表","QK") SELECT * FROM 订单表 WHERE 编号; =alltrim(thisform.combo2.displayvalue) INTO CURSOR lsddb khbh=lsddb.客户编号 ddbh=alltrim(thisform.text1.value) yfje=thisform.text11.value sfje=thisform.text13.value wfje=thisform.text14.value INSERT INTO 欠款信息表 VALUES(; bh,khbh,ddbh,yfje,sfje,wfje,date(),0,.f.,date()+20) ENDIF ENDIF ELSE bh=thisform.rainfunction1.autonumber("欠款信息表","QK") SELECT * FROM 订单表 WHERE 编号=; alltrim(thisform.combo2.displayvalue) INTO CURSOR lsddb khbh=lsddb.客户编号 ddbh=alltrim(thisform.text1.value) yfje=thisform.text11.value wfje=thisform.text14.value INSERT INTO 欠款信息表 ; VALUES(bh,khbh,ddbh,yfje,sfje,wfje,date(),0,.f.,date()+20) ENDIF **更改库存** sj=thisform.text2.value ddh=alltrim(thisform.combo2.displayvalue) fkfs=alltrim(thisform.combo3.displayvalue) zk=val(thisform.combo4.displayvalue) FOR m=1 TO thisform.msgrid.rows-1 SELECT * FROM 商品信息表 WHERE ; 名称=alltrim(thisform.msgrid.TextMatrix(m,4)) INTO CURSOR ls1 spbh=ls1.编号 &&取出商品编号 &&更新库存表 sl=val(thisform.msgrid.TextMatrix(m,6)) UPDATE 库存信息表 SET 库存信息表.库存数量=库存信息表.库存数量-sl; WHERE 库存信息表.商品编号=SPBH ENDFOR UPDATE 订单表 SET 结款否=.t. WHERE 编号=ddh ENDIF *存入销售信息表 ph=thisform.text1.value lx=thisform.combo1.value hjpz=thisform.text12.value hjje=thisform.text11.value yfje=hjje*zk sfje=thisform.text13.value wfje=yfje-sfje INSERT INTO 销售信息表 (编号,时间,销售类型,订单号,合计品种,合计金额,; 付款方式,折扣,应付金额,实付金额,未付金额,操作员); VALUES(ph,sj,lx,ddh,hjpz,hjje,fkfs,zk,yfje,sfje,wfje,gly) FOR m=1 TO 6 IF m<>3 textname="text"+alltrim(str(m)) thisform.&textname..value="" ENDIF ENDFOR thisform.rainsupinput1.value="" FOR m=8 TO 14 textname="text"+alltrim(str(m)) thisform.&textname..value=0 ENDFOR thisform.combo1.displayvalue='' thisform.combo2.rowsource="" thisform.combo2.displayvalue="" thisform.combo3.displayvalue='' thisform.combo4.displayvalue="1.0" thisform.text13.enabled=.f. thisform.command2.enabled=.f. &&保存按钮失效 thisform.command1.enabled=.t. &&添加按钮有效 thisform.msgrid.rows=2 *清空表格 FOR m=1 TO thisform.msgrid.cols-1 thisform.msgrid.TextMatrix(1,m)="" ENDFORENDIF在“实付金额”文本框的InterActiveChange事件下添加如下代码:thisform.text14.value=thisform.text11.value-this.value在“实付金额”文本框的KeyPress事件下添加如下代码:IF nkeycode=13 IF thisform.combo1.displayvalue="零售" IF thisform.text11.value-thisform.text13.value>thisform.text11.value/1000 messagebox("此客户并没有付清货款!",48,"系统提示") ELSE thisform.command2.click ENDIF ELSE thisform.command2.clickthisform.text7.value=ls1.零售价thisform.msgrid.TextMatrix(thisform.msgrid.rows-1,5)=thisform.text7.valuethisform.text8.setfocusSELECT * FROM 库存信息表 WHERE 商品编号= ls1.编号 INTO CURSOR lskcthisform.text10.value=lskc.库存数量thisform.text8.enabled=.t.thisform.msgrid.TextMatrix(thisform.msgrid.rows-1,8)=gly
VF进销存管理系统论文(系统结构图+源代码)图9 库存盘点模块运行结果1.表单设计(1)在“通用进销存管理系统”项目文件中添加一个表单,命名为Frm库存盘点。(2)向表单内添加自制类控件Back、Label控件、Text控件、Combo控件、MSHFlexGrid控件、Command控件、Container控件、添加Image控件、RainFunction类控件和FormIn类控件。(3)重要控件的属性设置如表9所示。表9 重要控件及属性对象 属性 值Form1 AutoCenter .T.Form1 ShowWindows 2-作为顶层表单2.代码设计在表单的Unload事件下添加如下代码:CLOSE ALL DATABASEDELE FILE lsb.*在表单的Init事件下添加如下代码:PUBLIC bh在表格控件的KeyPress事件下添加如下代码:IF keyascii=13 thisform.text4.setfocusENDIF在表格控件的RowColChange事件下添加如下代码:FOR m=0 TO thisform.msgrid.rows-1 thisform.msgrid.textmatrix(m,0)=""ENDFORmycol=thisform.msgrid.colthisform.msgrid.textmatrix(thisform.msgrid.row,0)="F"thisform.msgrid.col=0thisform.msgrid.CellFontName="WingDings"thisform.msgrid.CellFontSize=15thisform.msgrid.cellforecolor=rgb(255,0,0)thisform.msgrid.col=mycolthisform.text2.value=val(thisform.msgrid.textmatrix(this.Row,7))thisform.text5.value=val(thisform.msgrid.textmatrix(this.RoW,8))thisform.text4.enabled=.t.SELECT sum(损溢数量) AS 损溢数量 FROM 报损报溢表 ;WHERE 商品编号=alltrim(this.textmatrix(this.row,1)) AND 盘点否=.f. INTO CURSOR lssybthisform.text3.value=lssyb.损溢数量在表格控件的Init事件下添加如下代码:thisform.msgrid.cols=9thisform.msgrid.colwidth(0)=500thisform.msgrid.colwidth(1)=1500thisform.msgrid.colwidth(2)=1500thisform.msgrid.colwidth(3)=2200thisform.msgrid.colwidth(4)=2200thisform.msgrid.textmatrix(0,1)="编号"thisform.msgrid.textmatrix(0,2)="名称"thisform.msgrid.textmatrix(0,3)="计量单位"thisform.msgrid.textmatrix(0,4)="出厂日期"thisform.msgrid.textmatrix(0,5)="保质期"thisform.msgrid.textmatrix(0,6)="进价"thisform.msgrid.textmatrix(0,7)="库存数量"thisform.msgrid.textmatrix(0,8)="库存金额"在“查询字段”组合框的KeyPress事件下添加如下代码:IF nKeyCode=13 AND this.displayvalue="全部" thisform.command1.clickENDIF在“查询字段”组合框的InterActiveChange事件下添加如下代码:IF this.value<>"全部" thisform.text1.enabled=.t.ELSE thisform.text1.enabled=.f. SELE 商品信息表 GO TOP thisform.msgrid.rows=2 IF reccount()<>0 FOR m=1 TO reccount() SELE 商品信息表 GOTO m thisform.msgrid.additem("") thisform.msgrid.textmatrix(m,1)=商品信息表.编号 thisform.msgrid.textmatrix(m,2)=商品信息表.名称 thisform.msgrid.textmatrix(m,3)=商品信息表.计量单位 IF empty(商品信息表.出厂日期)=.f. AND empty(商品信息表.保质期)=.f. thisform.msgrid.textmatrix(m,4)=商品信息表.出厂日期 thisform.msgrid.textmatrix(m,5)=商品信息表.保质期 ENDIF thisform.msgrid.textmatrix(m,6)=商品信息表.进价 SELECT * FROM 库存信息表 WHERE 商品编号=商品信息表.编号 ; INTO CURSOR lskc thisform.msgrid.textmatrix(m,7)=lskc.库存数量 thisform.msgrid.textmatrix(m,8)=lskc.库存数量*商品信息表.进价 ENDFOR ENDIF thisform.msgrid.rows=thisform.msgrid.rows-1ENDIF在“条件”文本框的InterActiveChange事件下添加如下代码:thisform.command1.click在“盘点数量”文本框的KeyPress事件下添加如下代码:IF nkeycode=13 thisform.command2.setfocusENDIF在“查询”按钮的Click事件下添加如下代码:IF empty(thisform.text1.value)=.f. DO CASE CASE thisform.combo1.displayvalue="全部" SELECT * FROM 商品信息表 INTO DBF lsb CASE thisform.combo1.displayvalue="供应商" tj=alltrim(thisform.text1.value)+"%" IF asc(left(alltrim(thisform.text1.value),1))>= asc("1") AND ; asc(left(alltrim(thisform.text1.value),1))<= asc("9") OR; asc(left(alltrim(thisform.text1.value),1))>= asc("a") AND ; asc(left(alltrim(thisform.text1.value),1))<= asc("z") SELECT * FROM 供应商信息表 WHERE 简称 LIKE TJ INTO CURSOR lssp ELSE SELECT * FROM 供应商信息表 WHERE 全称 LIKE TJ INTO CURSOR lssp ENDIF IF reccount()=1 thisform.text1.value=lssp.全称 ENDIF bh=lssp.编号 SELECT * FROM 商品信息表 WHERE 供应商编号=bh INTO DBF lsb OTHERWISE zd=alltrim(thisform.combo1.displayvalue) tj=alltrim(thisform.text1.value)+"%" SELECT * FROM 商品信息表 WHERE &zd. LIKE tj INTO DBF lsb ENDCASE thisform.msgrid.rows=2 FOR m=1 TO thisform.msgrid.cols-1 thisform.msgrid.textmatrix(1,m)="" ENDFOR FOR m=1 TO reccount() SELE lsb GOTO m thisform.msgrid.additem("") thisform.msgrid.textmatrix(m,1)=lsb.编号 thisform.msgrid.textmatrix(m,2)=lsb.名称 thisform.msgrid.textmatrix(m,3)=lsb.计量单位 IF empty(lsb.出厂日期)=.f. AND empty(lsb.保质期)=.f. thisform.msgrid.textmatrix(m,4)=lsb.出厂日期 thisform.msgrid.textmatrix(m,5)=lsb.保质期 ENDIF thisform.msgrid.textmatrix(m,6)=lsb.进价 SELECT * FROM 库存信息表 WHERE 商品编号=lsb.编号 INTO CURSOR lskc thisform.msgrid.textmatrix(m,7)=lskc.库存数量 thisform.msgrid.textmatrix(m,8)=lskc.库存数量*lsb.进价 ENDFOR IF thisform.msgrid.rows>2 thisform.msgrid.rows=thisform.msgrid.rows-1 ENDIFENDIF
VF进销存管理系统论文(系统结构图+源代码)
在“盘点”按钮的Click事件下添加如下代码:IF empty(thisform.text4.value)=.f. sp=alltrim(thisform.msgrid.textmatrix(thisform.msgrid.row,2)) spbh=alltrim(thisform.msgrid.textmatrix(thisform.msgrid.row,1)) jg=val(thisform.msgrid.textmatrix(thisform.msgrid.row,6)) a=messagebox("确定要对商品 [ "+SP+" ] 进行盘点吗?",32+4,"系统提示") IF a=6 bysl=thisform.text2.value-thisform.text4.value &&算出盘点数量与库存数量的差 sl=thisform.text4.value UPDATE 库存信息表 SET 库存数量=sl WHERE 商品编号=spbh IF thisform.text3.value<>bysl &&查看已记载的损溢数量与应该报损数量是否相同 mynum=thisform.rainfunction1.autonumber("报损报溢表","SY") &&生成编号 je=jg*bysl INSERT INTO 报损报溢表 (编号,商品编号,损溢数量,盘点否,日期,金额,备注); VALUES(mynum,spbh,bysl,.t.,date(),je,"盘点") &&在报损报溢表中插入记录 UPDATE 报损报溢表 SET 盘点否=.t. WHERE 盘点否=.f. ENDIF thisform.msgrid.textmatrix(thisform.msgrid.row,3) thisform.text4.enabled=.f. thisform.text3.value=bysl thisform.msgrid.textmatrix(thisform.msgrid.row,7)=thisform.text4.value thisform.msgrid.textmatrix(thisform.msgrid.row,8)=je*bysl messagebox("对商品 [ "+SP+" ] 的盘点工作已经完成!",48,"系统提示") thisform.combo1.setfocus ENDIFELSE messagebox("盘点数量不能为空!",16,"系统提示")ENDIF 附录A 参考文献1.《Visual Basic精彩编程200例》机械工业出版社 赛奎春、高春艳等2003年1月 2.《Visual Basic数据库开发实例解析》机械工业出版社 刘志铭、高春艳等2003年8月 3.《Visual FoxPro数据库开发实例解析》机械工业出版社 王晶莹、王国辉等2003年9月 4.《Power Builder数据库开发实例解析》机械工业出版社 华传铭、张振坤等2003年9月 5.《Delphi数据库开发实例解析》机械工业出版社 赛奎春、郑骁鹏等2004年2月 6.《PowerBuilder 精彩编程200例》机械工业出版社 张振坤、李文立等 2004年9月7.《Visual FoxPro 精彩编程200例》机械工业出版社 王国辉、董韶华等2004年9月8.《ASP数据库开发实例解析》机械工业出版社 李严、于亚芳、王国辉 2004年12月9.《Delphi工程应用与项目实践》机械工业出版社 宋坤、赵智勇等2005年1月 10.《Visual Basic工程应用与项目实践》机械工业出版社 高春艳、李俊民等 2005年1月 11.《Visual C++工程应用与项目实践》机械工业出版社 张雨、阮伟良等 2005年1月12.《JSP工程应用与项目实践》机械工业出版社 陈威、白伟明、李楠2005年2月13.《ASP工程应用与项目实践》机械工业出版社 王国辉、牛强、李南南2005年4月14.《Visual Basic 信息系统开发实例精选》机械工业出版社 高春艳、李俊民、张耀庭等 2005年7月15.《ASP 信息系统开发实例精选》机械工业出版社 王国辉、牛强、李南南等 2005年7月 16.《Delphi 信息系统开发实例精选》机械工业出版社 宋坤、赵智勇、刘强等2005年7月 17.《Visual foxpro数据库开发关键技术与实例应用》人民邮电出版社 周桓、张雨、王国辉2004年5月18.《Power Builder数据库开发关键技术与实例应用》人民邮电出版社 刘志铭、张振坤、冯文萃 2004年5月19.《Delphi数据库开发关键技术与实例应用》人民邮电出版社 赛奎春、陈紫鸿、宋昆2004年5月20.《Visual basic数据库开发关键技术与实例应用》人民邮电出版社 高春艳、李艳2004年5月21.《Visual C++ 管理信息系统完整项目实例剖析》人民邮电出版社 明日科技2005年7月 22.《Visual Basic 管理信息系统完整项目实例剖析》人民邮电出版社 明日科技2005年7月 23.《PowerBuilder 管理信息系统完整项目实例剖析》人民邮电出版社 明日科技 2005年7月 24.《Visual FoxPro管理信息系统完整项目实例剖析》人民邮电出版社 明日科技2005年7月 25.《SQL Server数据库开发实例解析》机械工业出版社 宋昆、李严等2006年1月26.《Access数据库开发实例解析》机械工业出版社 李俊民、高春燕等2006年1月27.《Visual Basic数据库系统开发完全手册》人民邮电出版社 明日科技王春才、高春艳、李俊民 2006年3月28.《Visual C++ 数据库系统开发完全手册》人民邮电出版社 明日科技 王端、于速、张雨2006年3月29.《Delphi数据库系统开发完全手册》人民邮电出版社 明日科技 宋坤、邹天思2006年3月30.《JSP数据库系统开发完全手册》人民邮电出版社 明日科技 王国辉、李文立、杨亮2006年3月31.《Visual Basic数据库系统开发案例精选》人民邮电出版社 明日科技 高春艳、李俊民、刘彬彬 2006年5月32.《Delphi 数据库系统开发案例精选》人民邮电出版社 明日科技 李文立、刘强、梁冰2006年5月33.《ASP数据库系统开发案例精选》人民邮电出版社 明日科技 孙明丽、邹天思、盖天宇2006年5月34.《JSP数据库系统开发案例精选》人民邮电出版社 明日科技 王国辉、王易
VF进销存管理系统论文(系统结构图+源代码)
附录B 数据表 报损报溢表报损报溢表用来存储报损报溢商品的相关信息。报损报溢表的表结构如表10所示。表10 报损报溢表字段名 数据类型 长度 索引编号 字符型 7 升序商品编号 字符型 7 损溢数量 整型 4 盘点否 逻辑型 1 备注 备注型 4 日期 日期型 8 金额 数值型 12 操作员信息表操作员信息表用来保存操作员的基本信息。操作员信息表的结构如表11所示。表11 操作员信息表字段名 数据类型 长度 索引编号 字符型 7 升序用户名 字符型 20 密码 字符型 12 头像 整型 4 员工编号 字符型 7 备注 备注型 4 订单表订单表用来保存订单信息。订单表结构如表12所示。表12 订单表字段名 数据类型 长度 索引编号 字符型 7 升序订货时间 日期时间型 8 客户编号 字符型 7 商品编号 字符型 7 销售类型 字符型 4 订货数量 整型 4 金额 数值型 12 结款否 逻辑型 1 操作员 字符型 10 供应商信息表供应商信息表用来保存供应商的基本信息。供应商信息表的结构如表13所示。表13 供应商信息表字段名 数据类型 长度 索引编号 字符型 7 升序全称 字符型 30 简称 字符型 15 地址 字符型 40 所属地区 字符型 20 邮编 字符型 7 电话 字符型 13 传真 字符型 13 联系人 字符型 8 联系人电话 字符型 13 开户银行 字符型 20 银行帐户 字符型 20 纳税人 字符型 8 电子邮箱 字符型 30 备注 备注型 4 供应商应收应付款结转表供应商应收应付款结转表用来存储供应商应收应付款结转的信息记录。供应商应收应付款结转表的结构如表14所示。表14 供应商应收应付款结转表字段名 数据类型 长度 索引编号 字符型 7 供应商编号 字符型 7 上月应收应付款 数值型 12 本月应收 数值型 12 本月应付 数值型 12 本月应收应付 数值型 12 结转日期 日期型 8 操作员 字符型 20 进销存结转表进销存结转表用来保存进销存结转的有关信息。进销存结转表的结构如表15所示。表15 进销存结转表字段名 数据类型 长度 索引编号 字符型 7 升序商品编号 字符型 7 转结日期 日期型 8 上月库存 数值型 10 本月入库 数值型 10 入库退货 数值型 10 本月销售 数值型 10 销售退货 数值型 10 本月库存 数值型 20 操作员 字符型 20 客户信息表客户信息表用来保存客户有关详细信息。客户信息表的结构如表16所示。表16 客户信息表字段名 数据类型 长度 索引编号 字符型 7 升序全称 字符型 30 简称 字符型 15 地址 字符型 40 所属地区 字符型 20 邮编 字符型 7 电话 字符型 13 传真 字符型 13 联系人 字符型 8 联系人电话 字符型 13 开户银行 字符型 20 银行帐户 字符型 20 纳税人 字符型 8 电子邮箱 字符型 30 备注 备注型 4 客户应收应付款结转表客户应收应付款结转表用来保存客户应收应付款有关详细信息。客户应收应付款结转表的结构如表17所示。表17 客户应收应付款结转表字段名 数据类型 长度 索引编号 字符型 7 客户编号 字符型 7 上月应收应付款 数值型 12 本月应收 数值型 12 本月应付 数值型 12 本月应收应付 数值型 12 结转日期 日期型 8 操作员 字符型 20 库存信息表库存信息表用来存储商品库存数量及相关信息。库存信息表的结构如表18所示。表18 库存信息表字段名 数据类型 长度 索引商品编号 字符型 7 升序库存数量 数值型 15 库存上限 数值型 12 库存下限 数值型 12 备注 逻辑型 1 零售信息表零售信息表用来存储商品零售数量及相关信息。零售信息表的结构如表19所示。表19 零售信息表字段名 数据类型 长度 索引编号 字符型 7 升序时间 日期时间型 8 商品编号 字符型 7 数量 整型 4 金额 数值型 12 欠款信息表欠款信息表用来存储往来单位欠款的有关信息。欠款信息表的结构如表20所示。表20 欠款信息表字段名 数据类型 长度 索引编号 字符型 7 升序往来编号 字符型 7 订单号 字符型 7 应付金额 数值型 12 实付金额 数值型 12 未付金额 数值型 12 欠款日期 日期型 8 往来关系 数值型 1 偿还否 逻辑型 1 预警期限 日期型 8 若图片无法显示请联系QQ3710167,VF进销存管理系统论文免费,转发请注明源于www.lwfree.cn编号 字符型 7 升序时间 日期时间型 8 销售类型 字符型 4 订单号 字符型 7 合计品种 整型 4 合计金额 数值型 12 付款方式 字符型 4 折扣 数值型 3 应付金额 数值型 12 实付金额 数值型 12 未付金额 数值型 12 操作员 字符型 10 附录C 文件架构主文件架构如图10所示。