从这一课开始,我们来编一个库房管理软件。
一、建立数据库
1、新建数据库kfgl,保存到d:\demo\data目录下。
2、在kfgl数据库中新建表systen(.dbf),五个字段:fzr、bgy、jhy、cly、mima,其标题分别为:负责人、保管员、计划员、材料员、密码。(图5-1)

可以在其‘输入掩码’文本框内输入其掩码,其作用是:在你浏览此表时只显示掩码,而不显示其内容。例如:你的密码是“wyc”,你输入掩码为“ok”,在你浏览表时,显示密码为“ok”,可以起到一定的保密作用,而在程序中调用表显示其内容时,不显示掩码。
3、新建表main.dbf: ckbh c(10), rq d(8),qcmc c(16),ggxh c(20),lb c(6),dw c(4), dj n(8,2),pzbh c(10),rksl n(8,2),rkje n(10,2), cksl n(8,2), ckje n(10,2),gcmc c(30),bz c(6),cly c(6),bgy c(6),jhy c(6),llr c(6),fzr c(6),lh c(6),yt c(20),qu c(2),jia c(2),hao c(2),ku c(2)。其标题分别为:出库编号,日期,器材名称,规格型号,类别,单位,单价,凭证编号,入库数量,入库金额,出库数量,出库金额,工程名称,班组,材料员,保管员,计划员,领料人,负责人,料号,用途,区,架,号,库。说明:c-字符型;d-日期型;n-数值型,括号内为字节长度,逗号后面的数值为几位小数。
4、新建表grgjk.dbf:  ckbh c(10), rq d(8),qcmc c(16),ggxh c(20),lb c(6),dw c(4), dj n(8,2), cksl n(8,2), ckje n(10,2),bz c(6),jhy c(6),llr c(6)。其标题分别为:出库编号,日期,器材名称,规格型号,类别,单位,单价,出库数量,出库金额,班组,计划员,领料人。
二、主程序(替换第二课讲的主程序)
set talk off    &&关闭对话模式
set safe off
set stat off  
set dele on     &&不处理已删除的记录
set cent on
set date to ansi
close all
RELEASE WINDOW 常用   &&关闭常用工具栏
if mod(day(date()),2)=0  &&偶数日期
_SCREEN.backcolor=rgb(80,180,150)  &&窗口背景颜色
MODIFY WINDOW SCREEN TITLE "  库房管理应用软件 ver 2.1           为齐;
鲁石化检修公司机泵车间编制                  今天是:"+dtoc(date())+"  "+cdow(date())
else  &&奇数日期
_SCREEN.backcolor=rgb(80,150,180)  &&窗口背景颜色
MODIFY WINDOW SCREEN TITLE "  库房管理应用软件 ver 2.1            ;
    软件编制者:王永成                      今天是:"+dtoc(date())+"  "+cdow(date())
endif
ZOOM WINDOW SCREEN MAX   &&主窗口最大化
_SCREEN.controlbox=.f.   &&去掉主窗口控制按钮
deactivate window "项目管理器"   &&关闭项目管理器
mypath=left(sys(16),rat("\",sys(16)))   &&确定程序所在的位置
set defa to (mypath)  &&设置当前路径
set path to data;form;pic   &&指明路径
open database kfgl  &&打开数据库
do form logo   &&运行表单logo
read events
quit
三、主菜单
操作(\——器材入库  命令:do form rkd
——器材出库  命令:do form ckd
——\-
——退出      命令:Clea event
编辑(\——编辑浏览出入库单  命令:do form llxg
——浏览个人工具卡    命令:do form grgj
——修改个人工具卡    命令:do form grgjk
——\-
——基本设置          命令:do form systen
游戏(\——猜数游戏       命令:do form csyx
——身体状态测试   命令:do form stcs
——\-
——心灵感应       命令:do form xlgy
退出(\四、建立工具栏
1、在‘项目管理器’中选‘类库’,按‘新建’按钮,出现新建类对话框。
2、类名输入‘kuf’,派生于选择‘toolbar’,存储于:‘D:\demo\form\kuf.vcx',按‘确定’按钮,出现类设计器。
3、跟建立表单一样,如图5-2,

我们建立8个命令按钮,其‘tooltiptext’分别为:器材入库,器材出库,修改,浏览,查找器材,身体状态测试,猜数游戏,退出。给按钮加上图片、文字(例如:‘猜’字)。在各自的‘click’方法程序中输入相应的命令(如:do form rkd),现在还没建立这些表单,可以在建完以后再输。
五、建立以下表单
1、logo表单(图5-3)


(1)表单logo,titlebar为0-关闭,height=115,width=222。
其init过程:
use systen
Thisform.Label1.width =0
Thisform.Label3.Left =thisform.width
public tbs,bgy1,cly1,jhy1,fzr1
thisform.top=0
thisform.left=0
bgy1=bgy
cly1=cly
jhy1=jhy
fzr1=fzr
(2)Label1的caption为“欢迎使用库房管理软件”,透明,楷体,12号,黄色。
(3)Label2的caption为“输入密码”,透明,黑体,12号,绿色。
(4)Label3的caption为“软件作者:齐鲁石化公司检修公司机泵车间 王永成”,透明,白色。
(5)文本框txtpassword,passworchar为‘*’。
(6)计时器timer1,interval=200。
其timer过程:
if thisform.top<140    &&如果表单的顶边距主窗口的距离小于140
thisform.top=thisform.top+10   &&距离增大10,即表单向下移动10
thisform.left=thisform.left+20  &&表单的左边距增大20,即向右移动20
endif   &&结束判断
If Thisform.Label1.width >160  &&判断label1的宽度是否大于160
    Thisform.Label1.width =0   &&label1的宽度设为0
Else
    Thisform.Label1.width = Thisform.Label1.width +16  &&宽度增加16
EndIf
*以下作用是让label3向左移动
If Thisform.Label3.Left < -272
    Thisform.Label3.Left = Thisform.Width
    Thisform.Label3.Left = Thisform.Label3.Left - 5
Else
    Thisform.Label3.Left = Thisform.Label3.Left - 5
EndIf
thisform.refresh  &&刷新表单

(7)命令按钮ok,确定。
其init过程:
public n
n=0
其click过程:
n=n+1
IF allt(thisform.txtpassword.value)=allt(systen.mima)
 thisform.release  &&hide 
   set classlib to ('kuf')
   tbs=creat('kuf')     &&用tbs代替自定义工具栏kuf
   tbs.dock(0)          &&0=顶部、1=右、2=左、3=底部
   tbs.show             &&显示工具栏
    DO main.mpr     &&执行主菜单程序   
 ELSE
 if n>=3
       =messagebox("你不是合法用户!你不能使用!!",64,"提示窗口")
          thisform.release
         Clea event
        else
      =messagebox("口令不正确!请重新输入!",64,"提示窗口")
  thisform.txtpassword.value=''
  thisform.txtpassword.setfocus()
 endif
ENDIF
(8)命令按钮caecel,退出。
其click过程:
thisform.release
Clea event

主页

一课

二课

三课

四课

五课

六课

七课

八课

九课

十课

十一课

十二课

十三课