1、建立 菜单方式文件新建程序 命令方式MODIFY COMMAND 编辑 菜单方式文件打开程序 命令方式MODIFY COMMAND 保存 菜单-文件-保存 Ctrl+s Ctrl+w(同时关闭窗口)1. * 或NOTE ,必须独立一行,其后的内容为注释2. &,其后的内容为注释*下面的程序用来计算圆的面积CLEAR &清屏r=6 &r为圆的半径s=pi()*r*r &计算圆的面积?圆的面积为:,s &输出圆的面积RETURN &程序结束语句ACCEPT TO 输入字符串,不用输入定界符,以回车结束输 例如: ACCEPT 请输入学号 TO xINPUT TO 输入字符串,数值,逻辑,日期值。需
2、要定界符,以回车结束输 例如: INPUT 请输入学号 TO x1 INPUT 请输入成绩 TO x2 INPUT 请输入是否是党员 TO x3 INPUT 请输入出生日期 TO x4WAIT TO WINDOWTIMEOUT 输入单个字符,不用输入定界符,不用回车,当输入字符或timeout时自动结束 WAIT 您输入的学号不存在,请重新输入 TO answer WINDOW TIMEOUT 5(1)RETURN命令:结束当前程序的执行,返回到调用它的上级程序或命令窗口。(2)CANCEL命令:终止当前程序的执行,清除所有私有变量,返回到命令窗口。(3)QUIT命令:退出Visual Fox
3、Pro,返回到操作系统。顺序结构选择结构(分支结构)循环结构从程序的开始到结束,每条语句必须执行一次,且只能执行一次例如:USE 学生LOCATE FOR 学号= 11010001DISPLAY USE写顺序结构程序时,要考虑程序中语句执行的逻辑性LOCATE FOR 学号= 11010001 USE 学生DISPLAY USE【格式】IF ENDIF条件表达式语句序列.T.F.ENDIF后面的语句【例7.4】根据条件修改变量x的值。Input 输入x的值 to xIF x1 x=x+1ENDIFIF x3 x=x+2ENDIF?xIF Thisform.Text1.value0 and Th
4、isform.Text2.value0 Thisform.Text3.value=Thisform.Text1.value * Thisform.Text2.valueENDIF不足:当输入非法数据时,将异常结果。利用双分支来解决。【格式】IF ELSE ENDIF.F.T.条件表达式语句序列1ENDIF后面的语句语句序列2【例7.6】完善例7.5,当输入合法的高和宽时正常计算,而当输入非法数据时,则提示出错信息。 “计算”按钮的单击(Click)事件代码为:IF Thisform.Text1.value0 AND Thisform.Text2.value0 Thisform.Text3.va
5、lue=Thisform.Text1.value * Thisform.Text2.valueELSEMESSAGEBOX(输入非法数据)ENDIF【例7.7】分别查询“教师”表中党员和非党员的教师信息。 功能:判断条件决定,执行前一个分支,还是后一个分支。真执行前分支,假执行后分支。假真条件表达式语句序列1ENDIF后面的语句语句序列2【格式】 IF ELSE ENDIF例如:x=5 If x 0 Then ?”是正数”Else ?”是非正数”ENDIF Return情况语句【格式】 DO CASE CASE CASE CASE OTHERWISE ENDCASE【功能】执行最先遇到的条件为
6、真的分支,该分支内的语句执行完毕后,执行跳到ENDCASE后继续执行。如果所有CASE后的条件都是假,就得看有没有OTHERWISE选项,如果有,则无条件执行该分支后再跳到ENDCASE后继续执行,否则直接跳到ENDCASE后继续执行。条件表达式1条件表达式2条件表达式nOTHERWISE语句序列1语句序列2语句序列n语句序列n+1ENDCASE后面的语句真真真假假假INPUT 请输入自变量的值: TO xDO CASE CASE x100 .AND. x=1000 fx=0.32*x CASE x=5000 fx=0.28*x+40 CASE x=10000 fx=0.24*x+240 OT
7、HERWISE fx=0.2*x+640 ENDCASE?函数值为:,fxRETURN循 环 体真假条 件E N D D O 后 面 的 语 句【格式】DO WHILE 循环体 ENDDO 引例: 编写程序显示十个1,每个1占一行。11110行s=0i=1DO WHILE i=10 s=s+i i=i+1ENDDO?s用Do While遍历表,按条件遍历表use use 学生学生locate for locate for 性别性别= = 女女 do while found( )do while found( ) ? ?姓名姓名 continuecontinueenddoenddouse use
8、 学生学生do while not do while not eofeof()() ? ?姓名姓名 skipskipenddoenddoCLEARUSE 学生DO WHILE NOT EOF() ?姓名,性别,出生日期 SKIPENDDOUSE简单应用简单应用40.240.2CLOSE ALLCLOSE ALLOPEN DATABASE OPEN DATABASE 成绩管理成绩管理USE USE 选课选课 IN 0IN 0USE USE 学生学生 EXCL IN 0EXCL IN 0* * * * * * * * * * * *ErrorError* * * * * * * * * * * *
9、MODIFYMODIFY TABLE TABLE 学生学生 ADD ADD 平均成绩平均成绩 N(6,2)N(6,2)SELECT SELECT 学生学生* * * * * * * * * * * *ErrorError* * * * * * * * * * * *DO WHILE EOF()DO WHILE EOF() SELECT AVG( SELECT AVG(成绩成绩) FROM ) FROM 选课选课 WHERE WHERE 学号学号= =学生学生. .学号学号 INTO ARRAY INTO ARRAY cjcj* * * * * * * * * * * *ErrorError*
10、* * * * * * * * * * * REPLACE REPLACE 平均成绩平均成绩 = = cj1 cj1 cj1=0 cj1=0 SKIP SKIPENDDOENDDOCLOSE DATABASE CLOSE DATABASE CLEARUSE 学生DO WHILE NOT EOF() IF 性别=女 ?姓名,性别,出生日期 ENDIF SKIPENDDOUSECLEARUSE 学生LOCATE FOR 性别=女DO WHILE FOUND() ?姓名,性别,出生日期 CONTINUEENDDOUSE简单应用2.1SET TALK OFFUSE STUDENTLOCATE FOR
11、政治面目=群众*ERROR FOUND*DO WHILE .NOT.FOUND() IF 性别=女 CONTINUE*ERROR FOUND* BREAK ENDIF ? 姓名,班级*ERROR FOUND* SKIPENDDOUSESET TALK ON简单应用42.1open database 外汇数据use currency_sl&*Error* find for 姓名=林诗因summ=0&*Error* while not eof() select 现钞买入价 from rate_exchange; where rate_exchange.外币代码=currency_sl.外币代码 i
12、nto array a&*Error* summ=summ+a1 * rate_exchange.持有数量 continueenddo?summ DO WHILE LOOP EXIT ENDDO S=1i=0Do while i8if i=4 loop endifs=s+i i=i+2 enddoS=1i=0Do while i8if i=4 exit endifs=s+i i=i+2 enddoUSE 学生DO WHILE NOT EOF() IF 姓名=周军 EXIT ENDIF IF 民族=汉 SKIP LOOP ENDIF ?姓名 SKIPENDDOUSE简单应用简单应用58.158.
13、1&根据根据 教师表教师表 计算每个系的教师人数并将数据填入计算每个系的教师人数并将数据填入 学院表学院表 CLOSE DATACLOSE DATAUSE USE 学院表学院表GO TOPGO TOPDO .NOT. EOF() DO .NOT. EOF() &错误错误 xihaoxihao= =系号系号 SELECT COUNT(SELECT COUNT(* *) FROM ) FROM 教师表教师表 WHERE WHERE 教师表教师表. .系号系号= =xihaoxihao INTO A INTO A &错误错误 REPLACE REPLACE 教师人数教师人数 WITH A1WITH
14、A1 NEXT NEXT &错误错误ENDDOENDDOSCAN-ENDSCAN语句 【格式格式】 SCAN NEXT SCAN NEXT nRESTnREST nFORnFOR ENDSCAN ENDSCANUSE USE 员工表员工表s=0s=0Scan all for Scan all for 性别性别=女女 s=s+1s=s+1ENDDOENDDO? ?员工人数为员工人数为+ALLTRIM(STR(s)+ALLTRIM(STR(s)USEUSEn=0USE 教师GO 3SCAN REST FOR 职称=教授 DISPLAY 姓名,性别,职称 n=n+1ENDSCANUSE 教师SCAN IF 年龄40 ?姓名 LOOP&返回SCAN,且指针下移 ELSE EXIT&跳到ENDSCAN之后,但指针不变 ENDIFENDSCAN?姓名 &再次显示当前记录的姓名USEFOR-ENDFOR语句 【格式】 FOR = TO STEP 语句序列 ENDFOR|NEXT【功能】根据的值是否超越终值决定是否执行循环体 循环体否是是否超过终值ENDDO 后面的语句例1:X=0FOR i=1 TO 4 x=x+1ENDFOR?x语句序列1EXIT语句序列2语句序列1Loop 或 exit语句序列2