VFP程序设计题汇总.docx
- 文档编号:3656388
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:11
- 大小:214.18KB
VFP程序设计题汇总.docx
《VFP程序设计题汇总.docx》由会员分享,可在线阅读,更多相关《VFP程序设计题汇总.docx(11页珍藏版)》请在冰豆网上搜索。
VFP程序设计题汇总
一.程序设计题汇总
1.通过输入学生的学号(字符型)查找学生,若找到该学生,先输出学号与姓名,然后输出“英语”和“计算机实用技术”成绩。
若找不到该学生输出“查无该生”。
(设表文件“学生信息”满足题目需要)
settalkoff
clear
use学生信息
accept"请输入学生学号:
"toxh
locatefor学号==xh
if!
eof()
?
学号,姓名
listfiel英语,计算机实用技术for学号=xh
else
?
"查无该生"
endif
use
2.输入学生成绩,并要求:
成绩小于60分时,输出“不及格”;成绩在60~69分之间时,输出“及格”;成绩在70~79之间时,输出“中”;当成绩在80~89之间时,输出“良”;当成绩在90~100之间时,输出“优”。
settalkoff
clear
input"请输入成绩:
"tocj
docase
casecj>=90
?
"优秀"
casecj>=80
?
"良好"
casecj>=70
?
"中"
casecj>=60
?
"及格"
casecj<60
?
"不及格"
otherwise
?
"数据有误"
endcase
settalkon
3.按学号在“学生信息.dbf”文件中查找并显示指定的记录。
要求可以重复查询,找到则显示该生的记录,找不到则提示“查无此人!
”,按非“Y”、“y”可结束查询。
SETTALKOFF
CLEAR
USE学生信息&&设当前目录下表文件存在
ACCEPT'学号查询吗(Y/N)?
'TOcx&&循环条件的初始化
DOWHILEcx='Y'.OR.cx='y'&&大小写均可执行查询
CLEAR
ACCEPT'请输入学号:
'TOxh
LOCATEALLFOR学号=xh&&此处ALL可以缺省,默认为在全部记录查找。
IFEOF()
?
'查无此人!
'
WAIT
ELSE
DISPLAY
ENDIF
ACCEPT'继续按学号查询吗(Y/N)?
'TOcx&&修改循环条件
ENDDO
SETTALKON
USE
4.逐条显示“学生信息.dbf”文件中“英语成绩”大于等于75的记录。
方法一:
SETTALKOFF
CLEAR
USE学生信息
DOWHILE!
EOF()
IF英语成绩>=75
DISP
ENDIF
SKIP&&按默认值1向下移动记录指针
ENDDO
USE
SETTALKON
方法二:
SETTALKOFF
CLEAR
USE学生信息
locatefor英语成绩>=75
DOWHILE!
EOF()
display
continue
ENDDO
USE
SETTALKON
5.分别用DO循环和FOR循环求1+2+3+……+36的和值。
用DO循环的写法:
SETTALKOFF
CLEAR
S=0
N=1
DOWHILEN<=36
S=S+N
N=N+1
ENDDO
"1+2+3+……+36的值为:
",S
SETTALKON
用FOR循环的写法:
SETTALKOFF
CLEAR
S=0
FORN=1TO36
S=S+N
ENDFOR
"1+2+3+……+36的和值:
",S
SETTALKON
6.用“SCAN…ENDSCAN循环结构”显示“学生信息.dbf”文件中“英语成绩”大于等于75的记录。
SETTALKOFF
CLEAR
USE学生信息
SCANFOR英语成绩>=75
DISPLAY
ENDSCAN
USE
SETTALKON
7.求当1!
+3!
+5!
+…+n!
的值不超过10的20次幂时的临界值及n的值。
SETTALKOFF
CLEAR
S=1&&初始化存放累加和的变量S为1
STORE1TOT,N&&初始化变量T,N的值为1
DOWHILES<=1E+20
T=T*(N+1)*(N+2)&&从第二项开始,计算每一项阶乘。
S=S+T&&追加每一项阶乘
N=N+2&&下一个奇数
ENDDO
"S=",S-T&&最后一个S由于是多加了一个T后不满足条件,故减去。
"N=",N-2&&最后一个N由于是多加了一个2后不满足条件,故减去。
SETTALKON
8.在程序所在的目录中已有学生表(学生.Dbf)(字段为:
学号,姓名,性别,出生年月,简历,奖学金,照片)。
要求:
显示输出“学生”表中的1975年或以前出生的学生姓名和出生年月。
SETTALKOFF
CLEAR
USE学生
LOCATEFOR出生年月<={^1975-12-31}&&定位满足出生年月的记录
DOWHILE!
EOF()&&如果没有到表尾,显示姓名与出生年月
?
姓名,出生年月
CONTINUE&&继续指向满足条件的下一条记录
ENDDO
USE
SETTALKON
9.显示输出正整数M(从键盘输入)内的偶数及偶数和。
SETTALKOFF
CLEAR
INPUT"输入一个整数:
"TOM&&输入指定的正整数M的值
S=0&&初始化存放累加和变量S为0
FORP=1TOM
IFINT(P/2)=P/2&&判断P是否是偶数
?
P
S=S+P&&是偶数就把它累加起来
ENDIF
ENDFOR
S
SETTALKON
10.求解百鸡问题,“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一,百钱百鸡,问鸡翁、母、雏各几何?
”
note设公鸡、母鸡、小鸡的数量分别为x、y、z。
settalkoff
clear
forx=0to20
fory=0to33
z=100-x-y
if5*x+3*y+z/3=100
?
"公鸡数","母鸡数","小鸡数"
?
x,y,z
endif
endfor
endfor
settalkon
11.从键盘任意输入两个整数,求出最小公倍数和最大公约数。
SETTALKOFF
CLEAR
INPUT"输入第一个整数:
"TON
INPUT"输入第二个整数:
"TOM
X=MAX(N,M)&&大的有可能是最小公倍数
FORI=XTOM*N&&如果X不是最小公倍数,M*N一定是公倍数,但不一定是最小公倍数。
IFMOD(I,M)=0ANDMOD(I,N)=0&&在循环控制变量递增的过程中,如果出现能被M和N同时整除(余数为0),则为公倍数。
GBS=I&&把第一次出现的公倍数(最小公倍数)赋给变量“GBS”。
GYS=M*N/GBS&&最大公约数
EXIT&&找到第一个“I”便跳出循环
ENDIF
ENDFOR
"最小公倍数="+ltrim(STR(GBS)),"最大公约数="+ltrim(STR(GYS))
SETTALKON
12.
在给定“学生.DBF”表文件中包含有“学号”、“姓名”字段,对学号编制一个抽奖表单。
要求,不能有重复中奖学生。
程序运行时,字号在文本框中显示,用标签显示中奖学生的学号、姓名。
应有“开始”、“抽取”、“退出”控件。
建议表单(Form1)包括的控件是:
一个文本框(Text1)、两个标签(Label1、Label2)、三个按钮(Command1、Command2、Command3)和一个计时器(Timer1)。
请编写:
(1)表单Form1的Init事件代码:
this.text1.value="学生学号"&&文本框显示初值“学生学号”
this.label2.visible=.f.&&标签label2不可见
this.timer1.enabled=.f.&&计时器timer1不可用
this.timer1.interval=10&&计时器时间间隔为10/1000秒(即0.01秒)
(2)“开始”按钮Command1的Click事件代码:
setdeleteon&&隐藏已加入删除标记的记录
thisform.timer1.enabled=.t.&&使计时器可用
thisform.label2.visible=.f.&&标签label2不可见
(3)“选中”按钮Command2的Click事件代码:
thisform.timer1.enabled=.f.
thisform.label2.caption="中奖学生是:
学号"+thisform.text1.value+"姓名"+姓名
thisform.label2.visible=.t.
delete
(4)“退出”按钮Command3的Click事件代码:
recallall&&恢复已做删除标记的所有记录
thisform.release
(5)计时器(Timer1)的Timer事件代码:
if!
eof()&&如果不到记录尾
skip&&跳到下一记录,频率由Timer值决定。
Else&&如果已到记录尾
gotop&&跳到第一条记录
endif
thisform.text1.value=alltrim(学号)&&显示学生的学号
thisform.refresh
13.
编制一个表单完成表文件“学生.dbf”内容的只读浏览显示功能;表单初始显示内容为表文件“学生.dbf”的首记录;当按前翻、后翻、首记录、末记录按钮时,表单将自动显示相应记录的内容;当翻至表头或表尾时,将自动设置相应按钮不可访问。
参见下面的表单设计及运行示意图。
表单(Form1)的Init(初始化)事件代码
mand1.enabled=.f.
mand2.enabled=.f.
“首记录”(Command1)的Click(单击)事件代码
gotop
mand1.enabled=.f.
mand2.enabled=.f.
mand3.enabled=.t.
mand4.enabled=.t.
thisform.refresh
“上一记录”(Command2)的Click(单击)事件代码
if!
bof()
skip-1
mand3.enabled=.t.
mand4.enabled=.t.
else
mand1.enabled=.f.
mand2.enabled=.f.
endif
thisform.refresh
“下一记录”(Command3)的Click(单击)事件代码
if!
eof()
skip
mand1.enabled=.t.
mand2.enabled=.t.
else
mand3.enabled=.f.
mand4.enabled=.f.
endif
thisform.refresh
“未记录”(Command4)的Click(单击)事件代码
gobottom
mand4.enabled=.f.
mand3.enabled=.f.
mand1.enabled=.t.
mand2.enabled=.t.
thisform.refresh
14.
编制一个显示当前时间的时钟显示界面,要求每秒动态跳动一次,并将表单的背景设置蓝,绿两色自动变换(与时间同步切换),Timer1的Interval属性已在属性窗口中设置完成。
请编写计时器(Timer1)的Timer事件代码:
thisform.text1.value=time()&&使文本框显示系统时间
ifval(right(time(),2))%2=0&&如果秒值是2秒的整数倍。
thisform.backcolor=rgb(0,255,0)&&表单背景为绿色
else
thisform.backcolor=rgb(0,0,255)&&表单背景为篮色
endif
15.请设计一个右图所示的表单。
表单实现的功能是:
单击字体按钮和颜色按钮,“欢迎使用VFP!
”的字体和颜色会随之改变。
表单(Form1)包括的控件有:
两个命令按钮组(Commandgroup1、Commandgroup2)、一个标签(Label1)。
请写出相应控件的事件代码。
请写出:
(1)命令按钮组Commandgroup1的Click事件代码。
(2)命令按钮组Commandgroup2的Click事件代码。
命令按钮组Commandgroup1的Click事件代码
docase
casethis.value=1
thisform.label1.fontname="隶书"
casethis.value=2
thisform.label1.fontname="楷体"
casethis.value=3
thisform.label1.fontname="黑体"
casethis.value=4
thisform.label1.fontname="仿宋"
endcase
命令按钮组Commandgroup2的Click事件代码
docase
casethis.value=1
thisform.label1.forecolor=rgb(255,0,0)
casethis.value=2
thisform.label1.forecolor=rgb(0,0,255)
casethis.value=3
thisform.label1.forecolor=rgb(0,255,0)
casethis.value=4
thisform.label1.forecolor=rgb(255,255,0)
endcase
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VFP 程序设计 汇总
![提示](https://static.bdocx.com/images/bang_tan.gif)