zx=a(i)
ENDIF
ENDFOR
?
"最大值是:
",zd
?
"最小值是:
",zx
8.输入一个大于2的整数,判断其是否为素数。
clear
INPUT'输入一个大于2的整数:
'tom
k=0&&设变量k为能整除m的数的个数
FORi=2Tom-1&&该循环判断2到m-1之间的自然数能否整除m
IFm%i=0&&如果当前i能整除m
k=k+1&&k累加1
ENDIF
ENDFOR
IFk=0
?
"是素数"
ELSE
?
"不是素数"
ENDIF
二.面向对象的程序设计(表单设计)举例
认真研究下列几个表单的设计,设计过程仅供参考,只要运行符合要求,结果正确,都是正确的设计。
注意按表单设计的步骤写:
1)数据环境2)添加的对象3)属性的设置4)事件代码
1.设计如下表单,要求:
①在前两个文本框中输入两个小于10000的整数,②单击相应的命令按钮进行两个数的加减乘除运算,运算结果显示在第三个文本框中,计算结果不能修改;③单击“退出”命令按钮结束表单运行。
设计过程:
新建表单t1.scx
1)添加的对象:
三个标签:
label1、label2、label3;
三个文本框:
text1、text2、text3;
五个命令按钮:
command1、command2、command3、command4、command5。
2)属性设置:
三个标签的caption属性分别设为:
“操作数1”、“操作数2”、“计算结果”;
三个文本框的value属性设为0(或设为数值型),Text1和text2的inputmask属性设为9999,text3的readonly属性设为.t.
五个命令按钮的caption属性分别设为“+”、“-”、“×”、“÷”、“退出”。
3)事件代码:
①“+”命令按钮的click事件代码:
thisform.text3.value=thisform.text1.value+thisform.text2.value
②“-”命令按钮的click事件代码:
thisform.text3.value=thisform.text1.value-thisform.text2.value
③“×”命令按钮的click事件代码:
thisform.text3.value=thisform.text1.value*thisform.text2.value
④“÷”命令按钮的click事件代码:
thisform.text3.value=thisform.text1.value/thisform.text2.value
⑤“退出”命令按钮的click事件代码:
Thisform.release
2.输入圆的半径,求周长和面积。
要求:
①半径文本框输入的数为0-999之间的整数;②单击“计算”命令按钮计算周长和面积显示在相应文本框中,周长和面积的值不能修改;③单击“清空”命令按钮清空所有文本框中的值并将光标停在半径文本框中;
④单击“退出”命令按钮结束表单的运行。
设计过程:
新建表单t2.scx
1)添加的对象:
三个标签:
label1、label2、label3;
三个文本框:
text1、text2、text3;
三个命令按钮:
command1、command2、command3。
2)属性设置:
三个标签的caption属性分别设为:
“半径:
”、“周长:
”、“面积:
”;
文本框text1的inputmask属性设为999,Text2和text3的readonly属性设为.t.;.
三个命令按钮的caption属性分别设为“计算”、“清空”、“退出”。
3)事件代码:
①“计算”命令按钮的click事件代码:
thisform.text2.value=val(thisform.text1.value)*2*pi()
thisform.text3.value=val(thisform.text1.value)^2*pi()
②“清空”命令按钮的click事件代码:
thisform.text1.value=''
thisform.text2.value=''
thisform.text3.value=''
thisform.text1.setfocus
③“退出”命令按钮的click事件代码:
Thisform.release
3.设计如下倒计时表单。
要求:
①在微调器中设置倒计时秒数,单击“开始”按钮开始按秒倒计时,剩下的秒数显示在微调器中,计时结束(微调器的值为0)时使用消息框提示用户“时间到!
”;②单击“退出”命令按钮结束表单运行。
设计过程:
新建表单t3.scx
1)添加的对象:
一个标签:
label1;
一个微调器:
spinner1;
一个时钟:
timer1;
两个命令按钮:
command1、command2
2)属性设置:
标签的label1的caption属性分别设为:
“设置倒计时秒数”;
微调器spinner1的spinnerlowvalue属性和keyboardlowvalue属性分别设为0;
两个命令按钮的caption属性分别设为“开始计时”、“退出”。
3)事件代码:
①“开始计时”命令按钮的click事件代码:
thisform.timer1.interval=1000
②时钟的timmer事件代码:
ifthisform.spinner1.value=0
thisform.timer1.interval=0
messagebox("时间到!
")
else
thisform.spinner1.value=thisform.spinner1.value-1
thisform.refresh
endif
③“退出”命令按钮的click事件代码:
Thisform.release
4.设计如下表单模拟交通灯,微调器中的值为每种颜色的灯亮的秒数,运行时通过修改微调器的值控制各色灯亮的时间,要求三种颜色的灯循环亮。
红色值函数:
RGB(255,0,0),绿色值函数:
RGB(0,255,0),黄色值函数:
RGB(0,0,255),灰色表示不亮用函数:
RGB(240,240,240)。
设计过程:
新建表单t4.scx
1)添加的对象:
一个容器:
container1;
在容器中添加三个形状:
shape1、shape2、shape3;
一个时钟:
timer1;
三个标签:
label1、labe2、labe3
三个微调器:
spinner1、spinner2、spinner3
2)属性设置:
三个形状的曲率属性curvature设为90;
三个标签的caption属性分别设为:
“红”、“绿”、“黄”;
三个微调器的value属性设为1,spinnerlowvalue属性和keyboardlowvalue属性分别设为1;
时钟的interval属性设为1000。
3)事件代码:
①表单的init事件代码:
PUBLICi
i=1&&i的初始值赋为1表示开始红灯亮
②时钟的timmer事件代码:
DOcase
CASEi=1&&红灯亮
thisform.Timer1.Interval=thisform.spinner1.value*1000
thisform.container1.shape1.backcolor=rgb(255,0,0)
thisform.container1.shape2.backcolor=rgb(240,240,240)
thisform.container1.shape3.backcolor=rgb(240,240,240)
i=2
CASEi=2&&绿灯亮
thisform.Timer1.Interval=thisform.spinner2.value*1000
thisform.container1.shape2.backcolor=rgb(0,255,0)
thisform.container1.shape1.backcolor=rgb(240,240,240)
thisform.container1.shape3.backcolor=rgb(240,240,240)
i=3
CASEi=3&&黄灯亮
thisform.Timer1.Interval=thisform.spinner3.value*1000
thisform.container1.shape3.backcolor=rgb(255,255,0)
thisform.container1.shape1.backcolor=rgb(240,240,240)
thisform.container1.shape2.backcolor=rgb(240,240,240)
i=1
ENDCASE
5.设计下列表单,要求:
①使用组合框列出所有课程名(不重复),②在组合框中选中某门课(只能选择不能输入),单击“查询”命令按钮,则在表格中列出选该课的学生的学号、姓名和成绩;③单击“退出”按钮结束表单的运行。
设计过程:
新建表单t5.scx
1)设置数据环境:
将课程表添加到数据环境中。
2)添加的对象:
一个标签:
label1;
一个组合框:
combo1;
一个表格:
grid1;
两个命令按钮:
command1、command2。
3)属性设置:
标签的label1的caption属性分别设为:
“选择课程名:
”;
组合框combo1的style属性设为2,rowsourcetype属性设为字段,rowsource属性设为课程.课程名;
两个命令按钮的caption属性分别设为“查询”、“退出”。
4)事件代码:
①“查询”命令按钮的click事件代码:
select学生.学号,姓名,成绩from学生,课程,选课;
where学生.学号=选课.学号and课程.课程号=选课.课程号;
and课程.课程名=bo1.value;
intodbfaa
thisform.grid1.recordsourcetype=0
thisform.grid1.recordsource='aa.dbf'
②“退出”命令按钮的click事件代码:
Thisform.release
6.设计如下表单,要求:
①在组合框列出不重复的系名,②在组合框中选中某一系后(只能选择不能输入),单击选项按钮完成相应的查询,查询结果显示在浏览窗口;③单击“退出”命令按钮结束表单运行。
设计过程:
新建表单t6.scx
1)添加的对象:
一个标签:
label1;
一个组合框:
combo1;
一个选项按钮组:
optiongroup1;
一个命令按钮:
command11。
2)属性设置:
标签的label1的caption属性分别设为:
“选择课程名:
”;
组合框combo1的style属性设为2,rowsourcetype属性设为“SQL语句”,rowsource属性设为“selectdistinct所在系from学生intocursortb”;
选项按钮组的buttoncount属性设为3,即包含三个选项按钮option1、option2、option3,这三个选项按钮的caption属性分别设为:
“查询该系学生信息”、“查询该系各门课的平均分”、“查询该系各门课的最高分”;
命令按钮的caption属性分别设为“退出”。
3)事件代码:
①选项按钮option1的click事件代码:
select*from学生where所在系=bo1.value
②选项按钮option2的click事件代码:
SELECT课程.课程名,AVG(选课.成绩)as平均成绩;
FROM学生,选课,课程;
WHERE学生.学号=选课.学号AND选课.课程号=课程.课程号;
AND所在系=bo1.value;
GROUPBY课程.课程名
③选项按钮option3的click事件代码:
SELECT课程.课程名,MAX(选课.成绩)as最高成绩;
FROM学生,选课,课程;
WHERE学生.学号=选课.学号AND选课.课程号=课程.课程号;
AND所在系=bo1.value;
GROUPBY课程.课程名
④“退出”命令按钮的click事件代码:
Thisform.release
7.设计下列表单,求S=1+(1+2)+(1+2+3)+…+(1+2+3+…+n)
要求:
①n由微调器输入或设置,最小值为1,初始值为1,列表框中初始显示第一项;②单击“开始”按钮将前n项显示在列表框中,数列和显示在只读文本框中,③单击“退出”命令按钮结束表单运行。
设计过程:
新建表单t7.scx
1)添加的对象:
三个标签:
label1、label2、label3
一个微调器:
spinner1
一个列表框:
list1
一个文本框:
text1
两个命令按钮:
command1、command2
2)属性设置:
三个标签的caption属性分别设为:
“设置该数列要求的项数”、“该数列为:
”、“数列和”;
微调器的value属性设为1,spinnerlowvalue属性和keyboardlowvalue属性分别设为1;
文本框的readonly属性设为.t.
3)事件代码:
①表单的init事件代码:
THISFORM.list1.additem(str
(1))&&初始状态显示第一项
THISFORM.text1.value=(str
(1))
②“开始”命令按钮的click事件代码:
THISFORM.list1.clear&&列表框调用clear方法可清空列表框
s=0&&变量s放数列和
n=thisform.spinner1.value
declarea(n)&&定义有n个元素的数组放数列的项
docase
casen=1&&只显示一项的情况
THISFORM.list1.additem(str
(1))
s=1
otherwise&&显示多项的情况
THISFORM.list1.additem(str
(1))
s=1
a
(1)=1
FORi=2Ton
a(i)=a(i-1)+i&&第i项由第(i-1)项加i求得
THISFORM.list1.additem(str(a(i)))&&将第i项添加到列表框中
s=s+a(i)
ENDFOR
endcase
thisform.text1.value=str(s)&&将数列和显示在文本框中
③“退出”命令按钮的click事件代码:
Thisform.release
8.设计下列表单,求裴波那契数列前N项。
要求:
①N的值用微调器设置,最小值为1,初始值为2,列表框初始显示前两项;②单击“显示”按钮,在列表框中显示前N项;③单击“退出”按钮结束表单的运行。
该数列的第一项和第二项分别是1、1,从第三项开始每一项是其前两项的和。
即:
1,1,2,3,5,8,13,21,34,….
设计过程:
新建表单t8.scx
1)添加的对象:
一个标签:
label1
一个微调器:
spinner1
一个列表框:
list1
两个命令按钮:
command1、command2
2)属性设置:
标签的caption属性分别设为:
“设置数列要求的项数”;
微调器的spinnerlowvalue属性和keyboardlowvalue属性分别设为1;
3)事件代码:
①表单的init事件代码:
THISFORM.spinner1.value=2
THISFORM.list1.additem(str
(1))
THISFORM.list1.additem(str
(1))
②“显示”命令按钮的click事件代码:
THISFORM.list1.clear
n=thisform.spinner1.value
declarea(n)&&定义有n个元素的数组
docase
casen=1&&只显示第一项的情况
THISFORM.list1.additem(str
(1))
casen=2&&只显示前两项的情况
THISFORM.list1.additem(str
(1))
THISFORM.list1.additem(str
(1))
Otherwise&&显示多于两项的情况
THISFORM.list1.additem(str
(1))
THISFORM.list1.additem(str
(1))
a
(1)=1
a
(2)=1
FORi=3Ton
a(i)=a(i-1)+a(i-2)
THISFORM.list1.additem(str(a(i)))
ENDFOR
endcase
③“退出”命令按钮的click事件代码:
Thisform.release