第一篇:vfp教学实例
第一课 编一个“心灵感应”小游戏
我们的课程从这个小游戏开始吧。一些名词在这里不做解释,广大网友漫漫理解,或者自己去查一些资料,下面我就来介绍如何用Visual Foxpro 6.0来编制这个游戏。
1、在硬盘上建一个文件夹,例如D:DEMO。
2、启动Visual Foxpro 6.0,选择:“文件”——“新建”,出现“新建对话框”(图示1-1),文件类型选“项目”,按“新建文件”按钮,选择项目文件名“demo”(自己随便起名),保存在D:DEMO下(图示1-2),按“保存”按钮后,出现项目管理器,这样一个项目就建成了,项目名就是“demo”以后的一切操作都在这个项目内。项目管理器由两个文件组成,扩展名分别是“PJX”和“PJT”。(图示1-3)在这个项目内可以建立数据库、表单、程序、菜单等。
3、选择“文档”——“表单”,按“新建”按钮。出现(图示1-4)
4、按“新建表单”按钮,出现(图示1-5)。表单就是将来运行后出现的窗口或对话框,上图就是一个表单。下面我们就在这个表单上创建心灵感应游戏。
5、在Form1的属性(表单的属性一般在创建一个新表单后自动出现,若没有可右击表单,选择“属性”即可)中选择属性Caption(标题)将默认值“Form1”改为“心灵感应”(图示1-6),表单的标题就改为“心灵感应”。但表单的名字应叫“Form1”,要想更改请改属性——Name。
6、在d:demo下新建一文件夹pic,存入一些需要的图标、图片等,在Form1的属性中选择属性Icon的值为d:demopicmsgbox02.ico(图示1-7)。双击“Icon”或点击夹,选择msgbox02.ico图标,按“确定”按钮。
按钮,打开d:demopic文件
7、关闭表单设计器,出现(图示1-8),按“是”,出现(图示1-9),取文件名为xlgy,建一文件夹d:demoform将文件xlgy.scx保存到该文件夹里。则在项目管理器的表单中出现一个xlgy表单(图示1-10)。(你也可以全部编完再保存)
8、选中xlgy表单,按“修改”键,又返回表单编辑状态。调整表单窗口大小(可用鼠标拖拉),在表单控件工具栏的“图象”图标上点击一下,在表单上拖出一个长方形,即图片显示区域,其picture属性为d:demopicpkbm1.jpg(图示1-11);
在表单控件工具栏选“标签”图标,在表单上的图象下面拖出一个长方形,其capion属性为“本程序可以感应你在想什么。”,字体大小fontsize为“16”,你也可以设定其他属性,如:字体(fontname)、字体颜色(fontcolor)等;再建两个按钮“command1和command2”,其属性caption分别为“开始”、“退出”。(图示1-12)
9、双击“退出按钮”,在click过程中输入thisform.release或release thisform,意思为:当鼠标单击“退出”按钮时释放表单。下面你可以按!图标运行此表单,点击“退出”按钮,即可退出此表单。
10、下面我们要在“开始”按钮的click过程中输入一些命令,完成我们要做的工作。我们先做几张图片pk1.jpg(图示1-13)、pk2.jpg(图示14)、pkbm2.jpg(图示15),在“开始”按钮的click过程中输入如下命令:
ThisForm.image1.picture='picpk1.jpg' &&将图片换成pk1.jpg this.caption='继续' &&将“开始”按钮名改为“继续”,因为在command1.click内,所以可用this代替thisform.command1 thisform.command2.enabled=.f.&&将“退出”按钮设为不可用
thisform.label1.caption='请在上面的扑克牌中选一张,记在心里。按继续键。' &&改变label1的内容
wait '' &&程序暂停,等你按任意键,“''”是两个单引号,不能缺少.ThisForm.image1.picture='picpkbm1.jpg' thisform.label1.caption='请你默念三遍。按继续键。' wait '' ThisForm.image1.picture='picpk2.jpg' thisform.label1.caption='我知道你记的是哪一张,我把它去掉了!' wait '' ThisForm.image1.picture='picpkbm2.jpg' thisform.label1.caption='' this.caption='再来一次' thisform.command2.enabled=.t.&&将“退出”按钮设为可用 retu &&重新运行
注: &&...为程序注释,它在程序运行时不执行。
11、到此为止,“心灵感应”就编完了,你可以运行此表单看看运行结果。
二:行程序或点击菜单、按钮等方法使它们运行。这一课,我将向大家介绍主菜单、快捷菜单和主程序。
一、主菜单的设计
1、在项目管理器中的“其它”中选中“菜单”,按“新建”按钮,出现新建菜单选择窗口(图2-1);
按“菜单”按钮,出现菜单编辑窗口,在“菜单名称”中分别输入“文件( 以上的六个菜单项中都有“<”,它的作用是建立一个热键:Alt加“<”后面的第一个英文字母,在当前窗口按“Alt+F”打开“文件”菜单,相当于鼠标点击。 2、点击游戏菜单后的“创建”按钮,编辑“游戏”的下一级菜单(图2-3),在“心灵感应”中选择“命令”,在命令框中输入“do form xlgy”,作用是打开xlgy表单。在其后面还有一个选项,点击选项按钮出现选项对话框,使“键标签”的文本框获得焦点,按Ctrl+G(图2-4)建立一个快捷键。快捷键与热键不同,热键只在当前窗口起作用,快捷键无论当前是什么窗口都起作用。例如:在主窗口中按 Ctrl+G,可以直接运行“心灵感应”表单,相当于用鼠标选择菜单中的“游戏”,再选择“心灵感应”。 3、反回到“菜单栏”,在“退出”的命令框中输入clear event命令。 4、按“预览”按钮,可以预览一下设计的菜单。 5、选择“菜单”中的“生成”,(图2-41) 出现图2-42,按“是”按钮,出现图2-43,菜单名为:main,保存在d:demo下,出现图2-44 按“生成”按钮。菜单建好了,可以关闭菜单设计器了。 二、快捷菜单的设计 1、在项目管理器中的“其它”中选中“菜单”,按“新建”按钮,出现新建菜单选择窗口,按“快捷菜单”按钮,建立快捷菜单yji.mnx:(图2-5) 2、保存菜单yji.mnx,生成菜单程序文件yji.mpr,在以后的库房管理软件中会用到。 三、主程序设计 1、选择“代码”——“程序”,按“新建”按钮,输入如下程序: CLEAR SET EXCL ON SET TALK OFF SET MESSAGE ON SET CENT ON RELEASE WINDOW 常用 &&关闭常用窗口 PUBLIC MYPATH &&定义全局变量MYPATH MYPATH=LEFT(SYS(16),RAT(“",SYS(16)))&&提取当前路径 SET DEFA TO(MYPATH)SET PATH TO data;form;pic &&指明路径 _SCREEN.backcolor=iif(mod(day(date()),2)=0,rgb(80,230,210),rgb(70,140,180))&&设置屏幕背景颜色,单、双号背景颜色不同 MODIFY WINDOW SCREEN TITLE ” xxx软件 Ver x.x 作者:王永成 “+;” 今天是:“+dtoc(date())+” “+cdow(date())&&设置主窗口标题 _SCREEN.ICON=”..picmsgbox02.ico“ &&设置主窗口图标 ZOOM WINDOW SCREEN MAX &&主窗口最大化 deactivate window ”项目管理器“ &&关闭项目管理器 do main.mpr &&运行主菜单程序 read event 2、保存主程序main.prg 3、右击主程序,选择“设置主文件”。 4、运行主程序看一看结果。 三:“猜数游戏”。 1、新建一表单csyx(图3-1),表单的caption属性为“猜数游戏”,背景颜色(BackColor)及各表单控件的字体颜色等,各位朋友可按个人的爱好选择。 2、命令按钮command1~command13的caption属性分别为:“确定”,“退格”,“新一局”,“0”...“9”。 3、文本框Text1的FontSize为26;FontColor为250,250,0;BackColor为0,128,128;ContorlSource为ctet1(变量ctet1的值与text1的值相关联)。 4、文本框Text2的FontColor为250,250,0;ContorlSource为jlun;BackStyle为“0-透明”;BorderStyle为“0-无”。 5、文本框t1~t10,zq1~zq10,cw1~cw10(name=t1...,zq1...,cw1...cw10),(controlsource=t1...),FontColor为250,250,0;BackStyle为“0-透明”;BorderStyle为“0-无”。 6、标签Label1~Label3的caption属性分别为:“选择的数”,“位置正确”,“位置错误”。 7、标签Label4的caption属性为:=”说明:选择4个数按确定键,在右侧显示这4位数有几位数与你要猜的数位置相同,“+chr(13)+” 有几位数包含在要猜的数中,但位置不同。根据以上提示猜出是哪4位数。“,其中chr(13)是一个回车换行命令,“=”和英文引号(单、双都行)不能少;BackStyle为“0-透明”。 8、标签L1~L10的caption属性分别为:“第一次”...“第十次”;BackStyle为“0-透明”。 9、表面工作做完了,下面我们来输入一些命令(程序),双击表单出现表单过程编辑框,在Init过程中输入如下命令: public ctx1,ctx2,ctx3,ctx4,ctet1,ctet2,n,zq,cw,p &&设置全局变量 zq=0 &&设置初始值 cw=0 ctet1='' ctet2='' n=0 thisform.command3.click()&&执行命令按钮(command3)的click过程,相当于点击”新一局“按钮。 10、双击按钮“0”(command4),在其click过程中输入如下命令: ctet2='0' do panduan &&执行panduan.prg程序 thisform.refresh 11、按钮“1”~“9”的click过程中的命令与按钮“0”的click过程中的命令的不同之处就是ctet2的值,即ctet2='1'...ctet2='9'。 12、因为在按钮“0”~“9”的click过程中都执行一些相同的命令,所以我们把这些命令提出来,作为一个程序来调用(也可以在表单中创建一个方法程序,请参见第九课),可以简化程序的设计。选择“代码”——“程序”按“新建”按钮,新建程序panduan.prg: if len(allt(ctet1))<>4 &&判断text1的值的长度,如果不是4位,执行下面的命令.if!ctet2$ctet1 &&判断按下的按钮的数值是否已被选过,若所选的数不包涵在已选的数值内.ctet1=ctet1+ctet2 &&把选定的数加在后面.endif endif 13、双击按钮“确定”(command1),在其click过程中输入如下命令: zq=0 &&正确值zq=0 cw=0 &&错误值cw=0 if len(allt(ctet1))<>4 &&如果text1的值不是4 位 wait window at 16,25 ”数据不够4 位“ &&提示 return &&返回 endif p=p+1 if ctx1$ctet1 &&判断cte1值是否在所选定的4位数中.(ctet1及ctet2、ctet3、ctet4的值是在表单运行时或点击了“新一局”按钮时机器随机产生的4位数值。) if ctx1=substr(ctet1,1,1)zq=zq+1 else cw=cw+1 endif endif if ctx2$ctet1 if ctx2=substr(ctet1,2,1)zq=zq+1 else cw=cw+1 endif endif if ctx3$ctet1 if ctx3=substr(ctet1,3,1)zq=zq+1 else cw=cw+1 endif endif if ctx4$ctet1 if ctx4=substr(ctet1,4,1)zq=zq+1 else cw=cw+1 endif endif do case case p=1 thisform.l1.visible=.t.thisform.t1.visible=.t.thisform.zq1.visible=.t.thisform.cw1.visible=.t.t1=ctet1 zq1=zq cw1=cw if zq=4 jlun=”你真能蒙!“ endif case p=2 thisform.l2.visible=.t.thisform.t2.visible=.t.thisform.zq2.visible=.t.thisform.cw2.visible=.t.t2=ctet1 zq2=zq cw2=cw if zq=4 jlun=”太棒了,你真能蒙!“ endif case p=3 thisform.l3.visible=.t.thisform.t3.visible=.t.thisform.zq3.visible=.t.thisform.cw3.visible=.t.t3=ctet1 zq3=zq cw3=cw if zq=4 jlun=”太棒了,蒙的吧?!“ endif case p=4 thisform.l4.visible=.t.thisform.t4.visible=.t.thisform.zq4.visible=.t.thisform.cw4.visible=.t.t4=ctet1 zq4=zq cw4=cw if zq=4 jlun=”太棒了,您是教授吗?“ endif case p=5 thisform.l5.visible=.t.thisform.t5.visible=.t.thisform.zq5.visible=.t.thisform.cw5.visible=.t.t5=ctet1 zq5=zq cw5=cw if zq=4 jlun=”大学生水平,很可以!“ endif case p=6 thisform.l6.visible=.t.thisform.t6.visible=.t.thisform.zq6.visible=.t.thisform.cw6.visible=.t.t6=ctet1 zq6=zq cw6=cw if zq=4 jlun=”智商不低吗!“ endif case p=7 thisform.l7.visible=.t.thisform.t7.visible=.t.thisform.zq7.visible=.t.thisform.cw7.visible=.t.t7=ctet1 zq7=zq cw7=cw if zq=4 jlun=”还算可以,要努力呀!“ endif case p=8 thisform.l8.visible=.t.thisform.t8.visible=.t.thisform.zq8.visible=.t.thisform.cw8.visible=.t.t8=ctet1 zq8=zq cw8=cw if zq=4 jlun=”一般人到这儿都能找到!“ endif case p=9 thisform.l9.visible=.t.thisform.t9.visible=.t.thisform.zq9.visible=.t.thisform.cw9.visible=.t.t9=ctet1 zq9=zq cw9=cw if zq=4 jlun=”太一般了!“ endif case p=10 thisform.l10.visible=.t.thisform.t10.visible=.t.thisform.zq10.visible=.t.thisform.cw10.visible=.t.t10=ctet1 zq10=zq cw10=cw if zq=4 jlun=”到现在才早找出来?!智商有问题!“ else jlun=”智商太低了,再来一次?“ endif endcase ctet1=”“ thisform.refresh 14、双击按钮“新一局”(command3),在其click过程中输入如下命令: jlun=”“ thisform.l1.visible=.f.thisform.t1.visible=.f.thisform.zq1.visible=.f.thisform.cw1.visible=.f.thisform.l10.visible=.f.thisform.t10.visible=.f.thisform.zq10.visible=.f.thisform.cw10.visible=.f.thisform.l2.visible=.f.thisform.t2.visible=.f.thisform.zq2.visible=.f.thisform.cw2.visible=.f.thisform.l3.visible=.f.thisform.t3.visible=.f.thisform.zq3.visible=.f.thisform.cw3.visible=.f.thisform.l4.visible=.f.thisform.t4.visible=.f.thisform.zq4.visible=.f.thisform.cw4.visible=.f.thisform.l5.visible=.f.thisform.t5.visible=.f.thisform.zq5.visible=.f.thisform.cw5.visible=.f.thisform.l6.visible=.f.thisform.t6.visible=.f.thisform.zq6.visible=.f.thisform.cw6.visible=.f.thisform.l7.visible=.f.thisform.t7.visible=.f.thisform.zq7.visible=.f.thisform.cw7.visible=.f.thisform.l8.visible=.f.thisform.t8.visible=.f.thisform.zq8.visible=.f.thisform.cw8.visible=.f.thisform.l9.visible=.f.thisform.t9.visible=.f.thisform.zq9.visible=.f.thisform.cw9.visible=.f.p=0 ctext='1234567890' for i=1 to 4 n=11-i cn1=rand()cn=int(cn1*n)+1 if cn=0 cn=1 endif txx='ctx'+allt(str(i))&txx=substr(ctext,cn,1)if cn=1 ctext1=right(ctext,(10-i))else if cn=11-i ctext1=left(ctext,(10-i))else ctext1=left(ctext,cn-1)+right(ctext,(11-i-cn))endif endif ctext=ctext1 endfor thisform.text1.value=”" thisform.refresh 15、双击按钮“退格”(command2),在其click过程中输入如下命令: if len(allt(ctet1))<>0 &&长度不为0 ctet1=left(ctet1,len(allt(ctet1))-1)&&删除后面的一为数 endif thisform.refresh 16、修改主菜单,在“游戏”的猜数游戏后填加命令:do form csyx,别忘了生成程序文件。 17、因为表单和程序不在同一目录下,所以单独运行表单会出现找不到某程序的错误,我们需要运行主程序main.prg,来看看运行结果。 “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.需进一步探索的问题 在程序设计教学时提倡‚精讲多练、小组互动、分层实施、机试为主‛的教学模式,保障了学生在不同的层面得到发展,得到提高,同时也培养了学生的创新思维,体现理论与技能的双丰收。但在对那些基础较差、不爱动脑、动手的学生帮扶上,在分层互动、层次把握上,对教师的组织能力、对教材的分析驾驭能力提出了新的要求,要能真正把握住哪些是全班学生掌握的,哪些是部分(即提高)学生掌握的,达到所有的学生在各自的水平上能‚吃饱‛。这些问题还需要我们在下一阶段的教学中进一步的探索。 数据库VFP教学体会 数据库应用具有如下两个特点: (1)数据库的应用领域广泛。应用计算机进行信息管理,绝大部分都要使用数据库来进行数据信息的存储,因此,在其他课程中,(如VB等)也都要用到一些数据库的相关知识。 (2)数据库的种类繁多,不同种类的数据库还分别有不同的版本。但无论哪一种数据库,他们的基本内容及应用原理是一致的,只不过在具体的实现过程中各有千秋。 通过以往计算机专业班的VFP教学,现对该课程进行了认真的分析,一方面分析了学生在以往的学习过程中常见问题的产生原因,一方面分析了教师在课堂教学过程中针对发现的问题该如何解决。 VFP作为数据库的基础课程,旨在让学生通过学习,了解数据库的基本原理及应用技术。更是一种用来进行管理信息系统开发的常用工具,是学生在校期间学习的一门重要基础课程.由于VFP的特点与其它高级语言程序设计的特点不同,最明显的区别在于数据库程序设计的教学过程,从第一节课开始到最后一节课结束,都在讲解同一个问题——如何把各种日常管理信息用计算机来进行管理。而这种形式的课程是学生以前从没有接触过的,他们还是带着过去的学习方式来学习VFP数据库程序设计的内容,以至于学生的学习目标不明确,不知道学完后能用它来做什么;在学习过程中,习惯性地把每节课的内容分散记忆,不能建立整体概念;每节课的内容学会并不难,但并不十分清楚那一节课的内容是整个管理系统的一个组成部分,在头脑中很难建立起“系统开发”的整体概念。 分析上述问题产生的原因,总结了二点教学体会。 一、数据库的教学重点应注重学生信息素养的培养 信息素养是指为了某种目的而寻找、处理和利用信息的能力,因此信息素养是一种非常重要的能力。依靠信息素养,人们能够进行有效的决策、交流、问题求解和研究,并进行终身的持续学习。学生的信息素养应包括对信息科学的理解,对信息活用的实践能力。在VFP课程的学习中,应特别重视学生实践能力的培养,应特别重视学生以信息技术的方法解决实际问题能力的培养。 首先,在没有开始讲解课程内容之前,教师先给学生演示完整的、内容及应用领域不相同的管理系统实例(如:“学生管理系统”、“图书管理系统”、“工资管理系统”“进销存管理系统”等),通过演示及教师的讲解,引导学生体会VFP的作用及应用领域,以及各管理系统的编程思维及各部分的相互联系。然后让学生亲身体验一下各管理系统的功能。让学生真正体会到VFP强大的实用功能。通过对实例的实际操作后,学生们会对使用“ VFP数据库程序设计”开发的信息管理系统产生感性认识,同时也会对VFP课程产生学习的兴趣。此时,教师便可以进行正确的引导,阐明VFP课程学习与其他课程学习所有不同,它是一门连惯性的课程,并且各部分相互都有联系,每一部分既是独立的又与其它部分相呼应,比如数据库中各数据表的建立及关键字段的设定与之后所建立的查询都是有关联的。需要从始至终来完成一个小型管理系统的制作。 其次,在VFP课堂教学过程中,始终坚持以“案例式”教学为主,适当结合其他教学方法来完成每一节课的教学。既把实例中整个“XXX信息管理系统”的分解结果,应用到每一节课的教学中之。在讲解新课之前,首先给学生演示本节课将要制作的实例,让学生对学习的内容有一个直观的感性认识,逻辑思维的建立,然后引入新课内容。 最后,所有的基本内容讲解之后,留出足够的时间,由教师引导学生按照系统开发的标准步骤开发其他管理系统,让学生清晰地学会系统开发的完整过程。 二、数据库的教学应加强学生自主能力的培养 教学着重培养的是学生获取信息的能力与自学能力、创新能力。在VFP的教学过程中应发挥学生的积极性、主动性和创造性。 1、教师要调整好与学生间的关系,突出学生的学习主体位置。把自己变成“一位合作伙伴”。让他们在探究新知的过程中,暴露自己感知理解新知的矛盾和差异,把疑点和难点都摆在桌面上,再引导他们通过独立思考,实现由感性认识到理性认识的转化。例如:在学习“定时器”控件时时,先给学生展示一些内容幽默的动画作品,激发学生的求知热情,并让学生回忆过去的内容:在VB中是如何实现动画功能的?通过复习旧的知识,学生自主探究新的知识。 2、联系实际是激发学生自主学习情感的前提。教学内容或教材主题要与学生的学习生活、社会生活密切相关,从中扩大眼界,促进使学生自主学习的兴趣得到提升。例如:在进行“表单”教学时,可引导学生制作简单的小游戏,然后将知识点转移到数据库设置当中。 3、在教学过程中应倾力培养学生自主学习的能力,使“任务式”升华为“自觉式”。指导学生提出问题,归纳知识。例如,教师在引导学生开发管理系统时,先让学生分组找出自己感兴趣的领域,然后写出系统开发计划书,最后小组合作完成整个系统的编制与调试。 4、给学生充分展现的机会,培养学生学习的自信心。例如:各组的管理系统开发完成后,以论文答辩的形式将成果展示给大家,以组为单位展示,小组成员是答辩者,其他学生是考核者。不仅锻炼了学生的语言表达能力,还培养了学生科学的构建知识架构的能力。 VFP常用函数大全整理 一.字符及字符串处理函数:字符及字符串处理函数的处理对象均为字符型数据,但其返回值类型各异.1.取子串函数: 格式:substr(c,n1,n2) 功能:取字符串C第n1个字符起的n2个字符.返回值类型是字符型.例:取姓名字符串中的姓.store “王小风” to xm ?substr(xm,1,2) 结果为:王 2.删除空格函数:以下3个函数可以删除字符串中的多余空格,3个函数的返回值均为字符型.trim(字符串):删除字符串的尾部空格 alltrim(字符串):删除字符串的前后空格 ltrim(字符串):删除字符串的前面的空格 例:去掉第一个字符串的尾空格后与第二个字符串连接 store “abcd ” to x store “efg” to y ?trim(x)+y abcdefg 3.空格函数: 格式:space(n) 说明:该函数的功能是产生指定个数的空格字符串(n用于指定空格个数).例:定义一个变量dh,其初值为8个空格 store space(8)to dh 4.取左子串函数: 格式:left(c,n)功能:取字符串C左边n个字符.5.取右子串函数: 格式:right(c,n) 功能:取字符串c右边的n个字符 例:a=“我是中国人” ?right(a,4) 国人 322 &&隐含四舍五入取整转换为字符型数据 ?left(a,2) 我 6.empty(c):用于测试字符串C是否为空格.7.求子串位置函数: 格式:At(字符串1,字符串2) 功能:返回字符串1在字符串2的位置 例:?At(“教授”,“副教授”) 8.大小写转换函数: 格式: lower(字符串) upper(字符串) 功能:lower()将字符串中的字母一律变小写;upper()将字符串中的字母一律变大写 例: bl=“FoxBASE” ?lower(bl)+space(2)+upper(bl) foxbase FOXBASE 9.求字符串长度函数: 格式:len(字符串) 功能:求指定字符串的长度 例:a=“中国人” ?len(a) 二.数学运算函数: 1.取整函数: 格式:int(数值) 功能:取指定数值的整数部分.例:取整并显示结果 ?int(25.69) 2.四舍五入函数: 格式:round(数值表达式,小数位 数) 功能:根据给出的四舍五入小数位数,对数值表达式的计算结果做四舍五入处理 例:对下面给出的数四舍五入并显示其结果 ?round(3.14159,4),round(202_.9962,0),round(202_.9962,-3) 3.1416 202_ 202_ 3.求平方根函数: 格式:sqrt(数值) ?str(321.56,6,2) 321.56 功能:求指定数值的算术平方根 例:?sqrt(100) 4.最大值、最小值函数: 格式: Max(数值表达式1,数值表达式2) Min(数值表达式1,数值表达式2) 功能:返回两个数值表达式中的最大值和最小值 例: x1=123.456 x2=234.567 ?max(x1,x2) 234.567 ?min(x1,x2) 123.456 5.求余数函数: 格式:mod(表达式1,表达式2) 功能:求表达式1对表达式 2的余数 例: ?mod(10,3) 6.求指数、对数函数: 格式: exp(数值表达式) log(数值表达式) 功能: (1).exp()计算自然数e?表达式的值为指数的幂 (2).log()计算表达式值的自然对数,返回lnx的值.例: x=1 y=exp(x) ?exp(x),log(x) 2.72 1 三.转换函数: 1.数值转数字字符串函数: 格式:str(n,n1,n2) 功能:将数值n转换为字符串,n1为总长度,n2为小数位 例:?str(321.56) 2.字符转数值函数: 格式:val(s) 功能:将数字字符串s转换为数值 例:x=“23” y=“76” ?val(x)+val(y) 3.字符转日期函数: 格式:ctod(c) 功能:将日期字符串c转换为日期 例:set date ansi &&日期格式设为美国标准化协会格式 ?ctod(“^202_.11.14”) 202_.11.14 4.日期转字符函数: 格式:dtoc(d) 功能:将日期d转化为日期字符串 例:将日期型数据转化为字符型日期数据并显示汉字日期.set century on &&开启世纪前缀,即日期中年份用4位表示 set date ansi rq={^202_.11.14} rq=dtoc(rq) ?substr(rq,1,4)+“年”+substr(rq,6,2)+“月”+substr(rq,9,2)+“日” 202_年11月14日 5.时间转字符函数: 格式:ttoc(时间) 功能:将时间转为时间字符串 6.字符转时间函数: 格式:ctot(c) 功能:将时间字符串转化为时间 7.字符串替换函数: 格式:stuff(<字符表达式1>,<起始位置>,<字符个数>,<字符表达式2>) 功能:从指定位置开始,用<表达式2>的值去替换<表达式1>中指定个数字符.若<字符个数>为零,直接插入;若<表达式2>为空字符串,则删除<表达式1>中指定个数的字符.例:X=“祝大家新年好!” ?stuff(X,7,4,“春节”) 祝大家春节好 ?stuff(X,11,0,“春节”) 祝大家新年春节好 ?stuff(x,7,4,“ ”) 祝大家好 8.字符转ASCⅡ码函数: 格式:Asc(<字符表达式>) 功能:把<字符表达式>左边第一个字符转成相应的ASCⅡ码值 例:x=“Foxpro” ?Asc(x),Asc(lower(x)) 102 9.ASCⅡ码值转字符函数: 格式:chr(数值表达式) 功能:把数值转成相应的ASCⅡ码字符,返回值为字符型 例:?chr(70)+chr(111)+chr(111+9) Fox 四.日期函数: 1.系统日期函数: 格式:date() 功能:给出系统的当前日期,返回值是日期型数据.例:显示系统日期 ?date() 11/14/05 set date ansi set century on ?date() 202_.11.14 2.年、月、日函数: 格式:(1).year(日期表达式):从 日期表达式中返回一个由四位数字表示的年份.(2).month(日期表达式):从日期表达式中返回一个用数字表示的月份.(3).day(日期表达式):从日期表达式中返回一个用数字表示的日数.例:测试系统日期 rq=date() ?year(rq),month(rq),day(rq) 202_ 11 14 3.系统时间函数: 格式:time() 功能:得到当前时间字符串 例:?time() 20:32:26 4.系统日期时间函数: 格式:datetime() 功能:得到当前日期时间 例:?datetime() 202_.11.14 08:35:12 PM 5.星期函数: 格式:dow(日期表达式) cdow(日期表达式) 功能:dow用数字表示星期,1表示星期日,7为星期六;cdow用英文表示星期 例:?date() 202_.11.15 ?dow(date()),cdow(date())Tuesday 五.测试函数: 1.测试文件尾函数: 格式:eof([n]) 说明: (1).n指定被测工作区号,其范围为1~32767 (2).该函数用于测试指定工作区中的表的记录指针是否指向文件尾,是则返回真值;否则返回假值;省略可选项指当前工作区.例:测试文件记录指针是否指向文件尾 use 职工档案 go bottom ?eof() .F.skip ?eof() .T.2.测试文件头函数: 格式:bof([n]) 说明: (1).n指定被测工作区号,其范 围为1~32767 (2).用于测试指定工作区中的表的记录指针是否指向文件头,是则返回真值;否则返回假值;省略可选项指当前工作区.例:测试记录指针是否指向文件头 use 职工档案 go top ?bof() .f.skip-1 ?bof() .t.3.测试当前记录号函数: 格式:recno() 功能:得到当前的记录号 例: use 职工档案 ?recno() skip ?recno() 4.测试表文件记录数函数: 格式:reccount() 功能:得到表的记录数 例:测试“职工档案”表的记录数 use 职工档案 ?reccount() 5.测试表字段数函数: 格式:fcount()功能:得到当前的字段数 例:测试“职工档案”表共有多少个字段 use 职工档案 ?fcount() 6.测试查找记录是否成功函数: 格式:found() 功能:测试find、seek和locate命令查找记录是否成功.如成功则返回真值,否则为假值.例:在“职工档案”表中查找“小刚”的文化程度 use 职工档案 locate for 姓名=“小刚” ?found() .t.display 7.文件测试函数: 格式:file(字符表达式) 功能:测试字符表达式指定的文件是否存在 例:?file(“e:myvfp职工档案.dbf”) .t.8.数据类型测试函数: 格式:type(字符表达式)功能:测试表达式的数据类型,返回大写字母:N(数值)、C(字符)、L(逻辑)、D(日期)、M(备注) 例: x=1236 y=“hello” ?type(“x”) N ?type(“y”) C 9.测试工作区函数: 格式:select() 功能:返回当前工作区的区号 10.测试别名函数: 格式:alias() 功能:测试当前工作区的别名 例: select 1 use 职工档案 alias zgda select 2 use 工资情况 ?alias() 工资情况 &&打开表时,不指定别名,表名即为别名 select zgda &&通过别名选择工作区 ?select() 11.表文件名函数: 格式:dbf() 功能:返回当前工作区打开的表名 例: use 工资情况 ?dbf() e:myvfp工资情况 六.其它函数: 1.宏替换函数: 格式:&变量名 说明:vfp中只有宏替换函数没有括号.功能是返回指定字符型变量中所存放的字符串.例:为“工资情况”表中每个人加100元工资 gz=“工资” use 工资情况 replace all &gz with &gz+100 2.条件函数: 格式:iif(表达式,表达式1,表达式2) 功能:若表达式值为真,则返回表达式1的值;否则返回表达式2的值;函数返回值类型与表达式1或表达式2类型一致 a=3 b=5 ?iif(a>b,“高兴”,“开心”) 开心 3.消息框函数: 格式:messagebox(提示文本[,对话框类型[,对话框标题文本]]) 功能:显示提示对话框 说明: (1)对话框类型见表1: 对话框类型功能 0仅“确定”按钮 1“确定”和“取消”按钮 2“终止”,“重试”和“忽略”按钮 3“是”,“否”和“取消”按钮 4“是”和“否”按钮 5“重试”和“取消”按钮 16stop图标 32?图标 48!图标 64i图标 0默认第1个按钮 256默认第2个按钮 512默认第3个按钮 (2).返回值见表2: 返回值按钮 1确定 2取消 3终止 4重试 5忽略 6是 7否 例:分析messagebox(“您确实要退出系统吗?”,4+64,“提示信息”)会弹出什么样的窗口.分析:回头观察此函数的格式,弹出的对话框中的提示文本是“您确实要退出系统吗”,对话框标题是“提示信息”,函数中间有“4+64”,其中4指定对话框中出现“是”和“否”两个按钮(见表1),64指定对话框中出现i图标(见表2) ok,我们在命令窗口依次执行下列命令: tui=messagebox(“您确实要退出系统吗?”,4+64,“提示信息”) &&变量tui用于接收messagebox函数的返回值,弹出的窗口如图1 ?tui &&变量tui值取决于运行时用户点了哪个按钮,如果点了“是”,返回6,如果点了“否”,返回7,见表2 说明:实际应用中,我们常在系统菜单或在表单的“退出”按钮中添加如下代码: tui=messagebox(“您确实要退出系统吗?”,4+64,“提示信息”) if tui=6 &&如果此条件成立,说明用户点了“是”按钮,执行quit命令,安全退出 quit endif --本内容摘自liupengty的个人博客 http://hi.baidu.com/liupengty1/ 向作者致谢! 最前面的话 在创作中思维 前言 今天,电脑已经进入千家万户,许多父母本着“不让我的孩子输在起跑线上”的原则,对于辅导孩子学习电脑这件事,可说是相当费心,那么到底儿童学习电脑该有些什么内容呢?也成为家长们最为关心的话题。帮助少儿成为愿意使用、能够使用以及正确使用电脑科技的新新人类成员,是少儿学习电脑的主要目标。 将来的孩子必然要把计算机当做自己工作和接触世界的一个重要工具,就如同我们当年通过收音机,电视,图书,杂志来接触世界万物一样。做为家长来说,不应该对计算机产生恐惧。近来,国家也倡导孩子们“绿色上网”,而在学校也开设了信息技术课。现在大多数家长既想让孩子学习计算机,又不想让孩子沉迷于游戏,或接受不良的互联网文化。从某种程度上说,这是一个两难的问题。最好的方法,就是正确的引导和介入。 从我个人的经验上看,让孩子接触PC上的游戏,可以娱乐身心,提高智力。人对自己熟悉的东西是有把握能力的。孩子早接触游戏,就不容易上瘾。小学、初中阶段的孩子,还处在家长的教育有效期内,因此家长完全可以有效监控和引导孩子正确的使用电脑。但很多情况下,家长并不知道该怎么办,没有办法引导孩子,这本身是一个遗憾。更加不幸的是,现在有相当多的孩子,在小学、中学期间被禁止玩电脑游戏,甚至禁止使用电脑,等他或她到了大学,终于解放了,敞开来玩,这样人就荒废了。还有就是,家长首先不要游戏上瘾,否则孩子在这方面出问题的可能性就大了。 当然,让孩子玩游戏不是目的,第二步,要想让孩子不沉迷在游戏中,就要去引导,从被动的玩,到主动的创造。因此,要进一步丰富孩子的计算机知识,让他们自己动手去创作。我这里向各位家长推荐Scratch。网上有一段对Scratch的描述:刚下载了Scratch,安装运行后的几秒内,就眼前一亮,很有意思,软件会在你启动几秒后,自动测试你的操作系统版本,变换为简体中文的界面,在经过一段时间的使用和教学后,作为一名计算机老师,更是感觉有向我们的孩子们推荐的必要。孩子们首先是感兴趣,能很快上手,自己动手设计卡通作品。他们在创作过程中,学习积极性极大,想象力和创造力得到了极大的培养和锻炼。他们还把自己的作品上传到官方网站上去。他们试图去设计一些体现自己思想的作品,边做边体会,这个完全模块化的软件所带来的便捷,Scratch安装目录下带有大量的素材,能极大的满足孩子们的需求,他们有时还根据需要,自己制作素材!这个描述既贴切,又生动。 Scratch软件的优势是给孩子们提供尽可能方便的工具,让他们充分去发挥自己的想象力创作。使用scracth进行创作,孩子们不仅能学到计算机程序设计的基本方法、动画制作的基础知识,而且还能进一步深入体会我们的自然语言---汉语、英语,我们人类共同的语言----数学;Scratch创作中会用到一些数学知识,你可以只使用简单的数学,不过你的数学知识越丰富,你的创作能力越强。因此Scratch的学习能有效的提升孩子们对语、数、外的学习兴趣。 本书开始部分介绍了电脑基本构造、开关机、系统操作、常见工具软件操作说明等内容,为少儿自己动手创作动漫游戏做好准备。 本书一个突出的特点是简明易懂,写作采用了全新的图解方式,对少儿及成人均适用,是家长引导少儿正确使用电脑的指南! 第一部分电脑入门 基本电脑常规操作,略过 练习:打开Scratch自带的Projects下的作品看看。、响应键盘(1) 11、响应键盘(2) 附: 将scratch的Sb文件,转换成exe文件 最简单的方法如下: 1、下载转换程序请使用链接: http://chirp.scratchr.org/dl/ChirpCompiler-setup.exe 2、双击下载到的安装程序ChirpCompiler-setup.exe,并按提示安装ChirpCompiler。 3、安装完成后,双击桌面上的ChirpCompiler快捷图标 4、出现“Step1:Choose Scratch Project” 对话框, 选择待转的sb文件,并点击右下角的【打开】按钮 5、出现“Step2:(Optional):Chosse an Icon”对话框,点右下角的【取消】按钮 6、等待转换完成,进入【我的文档】下的【Scratch2exe文件夹】(此文件夹通常是转换完后自动打开的),双击生成的exe执行即可。完毕。第二篇:VFP程序设计教学反思
第三篇:数据库VFP教学体会(推荐)
第四篇:VFP常用函数整理范文
第五篇:Scratch实例教学