VF程序实例8Word文档下载推荐.docx

上传人:b****5 文档编号:20287918 上传时间:2023-01-21 格式:DOCX 页数:21 大小:22.69KB
下载 相关 举报
VF程序实例8Word文档下载推荐.docx_第1页
第1页 / 共21页
VF程序实例8Word文档下载推荐.docx_第2页
第2页 / 共21页
VF程序实例8Word文档下载推荐.docx_第3页
第3页 / 共21页
VF程序实例8Word文档下载推荐.docx_第4页
第4页 / 共21页
VF程序实例8Word文档下载推荐.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

VF程序实例8Word文档下载推荐.docx

《VF程序实例8Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《VF程序实例8Word文档下载推荐.docx(21页珍藏版)》请在冰豆网上搜索。

VF程序实例8Word文档下载推荐.docx

114李四

119王二

成绩表:

CJ.DBF

学号语文数学

1106765

1148967

1197895

按照成绩表的成绩修改总分表的成绩,并计算出总分表的总分字段

参考答案:

INDEXON学号TAGXHCJ

USEZF

INDEXON学号TAGXHZF

UPDAON学号FROMBREPL语文WITHB.语文,数学WITHB.数学

REPLALL总分WITH语文+数学

LIST

例题3:

涉及joinwith:

将STUDENT.DBF和学生成绩.DBF连接成新文件NEW.DBF

表1:

student(学号c(4),姓名c(8),性别L,出生日期D,高考成绩N(5,2))

表2:

学生成绩(学号c(4),课程号C(3),分数N

(2))

SELECT1

USESTUDENT

SELECT2

USE学生成绩

JOINWITHATONEWFOR学号=A.学号;

FIEL学号,A.姓名,A.性别,A.出生日期,课程号,分数

USENEW

如果再增加一张表,三表相连:

表3:

课程(课程号C(3),课程名称C(10))

JOINWITHATONEWFOR学号=A.学号

USE课程

JOINWITHATOSTUFOR课程号=A.课程号

USESTU

二、累加、累乘

例1:

累加:

求1~100的和

SUM=0

FORI=1TO100

SUM=SUM+I

ENDFOR

?

’1~100的总和为:

’,SUM

使用DOWHILE实现:

I=1

DOWHILEI<

101

I=I+1

ENDDO

例2:

累乘:

求n!

clear

INPUT"

,请输入n的值:

"

TON

MUL=1

FORI=1TOn

MUL=MUL*I

n,’的值为:

’,MUL

例3:

输入n的值,求1+1/2!

+1/3!

+1/4!

+….+1/n!

(阶乘n!

=1*2*3*4....*(n-1)*n)

SUM=_①_

MUL=_②_

请输入n的值:

"

FORi=1TON

FORj=1TOi

MUL=MUL*__③__

ENDFOR

SUM=SUM+____④_____

'

求得的总和为:

'

SUM

答案:

1:

02:

13:

j4:

1/mul

注意:

外循环是累加,内循环是累乘

三、双重循环:

看书阅读:

1、P159页:

例4.39

2、P160页:

例4.40

3、求1-100间所有的质数

CLEAR

?

’2、3是质数’

FORI=4TO100

FORJ=2TOINT(SQRT(I))

IFMOD(I,J)=0

EXIT

ENDIF

ENDFOR

IFJ>

INT(SQRT(I))

I,’是质数’

4、运行XY.PRG程序后,将在屏幕上显示如下乘法表:

1)1

2)24

3)369

4)481216

5)510152025

6)61218243036

7)7142128354249

8)816243240485664

9)91827364554637281

请对下面的程序填空:

***计算乘法XY.PRG***

FORJ=1TO9

STR(J,2)+'

)'

FOR______________

______________

RETURN

第一空K=1TOJ第二空STR(J*k,6)

5、排序问题

四、排序

输入10个数,将它们从小到大排列

分析:

用i代表趟数,j代表次数

(1)10个数要比较9趟

(2)每趟要比较的次数为:

10-趟数

(3)每次比较:

如果当前数a(j)大于本次比较的最后一个数a(10+1-i)

那么就交换,否则不交换

dimea(10)

输入10个数:

fori=1to10

input"

请输入:

toa(i)

endfor

fori=1to9

forj=1to10-i

ifa(j)>

a(10-i+1)

t=a(10-i+1)

a(10-i+1)=a(j)

a(j)=t

endif

endfor

listmemolikea

