VFP结构化程序设计

合集下载

VF实验三 结构化程序设计

VF实验三 结构化程序设计

实验三结构化程序设计实验目的:(1)熟练掌握程序文件的建立、保存、运行和调试的方法。

(2)重点掌握结构化程序设计的3种基本结构。

实验要求:练习使用命令方式和菜单方式建立、保存和运行下述程序。

若运行出现错误请调试。

(1)编写程序S2-4-1.PRG,为“员工”表添加新纪录。

(2)货物表的单价和库存量需要经常修改,试编写程序S2-4-2.PRG对货物表作数据维护。

(3)分别用顺序查询(编程S2-4-3A.PRG)和SELECT-SQL命令查询(编程S2-4-3b.prg)员工个人完成订单情况。

(4)编程s2-4-4.PRG显示货物库存清单,要求计算出每次货物的库存值和货物库存总值。

实验步骤:(1)建立程序文件:执行命令MODIFY COMMAND S2-4-1,在程序编辑窗口建立如下程序文件。

*程序文件名:S2-4-1.PRG*功能:为“员工”表添加新纪录。

CLEARUSE 员工&&打开员工.dbfAPPEND BLANK &&添加一个空白记录@ 10,5 SAY”添加新纪录”? &&插入一个空行INPUT”请输入工号:”TO ghINPUT “请输入姓名:”TO xmINPUT”请输入电话:”TO dhREPLACE 工号WITH gh,姓名with xm, 电话with dh &&将输入的数据写入表中?INPUT”是否输入照片(Y/N):”TO zpIF UPPER(ZP)=”y”MODIFY GENERAL 照片&&输入照片EDIFINPUT”是否输入备注(y/n):”TO BZIF UPPER(BZ)=”Y”MODIFY MEMORY 备注&&输入备注ENIFDIPLAYUSE上述程序录入后,按ctrl+w保存文件,从而关闭文本编辑窗口。

然后执行命令“DO S2-4-1”运行程序。

若存在录入错误请调试。

vfp6章 结构化程序设计

vfp6章 结构化程序设计

分支结构
多向分支:根据多个条件表达式的值, 多向分支:根据多个条件表达式的值,选择执行多个操
作中的一个对应执行 。 语句格式: 语句格式:DO CASE CASE〈条件表达式1 CASE〈条件表达式1〉 命令行序列1 〈命令行序列1〉 [CASE〈条件表达式2〉 CASE〈条件表达式2 命令行序列2 〈命令行序列2〉 … … CASE〈条件表达式N CASE〈条件表达式N〉 命令行序列N 〈命令行序列N〉] OTHERWISE [OTHERWISE 命令行序列N+ N+1 〈命令行序列N+1〉] ENDCASE ENDCASE
分支结构
功能:根据给出的N 条件表达式〉的值, DO CASE功能:根据给出的N个〈条件表达式〉的值,选 N+1 命令行序列〉 中的一个执行。 当所有CASE CASE中 择 N+1 个 〈 命令行序列 〉 中的一个执行 。 当所有 CASE 中 条件〉的值都是假时,如有OTHERWISE 则执行〈 OTHERWISE, 〈条件〉的值都是假时,如有OTHERWISE,则执行〈命令 行序列N+ N+1 再执行ENDCASE 后面的第一条命令; ENDCASE后面的第一条命令 行序列 N+1〉 , 再执行 ENDCASE 后面的第一条命令 ; 否则 直接执行ENDCASE后面的第一条命令。 ENDCASE后面的第一条命令 直接执行ENDCASE后面的第一条命令。
程序文件方式:通过程序文件中的命令完成不 程序文件方式: 同的操作。 同的操作。
程序文件也叫做命令文件。 程序文件也叫做命令文件。运用程序文件方式进行数 据库管理,是通过程序文件编辑工具,将对数据库资 据库管理,是通过程序文件编辑工具, 源进行操作管理的命令和对系统环境进行设置的命令, 源进行操作管理的命令和对系统环境进行设置的命令, 集中在一个以(.PRG)为扩展名的命令文件中, 集中在一个以(.PRG)为扩展名的命令文件中,然 后再通过菜单方式或命令方式运行该命令文件。 后再通过菜单方式或命令方式运行该命令文件。

