武汉轻工大学
经济与管理学院 物流信息系统 课程设计报告
题 目 《物流信息系统》课程设计报告
姓 名 学 号
专业年级 物流管理 1501
指导教师 黄键 职 称
年 月 日
成 绩
目 录
教师评语:
指导教师____________(签名)
年 月 日
目 录
一 课程设计的序言 ........................................................3
二 课程设计的内容及其步骤 ........................................4
(一)建立数据库…………………………………………………………4
(二)主程序........................................................................................................6.
(三)主菜单.........................................................................................................7
(四)建立工具栏.................................................................................................7...
(五)建立 logo 表单............................................................................................8..
(六)表单基本信息表 system............................................................................15.
(七)表单 rkd(入库单)..................................................................................19....
(八)出库单 ckd..................................................................................................25.
(九)器材明细表表单 ........................................................................35
(十)浏览修改表单 ........................................................................... ...41
(十一)修改总数据库表单 xgmain...................................................................55
(十二)个人工具卡表单 grgj........................................................................... 58
(十三)创建本地视图 ll_gjk.............................................................................60
(十四)创建修改个人工具卡表单 grgjk ..........................................................61
(十五)建立报表................................................................................................64..
(十六)连编 ......................................................................................................67
(十七)制作安装盘............................................................................................68
三 课程设计的总结和感想 ..........................................71
一、设计的序言
设计目的:
《物流信息系统》课程设计为学生提供了一个既动手又动脑,独立实践的机
会。培养学生“物流信息系统”课程所学知识的综合应用,分析和解决企业物流信
息系统实际问题的能力。
设计要求
由教师布置课程设计的思路,提供设计资料,学生根据资料,结合企业物流
系统的相关知识,对资料进行深入分析,独立完成物流信息系统课程设计。
设计内容:
1.根据企业库房需求进行分析。
2.利用 VFP 进行软件设计。
二、课程设计的内容及其步骤
(一)建立数据库
1、新建数据库 1508090003 郑万芳,保存到 e:\1508090003 郑万芳 目录下。
2、在数据库中新建表 systen(.dbf),五个字段:fzr、bgy、jhy、cly、mima,其标
题分别为:负责人、保管员、计划员、材料员、密码。
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),b
z 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 &&设定日期格式年为 4 位数
set cons on &&激活从程序中向 Visual FoxPro 主窗口或活动的用户自定义窗口的输出
set date to ansi &&设置日期格式
set stat bar on &&打开状态栏
set color to &&设定配色方案
set sysmenu off &&关闭系统主菜单
close all &&关闭各种类型的文件
RELEASE WINDOW 常用 &&关闭常用工具栏
if mod(day(date()),2)=0 &&偶数日期
=rgb(80,180,150) &&窗口背景颜色
MODIFY WINDOW SCREEN TITLE " 库房管理应用软件 ver 为齐;
鲁石化检修公司机泵车间编制 今天是:"+dtoc(date())+" "+cdow(date())
else &&奇数日期
=rgb(80,150,180) &&窗口背景颜色
MODIFY WINDOW SCREEN TITLE " 库房管理应用软件 ver ;
软件编制者:王永成 今天是:"+dtoc(date())+" "+cdow(date())
endif
ZOOM WINDOW SCREEN MAX &&主窗口最大化
=.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 &&退出
(三)主菜单
操作(\BR>——器材入库 命令:do form rkd
——器材出库 命令:do form ckd
——\-
——退出 命令:Clea event
编辑(\BR>——编辑浏览出入库单 命令:do form llxg
——浏览个人工具卡 命令:do form grgjk
——修改个人工具卡 命令:do form grgjk
——\-
——基本设置 命令:do form systen
游戏(\BR>——猜数游戏 命令:do form csyx
——身体状态测试 命令:do form stcs
——\-
——心灵感应 命令:do form xlgy
退出(\<X)&NBSP;&NBSP;&NBSP;&NBSP; event>BR 命令 Clea>
(四)建立工具栏
1、点击“文件”——“新建”按钮,选择“类”,出现新建类对话框。
2、类名输入‘郑万芳 kuf’,派生于选择‘toolbar’,存储于:“e:\1508090003 郑万芳\郑
万芳 ”,按‘确定’按钮,出现类设计器。
3、跟建立表单一样,如图 5-2,
我们建立 8 个命令按钮,其‘tooltiptext’分别为:器材入库,器材出库,修改,浏览,
查找器材,身体状态测试,猜数游戏,退出。给按钮加上图片、文字(例如:‘猜’
字)。在各自的‘click’方法程序中输入相应的命令(如:do form rkd),现在还没
建立这些表单,可以在建完以后再输。
(五)建立 logo 表单
(1)新建表单 logo,titlebar 为 0-关闭,height=115,width=222。
其 init 过程:
use systen
=0
=
public tbs,bgy1,cly1,jhy1,fzr1
=0
=0
bgy1=bgy
cly1=cly
jhy1=jhy
fzr1=fzr
(2)Label1 的 caption 为“欢迎使用库房管理软件”,透明,楷体,12 号,黄色。
(3)Label2 的 caption 为“输入密码”,透明,黑体,12 号,绿色。
(4)Label3 的 caption 为“软件作者:武汉轻工大学 郑万芳”,透明,白色。
(5)文本框的 Name 为 txtpassword,passworchar 为‘*’。
(6)计时器 timer1,interval=200。
其 timer 过程:
if <140 &&如果表单的顶边距主窗口的距离小于 140
=+10 &&距离增大 10,即表单向下移动 10
=+20 &&表单的左边距增大 20,即向右移动 20
endif &&结束判断
If >160 &&判断 label1 的宽度是否大于 160
=0 &&label1 的宽度设为 0
Else
= +16 &&宽度增加 16
EndIf
*以下作用是让 label3 向左移动
If < -272
=
= - 5
Else
= - 5
EndIf
&&刷新表单
(7)命令按钮 ok,确定。
其 init 过程:
public n
n=0
其 click 过程:
n=n+1
IF allt()=allt()
&&hide
set classlib to ('kuf')
tbs=creat('kuf') &&用 tbs 代替自定义工具栏 kuf
(0) &&0=顶部、1=右、2=左、3=底部
&&显示工具栏
DO &&执行主菜单程序
ELSE
if n>=3
=messagebox("你不是合法用户!你不能使用!!",64,"提示窗口")
Clea event
else
=messagebox("口令不正确!请重新输入!",64,"提示窗口")
=''
()
endif
ENDIF
(8)命令按钮 cancel,退出。
其 click 过程:
Clea event
出现的问题:
点击确定按钮,出现一个程序错误的提升,显示文件不存在以及找不到变量
解决方案:因为对 vfp 软件操作不够精通,暂时没有想到解决方案。望老师见谅。
(六)表单 基本信息表 system
(1)表单的“caption”为“基本信息”,“windowtype”为 1-模式
(2)建立标签“label1~label5”、文本框“text1~text5”和命令按钮“command1”。
(3)右击表单选择“数据环境”(图 6-1)。
(4)填加表 。(图 6-2)
(5)、text1~text5 的“controlsource”分别选择 、、、systen
.bgy、
(6)、label1~label5 的 caption 为:负责人、计划员、材料员、保管员、密码。
(7)、 为:。
(8)、text5 的“inputmask”为:“XXXXXX”,“passwordchar”为:“*”。
出现的问题:
Text1-4 无法输入数据,基本信息表不能正常使用。
解决方案:因为对 vfp 软件的使用不够精通,所以对该出现的问题无法解决,望老
师见谅。
(七)表单 rkd(入库单)
(1)、我们用一些标签和线条建立(如图 6-3)表单 rkd,你可以根据自己单位的
情况设计。其“titlebar”为:0-关闭
(2)、建立 17 个文本框(由于我在设计时进行过修改,删掉了一些文本框,所以
现在不连续),其“backstyle”为:0-透明、“bordercolor”为:0-无(没有“0-无”这个选
项,只有颜色的选择,如下图:)
其“controlsource”分别为:text9 为 bgy1,text12 为 fzr1,text17 为 cly1,其它的均与
其 name 相同(例:text1 为 text1...)。
(3)、组合框 combo2,“bordercolor”为:0-无(没有“0-无”这个选项,同上),“controlsourc
e”为 cbo1,“rowsource”为:“钢材,管件,配件,工器具,量具,杂品,消耗品,油料,劳保,阀
门”,“rowsourcetype”为:1-值。
(4)、命令按钮 command1(确定)的 click 过程为:
tis=messagebox("保存入库单?",4+64,"提示窗口")
if tis=6
if !used("main")
use main
else
sele main
endif
APPEND BLANK
repl lb with cbo1
repl rq with date()
repl pzbh with text4
repl gcmc with text5
repl yt with text6
repl lh with text13
repl qcmc with text19
repl ggxh with text20
repl dw with text7
repl rksl with text8
repl dj with text10
repl rkje with text11
repl jhy with text23
repl bgy with bgy
repl fzr with fzr
repl llr with cly
use
text20=""
text13=""
text4=""
text8=
text10=
text11=
text1=year(date())
text2=month(date())
text3=day(date())
endif
(5)、命令按钮 command2(退出)的 click 过程:
use
(6)、表单 form1 的 init 过程:
public text1,text2,text3,text4,text5,text6,text7,text8,text10,text11,;
text19,text20,text23,cbo1,text9,text13
text5=""
text6=""
text7=""
text13=""
text17=""
text19=""
text20=""
text23=""
text12=""
text9=""
text4=""
text8=
text10=
text11=
text1=year(date())
text2=month(date())
text3=day(date())
cbo1=""
(7)、表单 form1 的 destroy 过程:
release text1,text2,text3,text4,text5,text6,text7,text8,text10,text11,;
text19,text20,text23,cbo1,text9,text13
出现的问题:
1. 点击组合框 1 的下拉箭头,无法选择
2. 点击确定命令后,弹出‘是否保存入库单’,选择“是”,出现以下程序错误,显
示文件不存在
解决方案:因为对 vfp 软件的使用不够精通,所以对出现的问题无法解决,
望老师见谅。
(八)出库单 ckd
最初我设计的出库单象入库单一样,一次只能开一种材料,由于在车间使用
就改成现在这样。图 7-1
(1)、文本框 text1 的“dateformat”为:‘14-汉语’;“tapstop”(如下图:)为:‘.F
.假’;“value”为:‘=date()’。其他略。
(2)、建立表格 Grid1。右击 Grid1 选择生成器选择 main 表,选定如下字段:
qcmc、ggxh、dw、dj、cksl、ckje、lb,按确定按钮。(图 7-2)
(3)、修改表格 Grid1。“deletemark”为:‘.F.-假’;“recordmark”为:‘.F.-假’;“recordsour
ce”为:(无)(去掉‘main’);“scrollbars”为:‘2-垂直’。Combo1 的“rowsource”为:
‘一班,二班,三班,四班,五班,六班,办公室’;“rowsourcetype”为:‘1-值’。
(4)、表单的 init 过程:
public bz1,bh1,llr1
*建立临时表 ls
creat cursor ls ( ckbh c(10), rq d(8),qcmc c(16),ggxh c(20),dw c(4), ;
dj n(8,2), cksl n(8,2), ckje n(10,2),gcmc c(30),bz c(6),;
yt c(20),cly c(6),bgy c(6),jhy c(6),llr c(6),fzr c(6),lb c(6))
with
.recordsource='ls'
.=''
.=''
.=''
.=''
.=''
.=''
.=''
endwith
(5)、打印按钮的 cilck 过程:
bz1=
bh1=allt()
llr1=allt()
sele ls
messagebox('请用 B5 纸!',16,'提示信息')
REPORT FORM TO PRINTER
(6)、保存按钮的 cilck 过程:
bz1=
bh1=allt()
rq1=date()
llr1=allt()
gcmc1=allt()
yt1=allt()
*检查输入是否有效
sele ls
count for !deleted() to zs
if zs=0
messagebox('至少要有一条记录才能保存!',16,'提示信息')
return
endif
if empty(bz1)
messagebox('请填写班组',16,'提示信息')
return
endif
locat for =0
if found()
messagebox('请填写数量',16,'提示信息')
return
endif
*加入到正式表中
go top
do while !eof()
insert into main (ckbh,rq,qcmc,ggxh,dw,dj,cksl,ckje,gcmc,yt,llr,jhy,lb,bz) ;
value (bh1,rq1,,,,,,,gcmc1,,llr1,jhy1,
b,bz1)
if allt()="工器具"
insert into grgjk (ckbh,rq,qcmc,ggxh,dw,dj,cksl,ckje,llr,jhy) ;
value (bh1,rq1,,,,,,,llr1,jhy1)
endif
skip
enddo
zap
(6)、退出按钮的 cilck 过程:
tt=0
(7)、Grid1 下的 Column1 下的 Text1 的 DblClick 过程:
do form qcmx
sele ls
=
with
.=
.=
.=
.=0
.=0
.=
endwith
(8)、Grid1 下的 Column5 下的 Text1 的 LostFocus 过程:
if >cksl1
ss=allt(str(cksl1))
messagebox('开票数量不能大于库存数量'+ss,16,'提示信息')
=0
retu
endif
=*
(9)、Grid1 的 rightcilck 过程:
sele ls
do &&调用 tjia 菜单
附加:建立 tjia 菜单
(1)、新建快捷菜单
(2)、“填加一条”的‘过程’内容为:
locat for =0
if found()
messagebox('请填写数量',16,'提示信息')
return
endif
append blank
(3)、“删除选定一条”的‘过程’内容为:
if messagebox( '是否真的删除该行?',36,'提示信息')=6
dele
endif
(4)、生成为 tjia。
出现的问题:
1. 点击保存命令,出现以下程序错误,显示文件不存在
2. 点击退出命令,出现以下程序错误
解决方案:因为对 vfp 软件的使用不够精通,所以对以上出现的错误无法给
出解决方案,望老师见谅。
(九)器材明细表表单
(1)建立标签(按其 caption 内容):“在上面的文本框中输入”,“器材名称或规格
型号”,“库存数量:”,“库存金额:”,“器 材 明 细 表”,“库”,“区”,“架”,
“号”,“器材名称:”,“规格型号:”,“单位:”,“单价:”。
(2)建立文本框:ku,qu,jia,hao,qcmc,ggxh,dw,dj(以上文本框的 controlsource 分别
为:“main.+其名”),text7,text8,text10。
(3)建立命令按钮 command1~5(图 8-2)
(4)建立表格 Grid1,右击选择“生成器”,选择表 main 的如下字段:rq,qcmc,ggxh,r
kbh(前面设置的表 main 里没有 rkbh 字段),rksl,rkje,ckbh,cksl,ckje,lb。其它属性在
这里就不一一介绍了。
(5):
&&在运行此表单时隐藏快捷图标
public cksl1 &&定义全局变量
(6):
&&在关闭此表单时显示快捷图标
(7):
locate for allt(qcmc)=allt()
if found()
go recn()
else
locate for allt()$allt(ggxh)
if found()
go recn()
endif
endif
(8):
=.t.
=.t.
if !RECN()=1
skip -1
else
go 1
=.f.
=.f.
endif
(9):
=.t.
=.t.
if !eof()
skip 1
else
go bottom
=.f.
=.f.
endif
(10):
(11):
=.t.
=.t.
go 1
=.f.
=.f.
(12):
=.t.
=.t.
go bottom
=.f.
=.f.
(13):
="sele ,qcmc,ggxh,pzbh,rksl,rkje,ckbh,cksl,ckje,lb fr
om main into curs temp;
where allt(qcmc)==allt() .and. allt(ggxh)==allt(
e) "
sele temp
sum rksl to sl1
sum cksl to sl2
sum rkje to je1
sum ckje to je2
cksl1=sl1-sl2
=sl1-sl2
=je1-je2
sele main
出现的问题:
1. 点击“运行”,立马出现程序错误
解决方案:因为对 vfp 软件的使用不够精通,所以对以上问题无法解决,望
老师见谅。
(十)浏览修改表单
(1)、建立选择按钮组 Optiongroup1。ButtonCount=3...
(2)、建立选择按钮组 Optiongroup2。ButtonCount=11..
.
(3)、建立表格 Grid1。DeleteMark=‘.F.-假’;RecordSourceType=‘0-表’。
(4)、建立形状 Shape1、Shape2,选择背景颜色。
(5)、建立组合框 Combo1。ControlSounrce=‘rq1’;RowSounrce=‘select rq distinct
from main into cursor combo1’;RowSounrceType=‘3-SQL 语句’。
(6)、建立组合框 Combo2。ControlSounrce=‘rq2’;RowSounrce=‘select rq distinct
from main into cursor combo2’;RowSounrceType=‘3-SQL 语句’。
(7)、建立组合框 Combo3。ControlSounrce=‘bz1’;RowSounrce=‘一班,二班,三班,
四班,五班,六班,办公室’;RowSounrceType=‘1-值’。
(8)、建立 Command1。Caption=‘修改’;:do form xgmain。
(9)、建立 Command2。Caption=‘打印’;:
messagebox('请用 A4 纸!',16,'提示信息')
DO CASE
CASE =1
()
report form to printer &&打印报表 dymain
CASE =2
()
report form to printer &&打印报表 dark
CASE =3
()
report form to printer &&打印报表 dyck
endcase
(10)、建立 Command3。Caption=‘退出’;:
(11)、建立 Command4。Caption=‘清除选择’;:
=""
=""
=""
()
(12)、建立 Command5。Caption=‘显示’;:
()
(13)、:
if ctod()>ctod()
wait window at 16,28 "后面的日期要大于前面的日期!请修改。"
retu
endif
(14)、选择菜单栏的“表单”下的“新建方法程序”,填加如下方法程序:myfield1、myf
ield2、myfield3。
(15)、:
public rkhj,ckhj,kchj,BZ1,RQ1,RQ2
BZ1=""
RQ1=""
RQ2=""
*初始化临时表
="SELE ,qcmc,ggxh,lb,dj,pzbh,rksl,r
kje,ckbh,cksl,ckje,bz,llr,fzr,bgy,jhy,lh ,dw FROM main INTO CURSOR TEMP"
=4
()
(16)、:
="日期"
="器材名称"
="规格型号"
="类别"
="单价"
="入库编号"
="入库数量"
="入库金额"
="出库编号"
="出库数量"
="出库金额"
="班组"
="领料人"
="负责人"
="保管员"
="计划员"
="料号"
="单位"
(17)、:
="日期"
="器材名称"
="规格型号"
="类别"
="单价"
="入库编号"
="入库数量"
="入库金额"
="负责人"
="保管员"
="计划员"
="料号"
="单位"
(18)、:
="日期"
="器材名称"
="规格型号"
="类别"
="单价"
="出库编号"
="出库数量"
="出库金额"
="班组"
="领料人"
="负责人"
="保管员"
="计划员"
="单位"
(19)、:
=""
sel="SELE ,qcmc,ggxh,lb,dj,pzbh,rksl,rkje,ckbh,cksl,ckje,bz,llr,fzr,bgy,jhy,lh,dw
FROM main INTO CURSOR TEMP "
if empt() or empt()
DO CASE
CASE =1
whe=" "
CASE =2
whe=" where allt()='钢材'"
CASE =3
whe=" where allt()='管件'"
CASE =4
whe=" where allt()='配件'"
CASE =5
whe=" where allt()='工器具'"
CASE =6
whe=" where allt()='量具'"
CASE =7
whe=" where allt()='杂品'"
CASE =8
whe=" where allt()='消耗品'"
CASE =9
whe=" where allt()='油料'"
CASE =10
whe=" where allt()='劳保'"
CASE =11
whe=" where allt()='阀门'"
endcase
=sel+whe
=4
else
DO CASE
CASE =1
whe="where >=ctod(rq1) AND <=ctod(rq2) "
CASE =2
whe=" where allt()='钢材' AND >=ctod(rq1) AND <=cto
d(rq2)"
CASE =3
whe=" where allt()='管件' AND >=ctod(rq1) AND <=cto
d(rq2)"
CASE =4
whe=" where allt()='配件' AND >=ctod(rq1) AND <=cto
d(rq2)"
CASE =5
whe=" where allt()='工器具' AND >=ctod(rq1) AND <=c
tod(rq2)"
CASE =6
whe=" where allt()='量具' AND >=ctod(rq1) AND <=cto
d(rq2)"
CASE =7
whe=" where allt()='杂品' AND >=ctod(rq1) AND <=cto
d(rq2)"
CASE =8
whe=" where allt()='消耗品' AND >=ctod(rq1) AND <=c
tod(rq2)"
CASE =9
whe=" where allt()='油料' AND >=ctod(rq1) AND <=cto
d(rq2)"
CASE =10
whe=" where allt()='劳保' AND >=ctod(rq1) AND <=cto
d(rq2)"
CASE =11
whe=" where allt()='阀门' AND >=ctod(rq1) AND <=cto
d(rq2)"
endcase
=sel+whe
=4
endif
sele temp
sum rkje to rkhj
sum ckje to ckhj
kchj=rkhj-ckhj
="入库金额:"+str(rkhj)+" 出库金额:"+str(ckhj)+" 库存金额:"+str(
kchj)
()
(20):
=""
sel="SELE ,qcmc,ggxh,lb,dj,pzbh,rksl,rkje,fzr,bgy,jhy,lh,dw FROM main INT
O CURSOR TEMP "
if empt() or empt()
DO CASE
CASE =1
whe=" where >0 "
CASE =2
whe=" where allt()='钢材' and >0"
CASE =3
whe=" where allt()='管件' and >0"
CASE =4
whe=" where allt()='配件' and >0"
CASE =5
whe=" where allt()='工器具' and >0"
CASE =6
whe=" where allt()='量具' and >0"
CASE =7
whe=" where allt()='杂品' and >0"
CASE =8
whe=" where allt()='消耗品' and >0"
CASE =9
whe=" where allt()='油料' and >0"
CASE =10
whe=" where allt()='劳保' and >0"
CASE =11
whe=" where allt()='阀门' and >0"
endcase
=sel+whe
=4
else
DO CASE
CASE =1
whe="where >=ctod(rq1) AND <=ctod(rq2) and >0
"
CASE =2
whe=" where allt()='钢材' AND >=ctod(rq1) AND <=cto
d(rq2) and >0"
CASE =3
whe=" where allt()='管件' AND >=ctod(rq1) AND <=cto
d(rq2) and >0"
CASE =4
whe=" where allt()='配件' AND >=ctod(rq1) AND <=cto
d(rq2) and >0"
CASE =5
whe=" where allt()='工器具' AND >=ctod(rq1) AND <=c
tod(rq2) and >0"
CASE =6
whe=" where allt()='量具' AND >=ctod(rq1) AND <=cto
d(rq2) and >0"
CASE =7
whe=" where allt()='杂品' AND >=ctod(rq1) AND <=cto
d(rq2) and >0"
CASE =8
whe=" where allt()='消耗品' AND >=ctod(rq1) AND <=c
tod(rq2) and >0"
CASE =9
whe=" where allt()='油料' AND >=ctod(rq1) AND <=cto
d(rq2) and >0"
CASE =10
whe=" where allt()='劳保' AND >=ctod(rq1) AND <=cto
d(rq2) and >0"
CASE =11
whe=" where allt()='阀门' AND >=ctod(rq1) AND <=cto
d(rq2) and >0"
endcase
=sel+whe
=4
endif
sele temp
sum rkje to rkhj
="入库金额:"+str(rkhj)
()
(21):
if empt()
bzu=" "
else
bzu=" and =allt()"
endif
sel="SELE ,qcmc,ggxh,lb,dj,ckbh,cksl,ckje,bz,llr,fzr,bgy,jhy,dw FROM main I
NTO CURSOR TEMP "
if empt() or empt()
DO CASE
CASE =1
whe="where >0 "+bzu
CASE =2
whe=" where allt()='钢材' and >0"+bzu
CASE =3
whe=" where allt()='管件' and >0"+bzu
CASE =4
whe=" where allt()='配件' and >0"+bzu
CASE =5
whe=" where allt()='工器具' and >0"+bzu
CASE =6
whe=" where allt()='量具' and >0"+bzu
CASE =7
whe=" where allt()='杂品' and >0"+bzu
CASE =8
whe=" where allt()='消耗品' and >0"+bzu
CASE =9
whe=" where allt()='油料' and >0"+bzu
CASE =10
whe=" where allt()='劳保' and >0"+bzu
CASE =11
whe=" where allt()='阀门' and >0"+bzu
endcase
=sel+whe
=4
else
DO CASE
CASE =1
whe="where >=ctod(rq1) AND <=ctod(rq2) and >
0"+bzu
CASE =2
whe=" where allt()='钢材' AND >=ctod(rq1) AND <=cto
d(rq2) and >0"+bzu
CASE =3
whe=" where allt()='管件' AND >=ctod(rq1) AND <=cto
d(rq2) and >0"+bzu
CASE =4
whe=" where allt()='配件' AND >=ctod(rq1) AND <=cto
d(rq2) and >0"+bzu
CASE =5
whe=" where allt()='工器具' AND >=ctod(rq1) AND <=c
tod(rq2) and >0"+bzu
CASE =6
whe=" where allt()='量具' AND >=ctod(rq1) AND <=cto
d(rq2) and >0"+bzu
CASE =7
whe=" where allt()='杂品' AND >=ctod(rq1) AND <=cto
d(rq2) and >0"+bzu
CASE =8
whe=" where allt()='消耗品' AND >=ctod(rq1) AND <=c
tod(rq2) and >0"+bzu
CASE =9
whe=" where allt()='油料' AND >=ctod(rq1) AND <=cto
d(rq2) and >0"+bzu
CASE =10
whe=" where allt()='劳保' AND >=ctod(rq1) AND <=cto
d(rq2) and >0"+bzu
CASE =11
whe=" where allt()='阀门' AND >=ctod(rq1) AND <=cto
d(rq2) and >0"+bzu
endcase
=sel+whe
=4
endif
sele temp
sum ckje to ckhj
="出库金额:"+str(ckhj)
()
(22):
DO CASE
CASE =1
()
CASE =2
()
CASE =3
()
endcase
出现的问题:
1. 点击修改命令,出现程序错误,显示文件不存在。
2. 点击打印命令,出现程序错误,显示文件不存在。
解决方案:因为对 vfp 软件操作不够精通,暂时没有想到解决方案。望老师
见谅。
(十一)修改总数据库表单 xgmain
(1)、表单的 caption=‘修改总数据库’;icon=‘d:\demo\pic\’;windowtype=‘1-
模式’。
(2)、建立表格 gird1,右击选择生成器,选择 main 的全部字段。
(3)、建立文本框 text1。
(4)、建立命令按钮 command1,caption=‘查找’;
:
locate for allt()=allt()
if found()
go recn()
else
wait window at 18,38 nowait '没有找到你要查询的信息!'
endif
(5)、建立命令按钮 command2,caption=‘退出’;:
(6)、表格 gird1 里的所有 text1 的 rightclick 过程为:do (右击表格时调出
快捷菜单)。
出现的问题:
1. 点击退出命令,出现程序错误
解决方案:因为对 vfp 软件操作不够精通,暂时没有想到解决方案。望老师
见谅。
(十二)个人工具卡表单 grgj
(1)、建立文本框 text1
(2)、建立命令按钮 command1。picture=‘d:\demo\pic\’;
:
=requ("ll_gjk") &&刷新本地视图‘ll_gjk’
(3)、建立命令按钮 command2。picture=‘d:\demo\pic\’;
:
messagebox('请用 A4 纸!',16,'提示信息')
report form to printer
(4)、建立命令按钮 command3。picture=‘d:\demo\pic\’ ;
:
report form to preview
(5)、建立命令按钮 command4。picture=‘d:\demo\pic\’;
:
(6)、建立表格 gird1。右击选择生成器,选择视图 ll_gjk(前面没有建立此视图,
建议将此节内容移至十三节后面)的所有字段,deletemark=‘.F.-假’;readonly=‘.T.-
真’;recordmark=‘.F.-假’;scrollbars=‘2-垂直’。
出现的问题:
1. 点击打印命令,出现以下错误
解决方案:因为对 vfp 软件操作不够精通,暂时没有想到解决方案。望老师
见谅。
(十三)创建本地视图 ll_gjk
(1)、选择项目管理器中的数据库 kfgl 下的本地视图,按新建按钮,选择新建视图
(2)、选择表 grgjk,按填加按钮,然后关闭,保存为 ll_gjk。
(3)、字段全部填加。
(4)、选项“筛选”中填加:="&xingm"(图 10-5)。
(5)、“排序依据”选择 升序。
(十四)创建修改个人工具卡表单 grgjk
(1)、在项目管理器中选择表单按“新建”按钮,按“表单向导”按钮,选择“表单向
导”按“确定”按钮,选择表 grgjk,字段全部填加。(图 11-1)
(2)、按“下一步”按钮,进入“选择表单样式”窗口(图 11-2),这里选择了“标准
式”、“文本按钮”,你可以根据自己的爱好选择,按“下一步”,若其它都默认直接按
“完成”按钮。保存表单 grgjk。
(3)、编辑修改表单 grgjk,调整各控件位置、大小等,新建表格 grid1,选择生成
器,选择表 grgjk,选择全部字段。(图 11-3)
(4)、:
LPARAMETERS nColIndex
('DynamicbackColor','iif(=recn(),RGB(255,0,0),RGB(250,250,2
50))','Column') &&当鼠标点击某一条记录时,或用箭头键移动时,被选中的整条背
景颜色变为红色。
(5)、表格中的所有文本框的 gotfocus 过程为:。(例:
:)。
出现的问题:
2. 出现以下错误
解决方案:因为对 vfp 软件操作不够精通,暂时没有想到解决方案。望老师
见谅。
(十五)建立报表
在本人编库房管理软件中有以下五个报表:、、、dyrk
.frx、。下面我只以 ckdan 为例,介绍一下报表的创建过程。
(1)、选中报表,按“新建”按钮(图 12-1);
(2)、按“报表向导”按钮(图 12-2);
(3)、选中“报表向导”,按“确定”按钮(图 12-3);
(4)、选择 main 表的 qcmc、ggxh、dw、dj、ckbh、cksl、ckje、bz、llr 字段。其
它的设置为默认值,按“完成”按钮,选保存修改状态保存到 e:\1508090003 郑万芳
(图 12-4);
(5)、选择“显示”菜单中的“报表控件工具栏”
(6)、调出“报表控件”(图 12-6)
(7)、按“报表控件”中的标签按钮,鼠标点击标题 main,换成“器材出库单”,填加
标签:“日期”,删除页码,调整位置。(图 12-7)
(8)、因打印出库单时关联的表是临时表 ,所以要把此报表的“数据环境中的
移去。
(十六)连编
程序全编完了,运行一下主程序,看看是否有错误,在确认无错误之后进行连编。
连编之前可以设置一些信息,比如软件图标,一般的软件都有自己的图标。(先要
新建一个“项目”才出现项目管理器)右击“项目管理器”选择“项目信息”,选择“附加
图标”,选择你要填加的图标,图标要放在程序目录下。
按“连编”按钮,连编成 (图 12-9),若没有错误连编完成后自动运行。
连编后一些文件就没用了,我们可以把有用的文件放在一个新的文件夹内,假设
放在 D:\KFGL 下,需要放入如下文件:、(图标)、(人
体状态测试的帮助文件)、data 文件夹(kfgl 数据库)。另外如果你需要把它装在
另一台电脑内,你要看看在台电脑是否有 visual ,是否有 ActiveX 控件:cale
(农历控件)。
(十七)制作安装盘
(1)、选择菜单上的“工具”-“向导”-“安装”-“创建目录”,出现图 13-1;
(2)、按“发布树目录”后面的按钮,找到在上一课中建的那个目录,选定,按下一
步,出现图 13-2;
(3)、如果你想把软件安装在一台没有 visual 的电脑上时,请选中第一
项“visual foxpro 运行时刻组件”和第五项“activex 控件”,出现图 13-3;
(4)、选择 activex 控件中的“农历控件.calendar”
关闭此窗口,返回安装向导,其它不选(这样需要 4 张 软盘);如果你想把
软件安装在一台有 visual 并且已安装了“农历控件.calendar”的电脑上,所
有选项都不选(这样需要 1 张 软盘),按下一步,图 13-4;
(5)、选择生成的安装文件存放的目录:a:\、c:\或其它目录中,还要选择安装
方式。下一步,
(6)、在安装对话框标题和版权信息中输入适当内容,执行程序中不要输入内容,
它不是指软件所要执行的程序。接着按下一步
(7)、输入安装的默认目录,下一步
(8)、不用修改,按下一步;如果没有问题就按下“完成”按钮,要是有问题,想起
点什么来,就按“上一步”回去看看;一旦按下“完成”就不能再回头了,系统便开始
按照您的设置制作安装盘,制作完成后会有一个报告,没多大意义;看完报告后,
按完成,这次可就真的完成了,您会在磁盘上看到生成的安装文件目录,如果是网
络安装,目录是“netsetup”,其中是安装您的软件所需的文件,如果是软盘,目录是
“disk144”,其中还会有 disk1 、disk2、disk3.......等子目录,分别把每个目录中的文
件复制到软盘上,安装时从第一张盘开始,运行 setup 即可。
三、课程设计的总结及感想
在整个的课程设计的过程中,个人还是真的学到了不少的东西,鉴于此,还是看的出
来 visual foxpro 还是没有很好的学好,这份课程设计让我更为具体的体会到了信息系统在
物流过程中的作用,在这个信息化的年代,所有的实体都将变为数据化的流程,因此,信
息化不仅之于物流,更在于所有的经济活动。因此,这次的课程设计让我们体会到了更为
广阔的世界观,我们都需要再接再厉。
vfp 课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,
从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,
我深深体会到这句千古 名言的真正含义.我今天认真的进行课程设计,学
会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础.
通过这次课程设计,本人在多方面都有所提高。综合运用本专业所学课程的
理论实际训练从而培养和提高学生独立工作能力,巩固课程所学的内容,掌握课
程设计的方法和步骤, 同时各科相关的课程都有了全面的复习,独立思考的能
力也有了提高。
在此感谢我们的老师.,老师严谨细致、一丝不苟的作风一直是我工作、学
习中的榜样。 而您开朗的个性和宽容的态度,帮助我能够很顺利的完成了这次
课程设计。
由于本人的设计能力有限,在设计过程中难免出现错误,恳请老师们多多指
教,我十分乐 意接受你们的批评与指正,本人将万分感谢。
我想分享一下自己的心得:
1. 数据库方面:这是最主要的、也是最基础的。数据是管理的对象,一
切具体编程都是以数据库为中心,任何时候都应把对数据的处理作为重点,对数
据库的原理应作到心中有数。数据库是包含表在内的一个容器,包含的更多的信
息和拓展了功能,包括了数据库内各个表之间的关系、校验规则,许多原来需要
在程序中设置的工作可以在设计数据库时包容进去,随着对数据库概念的了解和
深入,我们会发现数据库的重要性。
2. 语言方面:对语言大概有个了解,当遇到一个问题时首先要想的是解
决方法,使用的语言能不能处理,然后再查看相关的帮助文件或者语言手册,根
据提示的语法规范编写命令。同时对语言的掌握应注重它所能完成的功能,这样
当学习其他语言时事半功倍,提高效率。例如变量定义、书写规范、常用函数、
循环语句等等,这些是编程的基础。我们时常还会用到 FOR、DO、USE、BROWS
等语句,所以在以后的语言书写时应该遵循一定的原则。
3.面向对象的编程:包括面向对象的编程方法,面对大量的属性、方法和
事件的处理。 1.关于属性、方法和事件。表单是一个大集合,控件就是一个
小集合,它包含着自己的表现特征、用户对它进行控制和触发的事件和方法。学
习属性、方法和事件要结合控件。如控件的高度(height)、宽度(width)、背景颜
色(backcolor)、字体(font)、字号(fontsize)、点击事件(Click)、清除事件(Destory)
等等共同拥有的属性、方法和事件,这需要对 Windows 平台的感官效果和操作
方法上去理解。我们应该熟悉控件的属性。 2.关于控件与数据库结合。对于
表单应设置数据环境,在数据环境中设置当前表单所用到的数据库表或者自由表,
由于数据环境中的表是随表单的打开和关闭而自动打开和关闭的,可以解决编程
时处理工作区和表而有可能所带来的差错。控件与表字段的结合是通过控件的
controlsource 属性设置的,一般使用 Text 控件与字段联系。 3.面向对象编程
语言的使用。代码放入控件的事件中,对库的操作时用标准的 foxpro 命令来实
现,但对表单和控件的控制就要用到面向对象的编程语言,例如:关闭按钮的
click 事件中的 命令如何理解。一种对控件进行控制的方法,基
本上可以分为两部分:1.控件的名称,例如 thisform、 ,
;2.控件的属性、方法和事件的名称,如 width=100、click()、
refresh、release。两个部分中间用“.”连接起来,需要注意的是标明控件的唯一名
字,同时更要注意控件父子关系。
以上是我在这次课程设计中所学到的一些知识,这些也是我在平时的学习中
所没有学到的或者说这些东西是平时最容易忽略的知识点。这次的课程设计让我
真正明白了“脚踏实地”,“一份耕耘,一份收获”的人生哲理,也体会到了技术开
发人员思维的严密性和吃苦耐劳的精神。
在本次的课程设计中,我们从指导老师身上学到了很多东西。老师认真负责
的工作态度,严谨的治学精神和深厚的理论水平都使我们受益匪浅。老师无论在
理论上还是在实践中,都给予我们很大的帮助,使我们得到不少的提高,这对于
我们以后的工作和学习都有巨大的帮助,感谢他们耐心的辅导。同时,也感谢学
校能给我们这样的一个锻炼机会,让我们有个锻炼提升自己的平台。