另外可以参看书:

P162-163页例4.45

五、查询:

有下列表:

book(书名C(20),作者C(8),出版日期D,内容简介M)

编写程序:

查询关于foxpro的图书.

USEBOOK

LOCATEFOR‘foxpro’$书名

IF!

FOUND()

’没有关于foxpro的图书’

ELSE

DOWHILE!

EOF()

书名,作者,出版日期

内容介绍

WAIT“是否继续查找?

(Y/N)”TOM

IFM$’nN’

CONTINUE

”全部显示完成”

ENDIF

关键地方在于

1、什么地方用locate,什么地方用continue

2、if..exit..endif

3、dowhilenot的条件

使用Locate查找出所有入校总分在580及以上的所有同学信息

use学生

locatefor入校总分>

=580

dowhile.not.eof()

disp

continu

enddo

结束'

cancel

六、循环插入新记录

编写程序,对于学生.dbf能够在程序末尾循环插入新记录

USE学生

DOWHILE.T.

APPEBLANK

@5,20SAY'

学号'

GET学号

@5,40SAY'

姓名'

GET姓名

@7,20SAY'

性别'

GET性别

@7,30SAY'

出生年月'

GET出生年月

@9,20SAY'

入校总分'

GET入校总分

READ

WAIT'

你想继续插入新记录吗?

(Y/N):

TOX

IFX='

N'

ORX='

n'

类似:

编写程序,该程序能够顺序修改表学生.DBF中的所有数据。

(要求:

必须使用@行,列say...get..进行数据修改)

你想继续修改记录吗?

SKIP

七、参数传递\变量的作用域

&

MAIN.PRG&

P1.PRG

X1=1PARAW1,W2

X2=2PRIVATEW1

DOP1WITHX1,X2W1=W1*3

’X1=’+STR(X1,1)W2=W2*4

’X2=’+STR(X2,1)RETURN

X1=1

X2=2

DOP1WITHX1,X1+X2

’X1=’+STR(X1,1)

’X2=’+STR(X2,1)

RETURN

(1)第一次显示X1,X2的值是()

A.1,8B.3,8C.1,1D.8,8

(2)第二次显示X1,X2的值是()

A.1,2B.3,1C.3,2D.1,3

BC

下面看第二个实例:

主程序MCX2.PRG

clea

publici,j

store1toi,j,k

doscx2.prg

主程序的输出结果:

i="

+str(i,2)+"

j="

+str(j,2)+"

k="

+str(k,2)

cancel

子程序scx2.prg

privatej,k

i=i*2

j=j+1

k=j+1

子程序中输出的结果:

return

执行结果是:

子程序中输出的结果:

i=2j=3k=4

主程序的输出结果:

i=2j=1k=1

看等级考试中的题.(2003年10月笔试)

八、@行,列say...get...default...

字幕问题:

1、有如下程序段,其功能是显示汉字“2008年北京申奥成功!

从屏幕的顶部移至底部,请填空补充该程序

CH='

2008年北京申奥成功!

R=1

DOWHILER<

=23

@R,26SAYSPACE(60)

@__________,26SAYCH

T=INKEY(0.2)

_______________

答案为:

R+1R=R+1

答案说明:

@R,26SAYSPACE(60)的作用是将上一行显示的'

清除掉,然后@R+1,26SAYCH显示新一行的数据

R=R+1是保证dowhile不是死循环

2、从左到右显示"

同志们,要到期末了,努力奋斗吧!

!

两次

s=space(80)+"

+space(40)

fornn1=1to2&

显示两次

fornn2=1to110step2&

110=80+30,30是那个字符串的宽度

@20,0saysubstr(s,nn2,80)

