vpf设计题类型解答.docx
- 文档编号:11703430
- 上传时间:2023-03-30
- 格式:DOCX
- 页数:26
- 大小:565.28KB
vpf设计题类型解答.docx
《vpf设计题类型解答.docx》由会员分享,可在线阅读,更多相关《vpf设计题类型解答.docx(26页珍藏版)》请在冰豆网上搜索。
vpf设计题类型解答
编写程序题汇总
第一类题:
计算题
解:
command1(“计算”命令按钮)的click事件编写如下代码:
a=val(thisform.text1.value)&&将文本框text1的值转化为数值型后赋值给a
b=val(thisform.text2.value)&&将文本框text2的值转化为数值型后赋值给b
n=0&&设置一个存储数据的空箱子
ifa<=b&&如果a大于等于b
fori=atob&&建立FOR循环设置i的值为a到b之间每次循环+1
ifi%3=0&&如果i除以3的余数为0,也就是i的值能被3整除
n=n+i&&那么n等于n加上本次循环中i的值,产生新的n值
endif&&结束if语句
endfor&&结束for循环
else&&否则,也就是a大于b的情况..else的具体用法见课本133-134页
fori=atobstep-1&&建立FOR循环设置I的值为a到b之间每次每次循环-1
ifi%3=0
n=n+i
endif
endfor
endif
thisform.text3.value=n&&将N的值赋给文本框text3输出
解:
command1(“等于”命令按钮)的click事件编写代码如下:
a=val(thisform.text1.value)&&将文本框text1的值转化为数值型后赋值给a
b=val(thisform.text2.value)&&将文本框text2的值转化为数值型后赋值给b
ifthisform.optiongroup1.value=1&&如果选项按钮组optiongroup1的值等于1,也就是选&&中第一个按钮
c=a+b&&将a+b的值赋给变量c
else&&否则,也就是选项按钮组optiongroup1的值等于2
c=a-b&&将a-b的值赋给变量c
endif&&结束if语句
thisform.text3.value=c&&将c的值赋给文本框text3输出
ifc<0&&如果c小于0
thisform.text3.forecolor=rgb(255,0,0)&&text3的字体颜色为255,0,0(纯红色)
else
thisform.text3.forecolor=rgb(0,0,255)&&text3的字体颜色为0,0,255(纯蓝色)
endif
解:
command1(“计算”命令按钮)的click事件编写代码如下:
方法一
a=val(thisform.text1.value)&&将文本框text1的值转化为数值型后赋值给a
b=(a-int(a))*1000&&a减去去整后的a得到小数位,并将其乘以1000得到三位整数,并赋值给b例:
假如a等于10.135则该值等于(10.135-10)*1000=135
bai=int(b/100)&&将b的值除以100后取整,如135/100=1.35取整后等于1,相当于取百位数
shi=int(b%100/10)&&将b除以100取余数后再除以10,并对这个数取整,例:
135%100=35,35/10=3.5取整后等于3,相当于取十位数
ge=b%10&&将b除以10以后取余数.例;135%10=5,相当于取个位数
thisform.text2.value=bai+shi+ge&&将三位数字相加后赋值给text2
方法二
a=val(thisform.text1.value)
b=(a-int(a))*1000
bai=val(subs(str(b,3,0),1,1))&&用str函数将b值转化为长度为三,小数位为0位的字符型数据,然后再将这个字符串的第一位抽出来,并转化为数值型数据
shi=val(subs(str(b,3,0),2,1))&&大致同上
ge=val(subs(str(b,3,0),3,1))&&大致同上
thisform.text2.value=bai+shi+ge
解:
command1(“计算”命令按钮)的click事件编写代码如下:
a=thisform.text1.value&&将文本框text1的值转化为数值型后赋值给a
b=thisform.text2.value&&将文本框text2的值转化为数值型后赋值给b
c=thisform.text3.value&&将文本框text3的值转化为数值型后赋值给c
d=thisform.text4.value&&将文本框text4的值转化为数值型后赋值给d
thisform.text5.value=round(a*b+c*d,1)
&&对a*b+c*d保留一位小数四舍五入以后赋给text5输出
解:
command1(“计算”命令按钮)的click事件编写代码如下:
a=thisform.text1.value&&将文本框text1的值转化为数值型后赋值给a
b=thisform.text2.value&&将文本框text2的值转化为数值型后赋值给b
c=thisform.text3.value&&将文本框text3的值转化为数值型后赋值给c
d=thisform.text4.value&&将文本框text4的值转化为数值型后赋值给d
f=a*b+c*d
iff<300&&如果f小于300
thisform.text5.value=round(f,0)&&将f四舍五入取整后赋给text5输出
else&&否则
thisform.text5.value=round(f*0.9,0)&&将f打九折四舍五入取整后赋给text5输出
endif
第二类:
求和题
解:
方法一:
command1(“计算”命令按钮)的click事件编写代码如下:
a=thisform.text1.value&&将文本框text1的值转化为数值型后赋值给a
n=0&&设置一个存储数据的空箱子n
fori=1to1000&&建立for循环设置i的值为1到1000之间,每次循环+1
ifi%10=a&&如果i除以10以后余数为a,也就是个位数为a
n=n+i&&那么n等于n加上本次循环中i的值,产生新的n值
endif
endfor
thisform.text2.value=n
方法二:
command1(“计算”命令按钮)的click事件编写代码如下:
a=thisform.text1.value
n=0
fori=ato1000step10&&建立for循环设置i的值为a到1000之间,每次循环+10,也就
&&是个位数不变,都是a.假设a=6,i前三次循环中的值就是6,16,26
n=n+i
endfor
thisform.text2.value=n
解:
command1(“计算”命令按钮)的click事件编写代码如下:
a=thisform.text1.value&&将文本框text1的值转化为数值型后赋值给a
n=0&&设置一个存储数据的空箱子n
fori=1toa&&建立for循环设置i的值为1到a之间,每次循环+1
ifi%5=0andi%2=1&&如果i能被5整除;并且i为奇数.若题目要求偶数则改为i%2=0
n=n+I&&那么n等于n加上本次循环中i的值,产生新的n值
endif
endfor
thisform.text2.value=n
解:
command1(“计算”命令按钮)的click事件编写代码如下:
本题基本同上一题相同,不做注释;自行理解.
a=thisform.text1.value
n=0
fori=1toa
ifi%3=0andi%2=0
n=n+i
endif
endfor
thisform.text2.value=n
本题基本同上一题相同,不做注释;自行理解.
解:
command1(“计算”命令按钮)的click事件编写代码如下:
a=thisform.text1.value
n=0
fori=1toa
ifi%6=0
n=n+i
endif
endfor
thisform.text2.value=n
本题基本同上一题相同,不做注释;自行理解.
解:
方法一:
command1(“计算”命令按钮)的click事件编写代码如下:
a=thisform.text1.value
n=0
fori=1toa
ifi%2=1
n=n+i
endif
endfor
方法二:
command1(“计算”命令按钮)的click事件编写代码如下:
a=thisform.text1.value
n=0
fori=1toastep2&&建立for循环设置i的值为1到a,每次循环+2,前三次循环中i的值分别为1,3,5
n=n+i
endfor
本题基本同上一题相同,不做注释;自行理解.
解:
方法一:
command1(“计算”命令按钮)的click事件编写代码如下:
a=thisform.text1.value
n=0
fori=1toa
ifi%2=0
n=n+i
endif
endfor
方法二:
command1(“计算”命令按钮)的click事件编写代码如下:
a=thisform.text1.value
n=0
for0=1toastep2
n=n+i
endfor
第三类:
求个数题
解:
command1(“非数字字符个数”命令按钮)的click事件编写代码如下:
a=allt(thisform.text1.value)&&将文本框text1的值去除空格后赋值给a
n=0&&设置一个空箱子n的值为0
fori=1tolen(a)&&建立for循环设置i的值为1到len(a),每次循环+1
if!
(val(subs(a,i,1))>=1andval(subs(a,i,1))<=9orsubs(a,i,1)='0')
&&如果a的第i位字符转化为数字型数据后不为1-9的其中一个数,或者a的第i位数值不为’0’
n=n+1&&那么n等于n+1,产生新的n值
endif
endfor
thisform.text2.value=n
本题原解题方法有误,因为val函数中假如对象是非数字字符的话输入的结果为0
a=allt(thisform.text1.value)&&将文本框text1的值去除空格后赋值给a
n=len(a)&&将字符串的长度赋值给n
fori=1ton&&建立for循环设置i的值为1到n,每次循环+1
ifval(subs(a,i,1))>=1andval(subs(a,i,1))<=9orsubs(a,i,1)='0'&&如果a的第i位字符转化为数字型数据后为1-9的其中一个数,或者a的第i位数值为’0’
n=n-1&&那么n等于n-1,产生新的n值.n的值我们初始设置为字符串的总长度,每遇到一个数字字符我们就将n-1,那么最后剩下的数字就是非数字字符的数量了。
如字符串’abcd123’总长度为7,每遇到一个数字就减1,总共有3个数字,减到最后剩下的数字就为4
endif
endfor
thisform.text2.value=n
解:
command1(“统计英文字母个数”命令按钮)的click事件编写代码如下:
a=allt(thisform.text1.value)&&将文本框text1的值去除空格后赋值给a
n=0&&设置一个空箱子n的值为0
fori=1tolen(a)&&建立for循环设置i的值为1到len(a),每次循环+1
ifasc(upper(subs(a,i,1)))>=65andasc(upper(subs(a,i,1)))<=90
&&先将a的第i位字符转化为大写,然后提取他的ascll码值,假如得到的值在65-90之间的话大写A=65Z=90
n=n+1
endif
endfor
thisform.text2.value=n
解:
设置text1(文本框)的value属性值为0
command1(“开始计时”命令按钮)的click事件编写代码如下:
Thisform.timer1.enabled=.t.&&激活计时器控件timer1使其开始运行
timer1(时间控件)的timer事件编写代码如下:
thisform.text1.value=thisform.text1.value+1&&计时器每跳动一次,text1的值+1
ifthisform.text1.value%2=1&&假如text1的值为奇数
thisform.backcolor=rgb(0,255,0)&&当前窗体的背景色为绿色即(0,255,0)
else&&否则,也就是text1的值为偶数的情况
thisform.backcolor=rgb(0,255,0)&&当前窗体的背景色为绿色即(0,255,0)
endif
第四类:
表记录定位题
解:
command1(“奖学金”命令按钮)的click事件编写如下代码:
a=thisform.text4.value&&将文本框text4的值赋值给a
b=thisform.text5.value&&将文本框text1的值转化为数值型后赋值给b
c=(a+b)/2&&将a+b的值除以2后(也就是平均值)赋值给c
ifc>=90&&假如c大于等于90
thisform.label1.caption=“一等”&&那么标签控件label1显示’一等’
endif
ifc>=80andc<90&&同上
thisform.label1.caption=“二等”
endif
ifc<80&&同上
thisform.label1.caption=“无”
endif
解:
command1(“上一页”命令按钮)的click事件编写代码如下:
ifrecn()>1&&如果当前记录号大于1,也就说当前记录不是第一条记录
skip-1&&向上跳动一条记录
endif
if是否借出=.t.&&如果复选框是否借出为真,也就是属于被选中状态
thisform.check1.forecolor=rgb(0,0,128)&&check1的字体颜色为蓝色(0,0,128)
else&&否则
thisform.check1.forecolor=rgb(0,0,0)&&check1的字体颜色为黑色(0,0,0)
endif
thisform.refresh&&刷新表单
command2(“下一页”命令按钮)的click事件编写代码如下:
ifrecn() skip endif if是否借出=.t. thisform.check1.forecolor=rgb(0,0,128) else thisform.check1.forecolor=rgb(0,0,0) endif thisform.refresh 注意是对命令按钮组当中的上一页,下一页两个按钮编写事件代码 解: command1(“开始搜索”命令按钮)的click事件编写代码如下: locafor学校名称=allt(thisform.text1.value)&&查找学校名称等于去掉空格以后的text1的值的记录 iffound()&&如果查找的结果为真,也就是找得到该记录,具体用法见课本46页,这里if &&面found()没有写条件是等于.t.还是.f.,默认认为是.t. thisform.label2.caption=“欢迎到来”&&标签labll1显示’欢迎到来’ mand2.enabled=.f.&&标签labll1显示’欢迎到来’按钮command2的enabled值为假,也&&就是处于未激活状态,不可点击. Else&&否则 thisform.label2.caption=“库中暂缺,添加吗? ”&&标签labll1显示’库中暂缺,添加吗? ’ mand2.enabled=.t.&&按钮command2的enabled值为真,也就是处于激活状态,可点击. endif command2(“是”命令按钮)的click事件编写代码如下: appeblan&&添加一条空记录 repl学校名称withthisform.text1.value&&将校名称字段改为text1所输入的值 解: command1(“上一页”命令按钮)的click事件编写代码如下: mand2.enabled=.t.&&按钮command2的enabled值为真,也就是处于激活状态,可点击. ifrecn()>1&&如果当前记录号大于1,也就说当前记录不是第一条记录 skip-1&&向上跳动一条记录 endif thisform.refresh&&刷新表单 ifrecn()=1&&如果当前记录号等于1,也就说当前记录是第一条记录 mand1.enabled=.f.&&按钮command2的enabled值为假,也就是处于未激活状态,不可点击. endif command2(“下一页”命令按钮)的click事件编写代码如下: mand1.enabled=.t. ifrecn() skip&&向下跳动一条记录 endif thisform.refresh ifrecn()=recount() mand1.enabled=.f. endif 解: command1(“中文意思是”命令按钮)的click事件编写代码如下: a=upper(allt(thisform.text1.value))&&将文本框text1输入的单词转化为大写后值赋值给a locaforupper(allt(单词))=a&&查找单词字段中转化为大写后与a相同的记录 iffound()&&如果查找的结果为真,也就是找得到该记录, thisform.label1.caption=’中文意思’&&则标签label1显示’中文意思’ else&&否则 thisform.label1.caption=“表中尚无此单词”&&则标签label1显示’表中尚无此单词’ endif 解: 1、check1(“允许”复选框控件)的click事件编写如下代码: ifthisform.check1.value=1&&假如复选框check1的值等于1 mand1.enabled=.t.&&按钮command1的enabled值为真,也就是处于激活状态,可点击. Else&&否则 mand1.enabled=.f.&&按钮command1的enabled值为假,也就是处于未激活状态,不可点击 endif 2、command1(“添加”命令按钮)的click事件编写如下代码: appeblank&&追加一条空记录 repl学号with“200211”&&修改学号字段为‘200211’ repl姓名with“张三” repl性别with“男” repl出生日期with{^1983/06/28} thisform.refresh&&刷新表单 第五类: SQL查询语句类题 解: 设置optiongroup1(选项控件)的“value”属性值为1 command1(“确定”命令按钮)的click事件编写代码如下: ifthisform.optiongroup1.value=1&&假如选项按钮组optiongroup1的值等于1,也就是选中第一个按钮 thisform.grid1.recordsource=“sele*fromcustomerorderby用户名intocursora” &&则表格grid1的recordsource属性为以上SQL语句,该语句可手动建立查询后点击 按钮获得,注意查询去向到任意名&&字的临时表,SQL语句两边要加引号 else thisform.grid1.recordsource=“sele*fromcustomerorderby用户名dsscintocursora”&&与以上大致相同 endif 解: 设置optiongroup1(选项控件)的value属性值为“超级MP4” command1(“统计”命令按钮)的click事件编写代码如下: thisform.grid1.recordsource=“SELECTXsb.年度,(Xsb.上半年利润+Xsb.下半年利润)as全年利润; FROMspdmbINNERJOINxsb; ONSpdmb.商品号=Xsb.商品号; WHERESpdmb.商品名=thisform.optiongroup1.valueintocursorb” thisform.refresh &&本题大致如上题,但是需要对SQL语句进行修改,蓝色字体部分为改动,表示根据命令按钮组所选定的商品名进行筛选 解: 1、选中组合框,右击生成器,在列表项选项卡中添加work表中的“工号”字段,并在值选项卡中添加work表中的“工号”字段; 2、combo1(组合框)的click事件编写代码如下: s1=alltrim(thisform.Combo1.Value)&&将组合框combo1的值去掉空格后复制给s1 select姓名,基本工资,职称,部门号fromworkwhere工号=s1intoarraya&&一样是使用SQL语句,但是这里是赋值给数组a,这里数组a有四个元素,依次分别是姓名,&&基本工资,职称,部门号.筛选条件是工号等于s1,也就是组合框combo1中选中的工号 SELECT部门名FROMbmdmwhere部门号=a(4)intoarrayb &&查询部门号等于数组a第四个元素的部门名,并且存入数组b中去。 这里的数组b只有
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vpf 设计 类型 解答