Visual FoxPro程序设计基础实例.docx
- 文档编号:9979164
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:22
- 大小:214.07KB
Visual FoxPro程序设计基础实例.docx
《Visual FoxPro程序设计基础实例.docx》由会员分享,可在线阅读,更多相关《Visual FoxPro程序设计基础实例.docx(22页珍藏版)》请在冰豆网上搜索。
VisualFoxPro程序设计基础实例
VisualFoxPro程序设计基础实例
▲表文件CJ.DBF情况:
学生成绩数据库的表文件cj.dbf结构为:
字段名字段类型宽度小数位
学号字符型6
姓名字符型10
英语数值型62
高等数学数值型62
计算机应用数值型62
总分数值型72
平均分数值型62
建立表文件cj.dbf结构显示如下:
输入一些学生成绩。
例2-1计算表cj.dbf中的平均分和总分的程序
settalkoff
CLOSEALL
USEc:
\000\CJ
REPLACEALL总分WITH英语+数学+计算机应用
REPLACEALL平均分WITH总分/3
LIST
执行结果为:
例2-2统计成绩表cj.dbf中平均分大于90分的所有学生数目。
SETTALKOFF
CLEAR
USEc:
\000\CJ
M=0
SCANFOR平均分>90
DISPLAY
M=M+1
ENDSCAN
"总数为:
",M
USE
RETURN
执行结果:
例2-3统计成绩表cj.dbf中所有英语大于等于75分的学生数目。
SETTALKOFF
USEC:
\000\CJ
MCOUNT=0
FORREC=1TORECCOUNT()&&RECCOUNT()为该库中的记录数
GOREC
IF英语<75
LOOP
ENDIF
DISPLAY
MCOUNT=MCOUNT+1
ENDFOR
"英语成绩不小于75分的总数为:
",MCOUNT
USE
RETURN
执行结果:
例2-4显示表cj.dbf中英语成绩小于90分的学生。
SETTALKOFF
CLEAR
USECJ
DOWHILE.T.(**或DOWHILE.NOT.EOF())
IF英语>=90
SKIP(或**LOOP)
ENDIF
DISPLAY
WAIT"按任一键继续显示.…"
SKIP
ENDDO
USE
RETURN
执行结果:
例2-5对成绩表cj.dbf查询,若首记录的平均分数大于60分,则显示及格;成绩不及格”否则显示不及格。
SETTALKOFF
CLEAR
USEC:
\000\CJ
IF平均分>60
?
姓名+"成绩及格"
ELSE
?
姓名+"成绩不及格"
ENDIF
USE
RETURN
执行结果如下:
例2-6对成绩表cj.dbf查询,根据该学生的平均分进行分类:
优秀90<=平均分
优良80<=平均分<90
良好70<=平均分<80
及格60<=平均分<70
不及格平均分<60
程序为:
SETTALKOFF
CLEAR
USEC:
\000\CJ
DOCASE
CASE平均分>=90
?
姓名+":
成绩优秀"
CASE平均分>=80
?
姓名+":
成绩优良"
CASE平均分>=70
?
姓名+":
成绩良好"
CASE平均分>=60
?
姓名+":
成绩及格"
OTHERWISE
?
姓名+":
成绩不及格"
ENDCASE
USE
RETURN
执行结果如下:
例2-7设计5乘5的乘法表
settalkoff
clear
x=1
dowhilex<=5
y=1
dowhiley<=x
s=x*y
?
?
str(y,1)+"*"+str(x,1)+"="+str(s,2)+""
y=y+1
enddo
?
x=x+1
enddo
执行结果:
例2-8DOCASE……ENDCASE命令的嵌套用法.
SETTAlKOFF
CLEAR
"1…………录入"
"2………查询"
"3…………修改"
"4…………打印"
ACCEPT"输入选择(0-4):
"TOMSELECT
DOCASE
CASEMSELECT="l"
DOAPP&&录入程序
CASEMSELECT="2"
DOQUER&&查询程序
CASEMSElECT="3"
DOMOD&&修改程序
CASEMSELECT="4"
CLEAR
"1--打印A类表"
"2--打印B类表"
"3--打印C类表"
ACCEPT"输入选择(1-3):
"TOMY
DOCASE
CASEMY="1"
DOPRINTA
CASEMY="2"
DOPRINTB
CASEMY="3"
DOPRINTC
ENDCASE
例2-9显示成绩库CJ.DBF中记录号为偶数的前三个学生记录。
SETTALKOFF
CLEAR
USEC:
\000\CJ
forrec=2to6STEP2
gorec
DISPLAY
SKIP2
ENDFOR
USE
RETURN
执行结果:
例2-10编程计算:
S=l!
+2!
+3!
+...+10!
的值。
要求用过程求阶乘。
SETTALKOFF
CLEAR
PUBLICT
S=0
&&FORN=1TO10
forn=1to10
DOJC
S=S+T
ENDFOR
?
"S=",S
SETTALKON
RETURN
PROCEDUREJC&&过程放在调用它的上层程序之后
PRIVATES&&这里的S是局部变量,与主程序中的S占用不同的存贮单元
T=1
FORS=1TON
T=T*S&&这里T为N!
的值
ENDFOR
?
str(N,2)+"!
="+str(T,8)
&&?
STR(N,2)
RETURN
执行结果:
例2-11主程序MAIN.PRG中调用过程SUBl,SUB2,主程序如下:
?
"#######1"
DOSUB1
?
"#######2"
DOSUB2
?
"#######3"
RETURN
&&过程SUB1.PRG如下:
PROCEDURESUB1
?
"********1"
RETURN
&&过程SUB2.PRG如下:
PROCEDURESUB2
?
"*******2"
RETURN
执行结果:
例2-12求职工的平均工资(职工信息档案为:
DA.DBF)
clear
settalkoff
usec:
\000\da
averageall基本工资toa
"职工平均工资:
"+str(a,8,2)
use
settalkon
return
执行结果:
例2-13执行以下程序段:
PUBLICA
PRIVATEB
?
"A=",A
?
"B=",B
例2-14显示库文件CJ.DBF的姓名及总分字段,要求用模式符定义显示总分字
SETTALKOFF
CLEAR
usec:
\000\cj
DOWHILE.NOT.EOF()
@ROW()+1,4SAY"姓名:
"
@ROW(),COL()+1SAY姓名PICTURE"@JXXXXXXXX"
@ROW(),COL()+1SAY"总分:
"
@ROW(),COL()+1SAY总分PICTURE"999.99"
SKIP
ENDDO
执行结果:
例2-15根据下面程序求出结果。
settalkoff
clear
x1=4
dowhilex1>=1
x2=1
dowhilex2 x2*x1 x2=x2+1 enddo x1=x1-1 enddo settalkon 执行结果: 例2-16字母大小写变换程序。 settalkoff clear accept"请输入一字符串: "tox i=1 s="" dowhilei<=len(X) s=substr(x,i,1)+s &&s=s+substr(x,i,1) i=i+1 enddo "X=",upper(x) "s=",lower(s) settalkon 执行结果: 例2-17求1--10的阶乘 settalkoff clear i=1 dowhile.t. k=1 j=1 dowhilej k=k*j j=j+1 enddo k i=i+1 ifi>10 exit endif enddo return 执行结果: 例2-18字符串颠倒程序 settalkoff x="子女" y="" i=len(x) dowhilei>=1 y=y+substr(x,i-1,2) i=i-2 enddo y return 执行结果: 例2-19计算100以内自然数的和 settalkoff store0tox,y dowhile.t. x=x+1 y=y+x ifx>=100 exit endif enddo "y"+str(y,5) return 执行结果: 例2-20写数学公式程序: Y=3*X(x>0),Y=0(x<0); settalkoff clear input"请输入X的值"tox ifx>0 "Y的值等于",3*x else "Y的值等于",0 endif 例2-21求三个数的最大数; clear input"请输入A的值"toA input"请输入B的值"toB input"请输入C的值"toC ifA>=BandA>=C "MAX=",A else ifB>=AandB>=C ? "MAX=",B else ? "MAX=",C endif endif 例2-22求三个数的最大数; clear input"请输入A的值"toA input"请输入B的值"toB input"请输入C的值"toC max(A,B,C) 例2-23求用年月日表示今天。 clear xdate=str(year(date()),4)+"年" xdate=xdate+str(month(date()),2)+"月" xdate=xdate+ltrim(str(day(date()),2))+"日" xdate 例2-24显示课号为C301的记录; settalkoff clear usec: \000\student.dbf m=0 scanfor课号="C301" display m=m+1 endscan "总数为: ",m use return 执行结果: 例2-25统计分数>80的人数; settalkoff clear usec: \000\student.dbf n=0 scanfor分数>80 display n=n+1 endscan "总数为: ",n use return 执行结果: 例2-26求100以内奇数的和; settalkoff clear s=0 fori=1to99step2 s=s+i endfor ? "s=",s return 执行结果: 例2-27求1到11中奇数的和; settalkoff clear s=0 fori=11to1step-2 s=s+i endfor ? "s=",s return 执行结果: 例2-28求出下列程序执行的结果; settalkoff clear s=0 n=1 K=1 dowhilek<=10 ifint(k/2)#k/2 s=s+k else n=n+k endif k=k+1 enddo ? "s=",s ? "n=",n settalkon 程序执行的结果为: 例2-29求下列程序执行的结果; settalkoff clear store0tox,y dowhilex<101 x=x+1 ifmod(x,3)=0 loop endif y=y+1 enddo "y=" str(y,2) settalkon 程序执行的结果: y=68 例2-30求下列程序执行的结果; settalkoff clear dimensiona(7) i=1 dowhilei<=7 a(i)=3*i+1 i=i+1 enddo a(a (1)+1),a(a(3)-5)-1 settalkon 程序执行的结果: 例2-31求下列程序执行的结果; settalkoff clear fori=4to1step-1 j=1 s="*" dowhilej<2*i-1 s=s+"*" j=j+1 enddo @ROW()+1,20-i+1says endfor 程序执行的结果:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Visual FoxPro程序设计基础实例 FoxPro 程序设计 基础 实例
![提示](https://static.bdocx.com/images/bang_tan.gif)