inkey(2,'

H'

九、scatter/gather(本节选用的表是学生.dbf)

掌握:

1、scatter是将一条记录的值copy到一个数组中。

(对应一维数组)

copyfromarray则是多条记录拷贝到数组中。

(对应二维数组)

2、scatter和copyfromarray使用数组都可以不先定义,大小系统自己搞定

3、如果事先定义了的话,scatter会自动扩展大小,而copyfromarray则不会

请大家阅读下面两个例题体会:

例1:

将"

江冰"

同学的名字修改成"

姜冰"

locatefor姓名="

iffound()

scattertox&

思考:

数组X应该有多少个单元?

listmemolikex&

显示数组X的单元和值

x

(2)="

gatherfromx

wait

clear

list

else

对不起,没有江冰这个人"

endif

closeall

思考答案:

6个,那个备注型和通用型不算.

当然,上个题改为下例也对:

dimex(4)&

先定义数组X有4个单元

也是6个,那个备注型和通用型不算,虽然定义了四个,但是会自动扩展

例2:

关于copytoarray和appendfromarray

copystrutonew

list

copytoarrayyfields学号,姓名,性别&

数组Y应该是什么样的?

Y(1,2)="

张波"

&

王小平改为了张波"

sele0

usenew

appendfromarrayy

数组Y是:

y(10,3)

另外请分析本程序段的功能。

如果程序改为:

dimey(3,2)

usenew

那么:

数组Y是:

y(3,2)和scatter它们的区别:

不会自动扩展

执行程序观察结果。

看书:

P168页第七题!

十、数组

1、排序问题。

2、书:

163-164例4.46-4.47

1、数组的定义

DIMENTION数组名(数值表达式1,[数组表达式2...])

定义后单元默认值为.F.

2、一维数组

(1)、定义一个一维数组:

dimea(10)---定义一个10数组,且所有单元默认值为.F.

(2)、赋值:

例如:

a='

a

(1)=20

a(3)={^2002/09/23}

a(7)=.T.

....

循环赋值:

i=1

dowhilei<

=10

input'

请输入数:

i=i+1

或者是:

toa(i)

(3)、显示值:

a(i)

使用dowhile大家思考

方法2:

3、二维数组

dimes(5,4)

(1)、赋值:

s=0

s(3,4)=.t.

s(12)='

xixi'

.....相当于s(3,4)='

(2)、循环赋值

fori=1to5

forj=1to4

输入值:

toa(i,j)

forj=1to4

a(i,j)+space

(2)

十一、综合题

数据表JY.DBF的内容如下:

Record#借书证号借书日期

1001002/01/99

2000705/04/99

3000602/03/99

4001005/17/99

数据表JYR.DBF的内容如下:

Record#借书证号姓名职称

10006孟小梅教授

20010郑财勇讲师

30007王志军助教

且:

JYR库以借书证号为关键字建立了索引,索引文件为JYR.IDX

程序如下:

USEJYRINDEXJYR

USEJY

SETDEVICETOPRINT

注意:

有了这句话下面显示的结果都会发送到打印机

H=1

DOWHILE.NOT.EOF()

TS=DATE()-借书日期

IFTS>

80

SELECT1

SEEKB.借书证号

100.OR.职称<

>

’教授’

@H,4SAY姓名+’同志,您借的书已过期,请归还’

H=H+1

SELECT2

SETDEVICETOSCREEN

(1)设当前系统日期为06/15/99,程序将打印()还书的信息

A.孟小梅、郑财勇各一行B.孟小梅一行、郑财勇两行

C.孟、郑、王各一行D.孟、郑、王三人共五行

参考答案:

A

(2)高级职称和其它职称借书的最多天数分别是()

A.81天,101天B.100天,80天C.80天,100天D.101天,81天

B

(3)本程序的功能是:

()

A.查询接书证号B.查询借书日期

C.书未还书者D.查询并打印超期未还书者

D

OPENDATABASEemplorer

USEcompen

SCANFORRECNO()<

IF姓名=’李强’

LOOP

姓名,实发工资

ENDSCAN

USE

CLOSEDATABASE

(1)compen是:

A.自由表B.数据库表  C.数据库

D.可能是自由表,也可能是数据库表

答案是D

(2)若数据库有50条记录,则程序的功能是:

A.前10条记录中搜索“李强”的记录B.列出前10条记录

C.每10条记录一屏显示记录,但不显示“李强”的记录

D.列出前10条记录,但是不显示“李强”的记录

(3)循环结束后,指针指向()

A.第1条B.最后一条C.第10条D.最后1条记录加1

答案是D请注意:

scan循环是从第一条做到最后一条,然后在根据for

条件选择处理哪些记录.循环完成后一定EOF()为.t.

另外:

注意区分exit和loop的作用是:

exit退出循环,loop只是结束本次循环

请不能区分的同学下来再问.

请大家注意:

Scan的使用方法,考试很可能要涉及到的

这儿也给大家举例比较一下三种循环操作表:

三种方法实现显示出全部的男生。

------------------------------

使用DOWHILE循环:

DOWHILENOTEOF(

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

当前位置:首页 > 高中教育 > 初中教育

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

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