Visual FoxPro程序设计基础实例.docx

上传人:b****8 文档编号:9979164 上传时间:2023-02-07 格式:DOCX 页数:22 大小:214.07KB
下载 相关 举报
Visual FoxPro程序设计基础实例.docx_第1页
第1页 / 共22页
Visual FoxPro程序设计基础实例.docx_第2页
第2页 / 共22页
Visual FoxPro程序设计基础实例.docx_第3页
第3页 / 共22页
Visual FoxPro程序设计基础实例.docx_第4页
第4页 / 共22页
Visual FoxPro程序设计基础实例.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

Visual FoxPro程序设计基础实例.docx

《Visual FoxPro程序设计基础实例.docx》由会员分享,可在线阅读,更多相关《Visual FoxPro程序设计基础实例.docx(22页珍藏版)》请在冰豆网上搜索。

Visual FoxPro程序设计基础实例.docx

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

程序执行的结果:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1