VFP程序题

2024-05-11

VFP程序题(共6篇)

篇1:VFP程序题

VFP程序题 第一套题

一、运行结果题

1、以下程序运行结果是

SET TALK OFF

CLEAR

A = 5

B = 12

C = 18 IF MAX(A , B)< C

? MAX(A, B)

ELSE IF MIN(A , B)< C

? C

ELSE

? MIN(A , B)

ENDIF

ENDIF SET TALK ON

RETURN

2、以下程序运行结果是

SET TALK OFF CLEAR USE STCJ

DO WHILE ,NOT, EOF()

REPLACE 总分 WITH 高数 + 计算机 + 英语 SKIP

ENDDO GO BOTTOM

? 学号,总分

USE

RETURN

3、以下程序运行结果是

SET TALK OFF

SET HEADINGS OFF SELECT 2 USE STCJ

INDEX ON 编号

TO GZ21

REPLACE ALL 总分

WITH 高数 + 计算机 + 英语 SELECT 1 USE STDA

SET RELATION TO 编号

INTO B DISPLAY FIELDS 姓名,B.总分

FOR 四级通过

OFF CLOSE ALL RETURN

4、以下程序运行结果是

SET TALK OFF SET SAFETY OFF USE STDA INDEX ON 民族

TO XBSY TOTAL ON 民族

TO GZHZ USE GZHZ COUNT TO N ? N

SET SAFETY ON SET

TALK

ON RETURN

5、以下程序运行结果是

SET TALK OFF SET DELETED ON USE STDA DELETE FOR 性别 = “ 男 ” COUNT TO A SET DELETED OFF COUNT TO B DELETE ALL PACK COUNT TO C ? A , B , C SET TALK ON RETURN

6、以下程序运行结果是

SET TALK OFF USE STDA

INDEX ON 奖学金

TO GZSY SKIP 2

? 姓名,奖学金 USE

SET TALK ON RETURN

7、以下程序运行结果是

SET TALK OFF

SET PROCEDURN TO SP S = 0

DO SP1 WITH 5 , S ? S

SET TPROCEDURE

TO RETURN * SP PRG PROCEDURE

PARAMETERS X , Y N = 1 Y = 1

DO WHILE N < X

Y = Y + N

N = N + 1

ENDDO

RETURN

8、以下程序运行结果是

SET TALK OFF DIMENSION X(2 ,2)X = 5 FOR I = 1 TO 2 FOR J = 1 TO 2 IF I = J

X(I , J)ENDIF ?? X(I , J)ENDFOR ENDFOR SET TALK ON RETURN

二、完善程序

1、下列程序计算机 S =1!+ 2!+3!+4!+5!中,填空完成程序。

S = 0 FOR N = 1

TO 5

FOR I = 1 TO N

P = P * I

ENDFOR

ENDFOR

? “SUN =” , S

2、用下列程序找出所有的水仙花数,所谓水仙花数,是指这样一

个三位数,其各位数字的立方和等于该数本身,如 153 = 1^3 +5^3 +3^3,对以下程序填空完成该功能。FOR N = 100 TO 999

A = INT(N / 100)

B =

C = N – INT(N / 10)* 10 IF N = A^3 +B^3 +C^3

? N

ENDIF

ENDFOR

RETURN

3、将新表 DB2.DBF 文件中学号重复的记录删掉(只保留一个)SET TALK OFF SET SAFETY

OFF

USE STDA

COPY TO DB2 USE DB2

INDEX ON 学号

TO XH DO WHILE.NOT.EOF()XH = 学号 SKIP

DELETE ENDIF ENDDO

CLEAR ALL

4、显示STDA.DBF 文件中男同学的记录

SET

TALK

OFF

SET

HEADING

OFF

USE

STDA

DO

WHILE

.NOT.EOF()

IF

ENDIF

DISPLAY

WAIT

ENDDO

USE

SET

TALK ON

RETURN

5、将STDA.DBF 表中未通过英语四级考试学生的将赏金取消,通过者奖学金加50元,并显示姓名和奖学金额。SET TALK OFF

CLEAR USE STDA DO WHILE.NOT.EOF()IF.NOT.四级通过

REPLACE 奖学

WITH 0

ELSE

? 姓名,奖学金

ENDIF

SKIP

ENDDO

USE

SET TALK ON

RETURN

6、按学号查询成绩

SET TALK OFF CLEAR SELECT 1 USE STDA

INDEX ON 学号 TO IXH SELECT 2 USE STCJ

INDEX ON 学号 TO ICJ

ACCEPT “请输入查询学号:” TO XH SEEK

XH IF

FOUND()

DISPLAY

学号,A->姓名,总分

ELSE

? “ 查无此人!”

ENDIF

USE RETURN

7、请阅读下列判断一个自然数是否为质数的程序,并将程序填写完整。

SET

TALK

OFF

INPUT

“ 请输入一个大于1 的自然数:”

TO N

K = 0

J = 2

DO

WHILE

J < N IF MOD(N , J)

J = J +1

LOOP

ELSE

K = 1

EXIT

ENDIF

ENDDO

IF

K = 0

?

+ “ 素数”

ENDIF

? “ 再见!” SET TALK ON

RETURN

8、修改数据表文件 STDA.DBF 中指定同学的四级通过情况。SET TALK OFF USE STDA

INDEX TO ISY

DO