计算机VF 第7章 结构化程序设计

计算机VF 第7章 结构化程序设计

继续执行;或者是用户输入单个字符给指定变量。 例如:Wait “请输入一个数字:” to a 例如:Wait “同学们,早上好!” Windows Timeout 5
7.2 常用基本命令-交互语句
2.在屏幕上的定位输出与输入:
输出: @<行号,列号> say <变量名>或"信息"
例如:d="9月16日" @10,10 say d 或 "9月16日"
假如n=10 步长为1 i=1 s=0+1 FOR i=1 i=2 s=(0+1)+2 TO 10 step 1 i=3 s=(0+1+2)+3 …… s=s+i i=10 s=(0+1+…+9)+10
开始
结束
(1)FOR 循环结构
例2:—求阶乘N!
Clear Input “请输入数值:" To n f=1 For i=1 To n f=f*i 求阶乘表达式 EndFor ?”N!=”,f
语法格式:
FOR 控制变量=初始值 TO 终止值 STEP 步长 开始 语句组1 [LOOP] FOR i=1 TO 9 STEP 2 [EXIT] 语句组1 ENDFOR|NEXT
结束
(1)FOR 循环结构
例1:—累加程序
Clear Input "请输入累加数:" To n s=0 s是用来存放结果的变量赋初值0 For i=1 To n s=s+i EndFor 累加表达式 ?”1+2+…+n和为”,s
(1)IF条件语句 简单条件语句 嵌套条件语句

VF 第5章 结构化程序设计

VF 第5章 结构化程序设计

5.4 程序设计的三种基本结构
按照结构化程序设计的观点,任何 算法都可通过三种基本程序结构的组 合来完成。这三种基本程序结构分别 是:顺序结构、分支结构和循环结构。 5.4.1 结构化程序设计概述 5.4.2 选择结构 5.4.3 循环结构
5.4.1 结构化程序设计概述
结构化程序设计的提出 为了便于阅读和修改程序 方法:严格按照三种基本程序结构编写程序 程序模块化,尽量减少各模块间关联 自顶向下逐步求精:整体->部分->更小部分 程序的三种基本结构 顺序结构 选择结构 循环结构
5.1.2 程序文件的基本组成
程序一般由以下要素组成:
变量:保存中间结果,参与运算。
普通语句:操作数据库的命令、输入输出
等。 程序流程语句:控制程序方向,如跳转、 选择等。 过程与函数:完成特定功能的子程序块
5.2 算法与流程图
算法是程序设计的重要环节,算法的 好坏直接影响到程序运行的效率和开销。 利用流程图描述算法是一种常用方法, 它可以使算法的描述直观形象,便于理 解。
5.2.3 算法的流程图描述(1)
在程序设计中,更经常是用流程图来 描述算法。用一些简单的几何框图表示 各种类型的操作,然后用带箭头的有向 流线将各个框图连结起来,以表示其执 行的先后顺序,这种框图称为“流程 图”。用流程图描述算法,直观形象, 易于理解。
5.2.3 算法的流程图描述(2)
最常用的流程图符号如下所示。 起止框:表示程序的开始和结束。
3.输入单字符语句: WAIT(2)
②WAIT语句只接收单个字符。若含有[TO <内存变量名>],则把该字符送内存变量, 内存变量是字符型的。 ③WAIT 语句的特点在于响应速度快,它常 用于程序中控制屏幕显示的暂停,使用户看 清屏幕上的内容之后,再按任一键让程序继 续执行。 例如:WAIT "请看清结果后按任一意键, 程序将继续运行"

第7章 VF结构化程序设计

第7章 VF结构化程序设计

目录
程序文件的执行
如果文件名不带扩展名,则 方式1命令格式: Visual DO <程序文件名> FoxPro按下列顺序寻 找并执行这些程序:可执行 文件(.EXE)、应用程序 方式2菜单方式:“程序” “运行” (.app)、编译后的目标程序 文件(.fxp)和程序文件(.prg)。 方式3:利用工具栏按钮
目录
例7.3 在屏幕第5行,第10列的位置上输入学生的 姓名。 [解] name=SPACE(8) @5,10 SAY "请输入学生姓名" GET name READ
目录
2.格式输出命令 格式: @<行,列> SAY <表达式> 功能:在屏幕指定的坐标位置上输出表达 式的值。 @11,12 say 5+2
目录
7.3.2 多分支选择语句
功能:
依次判断各条件表达式是 否满足,若条件满足,就执行 该条件后的语句序列。如果没 有一个条件表达式满足条件, 如果没有OTHERWISE,则 直接转向ENDCASE之后的第一 条命令。若有OTHERWISE,就执
CASE <条件表达式1
<语句序列1 CASE <条件表达式2
信息。 注释是不可执行的部分,它对程序的 运行结果不会产生任何影响。
目录
3. 置缺省路径命令
格式:SET DEFAULT TO [盘符:][路径] 功能:用于设置进行输入输出时的缺省路径,如在命令窗口
中输入USE XSB,那这个XSB应是缺省路径里的表文件。
4. 置会话状态命令 格式:SET TALK ON|OFF
目录
2. 任意数据输入命令 <内存变量>
格式:INPUT [<提示信息>] TO

《VisualFoxPro程序设计》第6章结构化程序设计

《VisualFoxPro程序设计》第6章结构化程序设计
《VisualFoxPro程序设计》 第6章结构化程序设计
了解结构化程序设计的概念和重要性,提高代码的可维护性和可读性,为站 在世界舞台分享你的技术知识而做准备。
模块化程序设计
模块的定义
掌握如何将程序拆分成模块,以实现代码的重用和 灵活性。
模块间的协作
了解如何设计模块间的接口,以实现模块之间的数 据共享和通信。
学习如何定义和调用函数,以实现代码的模块化和 重用。
过程的定义和调用
了解如何定义和调用过程,以实现代码的结构化和 可维护性。
条件语句和循环语句
1
条件语句
掌握if-else和switch-case等条件语句的使用,以实现根据不同条件执行不同的代 码逻辑。
2
循环语句
学习for循环和while循环的用法,以实现重复执行的代码逻辑。
模块设计原则
学习模块设计的最佳实践和常见原则,以保证程序 的健壮性和可维护性。
结构体数据类型和数组
结构体的定义
使用结构体将不同类型的数据封装成一个逻辑 单元,提高代码的组织性和可读一组相同类型的 数据,提高程序的效率和灵活性。
函数和过程定义及调用
函数的定义和调用
参与一个实际项目的演示,了解如何应用结构化程 序设计的原则和技巧。
团队合作
探讨在团队环境中如何协作,共同实现优质的结构 化程序设计。
3
循环控制语句
了解break和continue等循环控制语句的作用,以实现在循环中的特殊操作。
调试技巧和常见错误
调试工具的使用
掌握VisualFoxPro提供的调试工具,以快速定位 和修复程序中的错误。
常见错误和解决方案
了解程序开发中常见的错误类型,以及如何避 免和解决这些错误。

Visual FoxPro VF第8章 结构化程序设计基础

Visual FoxPro  VF第8章 结构化程序设计基础
Visual FoxPro数据库应用教程 20

【例7.11】用单向分支语句结构,编写程序 “MYPRG_11.PRG”,修改数据表“学生情 况表.DBF”,将学号为“20070301”的学生 的入学成绩加上20分,并将结果显示出来。
Visual FoxPro数据库应用教程
21
程序源代码如下: CLEAR SET DEFAULT TO D:\student USE 学生情况表.DBF LOCATE ALL FOR学号="200070301" IF FOUND() && 若查到,FOUND()函数返回.T. DISPLAY WAIT REPLACE入学成绩 WITH 入学成绩+20 && 把当前记 录的入学成绩加上20 DISPLAY ENDIF USE RETURN
Visual FoxPro数据库应用教程 22
2.双向分支 格式: IF <条件表达式> <命令行序列1> ELSE <命令行序列2> ENDIF 说明:当<条件表达式>值为真时,先执行<命令行序 列1>,然后再执行ENDIF后面的语句;当<条件表 23 Visual FoxPro数据库应用教程 达式>值为假时,则先执行<命令行序列2>,然后再 执行ENDIF后面的语句。
1.建立程序 建立程序文件的命令格式: MODIFY COMMAND <程序文件名> 【例7.2】编写程序文件“MYPRG_2.PRG”,实现显 示数据表“学生情况表.DBF”中所有女生的记录。 菜单方式。 选择“文件|新建”命令 在项目管理器中创建程序文件。 打开项目管理器,展开“代码”项,选择“程序” 项,单击“新建”按钮,进入“程序文件”编辑 5 Visual FoxPro数据库应用教程 窗口。

VFP-程序设计

VFP-程序设计
12
补充: 1.显示xsda.dbf中在1978年以后出生的记录。
DISPLAY FOR 出生年月>{1978/12/31} 或:DISPLAY FOR year(出生年月)>1978
2.显示xsda.dbf中所有是团员的记录。
LIST FOR 团员否
13
二、执行 1.菜单方式:Program->Do… 在弹出的Do 对话框中选择程序文件并执行。 2.命令方式: do <命令文件名> 例4-3:执行例4-1创建的程序文件 do a.prg 例4-3:执行例4-2创建的程序文件 do LT2
操作
36
几点说明 a.IF--ELSE—ENDIF三者要匹配 b.ELSE,ENDIF要独占一行 c.ENDIF总是离与它最近的IF语句匹配。
37
2.多分支(情况分支语句)
<命令格式> DO CASE 情况n 其他 情况1 情况2 CASE <条件表达式1> 条件1 条件2 条件3 条件n F <语句序列1> T CASE <条件表达式2> B B1 B2 B3 Bn <语句序列2> …… [OTHERWISE <语句序列>] ENDCASE
SR>3000?
计算所得税: ZS=SR*0
计算所得税 ZS=SR*0.2
显示个人所得税
结束
35
SET TALK OFF INPUT „请输入收入情况:’ TO SR IF SR>9000 <- 9000以上 ZS=SR*0.4 ELSE IF SR>6000 <- 6000~ 9000 ZS=SR*0.3 ELSE IF SR>3000 <- 3000~6000 ZS=SR*0.2 ELSE <- 0~3000 ZS=0 ENDIF ENDIF ENDIF ?‟应征税为:‘,ZS
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
07、输入一个数n,判断其是否是素数。(提示:素数又称质数,只能够被1和它本身整除。如果要判断n是否是素数,就用2~n-1之间的数逐个去除,若全部都除不尽,则n为素数,否则不是素数。为减少除的次数,提高运行效率,除到即可。)
Set talk off
Clear
P=1
Input "请输入一个数N:" to n
endfor
FOR i=1 TO 10
?s(i)
endfor
Set talk on
Return
08、从键盘输入任意两个数,然后按从大到小顺序输出。
clear
input“X=”to X
input“X=”to y
if X>Y
T=X
X=Y
Y=T
Endif
?“X=”,X
?“Y=”,Y
09、编程求和S=1+2+3+…+100。
Set talk on
Return
方法二
clear
input"n="to n
s=1
do whilen>0
s=s*n
n=n-1
enddo
?"n!=",s
return
03、计算e的近似值。其公式为:e=1+1/1!+1/2!+1/3!+…+1/n!,直到1/n!<0.000001为止。
方法一
Set talk off
IFi%2=0
s=s-1/i
ELSE
s=s+1/i
endif
ENDFOR
?s
Set talk on
Return
方法二
Set talk off
clear
s=0 &&累加和赋除值
f=1 &&符号变量
for i=1 to 100
s=s+f*1/i
f=-1*f &&改变符号
endfor
?"s=",s
Set talk on
********
********
********
SET TALK OFF
CLEAR
A=1
DO WHILE A<=7
B=1
DO WHILE B<=8
@A,B+A SAY “*”
B=B+1
ENDDO
A=A+1
ENDDO
SET TALK ON
RETURN
试用固定次数循环的嵌套格式编写一个打印九九乘法口诀表的程序。
方法一:
*用do while-enddo语句打印九九乘法表
clear
a=1
do while a<=9
b=1
do while b<=a
c=a*b
??str(a,1)+”*”+str(b,1)+”=”+str(c,2)+“”
b=b+1endLeabharlann oClearE=1
t=1
i=1
Do while .t.
T=1
For k=1 to i
T=t*k
Endfor(Next k)
i=i+1
If 1/t<0.000001
Exit
Endif
E=e+1/t
Enddo
?”e=”,e
Set talk on
Return
方法二
Set talk off
clear
e=0 &&累加和
01、从键盘任意输入一个3位整数,若输入的数据不是一个3位整数则给出提示信息,编程实现3位整数的逆序输出。
方法一
SET TALK OFF
CLEAR
INPUT "请输入一个三位数:" TO A
If a>100 and a<1000
A1=int(a/100)
A2=int(mod(a,100)/10)
A3=mod(a,10)
store a to max, min
forI=2 to 10
input“请从键盘输入一个数:”to a
if max<a
max=a
endif
if min>a
min=a
endif
endfor
?”最大值为:”, max
?”最小值为:”,min
set talk on
return
11、求1000以内的“水仙花数”。所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如,153=13+53+33,故153是水仙花数。
Set talk off
Clear
dime s(10)
for i=1 to 10
input '请输入第'+STR(i)+'个数:' to s(i)
endfor
for i=1 to 9
for j=i+1 to 10
if s(i)<s(j)
a=s(i)
s(i)=s(j)
s(j)=a
endif
endfor
forI=1 to 9
for j=0 to 9
for k=0 to 9
ifI^3+j^3+k^3=100*I+10*j+k
? 100*I+10*j+k
endif
endfor
endfor
endfor
return
12、求出0~300之间能被3整除的数的和?
SET TALK OFF
I=1
S=0
DO WHILEI<=300
IF mod(I,3)=0
S=S+I
ENDIF
I=i+1
ENDDO
??S
RETURN
13、求1到100中偶数的和
AA=0
FOR II=2 TO 100 STEP 2
AA=AA+II
ENDFOR
? AA
屏幕显示为:2550
14、编写程序打印如下的图形
********
********
********
********
return
05、用循环输出下列图形。
*
* * *
* * * * *
* * * * * * *
方法一:
SET TALK OFF
CLEAR
r=1
cc=10
DO WHILE r<=4
s=1
DO WHILE s<=2*r-1
@r,cc SAY“*”
cc=cc+1
s=s+1
ENDDO
cc=10-r
r=r+1
Messagebox("输入的不是三位数或重排后不是三位数,请重新输入!")
Else
A1=int(a/100)
A2=int(mod(a,100)/10)
A3=mod(a,10)
?a1+10*a2+100*a3
ENDIF
SET TALK ON
RETURN
方法三
clear
accept"请输入一个三位整数:" to x
方法一:
Clear
?“打印1000以内的水仙花数:”
for x=100 to 999
x1=x%10 &&取出个位数
x2=int(x/10)%10 &&取出十位数
x3=int(x/100) &&取出百位数
if x=x1^3+x2^3+x3^3
?x
endif
endfor
方法二:
set talk off
clea
f=1 &&存放阶乘
k=1 &&累积项
do while 1/f>=0.000001
e=e+1/f
f=f*k
k=k+1
enddo
?"e=",e
Set talk on
return
04、编程:求S=1-1/2+1/3-1/4+1/5-……-1/100。
方法一
set talk off
CLEAR
s=0
i=0
FORi=1TO100STEP 1
a=a+1
?
enddo
方法二:
*用for—endfor语句打印九九乘法表
SET TALK OFF
CLEAR
FOR Y=1 TO 9
FOR X=1 TOy
Z= Y * X
??STR(Y,1)+“*”+STR(X,1)+“=”+STR(Z,2)+“ ”
ENDFOR
?
ENDFOR
SET TALK ON
RETURN
n=len(x)
s=""
for i=3 to 1 step -1
s=s+substr(x,i,1)
endfor
?"逆序输出为:",s
return
02、键盘输入n,求N!
方法一
Set talk off
Clear
P=1
Input“请输入N:”to n
For i=1 to n
p=p*i
Endfor
?“N!=”,p
SET TALK OFF
CLEAR
STORE 0 TOK,S
相关文档
最新文档