VFP课程设计模板2.docx
《VFP课程设计模板2.docx》由会员分享,可在线阅读,更多相关《VFP课程设计模板2.docx(20页珍藏版)》请在冰豆网上搜索。
VFP课程设计模板2
目录
一、需求分析
1)问题描叙……………………………………………….....4
2)功能及设计…………………………………………………4
3)程序要求…………………………………………………….4
二、总体设计
1)程序的模块组成…………………………………………….4
2)各模块的主要功能………………………………………….4
三、详细设计
1)相关数据类型………………………………………………5
2)设计流程图………………………………………................7
四、调试分析……………………………………………………….7
五、总结与体会…………………………………………………….8
六、源程序清单…………………………………………………….8
一、需求分析
1)问题描叙
设计一个库存商品查询系统,系统设计主要以查询功能为主,应提供多种方式的查询手段。
同时可具有添加、删除、修改记录信息的功能。
2)功能及设计
库存商品查询系统,可以供客户方便快捷的浏览库存商品情况,应具有以下功能:
库存商品查询
库存商品添加
库存商品修改
密码修改
3)程序要求
完成所需功能的程序代码。
二、总体设计
1)程序的模块组成
(1)欢迎界面
(2)用户登录界面
(3)系统主界面
(4)库存商品查询界面
(5)库存商品添加界面
(6)库存商品修改界面
(7)密码修改界面
2)各模块的主要功能
(1)欢迎界面:
“进入”
(2)用户登录界面:
“确定”,“退出”
(3)系统主界面:
“库存商品查询”,“库存商品添加”,“库存商品修改”,“密码修改”,“退出系统”
(4)库存商品查询界面:
“按货号查询”,“按物品名查询”,“按规格型号查询”,“按生产厂家查询”,“返回主界面”,“退出系统”
(5)库存商品添加界面:
“添加”,“取消”,“返回主界面”,“退出系统”
(6)库存商品修改界面:
“查找”,“第一个”,“前一个”,“下一个”,“最后一个”,“删除该记录”,“返回主界面”,“退出系统”
(7)密码修改界面:
“密码保存”,“返回主界面”
三、详细设计
1)相关数据类型
(1)kcb结构如下
图-3-1
图-3-2
(2)yhb结构如下
图-3-3
图-3-4
2)设计流程图
欢迎
用户登录
主界面
密码修改
库存商品修改
库存商品添加
库存商品查询
四、调试分析
在程序代码的调试中,不断运行程序发现错误,再改正错误。
五、总结与体会
在本次vfp课程设计中,大部分是运用已学的知识,首先对整个项目进行需
求分析,然后进行总体设计,再然后进行详细设计,在基本完成系统所有必须的功能后,最后进行程
序调试,校正错误。
在本次课程设计中遇到了许多问题,尤其是程序代码部分,然而通过问老师,和同学交流,查资料以及参考老师给的模板,用了一个星期左右的时间基本完成了课程设计。
值得高兴的是在本次设计中更加熟练的掌握了表单设计的过程,并了解了表单在软
件系统设计中的功能。
通过这次课程设计,我学到了很多关于这方面的知识,也得到了很多,不仅充分的将在书本中学到的知识运用到实践中,而且加强了自己的动手能力。
我会总结出这次课程设
计的所有成功与失败的经验与心得。
六、源程序清单
欢迎界面
图-6-1
在“进入”按钮中的“click”事件中添加如下代码:
doform用户登录
用户登录界面
图-6-2
在“确定”按钮中的“click”事件中添加如下代码:
publicyhm1,mm1
yhm1=trim(thisform.text1.value)
mm1=trim(thisform.text2.value)
setexacon
useyhb
locatfor用户名=yhm1and密码=mm1
iffound()
thisform.release
doform主界面.scx
else
messagebox("身份不对!
",16+0+0,"警告!
")
thisform.release
endif
在“退出”按钮中的“click”事件中添加如下代码:
x=messagebox('确认退出系统吗?
',1+32+256,'友情提示')
ifx=1
thisform.release
clearevents
else
thisform.text1.value=""
thisform.text1.setfocus
endif
主界面界面
图-6-3
在“库存商品查询”按钮中的“click”事件中添加如下代码:
doform库存商品查询.scx
在“库存商品添加”按钮中的“click”事件中添加如下代码:
doform库存商品添加.scx
在“库存商品修改”按钮中的“click”事件中添加如下代码:
doform库存商品修改.scx
在“密码修改”按钮中的“click”事件中添加如下代码:
doform密码修改.scx
在“退出系统”按钮中的“click”事件中添加如下代码:
thisform.release
clearevent
quit
库存商品查询界面
图-6-4
在“查询”按钮中的“click”事件中添加如下代码:
docase
**选择按货号查询代码
casethisform.optiongroup1.value=1
selekcb
locateforalltr(kcb.货号)==alltr(thisform.text1.value)
iffound()
seleall货号as货号,物品名as物品名,规格型号as规格型号,生产厂家as生产厂家,数量as数量,单价as单价;
fromkcborderby3;
wherealltr(kcb.货号)==alltr(thisform.text1.value)intocursortemp
withthisform.grid1
.recordsourcetype=1
.recordsource="temp"
.columncount=6
.column1.header1.caption="货号"
.column2.header1.caption="物品名"
.column3.header1.caption="规格型号"
.column4.header1.caption="生产厂家"
.column5.header1.caption="数量"
.column6.header1.caption="单价"
endwith
thisform.refresh
thisform.grid1.setfocus
else
k=messageb("该货号无记录,请重新输入!
",1+32+0,"友情提示")
ifk=1
thisform.text1.value=""
thisform.text1.setfocus
endif
endif
**选择按物品名查询代码
casethisform.optiongroup1.value=2
selekcb
locateforalltr(kcb.物品名)==alltr(thisform.text1.value)
iffound()
seleall货号as货号,物品名as物品名,规格型号as规格型号,生产厂家as生产厂家,数量as数量,单价as单价;
fromkcborderby2;
wherealltr(kcb.物品名)==alltr(thisform.text1.value)intocursortemp1
withthisform.grid1
.recordsourcetype=1
.recordsource="temp1"
.columncount=6
.column1.header1.caption="货号"
.column2.header1.caption="物品名"
.column3.header1.caption="规格型号"
.column4.header1.caption="生产厂家"
.column5.header1.caption="数量"
.column6.header1.caption="单价"
endwith
thisform.refresh
thisform.grid1.setfocus
else
k=messageb("该物品名无记录,请重新输入!
",1+32+0,"友情提示")
ifk=1
thisform.text1.value=""
thisform.text1.setfocus
endif
endif
**选择按规格型号查询代码
casethisform.optiongroup1.value=3
selekcb
locateforalltr(kcb.规格型号)==alltr(thisform.text1.value)
iffound()
seleall货号as货号,物品名as物品名,规格型号as规格型号,生产厂家as生产厂家,数量as数量,单价as单价;
fromkcborderby1;
wherealltr(kcb.规格型号)==alltr(thisform.text1.value)intocursortemp2
withthisform.grid1
.recordsourcetype=1
.recordsource="temp2"
.columncount=6
.column1.header1.caption="货号"
.column2.header1.caption="物品名"
.column3.header1.caption="规格型号"
.column4.header1.caption="生产厂家"
.column5.header1.caption="数量"
.column6.header1.caption="单价"
endwith
thisform.refresh
thisform.grid1.setfocus
else
k=messageb("该规格型号无记录,请重新输入!
",1+32+0,"友情提示")
ifk=1
thisform.text1.value=""
thisform.text1.setfocus
endif
endif
**选择按生产厂家查询代码
casethisform.optiongroup1.value=4
selekcb
locateforalltr(kcb.生产厂家)==alltr(thisform.text1.value)
iffound()
seleall货号as货号,物品名as物品名,规格型号as规格型号,生产厂家as生产厂家,数量as数量,单价as单价;
fromkcborderby5;
wherealltr(kcb.生产厂家)==alltr(thisform.text1.value)intocursortemp3
withthisform.grid1
.recordsourcetype=1
.recordsource="temp3"
.columncount=6
.column1.header1.caption="货号"
.column2.header1.caption="物品名"
.column3.header1.caption="规格型号"
.column4.header1.caption="生产厂家"
.column5.header1.caption="数量"
.column6.header1.caption="单价"
endwith
thisform.refresh
thisform.grid1.setfocus
else
k=messageb("该生产厂家无记录,请重新输入!
",1+32+0,"友情提示")
ifk=1
thisform.text1.value=""
thisform.text1.setfocus
endif
endif
endcase
在“返回主界面”按钮中的“click”事件中添加如下代码:
doform主界面.scx
thisform.release
在“退出系统”按钮中的“click”事件中添加如下代码:
thisform.release
clearevent
quit
库存商品添加界面
图-6-5
在“添加”按钮中的“click”事件中添加如下代码:
ifempty(alltrim(thisform.text1.value))
messagebox("货号不能为空",48,"错误")
thisform.text1.setfocus&&如果未填写货号,则出现对话框提醒用户货号不能为空
else
**获取各输入值
货号1=alltrim(thisform.text1.value)
物品名1=alltrim(thisform.text2.value)
规格型号1=alltrim(thisform.text3.value)
生产厂家1=alltrim(thisform.text4.value)
数量1=val(alltrim(thisform.text5.value))
单价1=val(alltrim(thisform.text6.value))
insertintokcbvalue(货号1,物品名1,规格型号1,生产厂家1,数量1,单价1)
messagebox("添加成功!
",48,"信息")
**添加完毕后清空各个文本框
thisform.text1.value=''
thisform.text2.value=''
thisform.text3.value=''
thisform.text4.value=''
thisform.text5.value=''
thisform.text6.value=''
endif
在“取消”按钮中的“click”事件中添加如下代码:
thisform.text1.value=''
thisform.text2.value=''
thisform.text3.value=''
thisform.text4.value=''
thisform.text5.value=''
thisform.text6.value=''
在“返回主界面”按钮中的“click”事件中添加如下代码:
doform主界面.scx
thisform.release
在“退出系统”按钮中的“click”事件中添加如下代码:
thisform.release
clearevent
quit
库存商品修改界面
图-6-6
在“查找”按钮中的“click”事件中添加如下代码:
publichh
hh=trim(thisform.text7.value)
setordertohh
seekalltrim(thisform.text7.value)
if!
found()
messagebox("该货号不存在",48,"错误")
gotop
endif
thisform.text7.value=''
thisform.refresh
在“第一个”按钮中的“click”事件中添加如下代码:
gototop
this.enabled=.f.
mand2.enabled=.f.
mand3.enabled=.t.
mand4.enabled=.t.
thisform.refresh
在“前一个”按钮中的“click”事件中添加如下代码:
skip-1
ifbof()
messagebox("已是第一条记录",48,"信息窗口")
mand1.enabled=.f.
mand2.enabled=.f.
else
mand1.enabled=.t.
mand2.enabled=.t.
endif
mand3.enabled=.t.
mand4.enabled=.t.
thisform.refresh
在“下一个”按钮中的“click”事件中添加如下代码:
skip
ifeof()
messagebox("已是最后一条记录",48,"信息窗口")
skip-1
mand3.enabled=.f.
mand4.enabled=.f.
else
mand3.enabled=.t.
mand4.enabled=.t.
endif
mand1.enabled=.t.
mand2.enabled=.t.
thisform.refresh
在“最后一个”按钮中的“click”事件中添加如下代码:
gotobottom
mand1.enabled=.t.
mand2.enabled=.t.
mand3.enabled=.f.
mand4.enabled=.f.
thisform.refresh
在“删除该记录”按钮中的“click”事件中添加如下代码:
nAnswer=messagebox("确定要删除吗?
",36,"信息")
ifnAnswer=6
thisform.dataenvironment.closetables('kcb')
usekcbexclusive
deletefromkcbwhere货号=alltrim(thisform.text1.value)
pack
use
thisform.dataenvironment.opentables('kcb')
thisform.refresh
endif
在“返回主界面”按钮中的“click”事件中添加如下代码:
doform主界面.scx
thisform.release
在“退出系统”按钮中的“click”事件中添加如下代码:
thisform.release
clearevent
quit
密码修改界面
图-6-7
在“密码保存”按钮中的“click”事件中添加如下代码:
yhm=trim(thisform.text1.value)
ymm=trim(thisform.text2.value)
xmm=trim(thisform.text3.value)
cfmm=trim(thisform.text4.value)
seleyhb
locatfor用户名=yhm
ifempty(alltrim(thisform.text1.value)).or.empty(alltrim(thisform.text2.value));
.or.empty(alltrim(thisform.text3.value)).or.empty(alltrim(thisform.text4.value))
messagebox("用户名或密码不能为空",48,"错误")
thisform.text1.value=""
thisform.text2.value=""
thisform.text3.value=""
thisform.text4.value=""
thisform.text1.setfocus
thisform.refresh
else
iffound()
ifalltr(yhb.密码)<>alltr(thisform.text2.value)
messageb("原密码有误,请重新输入!
")
thisform.text2.value=""
thisform.text3.value=""
thisform.text4.value=""
thisform.text2.setfocus
return
else
ifxmm=cfmm
replace密码withxmm
messagebox("密码修改成功!
",48,"提示")
thisform.release
else
messagebox("密码输入不一致!
",48,"提示")
thisform.text3.value=""
thisform.text4.value=""
endif
endif
else
messagebox("用户名错误!
",48,"提示")
endif
endif
在“返回主界面”按钮中的“click”事件中添加如下代码:
doform主界面.scx
thisform.release