WHILE.T.CLEAR

ACCEPT “ 输入待学生的姓名” TO XM SEEK XM

IF

FOUND()

@ 10 , 10 SAY “ 修改” + XM + “ 的四级通过情况:” GET 四级通过

WAIT

“ 继续修改?(Y / N)”

TO N IF

ENDIF ENDDO USE RETURN

9、将数据表文件STDA.DBF 中的第三条记录与第四条记录的内容互换,并显示第三条记录。

SET

TALK

OFF

CLEAR

USE

STDA

GO

SCATTER

TO

A

GO

SCATTER

TO

B

GO

GATHER

FROM

B

DISPLAY

GO

USE

SET

TALK

ON

RETURN

10、如下程序根据键入的学号使用SQL SELECT 语句显示学生的学号、姓名和平均成绩。请在下划线处填写适当的内容,使程序能正确的运行。

DO

WHILE.T.CLEAR

ACCEPT

“请输入学号:” TO KEYNO

SELECT

STDA.学号,姓名,(高数 +计算机 +英语)/3 AS平均成绩;FROM STDA.STCJ WHERE

WAIT

“如果退出,请按【Y】键!”

TO KEY

IF

UPPER(KEY)= “ Y”

ENDIF ENDDO USE RETURN

三、程序改错题

1、在STDA.DBF 中,查询某人英语四级通过情况,若通过了,则授予学位,否则不授予学位。(1)SET

TALK OFF(2)USE

STDA

(3)ACCEPT “请输入姓名:”

TO XM(4)SEEK

FOR 姓名 = XM(5)IF

EOF()

(6)? “查无此人!”(7)RETURN(8)ENDIF

(9)IF

英语四级通过

(10)?姓名 + “英语四级通过,授予学位”(11)ELSE

(12)?姓名 + “英语四级没通过,不授予学位”(13)ENDIF(14)USE

(15)SET

TALK

ON(16)RETURN 错误的行是 改为:

2、显示 STCJ.DBF 中总分不低于190分的所有学生的姓名和总分字段的值。

(1)

SET

TALK OFF

(2)

SET

HEAD

OFF

(3)

USE

STCJ

(4)

DO

WHILE

RECNO()< = RECCOUNT()

(5)

REPL

总分

WITH

高数 +计算机 +英语

(6)

IF

总分> = 190

(7)

DISP

学号,总分 OFF

(8)

ENDIF

(9)

LOOP

(10)

ENDDO

(11)

RETURN 错误的行是: 改为:

3、在STDA.DBF 中,快速查询性别为“男”,“09/12/92”出生的人

(1)

SET

TALK OFF

(2)

USE

STDA

(3)

INDEX

ON 性别 +入学时间

TO LKL

(4)

SEEK “男” + “09/12/92”

(5)

IF

.NOT.EOF()

(6)

DISPLAY

(7)

ELSE

(8)

? “查无此人!”

(9)

ENDIF

(10)

USE

(11)

SET

TALK ON

(12)

RETURN 错误的行是: 改为:

4、求出 STCJ 表中总成绩的最大值和最小值。(1)

SET

TALK

OFF

(2)

USE

STCJ

(3)

DO

WHILE

.NOT.EOF()

(4)

REPLACE

总分

WITH 高数 +计算机+英语

(5)

SKIP

(6)

ENDDO

(7)

GO

TOP

(8)

STORE

总分

TO MAX , MIN

(9)

DO

WHILE

.NOT.EOF()

(10)

IF MAX >总分

(11)

MAX = 总分

(12)

ENDIF

(13)

IF MIN <总分

(14)

MIN = 总分

(15)

ENDIF

(16)

SKIP

(17)

ENDDO

(18)

? “最高分:” ,MAX ,”最低分:” , MIN

(19)SET

TALK

ON

(20)RETURN 错误的行是: 改为:

第九套题

一、完善程序题

1、将“职工”表中的数据按工资降序排列后生成新表,程序如下:

CLOSE

ALL

SET

TALK

OFF CLEAR USE 职工

TO 职工1 ON

工资/D USE 职工1 DISPLAY ALL USE

RETURN

2、在“职工”表中查找且显示“孙大鹏”的信息,程序如下:

SET TALK OFF CLEAR USE 职工 LOCATE

IF

FOUND()DISPLAY ENDIF USE

3、显示“职工”表中女职工的工资和,程序如下:

SET

TALK

OFF CLEAR SELECT

FROM 职工 RETURN

1、设计一个查询表单BD.SCX,其界面如图所示,其中文本框控件

名为TEXT1,表格控件名为GRID1。当在其中输入职工姓名并单击“查询”按钮时,将下边的表格内显示该职工的信息。“查询”按钮的Click 事件代码应如下:

THISFORM.GRID1.RECORDSOURCETYPE=4

THISFORM.GRID1.FRCORDSOURCE=”SELECT

* FORM 职工

WHERE

姓名

= = ”

5、将“职工”表中第6条记录的“出生日期”改为“12/12/1972”,程序如下:

SET TALK OFF CLEAR USE 职工 SKIP 5

出生日期

WITH {^1972/12/12} DISPLAY USE

RETURN

篇2:VFP程序题

x= thisform.text1.value a=int【1 】

b=int 【 2】

c=【 3】

s=【 4】

thisform.text2.value=【5 】

