




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、指导老师:余敦辉2009-3-2VFP程序设计基础实验指导书前言学习数据库程序设计,上机实训是十分重要的环节。为了方便读者上机练习,本实训指导书设计了12个实训。这些实训和课堂教学紧密配合,通过有针对性的上机实训,可以更好地熟悉 Visual FoxPro的功能,掌握 Visual FoxPro程序设计的方法,并培养一定的应用开发能力。建议每个实训安排2机时左右,也可以根据实际情况从每个实训中选择部分内容上机练习。为了达到理想的实训效果,请务必做到以下几点:1、实训前认真准备,要根据实训目的和实训内容,复习好实训中可能要用到的命令,想好编程的思路,做到胸有成竹,提高上机效率。2、实训过程中积极
2、思考,要深入分析命令、程序的执行结果以及各种屏幕信息的含义、出现的原因并提出解决办法。3、实训后认真总结,要总结本次实训有哪些收获,还存在哪些问题,并完成实训指导书要求填写的内容。程序设计和应用开发能力的提高需要不断的上机实践和长期的经验积累,在上机过程中会碰到各种各样的问题,分析问题和解决问题的过程就是经验积累的过程。只要按照上面3点要求去做,在学完本课程后就一定会有很大的收获,计算机应用能力就会有很大提高。【实训1】熟悉VFP环境实训目的:1熟悉VFP系统的操作环境。2掌握VFP系统的启动和退出方法。3掌握MSDN帮助文件的使用方法。实训内容:1.VFP系统的启动(1)点击“开始”菜单中的
3、“程序”选项。(2)找到Visual FoxPro 6.0的快捷方式来启动VFP。注:Visual FoxPro 6.0的可执行文件为vfp6.exe,其所在目录随安装的位置的不同而不同,一般为:“C:Program FilesMicrosoft Visual StudioVfp98VFP6.EXE"。2.在桌面上建立vfp6.exe的快捷方式(1) 首先找到VFP的可执行文件vfp6.exe,依次打开C:Program FilesMicrosoft Visual StudioVfp98文件夹,找到VFP的可执行文件为vfp6.exe。(根据具体实训环境的不同,该文件的位置可能不同)
4、(2)选中vfp6.exe文件。(3)右键拖动vfp6.exe文件到桌面空白处,在弹出的快捷菜单中选择“在当前位置创建快捷方式”菜单项,即可在桌面上建立vfp6.exe的快捷方式。双击刚刚建好的快捷方式也可以启动vfp环境。3.退出VFP(以下方法并列)方法1:在“命令”窗口中,输入命令“quit”。方法2:直接按Alt+F4。方法3:在“文件”菜单中,选择“退出”命令。方法4:双击主窗口左上角的控制菜单框。方法5:在主窗口控制菜单中,选择“关闭”。4.认识VFP界面(1) 在vfp主窗口中依次找到标题栏、菜单栏、工具栏、状态栏的位置。(2) “常用”工具栏的关闭。单击“显示”菜单中的“工具栏
5、”菜单项。在弹出的窗口中,找到“工具栏”列表框中的“常用”项,鼠标单击去掉“常用”工具栏前面的选中标记。单击“确定”按钮,即可关闭“常用”工具栏。(3) “常用”工具栏的显示。单击“显示”菜单中的“工具栏”菜单项。在弹出的窗口中,找到“工具栏”列表框中的“常用”项,鼠标单击选中“常用”工具栏前面的选中标记。单击“确定”按钮,即可显示“常用”工具栏。注:其他工具栏的显示与关闭与上面的方法相同,请读者自己练习。(3)命令窗口显示与关闭。方法1:单击“窗口”菜单中的”命令窗口” 菜单项来显示命令窗口,再次单击“窗口”菜单中的”命令窗口”菜单项可关闭命令窗口。方法2:CTRL+F2(显示命令窗口)/
6、CTRL+F4(关闭命令窗口)5.利用MSDN帮助文件查找要解决的问题(1)进入帮助系统有三种方法。方法1:在命令窗口中,输入“help”命令后,回车。方法2:调用“帮助”菜单。方法3:在VFP窗口中的任一位置选中需要获得帮助的内容,按“F1”功能键。(2)选择“活动子集”为“Visual Foxpro文档”,保证用户查看到的是关于vfp的帮助内容。(3)选中“搜索”标签,输入要搜索的关键字。例如输入“系统容量”四个字,单击“列出主题”按钮列出符合条件的主题。(4)用鼠标双击找到的主题,在右边的窗口部分即可看到要查找主题的相关内容。(当然用户也可以在“目录”选项卡下以目录的形式来浏览vfp的帮
7、助内容。)注:帮助文件的位置:通常情况下,VFP6的MSDN帮助文件位置在c:program filesMicrosoft Visual studiomsdn9898vs2502,文件名为foxhelp.chm。(5)请读者找到所在的实训环境下,VFP6的MSDN帮助文件foxhelp.chm的存放位置。【实训2】项目管理器的基本操作实训目的:1.掌握工作目录的设置方法。2.掌握项目管理器的基本操作。3.掌握如何建立表文件及备注和通用字段内容的输入方法。实训内容:1.设置D:VFPLX文件夹为工作目录(两种方法)首先在D盘新建立一个名为VFPLX的文件夹。方法1:菜单方法(1)依次单击“工具”
8、菜单中的“选项”菜单项。(2)单击选中”文件位置”选项卡中的“默认目录”项。(3) 单击“修改”按钮,在弹出的“更改文件位置”对话框中,选中“使用默认目录”选项。(4)在“定位默认目录”下面的文本框输入新的工作目录文件夹路径,单击“确定”按钮。例如输入:D:VFPLX。方法2: 命令操作的格式为:set default to 目录名(1)在命令窗口中输入:set default to D:VFPLX(2)回车执行上面的命令即可。注意:要设置为工作目录的文件夹必须已经存在,否则,不能设置成功。在vfp环境下,一旦设置了工作目录后,用户使用VFP工作过程中所产生的文件默认都会存到已经设置好的工作目
9、录下,不会与vfp系统文件混在一起,方便管理与查找。2.项目管理器的基本操作(1)建立项目文件单击“文件”菜单中的“新建”菜单项,在弹出的窗口中选择文件类别为“项目”。单击“新建文件”按钮。在弹出的创建窗口中输入项目文件名。例如输入:XM1(注意项目文件的扩展名为.PJX)。 单击“保存”按钮,便建立了名为XM1的项目文件,同时打开了项目管理器窗口。(2)建立数据库文件在项目管理器中,单击选中“数据”选项卡下面的“数据库”类别。单击“新建”按钮,单击“新建数据库”按钮。输入文件名:如“教工”(注意数据库文件的扩展名为.dbc)。单击“保存”按钮,便建立了名为“教工”的数据库,同时打开了数据库设
10、计器窗口。单击数据库设计器窗口右上角的“x”形图标按钮来关闭设计器。(3)关闭项目文件单击项目管理器右上角的“x”(关闭按钮)。(4)打开项目文件。单击“文件”菜单中的“打开”菜单项。选择文件类型为“项目”,选中要打开的项目文件XM1.PJX,单击“确定”。(5)建立表文件单击“数据库”左边的“+”,就会列出刚刚建好的“教工”数据库。单击“教工”左边的“+”,选中“表”。(选自由表,可建立自由表)单击“新建”/单击“新建表”按钮(此时建立的是数据库表)。输入文件名:如“zgda”(注意表文件的扩展名为.dbf)。单击“保存”按钮,便打开了表设计器窗口。输入表的结构(如下表所示)后,单击“确定”
11、按钮。字段字段名类型宽度1编号字符型42姓名字符型63性别字符型24年龄数值型25职称字符型66工作时间日期型87婚否逻辑型18简历备注型49照片通用型4 系统提示是否现在“输入记录”,选择“是”,并在全屏幕编辑窗口中输入下列记录。编号姓名性别年龄职称工作时间婚否简历照片1张黎黎女26助教05/24/99.T.memoGen2李艳女30助教09/24/99.T.memoGen3刘强男38讲师12/24/95.T.memoGen4王秋燕女45讲师10/09/93.T.memoGen5姜丽萍女45讲师10/09/93.T.memoGen6陈丽丽女38讲师09/27/95.T.memoGen7刘刚男
12、50副教授06/28/88.T.memoGen8王良男39讲师08/09/95.T.memoGen注意:1.备注字段的输入方法:双击相应记录的备注字段(简历),打开备注字段的输入窗口,既可输入文本内容。2.通用字段的输入方法:(1)双击相应记录的通用字段(照片字段),打开通用字段的输入窗口。(2)单击“编辑”菜单中的“插入对象”命令。(3)选择“对象类型”为“Microsoft Word 图片”,即可打开Word程序。(4)在Word程序依次单击插入/图片/剪贴画/选择一个剪贴画插入。(5)关闭Word程序,回到vfp,即可看到插入的图片,关闭通用字段的输入窗口。(6)已经插入内容的备注字段和
13、通用字段的外表分别显示为Memo和Gen,第一个字母大写;没有插入内容的备注字段和通用字段的外表分别显示为memo和gen。小结:建立表文件的过程分2步。首先建立表结构,即定义表的列数及每一列的数据类型、宽度等;再输入记录信息,即决定表有多少行的数据。(6)修改表文件的结构 在项目管理器中,选中zgda.dbf表。 单击“修改”按钮,即可打开表设计器,对表的结构进行修改。(可增加、插入、删除字段、改变字段的位置) 在表设计器的字段选项卡上的字段列表中最后一个字段后面单击鼠标来增加一个备注型字段,输入字段名为“备注”,选择字段类型为“备注型”。 删除“工作时间”字段:选中“工作时间”字段,单击“
14、删除”按钮。 改变字段的位置(顺序):拖动字段名前的移动按钮到目标位置松开鼠标即可。注:可以在命令窗口中输入:modify structure命令,来修改表文件的结构,但必须先打开zgda表。(7)浏览表的内容(记录)在项目管理器中,选中zgda.dbf表。单击“浏览”按钮,即可打开浏览窗口对表的记录进行修改。(8)移去一个(表)文件在项目管理器中,选中要移去:如zgda.dbf表。单击“移去”按钮,单击“移去”按钮,仅仅是将表从项目管理器中移去,不删除该表文件;(单击“删除”按钮,是将表从项目管理器中移去,同时删除该表文件)。注:如果是数据库表,移去后该表变为自由表。(9)在项目中添加已有的
15、文件在项目管理器中,选中要添加的文件类型:如选中“自由表”类别。单击“添加”按钮,选择要添加的表文件,如:刚刚移去的zgda.dbf单击“确定”,即可添加到项目中。(10)项目管理器展开与折叠、选项卡拖离和顶层显示操作展开与折叠:单击“其他”选项卡右边的“向上箭头”图标,即可折叠项目管理器窗口,同时“向上箭头”图标变成“向下箭头”图标;单击“其他”选项卡右边的“向下箭头”图标,即可展开项目管理器窗口,选项卡的拖离:在“折叠”状态下,拖动相应的“选项卡”到新的位置松开鼠标即可。选项卡的顶层显示:单击拖离后的选项卡上的“图钉”图标即可使该选项卡变成“顶层显示”状态,不被其他的“选项卡”所遮盖。【实
16、训3】数据类型与常用函数的用法实训目的:1熟练掌握各种数据类型常量的表示方法。2熟练掌握常用函数的用法。相关知识:1常量的表示方法数值型(N):直接由数字或+、-、小数点构成,无定界符号。字符型(C):(1)由字符、汉字组成,需加定界符(单引号、双引号、中括号)。(2)如沈阳、”沈阳”、沈阳。(3)同一定界符不能嵌套,如:“AB”CD”,但 AB”CD”是合法的。日期型(D):用定界。如:2005-08-30或CTOD(“01/08/30”)。日期时间型(T):用定界。如:2005-08-30 11:15:30 A逻辑型(L):用.定界。如用.t.或.Y.表示逻辑真, 用.F.或.N.表示逻辑
17、假。货币型(Y):用$符号开头,后跟数字。如:$90。2.函数的学习要点(1)函数名是什么?(2)该函数有几个参数、参数的数据类型是什么?(3)该函数的功能是什么?(4)返回值的数据类型是什么?对于任何的一个函数,只要注意以上4点,应用起来就不成问题!实训内容:在窗口中输入下列函数表达式,回车运行后分析运行结果,具体练习过程中请查阅帮助文件以了解下述函数的具体用法。1.sign( ) 函数功能:当指定数值表达式的值为正、负或 0 时,分别返回 1、-1 或 0? sign(0) &&0? sign(-8) &&-12.平方根函数sqrt():返回指定数值表达式的
18、平方根? sqrt(9) &&3 (参数不能为负数)3.圆周率函数pi():返回圆周率常数? pi() &&3.14set decimals to 4 &&指定数值型数据显示的小数位数为4位,系统默认为2位? pi() && 3.14164.取整函数int()、floor()、ceiling()? int(12.56) &&12 ? int(-12.56) && -12 ? int(.56) &&0 注:int()函数返回值为参数的整数部分。? floor(-4.5) &&a
19、mp; -5 ? floor(3.5) &&3注:floor()函数返回值为小于或者等于参数值的最大的整数。? ceiling(-4.5) &&-4? ceiling(3.5) &&4注:ceiling()函数返回值为大于或者等于参数值的最小的整数。5.四舍五入函数Round()? Round(7556.5678,2) &&7556.57 ? Round(7556.5678,0) &&7557? Round(7556.81,-2) &&7600 ? Round(7556.5678,-1) &
20、&7560 注:第二个参数为负数时,表示对相应的整数位进行四舍五入6.最值函数max()、min()? max(10,20,30,25) &&30 ? max(10,20) &&20 ? max("a","ab") &&ab ? max($10,$20) &&$20 ? max(2005-4-16,2004-4-16) &&2005-4-16注:参数至少有二个,参数可以是字符型、数值型、货币型、日期型;将上面的max改写成min后运行并分析运行结果。7.求字符串长度函
21、数len()? len("abcde") &&5 ? len("*") &&1 *为空格字符? len("中国") &&4 一个汉字占2个宽度? len("") &&0 空字符串长度为08.大小写转换函数? lower("AbCd12OK")&&abcd12ok? upper("AbCd12OK")&&ABCD12OK 注:只转换字符串中的大小写,其他字符不变。9.空格字符生成函数
22、? "a"+space(3)+"b" &&a*b *为空格字符? len(space(3)+space(2)&&5 +为字符连接运算符? len(space(3)-space(2)&&5 -为字符连接运算符10.删除空格字符函数? trim("abcd*")+"ef" &&abcdef *为空格字符? trim("abc*d*")+"ef" &&abc*def *为空格字符? ltrim(&quo
23、t;*ab*")+"ef" &&ab*ef *为空格字符? alltrim("*ab*")+"ef" &&abef *为空格字符11.取子串函数? left("abcdef",2) &&ab ? left("abcdef",100) && abcdef ? right("abcdef",3) &&def ? substr("abcdef",2,3) &&
24、;bcd ? substr("abcdef",3) &&cdef? substr("中华人民共和国",5,4) &&人民12.occurs()函数? occurs("ab","cabkabk") &&2 串ab在串cabkabk中出现了2次? occurs("ab","ckk") &&0 串ab在串ckk中出现了0次13、at()函数? at("ab","ccabkabk"
25、,1) &&3 串ab在串cabkabk中第1次出现的起始位置是3? at("ab","ccabkabk",2) &&6 串ab在串cabkabk中第1次出现的起始位置是614.子串替换函数? stuff("abcdef",2,4,"ok") &&abokef 替换串abcdef第2个位置开始的4个字符,用串ok来替换? stuff("abcdef",2,0,"ok") &&abokcdef 相当于插入ok? s
26、tuff("abcdef",2,4,"") &&af 相当于删除bcde15.日期函数? date() &&返回系统日期set century on &&用4位数字显示年份? date()set date to ansi &&设置日期的显示格式为ansi? date()? time()&&以字符串形式返回系统当前时间? datetime()&&返回系统日期和时间? year(2004-04-16)&&2004 返回日期中的年份数值? month
27、(2004-04-16) &&4 返回日期中的月份数值? day(2004-04-16)&&16? hour(datetime()&&分别显示当前系统时间的小时数? minute(datetime()&&分别显示当前系统时间的分钟数? sec(datetime() &&分别显示当前系统时间的秒数16.转换函数? str(123.5678,8,2) &&*123.57 *为空格? str(123.5678,6,3) &&123.57? val("123.45")+1
28、00 &&223.45? val("12a3.45") &&12? val("a1212a3.45") &&0 第1个字符不是数字也不是+-号,返回0set date to usa &&设置日期的显示格式为美国日期格式? ctod("04-16-05") &&2005-4-16? ctod("04-16-05")+1 &&2005-4-17? dtoc(date() &&将系统日期转换为字符格式17.宏替
29、换函数x="123"? &x+100 && 223 &&相当于? 123+100? x+"100" && 123100 18.iif()函数x=100? iif(x>100,x-50,x+50) &&150? iif(x<0,-1,iif(x=0,0,1) &&1 19.数据类型测试函数type()、vartype()? type("123") &&N ? type("04/06/09") &
30、&N? type("time()") &&C ? vartype(123) &&N? vartype(“123”) &&C ? vartype($123) &&Y ? vartype(Datetime() &&T ? vartype(2005-04-19) &&D ? vartype(3>5) &&L思考题:如何用IIF()函数实现SIGN()的功能?(提示:IIF(X>0,1,IIF( x=0 ,0,-1))20.测试函数bof()、eof(
31、)、recno()use zgda? bof() &&.f.? recno() &&1 刚刚打开的表,指针指向首记录skip 1 && 指针向上移动一条记录? bof() &&.t. ? recno() &&1 表可访问的最小记录号为1go bottom && 指针指向尾记录? eof() &&.f. ? recno() &&8 假设表中只有8条记录,指针指向首记录skip &&指针向下移动一条记录? eof() &&.t.? recn
32、o() &&9 表可访问的最大记录号为记录总数+1, 假设表中只有8条记录? reccount() &&8 假设表中只有8条记录21.信息窗口函数MessageBox()格式:MESSAGEBOX(信息文本, ,对话框类型数值 ,标题栏文本)例子:MESSAGEBOX(“您好,VFP!”,64,“提示信息”)【实训4】运算符与表达式实训目的:1.掌握各种类型表达式的书写方法。2.掌握运算符的优先级别。实训内容:依次在命令窗口中输入下列表达式,回车运行来输出表达式的值,并分析运行结果。1.数值表达式? -3*2 &&9 负号的运算级别高于乘方? (
33、3+4)/22+int(12.5) &&13.75相关知识:(1)书写数值表达式,乘号一定不能省略。(2)数值表达式是由算术运算符和数值型常数、变量、函数组成,运算结果为数值型数据。算术运算符为:+ - * % ( ) 。(3)算术运算符的优先次序由高到低依次为:括号、负号、乘方、乘除、模运算(取余)、加减,同级运算从左到右依次进行。2.字符表达式? “abc*”+”*cd*” &&abc*cd* *为空格,+号为字符串完全连接运算?“abc*”-”*cd*” &&abc*cd* *为空格,-号为字符串不完全连接运算相关知识:(1)字符表达式是由
34、字符运算符和字符型常数(即用定界符括起来的字符串)、变量、函数组成,运算结果是字符型数据或逻辑值。(2)二种字符串运算符,优先级别相同。(3)完全连接是指两个字符串合并,即包括空格在内的字符串中所有字符相加。不完全连接运算是将串1尾部的空格移到串2的尾部后,再连接。3.关系表达式set collate to “machine” &&设置数据的比较序列为机内码方式? 8>100 &&.f. ? “8”>”100” &&.t.? 2004-5-19>2003-5-19 && .t.? $80<$60 &
35、&.f.? “abc”=”ab” &&.t. 系统默认“=”为非精确比较,右边是左边的左子串,则成立。Set exact on &&设置“=”为精确比较,off为非精确比较“abc”=”ab” && .f. 精确比较要求两边的字符串必须完全相等才成立。? “ok”$”abokd” &&.t. 前一个串“ok”包含在后一个串中,返回逻辑真相关知识:(1)关系表达式描述的同类数据的大小比较关系,其结果是一个逻辑值,关系成立结果取真(.T.),不成立结果取假(F)。(2)关系运算符两边的数据类型要一致,只有同类型的数据才能进行比
36、较。(3)数据比较规律数值和货币类型:数越大,其值越大。如:1000>800 $90>$10日期数据:未来>历史 如:2007-5-19>2007-5-18逻辑常量:逻辑真大于逻辑假,即:.t.>.f.字符串比较:依次对应比较两个串的字符,直到比较出结果即停止比较。例如:"abc">"ab", "abc">"aBc"。字符的比较规律ASCII字符:比较字符的ASCII码值的大小。总结规律为:空格<0-9<A-Z<a-z。汉字字符:是按照汉字的机内码值的大小
37、来进行比较的,即比较汉字的拼音字符串的大小。例如:汉字“男”的拼音为“nan”, 汉字“女”拼音为“nv”,所以“男”小于“女”。注意:上述字符的比较规律的前提是必须设置数据的比较序列为机内码方式。设置的命令为:set collate to “machine” 或者依次单击“工具”菜单中的“选项”菜单项,单击“数据”选项卡,设置“排序序列”为“machine”选项即可。4.逻辑表达式:逻辑运算符的优先级别为:.NOT. .AND. .OR.? not(10+3)>5 and ”ab”$”ab”+”cde” or 3>=4 &&.f.? 3>2 AND NOT
38、5>6 && 相关知识:(1)当表达式中出现了多种运算符时,各种运算符的优先顺序由高到低依次为:算术或字符或日期运算关系运算逻辑运算(2)相同优先级的运算按从左到右的顺序计算5.日期和日期时间表达式? 2005-3-29-2005-3-21 &&8 两日期相差的天数为8天? 2005-3-29+2005-3-21 && 两日期表达式相加,属非法表达式? 2005-3-25+3 &&2005-3-28? 2005-3-25-3 &&2005-3-22 (用严格日期格式表示)? datetime()+30 &am
39、p;&其值为当前时间的30秒后的日期时间? datetime()-30 &&其值为当前时间的30秒以前的日期时间? 2005-5-5 10:10:20 a-datetime() &&2个日期时间相差的秒的数值相关知识:(1)一个日期与一个数值相加,&&日期,表示从当前日期往后数N天。(2)一个日期与一个数值相减,&&日期,表示从当前日期向前数N天。(3)两个日期相减,&&数值,表示两日期之间相差的天数。【实训5】程序结构实训目的:(1)理解VFP的2种工作方式:交互方式和程序执行方式。(2)掌握程序文件的建
40、立、存盘、调用方法和注释语句的使用方法。(3)熟悉3种程序结构。(4)会用调试器来分析程序的执行流程。相关知识:行首注释语句: NOTE | * 注释内容功能:在程序文件中指示注释行的开始,注释行不被执行。行尾注释语句: && 注释内容功能:在程序文件中代码行的行尾注释,注释内容不被执行。实训内容:完善下列程序横线处的代码,并调试运行。1建立并执行程序p1.prg,程序功能是判断用户输入的整数是否是偶数。(1)在命令窗口中输入:modify command p1,在弹出的文本编辑器窗口中输入程序代码如下: input "一个整数" to xif x/2=in
41、t(x/2) ? “您输入的是偶数”else? “您输入的不是偶数”endif(2)按CTRL+W键,存盘。(3)在命令窗口中输入命令:DO p1后,回车执行该程序。2参照上面的例子来建立并执行p2.prg,程序功能:判断用户输入的整数是正数、负数还是零,代码如下:input "一个整数" to xif x>0 ? "您输入的是一个正数"elseif x<0 &&此处为if语句的嵌套结构。 ? "您输入的是一个负数"else ? "您输入的是零"endif endif3.参照上面的例子来
42、建立并执行p3.prg,程序功能:根据学生的分数情况给出成绩等级,代码如下:Input "分数 " to x &&从键盘接收来个成绩的数值赋值给X变量Do case Case x>=90 and x<100 ? "优秀" Case x>=80 and x<90 ? "良好" Case x>=70 and x<80 ? "中等" Case x>=60 and x<70 ? "及格"otherwise ? "悲惨,
43、您可能不及格阿!"Endcase4.建立sum.prg,程序功能是求 1+2+3+10的和,代码如下所示S=0K=1DO WHILE K<=10S=S+KK=K+1 ENDDO? “1+2+10=”,S注意:S=S+K为求和表达式,在循环中的作用是累加变量K的值,将结果保存到S变量中。思考:(1)若s=s+k分别改为s=s+k*2和s=s+1/k,程序的功能又是什么?(2)请分析下面的程序段的功能是什么,S中累加的是哪些数的和?S=0K=1DO WHILE K<=10 K=K+1 S=S+KENDDO? “S=”,S操作练习:使用调试器来跟踪该程序的执行情况,具体步骤为:
44、(1)单击“工具”菜单中的“调试器”菜单项,打开“调试器”窗口。(2)在调试器窗口中单击“文件”菜单中的“打开”菜单项,打开要跟踪的程序,如sum.prg。(3)执行“调试”菜单中的“单步跟踪”命令,来跟踪程序的执行,并观察分析“局部”窗口中变量值的变化情况。5.在程序功能不变的情况下,用FOR循环来改写第4题sum.prg,并对比FOR循环与DO While循环的区别。参考代码如下,读者也可以自己写出类似的程序。S=0For k=1 to 10 step 1 S=S+kEndfor? “S=”,S6.编写程序JC.PRG,程序功能是求5的阶乘(5!=1*2*3*4*5),参考代码如下。Y=1
45、 &&存放阶乘结果的变量要赋初值为1FOR X=1 TO 5 step 1 && step 1 可省略 Y=Y*X &&累计变量X的乘积到变量Y中。ENDFOR? "5!=",Y注:请打开调试器,来跟踪该程序的执行情况。7.参照上一题的程序,编写程序求S=1!+2!+3!+4!+5!的值。S=0Y=1FOR X=1 TO 5Y=Y*X &&循环执行过程中,Y中存放的分别是1、2、3、4、5的阶乘值S=S+Y &&累加Y中存放的分别是1、2、3、4、5的阶乘值ENDFOR? "S=&qu
46、ot;,S8.用调试器跟踪下面程序的执行情况,并写出运行结果。Store 0 to x, y, s1, s2, s3Do while x<10x=x+1Do case Case int(x/2)=x/2 &&判断X是偶数 S1=s1+x/2 &&S1中累加的是2、4、6、8、10几个数和的一半Case mod(x,3)=0 &&判断X是3的倍数S2=s2+x/3 &&S2中累加的是3、9两个数和的三分之一Case x%2!=0 &&判断X不是偶数s3=s3+1 &&S3存放的是非偶数的个数(1
47、、5、7)EndcaseEnddo? s1,s2,s3运行结果: 15.0000 4.0000 3 9.找出100900之间的“水仙花数”(指一个三位数,其各位数字的立方和等于该数本身,如:153=13+53+33),下面是部分代码,调试该程序。*SXH.PRG求水仙花数*CLEARFOR K=100 TO 999A=INT(K/100) &&取百位数字B=INT(K-100*A)/10) &&取十位数字C=MOD(K,10) &&取个位数字,看看取十位是否还有别的方法?IF k=A*3+B*3+c*3 ? KENDIFENDFOR 运行结果:1
48、53,370,371,40710.用scan-endscan循环结构来显示zgda表中所有女讲师的记录信息。USE ZGDASCAN for 性别=“女” and 职称=“讲师” DISPLAYENDSCAN11、用3种循环显示ZGDA.DBF的所有记录,请对比3种循环。(1)用SCAN循环显示ZGDA.DBF的所有记录:USE ZGDASCAN DISPLAYENDSCAN(2)用DO循环显示ZGDA.DBF的所有记录:USE ZGDADO WHILE NOT EOF()DISPskipENDDO(3)用FOR循环显示ZGDA.DBF的所有记录:USE ZGDAK=RECCOUNT()FOR
49、 J=1 TO KDISPskipENDFOR【实训6】数据表的操作实训目的:(1)熟练掌握数据表文件的建立、复制、删除和表记录的插入、删除等命令操作。(2)会用命令方式来给表建立索引。实训内容:1.建立zgda表文件(1)在D盘新建一个文件夹vfpok。(2) 设置d:vfpok为工作目录,在命令窗口中输入命令:set defa to d:vfpok &&可根据需要设置。(1)在命令窗口中输入命令:create zgda,打开表设计器。(2)接下来的操作与项目管理器中的建表操作相同。建立表文件的过程分2步:即先建立表结构(规定表的列数及类型等);输入记录(决定表有多少行的数据
50、)2.表文件的复制use zgda &&打开表zgdalist && list显示全部记录后,指针指向文件尾? eof() && .t. copy to danew.dbf for 性别='男' &&复制打开的表文件zgda 中男生记录到danew.dbfuse danew &&打开danew,此时自动关闭前一个表zgdadisp all&&显示全部记录后,指针指向文件尾3.表结构的复制与修改use zgdadisplay structure &&显示表的结构信息co
51、py stru to dast.dbf fiel 姓名,性别,年龄,职称 &&复制zgda表文件结构到dast.dbfuse dast &&打开danew,此时自动关闭前一个表zgdalist structure &&显示表的结构信息modi stru &&修改结构danew表的结构4.文件的复制close all &&关闭所有文件copy file zgda.dbf to zgdabak.dbf &&复制zgda表文件到zgdabak表文件中use zgdabak &&显示错误信息
52、,找不到备注文件copy file zgda.fpt to zgdabak.fpt &&复制备注文件use zgdabak &&打开文件list &&显示全部记录后,指针指向文件尾5.文件改名、删除与文件目录的显示dir z*.* &&列出所有z开头的文件dir &&列出所有表文件rename zgdabak.dbf to zb.dbf &&表文件zgdabak.dbf改名为zb.dbfuse zb.dbf &&显示错误信息,找不到备注文件rename zgdabak.fpt to
53、zb.fpt&&表备注文件同时要改名,否则,zb.dbf表打不开。dele file zb.fpt &&删除zb.fptuse zb.dbf &&显示错误信息,找不到备注文件dele file zb.dbf &&删除zb.dbf文件6.表记录的修改use zgdaedit &&进入全屏幕状态,修改表的记录change &&进入全屏幕状态,修改表的记录browse &&进入全屏幕状态,修改表的记录*用replace命令修改特定的记录go 4 &&指针定位记录号为4的记录
54、disp &&显示当前记录信息repl 年龄 with 年龄+1 &&当前记录的年龄+1,无范围、条件替换的是当前记录disp &&显示当前记录信息(对比一下)*用replace命令成批的修改满足条件的多条记录clear &&清屏list&&显示所有记录信息repl all 年龄 with 年龄+1 for 职称="讲师" &&所有讲师记录的年龄+1list &&显示所有记录信息(对比一下) 7.表记录的插入go 3 &&指针定位在第3条记录ins
55、ert blank &&在第3条记录后,插入一条空记录list &&显示所有记录信息go 3 insert blank before &&在第3条记录前,插入一条空记录list &&显示所有记录信息8.表记录的删除go 3dele &&逻辑删除当前记录list &&可以看到第3条记录有删除标记*pack &&物理删除有删除标记的记录list &&显示所有记录信息,原来的第3号记录已删除了。注:(1)请读者将另一条空记录用命令删除(2)zap等价于先执行dele all
56、后,再执行pack(请复制一个表文件再试这个命令)。(3)recall、delete 命令后无任何选项时,只对当前记录操作。9.表的排序use zgdasort on 性别 /D to zgxb &&按照性别降序生成排序表zgxbuse zgxblist 10.建立索引及索引查找(1)建立单索引close all &&关闭所有文件 use zgda &&打开表文件zgdalist &&此时表按照物理顺序显示,即按照记录号顺序显示(用户输入记录的顺序)index on 性别 to xb.idx &&按照性别递增的顺序建立单索引文件list &&此时表按照性别递增的逻辑顺序来显示(刚刚建立的索引文件正起作用)set index to &&关闭索引文件,记录恢复物理顺序显示list &&记录恢复物理顺序显示set index to xb.idx &&打开已经建立单索引文件(2)建立结构复合索引index on 年龄
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 可持续发展视角下的教育建筑设计理念与实践
- 江苏省连云港市2024-2025学年三年级下学期语文期末真题重组卷(含答案)
- 统编版语文三年级下册期末测试卷(含答案)
- 从学习理论到办公效率提升的实践探索
- 新型导电浆料企业制定与实施新质生产力项目商业计划书
- 神秘古堡幽灵餐厅行业深度调研及发展项目商业计划书
- 休闲车安全驾驶公益活动创新创业项目商业计划书
- 药效学终点评估与验证行业深度调研及发展项目商业计划书
- 云南特色小镇AI应用行业深度调研及发展项目商业计划书
- 企业创新与持续增长研修企业制定与实施新质生产力项目商业计划书
- 机械制图教案(完整版)
- 工业互联网与智能制造
- 司母戊鼎的介绍
- 肺炎衣原体医学课件
- 2024年儿童童车行业分析报告及未来发展趋势
- 23秋国家开放大学《汉语基础》期末大作业(课程论文)参考答案
- 《公务接待》课件
- 中医内科学消渴课件
- 《新能源汽车动力电池及管理系统检修》 课件 模块3 新能源汽车动力电池PACK检修
- 工艺知识培训课件
- 公司关停并转方案
评论
0/150
提交评论