VF第四章作业解析.docx
《VF第四章作业解析.docx》由会员分享,可在线阅读,更多相关《VF第四章作业解析.docx(16页珍藏版)》请在冰豆网上搜索。
VF第四章作业解析
第四章作业
1.
若要建立一个日销售文件(营销员代号、品名、数量、单价、营销额),每笔营业产生一个记录,但营业额字段的值因未填写而都为0.00,试编制程序查询某营业员的全天营业额。
CLEAR
SETTALKOFF
USErxs.dbf
REPLACEALL营业WITH数量*单价
@5,10SAY"查询营业员全天营业额"
?
INPUT"请输入营业员代号:
"TOdh
SUM营业额FOR营业员代号=dhTOyy
@9,4SAY"营业员"+dh+"的全天营业额是:
"+STR(yy,10,2)+"元"
USE
SETTALKON
2.若要修改某设备的价格和部门,试编写程序。
CLEAR
USEsb
@5,10SAY"修改设备的价格和部门"
?
INPUT"请输入设备号:
"TOsbbh
LOCATEFOR编号=sBBH
IFFOUND()
INPUT"请输入设备价格:
"TOsbjg
INPUT"请输入设备部门:
"TOsbbM
REPLACE价格WITHsbjg,;
部门WITHsbbM
?
DISPLAYFIELDS编号,名称,价格,部门
WAIT"......请检查修改后的记录,按任意键结束......"
ELSE
@12,20SAY"无此设备!
"
ENDIF
USE
3.在某程序中加一段程序,要求能累计程序运行的次数,试写出程序段。
(提示:
可将程序执行次数存储在一个表中)
IFFILE("Yxcs.dbf")
USEyxcs
REPLACE运行次数WITH运行次数+1
ELSE
CREATETABLEyxcs(运行次数n(5,0))
INSERTINTOyxcs VALUES
(1)
ENDIF
USE
4.编制一个通用的交换记录的程序,即要求对换某表中任意的两个记录。
5输入一个字符串,要求统计出其中的英文字母,空格,数字和其他字符的个数。
6.已知成绩。
DBF有学号,平时,考试,等级等字段,前三个字段已经存有数据,请以平时的20%加考试的80%来评定等级。
90分以上为优,75—89为良,60---74为及格,60分以下为不及格。
10、试编程序,把SB.DBF的内容移入二维数组。
Clear
Usesb
Copytoarraysbsz
?
”二维数组sbsz存放的数据:
”
?
?
Fori=1torecount()
Forj=1to6
?
?
sbsz(i,j),space
(2)
Next
?
Endfor
Use
11、试编写程序,将SB,DBF的记录转置显示。
Clear
Usesb
Countton
Copytoarraysbsz
Fori=1ton
Forj=1to6
@i*2,(j-1)*10+1saysbsz(i,j)function’B’
Next
?
Endfor
Wait”………SB.DBF正常显示……….”
Clear
Fori=1to6
Forj=1ton
@i*2,(j-1)*10+1saysbsz(j,i)function‘B’
Next
?
Wait“……….SB.DBF转置显示…………”
Use
12、设计一个计算存款本息的自定义函数。
程序如下:
1、当函数包含在调用程序中,函数定义如下:
Functionvt
Parametersp,i,y
T=p*(1+i*y)
Returnt
2、若自定义函数作为一个独立的文件,函数定义如下:
Parametersp,i,y
T=p*(1+i*y)
Returnt
13,请分别把求结成的功能设计为子程序、过程、自定义函数,并在计算5!
-3!
+7!
时进行调用。
解:
设计为子程序如下
用子程序调用结果如下:
设计为过程如下:
调用结果如下:
设计为函数如下:
调用结果如下:
14,读程序,写出运行结果。
解:
(1)
运行结果为:
(2)
运行结果如下:
15.编制通讯录管理程序,要求具有如下功能:
(1)纪录输入,修改,插入与删除;
(2)能分别以性命、邮政编码升序显示纪录
(3)能按姓名查询纪录。
解:
程序如下:
*ex4-15.prg
settalkoff
setsafetyoff
clear
use通信录.dbf
text
endtext
dowhile.t.
@8,0clear
@8,34say""
inputspace(34)+"请输入0~6:
"toxz
docase
casexz=1
dosr
casexz=2
doxg
casexz=3
docr
casexz=4
dosc
casexz=5
doxs
casexz=6
docx
casexz=0
wait"系统将关闭!
"windowtimeout1
exit
endcase
enddo
use
clear
settalkon
setsafetyon
proceduresr
?
"记录输入结束后按Ctrl+W存盘."
append
procedurexg
?
"记录修改结束后按Ctrl+W存盘."
go1
browse
procedurecr
?
"将浏览窗口中的光标移到新记录要插入的位置,按ESC继续."
browse
jlh=recno()
ifrecno()gojlh+1
copytoqyrest
gojlh+1
deleterest
pack
appendblank
appendfromqy
deletefileqy.dbf
gojlh+1
else
appendblank
endif
@8,0clear
@24,0say"输入要插入的数据,然后按CTR+W存盘退出."
browse
proceduresc
?
"选定要删除的记录,在按标题栏中的提示,选择F5或F6操作."
pushkeyclear
onkeylabelf5doschf
onkeylabelf6dopk
browsetitle'通信录'+'F5:
删除/恢复F6:
清楚'
procedureschf
ifdeleted()
recall
else
delete
endif
procedurepk
pack
procedurexs
?
"选择F5按姓名拼音顺序显示,选择F6按邮政编码升序显示,按ESC键结束显示."
pushkeyclear
onkeylabelf5doxmpy
onkeylabelf6doyzbm
browsetitle'通信录'+'F5:
姓名拼音排序F6:
邮政编码升序';
noappendnomodify
procedurexmpy
indexon姓名tagxm
btowsetitle'通信录'+按姓名拼音顺序排序';
noappendnomodify
returntomaster
procedureyzbm
indexon邮政编码tagybm
browsetitle'通信录'+'按邮政编码升序显示';
noappendnomodify
returntomaster
procedurecx
flag='1'
dowhileflag='1'
@8,0clear
@8,5say""
inputspace(5)+"请输入姓名(可以只输入姓名中的一个或几个字):
";
toycxm
read
ycxm1=alltrim(ycxm)
locatefor"&ycxm1"$姓名
iffound()
?
'按ESC键继续...'
browsetitle'通信录'+space(5)+'&ycxm'+'资料';
for"&ycxm1"$姓名;
noappendnomodify
else
@10,5say"查无此人!
"
endif
@20,0clear
@20,5say""
inputspace(5)+'是否继续查询(Y/N):
"toyn
ifupper(yn)="N"
flag='0'
endif
Enddo
运行结果如下: