VF程序实例1-精品文档资料整理.doc
《VF程序实例1-精品文档资料整理.doc》由会员分享,可在线阅读,更多相关《VF程序实例1-精品文档资料整理.doc(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、VF程序实例捌一、多工作区、Replace、copy to .例题1: 涉及 set relation rilein to & n. 关系;亲属关系;叙述;故事 &有如下表: (1) XS.DBF(学号 C(8),姓名 C(8),性别 C(2),班级 C(9),出生日期 D,走读 L)(2) CJ.DBF(学号 C(8),课程名 C(20),成绩N(5,1) 说明:一个学生可以选择多门课程。请编写一个完整的程序,该程序能完成以下功能:1、 将表XS.DBF和表CJ.DBF建立关联,并显示出所有男同学的姓名以及他们所选课程的课程名2、 将XS.DBF表中所有班级为“2002级2班”的同学信息拷贝
2、到新表STUDENT.DBF中,STUDENT .DBF只含有学号、姓名、性别、走读四个字段 3、将姓名为“王小平”的同学的所有成绩提高10%CLEARCLOSE ALLSELECT 2USE CJINDEX ON 学号 TO XH & index onSELECT 1USE XSSET RELATION TO 学号 INTO B & relationSET SKIP TO BLIST FOR 性别=男 FIELDS 姓名,B.课程名 COPY TO STUDENT FOR 班级=2002级2班 FIELDS 学号,姓名,性别,走读replace b.成绩 with b.成绩*1.1 for
3、a.姓名=王小平例题2: 涉及update下面有两张表:总分表:ZF.DBF学号 姓名 语文 数学 总分110 张三 114 李四119王二成绩表: CJ.DBF学号 语文 数学110 67 65114 89 67119 78 95按照成绩表的成绩修改总分表的成绩,并计算出总分表的总分字段参考答案:CLOSE ALLSELE 2USE CJINDEX ON 学号 TAG XHCJSELE 1USE ZFINDEX ON 学号 TAG XHZFUPDA ON 学号 FROM B REPL 语文 WITH B.语文,数学 WITH B.数学REPL ALL 总分 WITH 语文+数学LIST例题3
4、: 涉及 join with:将 STUDENT.DBF 和 学生成绩.DBF 连接成新文件 NEW.DBF表1: student(学号 c(4),姓名 c(8),性别 L,出生日期 D,高考成绩 N(5,2)表2: 学生成绩(学号 c(4),课程号 C(3),分数 N(2)SELECT 1USE STUDENTSELECT 2USE 学生成绩JOIN WITH A TO NEW FOR 学号=A.学号 ; FIEL 学号,A.姓名,A.性别,A.出生日期,课程号,分数USE NEW LIST如果再增加一张表,三表相连:表3: 课程(课程号 C(3),课程名称 C(10)SELECT 1USE
5、 STUDENTSELECT 2USE 学生成绩JOIN WITH A TO NEW FOR 学号=A.学号SELE 1USE NEW SELE 2USE 课程JOIN WITH A TO STU FOR 课程号=A.课程号USE STULIST二、累加、累乘例1:累加:求1100的和SUM=0FOR I=1 TO 100SUM=SUM+IENDFOR?1100的总和为:,SUM使用DO WHILE 实现:SUM=0I=1DO WHILE I INT(SQRT(I) ?I,是质数 ENDIF ENDFOR4、运行XY.PRG程序后,将在屏幕上显示如下乘法表:1) 12) 2 43) 3 6 9
6、4) 4 8 12 165) 5 10 15 20 256) 6 12 18 24 30 367) 7 14 21 28 35 42 498) 8 16 24 32 40 48 56 649) 9 18 27 36 45 54 63 72 81请对下面的程序填空:* * * 计算乘法XY.PRG * * *CLEARFOR J=1 TO 9 ?STR(J,2)+) FOR _ ? _ ENDFOR ?ENDFORRETURN第一空 K=1 TO J 第二空 STR(J*k,6)5、排序问题四、排序输入10个数,将它们从小到大排列分析: 用i代表趟数,j代表次数(1)10个数要比较9趟(2)每趟
7、要比较的次数为 : 10-趟数(3)每次比较: 如果当前数 a(j)大于 本次比较的最后一个数 a(10+1-i) 那么就交换,否则不交换cleardime a(10)?输入10个数: for i=1 to 10 input 请输入: to a(i)endforfor i=1 to 9 for j=1 to 10-i if a(j)a(10-i+1) t=a(10-i+1) a(10-i+1)=a(j) a(j)=t endif endforendforlist memo like a另外可以参看书:P162-163页例 4.45五、查询:locateseek有下列表:book(书名 C(20
8、),作者 C(8),出版日期 D,内容简介 M)编写程序:查询关于 foxpro 的图书.USE BOOKLOCATE FOR foxpro $ 书名IF ! FOUND() ?没有关于foxpro的图书 ELSEDO WHILE ! EOF() CLEAR ?书名,作者,出版日期 ?内容介绍 WAIT “是否继续查找?(Y/N)” TO M IF M$nN EXIT ENDIF CONTINUEENDDO?”全部显示完成”ENDIF注意:关键地方在于1、什么地方用locate,什么地方用continue2、if . exit . endif3、do while not 的条件使用Locate
9、查找出所有入校总分在580及以上的所有同学信息clearuse 学生locate for 入校总分=580do while .not. eof() disp continuenddo?结束cancel六、循环插入新记录编写程序,对于学生.dbf能够在程序末尾循环插入新记录CLEARCLOSE ALLUSE 学生DO WHILE .T. APPE BLANK 5,20 SAY 学号 GET 学号 5,40 SAY 姓名 GET 姓名 7,20 SAY 性别 GET 性别 7,30 SAY 出生年月 GET 出生年月 9,20 SAY 入校总分 GET 入校总分 READ WAIT 你想继续插入新
10、记录吗?(Y/N) : TO X IF X=N OR X=n EXIT ENDIF CLEARENDDOCLEARLISTCLOSE ALL类似:编写程序,该程序能够顺序修改表学生.DBF中的所有数据。 (要求:必须使用 行,列 say . get . 进行数据修改)CLEARCLOSE ALLUSE 学生DO WHILE .T. 5,20 SAY 学号 GET 学号 5,40 SAY 姓名 GET 姓名 7,20 SAY 性别 GET 性别 7,30 SAY 出生年月 GET 出生年月 9,20 SAY 入校总分 GET 入校总分 READ WAIT 你想继续修改记录吗?(Y/N) : TO
11、 X IF X=N OR X=n EXIT ENDIF CLEAR SKIPENDDOCLEARLISTCLOSE ALL七、参数传递变量的作用域&MAIN.PRG &P1.PRG X1=1 PARA W1,W2 X2=2 PRIVATE W1 DO P1 WITH X1,X2 W1=W1*3 ?X1=+STR(X1,1) W2=W2*4 ?X2=+STR(X2,1) RETURN X1=1 X2=2 DO P1 WITH X1,X1+X2 ?X1=+STR(X1,1) ?X2=+STR(X2,1) RETURN(1)第一次显示X1,X2的值是( )A. 1 , 8 B. 3 , 8 C. 1
12、 , 1 D. 8 , 8(2)第二次显示X1,X2的值是( )A. 1 , 2 B. 3 , 1 C. 3 , 2 D. 1 , 3参考答案: B C下面看第二个实例: 主程序MCX2.PRG clea public i,j store 1 to i,j,k do scx2.prg ?主程序的输出结果: ?i=+str(i,2)+ j=+str(j,2)+ k=+str(k,2) cancel子程序scx2.prg clea private j,k i=i*2 j=j+1 k=j+1 ?子程序中输出的结果: ?i=+str(i,2)+ j=+str(j,2)+ k=+str(k,2) ret
13、urn执行结果是: 子程序中输出的结果: i= 2 j= 3 k= 4 主程序的输出结果: i= 2 j= 1 k= 1看等级考试中的题.(2003年10月笔试)八、行,列 say . get . default . read字幕问题:1、有如下程序段,其功能是显示汉字“2008年北京申奥成功!”从屏幕的顶部移至底部,请填空补充该程序CLEARCH=2008年北京申奥成功!R=1DO WHILE R=23 R,26 SAY SPACE(60) R+1, 26 SAY CH T=INKEY(0.2) R=R+1ENDDORETURN答案说明:R,26 SAY SPACE(60)的作用是将上一行显
14、示的2008年北京申奥成功!清除掉,然后R+1, 26 SAY CH 显示新一行的数据R=R+1是保证do while不是死循环2、从左到右显示同志们,要到期末了,努力奋斗吧!两次clears=space(80)+同志们,要到期末了,努力奋斗吧!+space(40)for nn1=1 to 2 & 显示两次 for nn2=1 to 110 step 2 &110=80+30,30是那个字符串的宽度 20,0 say substr(s,nn2,80) inkey(2,H) endforendfor九、scatter/gather(本节选用的表是 学生.dbf)掌握:1、scatter是将一条记
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VF 程序 实例 精品 文档 资料 整理
限制150内