x/100(x-a*100)/10 x-a*100-b*10 a+b+c s 2 文本框Text1中输入的值与文本框Text2中输入的值交换

a= thisform.text1.value b= thisform.text2.value d=【1 】

【2 】

【3 】=d thisform.text1.value=【4 】

thisform.text2.value=【 5】

a a=b b a b 3 已知任意一个三角形的三条边为a、b、c,求其面积。

a=thisform.text1.value b=【 1】

c=【 2】

p=(a+b+c)/【3 】

s=【 4】(p*(p-a)*(p-b)*(p-c))thisform.text4.value=【5 】

thisform.text2.value thisform.text3.value 2 sqrt s 4 判断一个学生的计算机考试成绩x属于哪个分数段之间(0-59,60-69,70-79,80-89,90-100)Command1_click事件代码如下:

x= thisform.text1.value store 0 to h5,h6,h7,h8,h9 do case case x>=0 and x<=59 h5=h5+1 case 【1 】 and x<=69 h6=h6+1 case x>=70 and x<=79 【 2】

case 【3 】 and x<=89 h8=h8+1 case x>=90 and 【 4】

h9=h9+1 【 5】

thisform.label1.caption=str(h5)+ str(h6)+str(h7)+str(h8)+str(h9)x>=60 h7=h7+1 x>=80 x<=100 endcase 5 假设表单与第二题中的表文件zgqk.dbf 建立了数据环境,在其中按姓名查找职工情况,找到后将其情况在表单上显示,否则在信息框中显示“查无此人”。试完成下面程序。

【 1】 zgqk xm=thisform.text1.value locate for【2 】

if 【 3】eof()thisform.【4 】

else 【5 】(“查无此人”)Endif use xm=姓名 not refresh messagebox 6 求s=1/1^2+1/2^2+„+1/n^2 【 1】

n=thisform.text1.【2 】

FOR i=1 TO 【3 】

s=s+【4 】

next THISFORM.Label3.Caption=【5 】

s=0 value n 1/i^2 str(s)7 计算1+3+5+„„99,并将结果存入文本框Text1中,请填空

【 1】

FOR N=1 TO 【 2】 step 【 3】

s=s+n end【4 】

【5 】

s=0 99 2 for thisform.text1.value=str(s)8 计算1+3+5+„„99,并将结果存入文本框Text1中,请填空

【 1】

FOR N=1 TO 【 2】

if 【 3】(n/2)<> n/2 s=s+n endif end【 4】

【5 】 s=0 99 int for thisform.text1.value=str(s)9 计算2+4+6+„„100,并将结果存入文本框Text1中,请填空

【1 】

FOR N=2 TO 【2 】step 1 if int(n/2)=【 3】

s=s+n 【4 】

endfor 【 5】

s=0 100 n/2 endif thisform.text1.value=str(s)10 求所有的3位正整数除以99的商和余数,并输出。

for i= 【1 】to 【2 】

a= 【 3】

b=【4 】

?【5 】

Endfor 100 999 int(i/99)i%99 a, b 11 求1!+2!+3!+4!+5!。

S=0 For i=1 to【1 】

t=【2 】

for k=1 to 【 3】

t=t*【4 】

endfor s=s+【 5】

endfor 5 1 I k t 12 计算1+2+3+„„100,并将结果存入文本框Text1中,请填空

【 1】

FOR N=1 TO【 2】step 【 3】

s=s+n 【 4】for 【5 】

s=0 100 1 end thisform.text1.value=str(s)13 统计1至100之间能被7整除的数的个数并求其和,结果用信息框(对话框)输出。Command1_click事件代码如下:

k=0 s=0 for i=1 to 100 if 【1 】(I,7)=0 k=k+【 2】

s=s+【3 】

endif endfor a=messagebox(【 4】+【 5】)mod 1 I str(k)str(s)14 在文本框Text1中输入一个字符串,统计其中数字字符的个数,结果存入文本框Text2中。Command1_click事件代码如下: k=0 x=allt(thisform.text1.value)n=【1 】

for i=1 to 【 2】

if subs(x,i,1)>”0” and【3 】

【 4】

endif endfor thisform.text2.value=【 5】

len(x)n subs(x,i,1)>”9” k=k+1 str(k)15.s=求1!+2!+3!+...+20!【1 】

for n=1 to 20 t=1 for m=1 to 【 2】

t=t*【3 】

endfor 【 4】

endfor THISFORM.Text1.Value=【 5】

s=0 n m s=s+t s 16.找出2010至2100之间所有闰年的年份

FOR i=【 1】 TO 【2 】

if i%4=0 AND i%100!=0 OR i%【3 】

? 【4 】

endif 【5 】

2010 2100 400=0 I ENDFOR 17.设计一个求t=n!的自定义函数

【 1】f(x)t=【 2】

FOR j = 1 to 【3】 t=t*【4 】 endfor return 【 5】

