vf复习指导 下载本文

(2)求所有学生的学习成绩,并列出姓名、性别、课程名、学时数和成绩; (3)显示所有选修“C 语言”的同学信息。 (4)显示总分比“钱能”同学高的学生 (5)显示成绩为前 3 名的同学的姓名、性别、课程名、和成绩

习题 4 参考解答

一、选择题

1~5:CADAD 6~10:DBBAD 11~15:CAABB 16~20:BCCCA 21~25:BDCBA

二、填空题

1.查询向导、查询设计器、SQL-SELECT 命令 2.本地视图、远程视图

3.内部联接、左联接、右联接、完全联接 4.浏览、临时表、表、7 5.不能、能(可以)

6.自由表、数据库表、视图

7.ADD、DROP、RENAME、ALTER 8.DISTINCT 9.升序、降序 10.GROUP BY 三、操作题

1.CREATE TABLE XS(XH C(6),XM C(8),XB C(2),NL N(2))

再交互或用 SQL 方式填写内容 CREATE TABLE KC(KCH C(2),KCM C(16),XSS N(3)) 再交互或用 SQL 方式填写内容 CREATE TABLE CJ(XH C(6),KCH C(2),CJ N(3)) 再交互或用 SQL 方式填写内容

2.(1)SELECT * FROM xs WHERE XB=\女\

(2)SELECT Xs.xm AS 姓名, Xs.xb AS 性别, Kc.kcm AS 课程名, Kc.xss AS 学时数, Cj.cj AS 成绩;

FROM xs INNER JOIN cj; INNER JOIN kc ;

ON Cj.kch = Kc.kch ; ON Xs.xh = Cj.xh

SELECT Xs.xm AS 姓名, Xs.xb AS 性别, Kc.kcm AS 课程名, Kc.xss AS 学时数,

第二部分 《Visual FoxPro 程序设计(第二版)》复习提要与学习指导、习题及参考解答 115

116 Visual FoxPro 程序设计实训与考试指导(第二版)

Cj.cj AS 成绩 FROM xs,cj,kc Where Cj.kch = Kc.kch and Xs.xh = Cj.xh (3)SELECT Xs.xh AS 学号, Xs.xm AS 姓名, Xs.xb AS 性别, Xs.nl AS 年龄;

FROM xs INNER JOIN cj; INNER JOIN kc ;

ON Cj.kch = Kc.kch ; ON Xs.xh = Cj.xh;

WHERE Kc.kcm = \语言\或

SELECT Xs.xh AS 学号, Xs.xm AS 姓名, Xs.xb AS 性别, Xs.nl AS 年龄;

FROM xs,cj,kc Where Cj.kch = Kc.kch and Xs.xh = Cj.xh and Kc.kcm = \语言\ (4)分步计算:

1)先求出“钱能”同学的总分。

SELECT sum( Cj.cj) as 总分; FROM xs INNER JOIN cj ; ON Xs.xh = Cj.xh;

WHERE Xs.xm = \钱能\&&产生含有“钱能”总分的临时表 2)ZF=总分 &&将“总分”取到变量中备用 3)SELECT Xs.xh, Xs.xm, sum( Cj.cj) as 总分;

FROM xs INNER JOIN cj ; ON Xs.xh = Cj.xh; GROUP BY Xs.xh; HAVING 总分> zf &&找到总分比“钱能”同学高的学生

(5)SELECT Xs.xm AS 姓名, Xs.xb AS 性别, Kc.kcm AS 课程名, Cj.cj AS 成绩;

FROM xs INNER JOIN cj; INNER JOIN kc ;

ON Cj.kch = Kc.kch ; ON Xs.xh = Cj.xh;

ORDER BY CJ.cj DESC TOP 3 或

SELECT Xs.xm AS 姓名, Xs.xb AS 性别, Kc.kcm AS 课程名, Cj.cj AS 成绩; FROM xs,cj,kc Where Cj.kch = Kc.kch and Xs.xh = Cj.xh ORDER BY CJ.cj DESC TOP 3