function[###]func 1 x j t 18.求 Fibonacci 数列(1,1,2,3,5„)的前n(n>3)项,并输出

input “n=” to n 【 1】 a(n)a(1)=1 a(2)=1 ? a(1),a(2)for i=3 to 【 2】

a(i)=【 3】+【 4】

?? a(i-1),a(i-2)end【 5】

dime n a(i-1)a(i-2)for 19.输出zgqk.dbf的基本工资大于600的记录

【 1】zgqk do while not 【 2】

if 【 3】

【 4】

endif 【5 】

enddo use eof()基本工资>600 disp[###]display skip 1.在Text1中输入一个3位自然数,分解求和的结果存入Text2中 2.文本框Text1中输入的值与文本框Text2中输入的值交换 3.已知任意一个三角形的三条边为a、b、c,求其面积。

4.判断一个学生的计算机考试成绩x属于哪个分数段之间(0-59,60-69,70-79,80-89,90-100)287 5.求s=1/1^2+1/2^2+„+1/n^2 6.计算1+3+5+„„99,并将结果存入文本框Text1中,7.计算1+3+5+„„99,并将结果存入文本框Text1中 8.计算2+4+6+„„100,并将结果存入文本框Text1中,9.求所有的3位正整数除以99的商和余数,并输出。

10.编写程序计算:s=1+1/2!+1/3!+„+1/n!,说明:在表单中有一个文本框控件:Text1,用来接收n的值,有一个标签控件:Label1,用来显示S的值,试编写表单的单击事件,实现计算与显示功能,只要求写出事件的主要代码,事件过程的起始语句和结束语句可略去。11.编写程序计算:S=1X2+2X3+„+NX(N+1)。0

12.编写程序计算多项式:1^1+2^2+3^3+„+10^10 0

13.编写程序在表单上显示出:1~15之间的偶数 0

篇3:谈谈VFP程序的调试

一、了解编程序时出现的错误类型

编程中常出现的错误有三类:语法错误、逻辑错误和意外错误。

1、语法错误。

大多数情况下, VFP在编译时发现语法错误。例如: (1) 没有正确的拼写命令或函数名; (2) 复杂表达式中的括号不配对; (3) 字符串两边的引号不配对; (4) case…endcase, do…enddo, for…endfor, if…endif等不配对。

2、逻辑错误。

逻辑错误经常在程序的运行时以现。例如在数据环境中没有添加工作区的表;表正在使用”、“表必须以独占方式打开”;打开一个不在默认路径的表;程序进入了错误的分支等等。

3、意外错误。

这类错误包括用户偶然删除了一些有用的索引文件, 或者表文件与索引文件不对应。

二、程序的调试方法

VFP提供几种工具, 用以测试和调试应用程序:项目管理器用来对整个应用程序的开发调试管理;命令窗口、调试窗口和跟踪窗口用来通过交互方式进行测试和调试工作。选择使用那些调试工具取决于VFP的当前操作环境, 调试窗口和跟踪窗口在开发环境和运行环境都可用, 而命令窗口只在开发环境中可用。总的说来在调试程序时可用到以下几种方法:

1、直接输入命令。

命令窗口允许开发者在开发环境中对单独的代码进行测试, 在命令窗口中键入命令后, 可查看到可视结果, 立即看到结果: (使用?, ??命令) 返回一个值, 如果一个命令没有可视结果, 可组合使用命令窗口和调试窗口来查看程序执行的结果。例如编写KEYPESS事件中用键的ASCII码值, 用命令窗口可以很容易判断出键的ASCII码值, 在命令窗口输入?ASC (‘A’) 后, 按回车键, 在屏幕上显示上显示结果97

2、使用调试窗口。

当程序中有语法性的错误, 程序运行到错误的语句时系统就会停下来, 并提示程序有错, (如图1) 往往还会说出是什么错误, 如“找不到对象THISFRM”, 并给出选择“取消”、“挂起”、“忽略”、“帮助”四个选择,

这时, 一眼就能看出问题出在哪, 那么可以用“取消”, 然后进到程序中找出错误所在, 将其改正。如果不知道问题出在程序的哪个地方, 那么就选择挂起, 系统会弹出一个调试器窗口显示出错的语句, 如图2。

在跟踪窗口的黄色箭头所指的语句就是出错的语句, 这时不要马上改程序, 因为程序还没有结束运行, 如要改程序应先终止程序运行, 按调试中的终止按钮, 然后退出调试器 (菜单上的文件—退出) , 再对程序进行修改。

3、设置执行断点。

有些时候, 程序中的语句并没有出错, 但是运行的结果却不是我们所要的结果, 怎么也看不出问题在哪。这就要采用一些辅助手段, 最常用的辅助手段是在可能发生问题的地方将程序挂起, 即在程序中设置断点, 当程序运行到这里时将程序挂起, 然后在命令窗口中查看各自有关变量的值或数据表的情况。比如我们写的学生管理程序中, 调出编辑学生表单, 按了“新增”按钮后, 表单中的各控件的内容没有变。可以在“新增”按钮的click事件的结尾加设置一断点, 当程序运行到这里时就会挂起, 可以用browse查看数据表, 如果发现里面没有一个空记录, 那么说明漏了加空记录的语句。如找到错误了, 记得在命令窗口中运行cancel, 将程序终止再去修改程序。

4、用“局部窗口”和“监视窗口”查看变量, 属性, 表达式的值。

调试器中的“局部窗口”和“监视窗口”能在程序暂停运行时能够很容易看到变量、数组元素、属性和表达式的运行值, 从而确定代码是否正确。

“局部”窗口会显示调用堆栈上任意程序、过程或方法程序里面所有的变量、数组、对象和对象元素。默认情况下, 在“局部”窗口中所显示的是当前执行程序中的值。有时我们并不想查看所有的变量, 而只是想看看一两个变量来确定它们为什么没有获得期望的值。在这种情况下, 使用监视窗口更好。在“监视”窗口的“监视”框中, 键入任意一个有效的VFP表达式, 然后回车。这时, 该表达式的值和类型就会出现在“监视”窗口的列表中。也可以在“跟踪”窗口或其他的“调试程序”窗口中, 选择变量或者表达式, 然后将它们拖至“监视”窗口中。比如图2中, 要监视P的值, 将其拖至“监视”窗口中, 就可看到输入的值。

总之, 程序调试和测试是一项细致的工作, 需要下功夫、动脑子、善于积累经验, 从而掌握程序调试方法和技术。

摘要:程序的调试在程序设计中是一个非常重要的环节。VFP程序提供了多种测试和调试方法:直接输入命令, 使用调试窗口, 设置执行断点, 用“局部窗口”和“监视窗口”查看变量、属性、表达式的值。

篇4:浅析VFP程序设计教学的方法

关键词:数据库;多媒体;案例;可视化

中图分类号:G642

文献标识码:A

文章编号:1000-8136(2009)29-0096-02

Visual FoxPro作为数据库管理语言对于高职院校的学生而言具有相对的易学性,其数据库设计与开发、操作的可视性、程序语言的面向对象性,是它的特点,也是学生建立学习兴趣的所在,但也是VFP教学与学习过程中的3个难点。在学习可视化开发过程中,随着设计环境的改变,出现不同的窗口和大量控件及属性图标,记忆与使用起来较复杂;而在开始学习面向对象编程时,比较抽象,有一定的学习难度。在一个学期内解决好这些问题,是任课教师所面临的一大挑战,针对VFP的特点、难点和传统教学的缺陷,我们在VFP的教学中采用了以下方案。

1 尽量使用投影仪或者在计算机多媒体教室中进行教学

在计算机教室中安装好各种教学软件,如极域电子教室等,教师在教师机上使用与讲授VFP各种对象的可视化操作,学生在自己面前的学生机上可清晰地看到老师的操作过程,可以直观地理解VFP的各个菜单命令的使用方法和操作结果。这样的教学方式,可以极大地缩短学生接触与熟悉理论知识的时间,在有限的课时内,可以更多地进行实践操作与练习,与教师有较多的时间解决学习中的具体问题,能够进行更多的交流,从而达到事半功倍的教学效果。此外,为了更有效率地对学生进行练习,解决VFP内容多、课时少的矛盾,教师还可将相关的课件、VFP试题库存入教学机内让学生自主学习。

2采用一个典型的实用案例

如《学生信息管理系统》贯穿整个教学过程。这是一个学生身边的案例,学生通过它能够较容易地理解数据库的模型结构,能体会到数据表之间的关系,在初学阶段,学生能激发起较强的学习兴趣。所使用的案例系统、结构分为学籍管理和成绩管理2个子系统,各部分即独立又有显而易见的联系,学生易于建立结构,各功能要简单而实用,要分别实现信息及成绩的浏览、查询、修改等,学生易于明白所学重点,又为进一步的提高打好基础。这个案例使用了VFP各个知识点,从建立项目始、数据库表建立、查询视图建立、报表标签、表单到菜单的建立,其间融入了程序代码设计、表间关系的设定、各种对象的可视化属性的设置,锻炼学生分析设计各功能模块、理解解决的问题的思路、掌握相关知识内容,从少积多,在学生学习过程中形成一个能够初步解决实际问题的项目。在实际教学中通过案例教学,弱化了VFP的单纯理论教学方法,强化了学生对知识的可见性与可操作性,在学习上有了更多的主动性与灵活性;学生既从微观上掌握了VFP各个知识点的作用,又能在宏观上体会到各功能的有机联系,在学习中逐渐掌握数据库管理系统的开发方法和步骤。在课程实训阶段,要求学生仿照所学内容,设计一个管理信息系统,给出具体的设计要求,如职工管理系统,要求至少4个数据表以上。能够表间互相关联,能够实现某几个项目的查询,输出形式根据不同的结果采用不同的形式,同时应有友好的人机交互界面,用户登录和访问权限及系统设置功能等。通过实训,提高学生掌握与运用知识的能力,能够由一个数据库多表间的操作,扩展到多个数据库间的关联操作,综合掌握输入输出设计的灵魂——表单。

3重点学习表单的制作体现可视化开发的过程

掌握VFP表单设计技术是学习可视化开发技术及掌握面向对象的程序设计的一个重要过程,是进一步理解相关概念如对象及其属性、对象的事件及方法、类、容器、封装等的基础过程。VFP面向对象的功能在表单制作中极大地得到体现,表单的功能不再是一个简单的输入与输出界面,数据库管理功能也是在各种查询表单中实现,我们同时在表单中加入了如各命令按钮,设计了各种控制命令代码后,就可以用表单担负起一个数据库管理系统中的绝大部分功能。因此VFP应用系统实际开发过程的实现也主要是表单的制作技术。在讲述表单时,要尽可能掌握各种与实例相关的各表单的主要查询统计类型的制作步骤;而对于控件,则以介绍其常用属性的设置方法和主要事件的编码过程,其他的先暂时不提及,以免使学生感到杂乱无目的性。在表单教学中,应由表及里逐层进行。首先,创建表单。学习利用系统的表单向导建立新表单,然后再利用表单设计器创建修改表单,所建表单应至少包括普通表单和一对多两种样式。第二,练习表单的数据环境的设置。先掌握表单数据环境中表或视图的添加、移出的方法,再要求深入理解数据环境及其中各个表和视图属性的定义。第三,向表单中添加控制。用表单设计器设计一个较复杂的表单或表单集,向表单或表单集添加各种控制,并定义表或表单集以及各个控制的属性、事件与方法是我们学习VFP的重点。但表单只是一个基本的容器,必须添加一些对象,如:标签、文本框、编辑框、命令按钮等常用控制,这些控制可以灵活地进行多种排列组合,使用它们可以领略到可视化技术和面向对象设计方法的精华所在。但要真正灵活自如地使用这些控制,并不是一件简单的事情,需要必须对每种控制深入了解,能够根据设置各种控制的属性、事件和方法以及对应的控制代码。

篇5:VFP程序设计教学反思

开县职业教育中心 向生

我长期从事计算机专业班的VFP教学,针对VFP课程的特点,在教法上,以‚示例教学法‛、‚‘课机’结合式教学法‛、‚任务驱动教学法‛为主开展教学,其教学效果明显,但在‚程序设计‛这一章节的教学中,还是存在着两大误区:一是学生基础较差,加之不爱动脑、动手,导致时间花得多,效果不理想;二是只重视程序设计的结果,忽视了其算法的多样化,从而束缚了学生的思维创新。于是,解决突破这两大误区成了我的首要任务。通过向同事学习,查找相关资料,将多种教法结合起来,通过实践,逐步形成了一种‚精讲多练、小组互动、分层实施、机试为主‛教学模式,从而达到了预期的目的。

现以do while …… enddo循环控制命令的使用为例,将其教学片段简介如下:

【案例】:

探索循环结构的程序设计方法:

1.示例:用投影仪展示求1+2+3+4+…+100程序清单,让学生对照程序清单上机调试并思考。

附程序清单:clear sum=0 i=1 do while i<=100 sum=sum+i i=i+1 enddo ?‛1+2+3+…+100=‛,sum 师:同学们,你们能找出程序清单中有哪些变量?并说明它的作用吗? 学生思考,随后指名回答。教师板书:sum i

sum的作用是用于存储所求的和(中间结果及最终结果),i的作用是用来存储循环的值(即加数),同时控制循环执行的次数。

师:程序中的变量名可用其它的字母代替吗?你能找出在循环体(命令序列)中用于控制循环趋于结束的命令吗?

学生回答,教师板书:i=i+1 师:好,请同学们独立思考此程序的循环次数? 全班回答:100次。师:如何通过上机操作验证其执行过程呢?(学生开展讨论并上机操作验证)生1:只须将输出命令放到循环体中即可,即在‚i=i+1‛命令之后、‚enddo‛之前插入‚?sum,i‛命令。(学生操作验证)

生2:因为一屏显示不下,我们看到的仅仅是最后的几次执行过程,对于以前的执行过程还是看不到,可将该题分段实施,即先求1+2+3+…+20的和。

师:很好。(鼓掌、同学们再操作验证)

2.任务:四人一个小组开始活动,讨论以下任务的设计,并上机操作,教师参与到学生的活动中。任务一:求2+4+6+8+…+100的和 任务二:求1×2×3×4×5 不一会,各小组互动结束,请两个组进行了回答如下:

小组甲:任务一与例题之间的区别是循环变量的初值为2,每循环一次循环变量增2即i=i+2。

小组乙:任务二在例题的基础上将‚sum=0‛改为‚sum=1‛,循环变量的终值为5即条件改为i<=5,然后是循环体中的‛sum=sum+i‛改为‛sum=sum*i‛。

3.讨论:同学们,在刚才所做的程序中,你能找出其规律吗? 全班交流:

生1:循环变量从所赋的初值到终值按照一定的差进行变化,如求1+2+3+4+…时,其差为‚1‛进行的,求1+3+5+7+…时其差为‚2‛。

生2:(补充)循环变量在程序每执行一次时,就按照其连续相邻的两个值之间的差进行递增变化。

生3:用来存储结果的变量sum,也有一定的特点,如在求和时可以赋‚0‛,在求积时只能赋‚1‛。

……

师:你们说得很好,尤其是循环变量的特点,它是我们进行循环结构程序设计的关键,也是一个难点,其理解的程度直接影响到我们程序设计成败。但注意的是有时也可能发生递减变化哟。

4.拓展:做一做,求1+2+3+…+n;1×2×3×4×…×n;n从键盘输入。做完后并思考:与上述程序设计题有何区别?有何意义

过了一会儿,大多数学生做完了,但还有部分学生没有做完,就安排做完了的学生去指导未完成学生,帮助其操作,力争所有的学生有所获,有所得。

……

【反思】:

对VFP程序设计的教学,不再是重结果,轻过程,而是很好地驾驭教材内容,创造性地使用教材,巧妙组织、精心安排、灵活设计,给学生以耳目一新的感觉,教学效果非常明显,主要体现了以下几个方面:

1.程序设计关注的应该是程序设计的思维过程

本章节的教学,我跳出了认知技能的框框,不把程序设计的方法、操作技能的形成作为唯一的目标,而更关注学生的学习过程,让学生在自身实践探索的过程中实现发展性领域目标。如教学时围绕do while命令的使用为重点展开探索,通过相应的活动与任务提供自主学习的机会,给学生充分思考的空间和时间,允许并鼓励他们有不同思维方法,尊重他们的想法,哪怕是不合理的,甚至是错误的,让他们在相互交流、碰撞、讨论中,进一步明确程序设计的基本方法。通过互助探究后,他们在不同的层面上得到提高,并掌握了解决相应的实际问题的能力。在此基础上,教师组织学生对知识进一步拓展:如求‚1+2+3+…+n‛,达到程序设计的基本要求,那就是通用性、实用性。这样的教学,学生获得的不仅仅是程序设计的基本方法,更重要的是分析、处理问题的思维创新能力。

2.提倡思维方式、程序算法的多样化,促进学生个性发展。

思维方式、程序算法的多样化,是指尊重学生的独立思考,鼓励学生探索不同的方法,而不是让学生一定要去掌握多种操作方法。学生有着不同的专业基础、知识背景和思考角度,他们的差异是客观存在的,对同一个实际问题,由于学生的认知水平和认知风格的不同,常常会出现不同的设计方法,这正是学生具有不同个性的体现。通过分层实施,学生分别达到了应会、熟练等不同程度。在学生进行程序设计时,学生中出现了多种形式不同的程序清单。有的是变量的初值不同,有的是在循环体中命令的先后位臵略有变化,有的是把输出放在了循环体之中等等。在学生独立思考解决的基础上,再让学生发表自己的见解、观点,倾听同伴的解法,进行小组内交流、争论,从而达成一种共识。教师鼓励学生用已有的经验大胆思维,鼓励学生动手上机操作,寻求解决问题的有效途径,营造宽松活跃的课堂气氛。算法的多样化使学生变得聪明自信,在主动探索与合作交流中得到收获,并促进学生的个性发展。

3.营造民主的氛围,激发学生的创新思维 在程序设计过程中,不同的方法对同一个人也许有快慢之说,而对不同的人却不存在优劣之分。在整个探索的过程中,我只是通过投影展示了一个例题,然后组织学生不断地发表自己的想法,通过引导,鼓励他们敢于争论,完成对知识的构建,同时也要注意呵护每一位学生的学习激情,激发其创造力。

学生争论不休的时刻,也正是他们在积极地参与整个学习活动,这正是组织教学的精华所在,同时也挖掘了学生潜在的创造力,从而也带动了全班学生的积极参与,在‚do while命令‛使用的探索过程中,如验证体会循环的执行过程时,一学生提出只要验证‚1+2+3+…+20‛的和,又如求"1×2×3×4×5"时,一学生说它的sum初值不能为‚0‛,只能为‚1‛时,全班学生都给了他热烈的掌声。我想他这种的见解总是在经过认真分析思考后得出来的。

4.教学方法多样化,激发了学生学习的兴趣

VFP课的教学具有很强的实践操作性,教师在课堂中采取灵活多样的方法,可充分调动学生学习的激情。‚课机‛结合式教学法,在课堂中教师通过大屏幕液晶投影仪或网络教室讲解知识,然后学生在下面操作学习,学生很容易跟着教师的步骤进行学习,掌握教师教给的内容,而且印象也较为深刻。如上述的示例部分。‚任务驱动‛教学法可合理组织学生自主学习,激发他们的兴趣,让他们尽快地活动起来,并通过自己的自学和同学的帮助来解决问题,在愉快的教学过程中掌握知识,如上述互动中的任务

一、任务二等。

5.实践探索,进一步提高了学生的创造力

真理源于实践,实践出真知。在程序设计的教学中,通过边讲、边练,先从理论上分析讨论,找准理论依据,后通过上机操作验证其正确性,最后再讨论分析、交流程序设计的最佳方法,不仅训练了学生的操作技能,同时也培养学生的创造能力。

总之在程序设计中,鼓励积极思维、分层要求、反复操作验证、达到程序算法多样化是尊重学生的表现,体现了以学生为主体的教学原则,符合现代认知建构主义思想,是释放学生自信心和创新思维、培养创造能力的有效途径。

6.需进一步探索的问题

篇6:作业五:VFP高级程序设计

1、本次实验的目的

Visual FoxPro不但提供了用于进行简单程序开发的简单语句,而且还提供了许多用于进行高级程序设计的语句(命令):如输入/输出格式设计语句、菜单设计语句、窗口设计语句等和面向对象的程序设计方法,为开发复杂的管理信息系统提供了强有力的支持。此次作业所要达到的主要目的就是想通过上机实验让同学们初步理解和掌握利用Visual FoxPro高级编程语句和面向对象的程序设计方法开发较复杂的管理信息系统的理论和方法。

2、实验的总体要求

2·1 严格按照下面“作业内容和操作步骤”的步骤进行操作; 2·2 必须如数完成作业内容; 2·3 独立完成作业;

2·4 上机后分组写出上机报告;报告内容包括:①上机时间、②上机过程、③作业内容及其完成情况、④心得体会、⑤建议或要求等等。

3、作业内容和操作步骤

3·1 Visual Foxpro高级程序设计的方法和步骤(1)打开VFP(操作方法为:单击“开始”、“程序”、“Microsoft Visual Foxpro6.0”或双击桌面快捷图标,如果正常会出现如下窗口);

(2)打开命令文件编辑器(操作方法为:在VFP窗口的“命令窗口”输入命令Modify Command和路径(例:Modify Command E:gzglxtpzsr),如果正常会出现如下命令文件编辑窗口);

(3)输入、编辑和修改程序(或者叫命令文件)源代码(见下面3·2“本次实验的主要内容”和3·3“本次实验所要达到的要求”);

(4)存盘退出(操作方法:按Ctrl+w或单击上编辑窗口的“关闭”按钮然后按照提示操作);

(5)程序运行(操作方法:在VFP窗口的“命令窗口”输入命令Do和路径(例:Do E:gzglxtpzsr),如果正常就会运行你的程序实现你想实现的结果,如果不正常它会自动返回步骤(2)要求你修改程序);(6)如果上面你自己编写的程序运行正常,便可得到下面的可以进行人机交互输入记帐凭证的屏幕界面;

(7)所有工作完成后关闭窗口(操作方法为:单击VFP窗口的“关闭”按钮)。

3·2 本次实验的主要内容(1)画程序流程图

已知烟台某公司开发会计信息系统的可行性分析、要求分析和系统设计已经完成,现在正在准备编写程序。假设分配你编写“记帐凭证输入程序”,请根据记帐凭证登记的业务特点和计算机数据输入的特点画出准备编写的记帐凭证输入程序的流程图。(2)编写程序

利用所学的Visual FoxPro相关命令(如分支语句、循环语句、输入/输出格式设计语句等等)编写出满足下面要求的程序。

3·3 本次实验所要达到的要求

(1)要求该程序利用交互方式进行凭证输入;

(2)要求该程序完成交互输入的屏幕样式如下图;

(3)通过实验深入了解管理信息系统与信息技术的关系;(4)通过实验深入了解Visual FoxPro的输入/输出格式设计语句的书写格式、功能、可选项及其应用。

4、注意事项

4·1上机前一定要认真阅读上机指导书,深入理解作业的要求和内容; 4·2爱护计算机及所有实验设备;

4·3遵守实验室的一切规章制度,尤其是不能大声说话和玩游戏。

5、参考文献

5·1 黄梯云主编,《管理信息系统》,高等教育出版社,2002第 7次印刷; 5·2 吕建忠等,《Office97(中文版)入门与提高》,清华大学出版社,2000 5·3 钱晓平等,《计算机文化基础》,高等教育出版社,1999; 5·4 李正凡等,《Visual FoxPro程序设计基础教程》,中国水利水电出版社,2000; 5·5 合力工作室编著,《中文Visual FoxPro 6·0编程基础》,清华大学出版社,2001; 5·6 周亦民等,《Visual FoxPro 6·0实用教程》,科学出版社,2000 5·7 其他同类参考书。附:程序原代码 set talk off set bell on set intensity on clear clear all set color to gr+/gb* @ 10,10 say “ ” defi wind ck_1 from 1,26 to 11,106 defi wind ck_2 from 12,8 to 28,128 none acti wind ck_1 set color to b+/gr* @ 1,14 say “凭证登记系统使用说明” font “Arial”,22 style “b” @ 4,20say “欢迎您使用我公司开发的凭证输入系统,本系统采用” @ 5,16 say “最先进的全屏幕编辑技术进行数据输入。按光标键进行输入” @ 6,16 say “位置选择,按Del进行数据删除,按Insert进行数据插入!” @ 7,22 say “现在进行凭证输入?(Y/N):” get xz defa “ ” read if xz=“Y”.or.xz=“y” use d:cai_glxxxtvfpcxpzb acti wind ck_2 append Blank else deac wind ck_1 release windows set color to w+/w* clear clear all cancel endif do while.t.set color to n+/gr*,n+/g* @ 2,10 to 15,116 pen 3 color r @ 3,24 say “

证 ” font “Arial”,18 style “b” @ 5,14 say “ 附单 张 年 月 日 凭证号 ” font “Arial”,12 @ 6,14 say “┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━┳━━━━━━┓” font “Arial”,12 @ 7,14 say “┃ 摘 要 ┃ 总 帐 科 目 ┃

明 细 科 目 ┃记向┃ 金 额 ┃” font “Arial”,12 @ 8,14 say “┣━━━━━━━╋━━━━━━━╋━━━━━━━━╋━━ ╋━━━━━━┫” font “Arial”,12 @ 9,14 say “┃

┃” font “Arial”,12 @ 10,14 say “┗━━━━━━━┻━━━━━━━┻━━━━━━━━┻━━┻━━━━━━┛” font “Arial”,12 @ 11,14 say “

主管:

审核: 制单: ” font “Arial”,12 year=“ ” store “ ” to m,d @ 5,25 get 附单 @ 5,42 get year @ 5,50 get m @ 5,55 get d @ 5,86 get 凭证号 @ 9,18 get 摘要 @ 9,40 get 总帐科目 @ 9,60 get 明细科目 @ 9,86 get 记向 @ 9,94 get 金额 @ 11,28 get 主管 @ 11,48 get 审核 @ 11,68 get 制单 read ymd=year+“.”+m+“.”+d replace 日期 with ymd @ 13,24 say “是否继续登记?(READ if xz1<>”Y“.or.xz1<>”y“ exit else clear append Blank loop endif enddo close data deac wind ck_1,ck_2 release windows set color to w+/w* clear clear all return

上一篇:收费检查科工作总结下一篇:健康促进区例会小结