2.5 结构化程序设计

2.5.1 复习提要与学习指导

1.常用命令 *,&& ?

注释标记,*用来对整行进行注释,只能位于行的开始 换行显示(从新的一行开始显示后面的数据)

??

从当前行开始显示数据

CLEAR 清除主窗口中的内容 RUN 在命令窗口执行 WINOWS 应用程序 run notepad.exe QUIT/RETURN/CANCEL 结束 Visual FoxPro 应用程序或返回调用处 SET BELL ON|OFF

SET CENTURY ON|OFF

世纪开关(是否采用四位的年份)

SET DATE TO YMD|MDY|DMY 设置日期格式 SET DEFAULT TO 设置默认工作路径 SET ESCAPE ON|OFF 设置是否由 ESC 键终止程序运行

SET SAFETY ON|OFF 设置安全开关(当要修改和替换文件时,是否有警告信息) SET SECONDS ON|OFF SET TALK ON|OFF 设置 打开和关闭显示用户命令的中间结果 SET DECI TO n 设置程序中数值数据的小数位数为 n 位 WAIT “提示字符串” WINDOWS 用来返回程序结果的 2.掌握三种基本控制结构

(1)顺序结构。 最常见的最根本的程序结构,按程序代码依次执行。 (2)分支结构。

1)IF 语句(两分支,类似于 IIF(条件,表达式 1,表达式 2)函数)

IF 条件 [语句组 1] &&条件成立则执行

ELSE

[语句组 2] &&条件不成立则执行

ENDIF

2)CASE 结构(多分支)

DO CASE

CASE 表达式 1

[语句组 1] CASE 表达式 2

[语句组 2] ??

OTHERWISE

[语句组] ENDCASE

注意

&&表示其他情况

在 DO CASE 与第一个 CASE 之间不允许存在其他任何语句。一般情况 下,对于命令按钮组和选项按钮组的编程可以用 CASE 结构。 (3)循环结构。

1)DO WHILE … ENDDO:适用于循环次数未知的情况。

第二部分 《Visual FoxPro 程序设计(第二版)》复习提要与学习指导、习题及参考解答 117

118 Visual FoxPro 程序设计实训与考试指导(第二版)

DO WHILE 条件 [循环执行的语句]

ENDDO

当条件为真时,执行循环体

EXIT:终止整个循环结构的执行

LOOP:终止本次循环,直接进入下一轮的循环

跳过 LOOP 和 ENDDO 之间的所有语句,回到循环开始语句

【例】将任意字符(包括汉字)组成的字符串进行反序显示。

STORE \,CC P=SPACE(0)

DO WHILE LEN(C)>0

X=asc(left(c,1))

If x>127 && ASCII 的最大值为 01111111(127) I=2 &&汉字处理 Else

I=1 &&字母处理 Endif

P=left(c,i)+p C=substr(c,2*i-1) Enddo

?cc+\的反序为\

&& c=right(c,len(c)-i)使条件不断向循环终止条件转化

2)FOR…ENDFOR:用来对循环次数已知的情况。

FOR I=e1 TO e2 STEP e3

[循环执行的语句]

ENDFOR|NEXT

e1 循环初值、e2 循环终值、e3 步长(增量) e10 从小到大,每次加 当 e3 为 1 时,step e3 可以省略 【例】求 1!+2!+??+10!的值。 方法 1:

e1>e2 e3<0 从大到小,每次减

方法 2:

nsum=0

nmul=1 for i=1 to 10 nmul=nmul*i

nsum=nsum+nmul next i ?nsum

nsum=0 for i=1 to 10

nmul=1 &&保存阶乘值

&&外循环每执行一次,nmul 都重新赋值 for j=1 to I &&引用外层循环变量的值 nmul=nmul*j next j

&&以上内层循环用来求 I 的阶乘 nsum=nsum+nmul next i ?nsum

3)SCAN…ENDSCAN:用来对表中的记录进行操作,能自动改变记录指针的位置。

SCAN [范围|FOR 条件|WHILE 条件]