VFP常见编程实例

1、1-100的累加
** 求1到100的累加值
CLEAR
s=0
i=1
DO WHILE i<=100
s=s+i
i=i+1  &&一定记住先累加后循环
ENDDO
?s
RETURN


2、阶乘
** 求5的阶乘
CLEAR
j=1
i=1
DO WHILE i<=5
j=j*i
i=i+1
ENDDO
?j
RETURN


3、求阶乘和
** 求1至5的阶乘和
CLEAR
s=0
i=1
j=1
DO WHILE i<=5
j=j*i
s=s+j
i=i+1
ENDDO
?s
RETURN


4、条件定位
** 查询定位记录指针在赵伟上
CLEAR
USE 学生
LOCATE FOR 姓名="赵伟"
IF FOUND()
  DISPLAY
ELSE
  CANCEL
ENDIF
CONTINUE

5、用scan语句查询定位
** 用scan语句查询定位记录在赵伟上
CLEAR
SCAN FOR 姓名="赵伟"
DISPLAY
ENDSCAN
RETURN


6、用scan语句扫描符合条件的记录,并显示出来
** 把年龄小于30岁的人显示出来
CLEAR
SCAN FOR 年龄<30
DISPLAY
ENDSCAN
RETURN

7、查找男性职工
** 查找男性职工
CLEAR
LOCATE FOR 性别="男"
DO WHILE FOUND()
  DISPLAY
  CONTINUE
ENDDO
RETURN

** 查找男性职工
CLEAR
LOCATE FOR 性别="男"
DO WHILE NOT EOF()
DISPLAY
CONTINUE
ENDDO
RETURN

** 查找男性职工
CLEAR
USE 职员基本信息表
LOCATE FOR 性别="男"
DO WHILE .t.
  IF FOUND() then
    DISPLAY
  ELSE &&记住最后一个ELSE语句后面不需要条件表达式
    CANCEL
ENDIF
CONTINUE
ENDDO


** 查找男性职工
 set talk off
clear
open database 家庭成员管理.dbc
use stu.dbf
scan for not eof()
if xb="女"
skip
else
display
skip
endif
endscan
close database
use
set talk on
return

8、新值换旧值
** 有一对新生的兔子,从第三个月开始,每个月出生一对兔子,请问到第十二个月共出生多少对兔子?
clear
store 1 to a,b
i=3
do while i<=12
c=a+b
a=b
b=c
i=i+1
enddo
?"一年共出生兔子:",c
return

9、多位整数各个位数相加
** 求多位整数各个位数之和
CLEAR
s=0
input "请输入一个多位整数:" to a
DO WHILE a<>0
s=s+MOD(a,10)  &&将a取余正好是个位上的数
a=INT(a/10)    &&将a除10取整正好是除个位之后的数
ENDDO
?"这个整数的各个位数之和是:",s
RETURN

10、找100-999之间的“水仙花数”
CLEAR
FOR i=100 TO 999
  a=INT(i/100)
  b=INT((i-100*a)/10)
  c=i-INT(i/10)*10
  IF i=a^3+b^3+c^3
  ?i
  ENDIF
ENDFOR
RETURN

11、判断一个大于3的数是否为素数
CLEAR
input "请输入一个数(>=3):" to s
f=0
i=2
DO WHILE i<=INT(SQRT(s))
  IF MOD(s,i)<>0
  i=i+1
  LOOP
  ELSE
  f=1
  EXIT
  ENDIF
ENDDO
  IF f=0
  ?str(s,3)+"是素数"
  ELSE f=1  &&这个表达式可有可无,为了省事完全省略也可以。一般最后一个ELSE语句后面不需要表达式
  ?str(s,3)+"不是素数"
  ENDIF
RETURN

12、求一个班级每个学生的平均成绩
** 计算一个班级共三十名学生,每位学生5门功课的平均成绩
CLEAR     && 清屏
DIMENSION x(30,5)   && 定义一个数组变量,r为学生数,i为功课数
r=1       && 给30个学生的计数变量r赋初值1
DO WHILE r<=30  && 循环30次,以计算出30个学生的平均成绩
  s=0     && 为学生一门功课成绩赋初值0
  i=1     && 为五门功课计数变量赋初值1
  DO WHILE i<=5 && 为一个学生的五门功课成绩累加5次
   input "请输入学生的成绩" to x(r,i)
   s=s+x(r,i)  && 成绩累加
   i=i+1       && 功课累加
   ENDDO        && 返回内循环
  ?"这名学生的平均成绩是:",s/5        && 显示平均成绩
   r=r+1         && 学生累加
ENDDO          && 返回外循环

13、计算圆的面积
* 计算圆的面积程序
CLEAR
input "请输入半径的值" to r
input "请输入pi的值" to  pi
s=pi*r^2
?"圆的面积是",s
RETURN

14、将小写字母转换为大写字母
NOTE 请将任意输入的一个小写字母转换成大写字母,也就是upper()函数的程序实现
CLEAR   && 请屏
WAIT "请输入一个小写字母" to x   && 交互式输入一个小写字母
k=ASC(x)   && 将小写字母的ASC码赋值给变量K
IF k>=97 AND k<=122 then   && 97是小写字母a的ASC码值,122是小写字母z的ASC码值
?x,"的大写字母是",CHR(k-32)   && 输出大写字母.chr函数是ASC码所对应的字符
ELSE
  WAIT "您输入的不是小写字母" WINDOW TIMEOUT 5
  cancel
ENDIF
RETURN   && 返回到调用程序

15、找出最大数和最小数
CLEAR
input "请输入一个数:" to x
STORE x TO ma,mi
FOR i=2 TO 10       &&因为已经输入一个数X,所以循环次数只有9次
input "请输入一个数:" to x
IF ma<x            && ma是变量中存的数,x是刚输入的数
ma=x
ENDIF
IF mi>x
mi=x
ENDIF
ENDFOR
?"最大数是:",ma
?"最小数是:",mi
RETURN

16、绝对值函数的实现
** 绝对值函数的实现
CLEAR
input "请输入一个数值" to n
IF n>=0
?n
ELSE
?-n
ENDIF
CANCEL

17、绝对值函数实现的另一种方法
** 绝对值函数和另一种实现方法
CLEAR
input " 请输入一个数值" to n
?IIF(n>=0,n,-n)
CANCEL

18、输出成绩等级
** 用DO CASE语句实现:
CLEAR
input "请输入一个成绩" to cj
DO case
CASE cj>=90
   dj="优秀"
CASE cj>=80
   dj="良好"
CASE cj>=60
   dj="合格"
OTHERWISE
   dj="不合格"
ENDCASE
?dj
RETURN

**用IF语句实现:
set talk off
clear
input "请输入一个成绩:" to s
if s>=90
   grade="优秀"
   else
    if s>=80
       grade="良好"
       else
        if s>=60
           grade="及格"
           else
           grade="不及格"
        endif
    endif
endif
?ltrim(str(s))+"分对应的等级是:"+grade
set talk on
return
19、求一名学生的平均成绩
** 求一个学生5门功课的平均成绩
CLEAR
s=0
i=1
DO WHILE i<=5
input "请输入各门功课的成绩" to x
s=s+x
i=i+1
ENDDO
?s/5

20、用数组的方法,计算一个学生的平均成绩
** 用数组保存一个学生五门功课的成绩,然后再计算机其平均成绩
CLEAR
DIMENSION x(5)
s=0
i=1
DO WHILE i<=5
input "请输入各门功课的成绩" to x(i)
s=s+x(i)
i=i+1
ENDDO
?s/5
RETURN

21、用do case语句实现符号函数的功能
** 请输入一个数,当这个数是负数,就返回-1,当这个数是零,就返回零,当这个数是正数,就返回1
CLEAR
input "请输入一个数" to n
DO CASE
   CASE n>0
   s=1
    CASE n=0
   s=0
   CASE n<0
   s=-1
ENDCASE
?s
RETURN

22、用一般选择语句实现符号函数的功能
** 符号函数的实现
CLEAR
input "请输入一个数" to n
IF n>0
  s=1
  ELSE
  IF n=0
  s=0
   ELSE
   IF n<0
   s=-1
   ENDIF
  ENDIF
ENDIF
?s

23、用简单选择语句实现符号函数功能
** 符号函数的实现
CLEAR
input "请输入一个数" to n
IF n=0
s=0
ENDIF
IF n>0
s=1
ENDIF
IF n<0
s=-1
ENDIF
?s

24、打开数据库和数据表
SET talk off
CLEAR
accept "请输入数据库名" to x
OPEN DATABASE &x
accept "请输入数据表名" to y
USE &y
LIST
use
SET talk off
return

25、显示表中指定信息
SET TALK OFF
CLEAR
OPEN DATABASE 时代超越总公司职员信息数据库
USE 职员基本信息表
WAIT "请输入待查职工的编号(1-3)" TO n
IF VAL(n)<1 .or. VAL(n)>3
WAIT "输入无效,结束程序运行!" WINDOW timeout 5
RETURN
ELSE
STORE "0"+n TO a
LIST for "职员编号"=a
ENDIF
CLOSE DATABASES
SET TALK ON
return

26、询问后再由用户按(Y/N)键执行的程序实现
** 求任意一个数的阶乘
CLEAR
DO WHILE .t.
input "请输入一个数" to n
p=1
s=0
FOR i=1 TO n
p=p*i
s=s+p
ENDFOR
?s
WAIT "是否继续计算(Y/N)" TO yn window
IF UPPER(yn)="Y" THEN
  LOOP
ELSE
  EXIT
ENDIF
ENDDO
RETURN

27、根据exact的设置进行字符串匹配比较
** exact设置的变化对取值结果的影响
SET exact ON   && exact为打开状态,字符精确匹配
s="in"+SPACE(2)
IF s=="in"
IF s="in"
    ?"a"
ELSE
    ?"b"
ENDIF
ELSE
IF s="in"
    ?"c"
ELSE
    ?"d"
ENDIF
ENDIF
RETURN

28、使一个多位正整数逆序排列
CLEAR
input "请输入一个整数:" to x
DO WHILE x>0
y=x%10
??y
x=INT(x/10)
ENDDO
RETURN

29、按编号查找并列出一条记录
set talk off
clear
accept "请输入数据库名:家庭成员管理:" to a
open database
accept "请输入数据表名:stu:" to b
use
list
wait "请输入一个编号:" to c windows timeout 5
if val(c)<=0 or val(c)>4
wait "输入的数字不合法,请重新输入一个合法的数字:" to c windows timeout 5
else
store "0"+c to aaa
list for bh=aaa
endif
close database
set talk on
return

30、打开一个数据库,并显示其中的表内容
set talk off
clear
accept "请输入一个数据库名:家庭成员管理.dbc" to x
open database
accept "请输入一个数据表名:stu.dbf" to y
use
list
use
set talk on
return

30、验证密码程序:
set talk off
clear
accept "请输入密码:" to aaa
if aaa="abc"
clear
wait "欢迎使用本系统!"
else
wait "密码错误,程序将在5秒钟退出!" windows timeout 5
endif
set talk on
return

31、编程求税金
set talk off
clear
input "请输入营业收入:" to p
do case
case p<800
r=0
case p=<2000
r=0.05
case p<5000
r=0.08
case p>=5000
r=0.1
endcase
x=p*r
?"应纳税金为:" , x
set talk on
return

32、用三角形列出乘法口诀表:
set talk off
clear
X=1
DO WHILE X<=9
  Y=1
  DO WHILE Y<=X
  S=X*Y
  ?? STR(Y,1)+"*"+STR(X,1)+"="+STR(S,2)+" "
  Y=Y+1
  ENDDO
?
X=X+1
ENDDO
SET TALK ON
RETURN

33、将变量A、B值互换:
a=1
b=2
a=a+b
b=a-b
a=a-b
?a,b

34、找出已知三个数的中间数:
INPUT "请输入a 的值:" TO a
INPUT "请输入b 的值:" TO b
INPUT "请输入c 的值:" TO c
IF MAX(a,b)<c
  ? MAX(a,b)
ELSE
  IF MIN(a, b)<c
  ? c
  ELSE
  ? MIN(a,b)
  ENDIF
ENDIF

35、调用子程序:
* MAIN.PRG
SET TALK OFF
? ”正在执行主程序”
DO SUB1
SET TALK ON
Procedure SUB1
? ”正在执行SUB1”
RETURN

36、用参数传递计算圆的面积:
set talk off
clear
input "请输入圆的半径" to r
s=0    &&用参数传递计算必须给实际参数赋初值
do arer with r,s  &&调用子程序,并指定实际参数r,s
?"圆的面积为:",s
set talk on
?
procedure arer  &&被调用的子程序arer
parameter x,y   &&指定的形式参数x,y
y=3.14*x^2
return
set talk on
37、我国古代数学家张丘建在“算经”里提出一个世界数学史上有名的百
鸡问题:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买
百鸡,问鸡翁,母,雏各几何?
**依题列出方程:x+y+z=100
5x+3y+z/3=100
set talk off
clear
for x=1 to 100
  for y=1 to 100
  z=100-x-y
   if 5*x+3*y+z/3=100
    ?"鸡翁:"+str(x,3)
    ?"鸡母:"+str(y,3)
    ?"鸡雏:"+str(z,3)
   endif
  endfor
endfor
set talk on
return  

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
VFP基本数据库系统开发实例(附图) 西南大学计信院 导学 在Visual Foxpro中开发一个应用系统应该包括需求分析、项目创建、模块设计、运行调试、保存 发布到建立帮助等,下面介绍如何把各个模块集成起来,并创建一个应用程序。 11.1 系统需求分析 传统的学生成绩管理方法不仅浪效率低,而且由于管理不规范容易导致各种错误的 发生。因此实现一个智能化、系统化的公共计算机成绩管理系统是十分必要和不可缺少 的。它将大大减轻管理者的劳动强度,降低出错率,提高管理的效率。该系统可以实现 如下功能: 1. 数据需求 通过调查,总结出该应用程序对数据的需求大致有如下这些: (1) 学生信息 包括学号,姓名,性别,出生日期,系科,备注,照片 (2) 管理员信息 包括用户名,密码,管理员姓名,权限,说明信息 (3) 学生成绩信息 主要包括学号, 课程编号,平时成绩,笔试成绩,上机成绩,总评成绩,审核否 (4) 课程信息 包括课程编号,课程名称 2. 功能需求 功能分析的任务是了解用户对数据的处理方法和输出格式。 (1) 基本数据录入 基本数据包括学生信息、管理员信息、学生成绩休息和课程信息等。要求系统能够 录入这些数据,并且可以进行修改。在数据录入和修改过程中应保持数据的参照完整性 。 (2) 查询 能够查询出学生成绩,和补考人员名单等。 (3) 学生和管理员信息的维护 要求能够根据需要对学生和管理员信息进行维护修改等。 (4)成绩的审核 根据学生的总评成绩审核学生的计算机成绩是否通过。 (5) 打印输出 打印学生成绩表和补考人员名单等。 11.2 系统设计 1. 程序总体结构设计 在开始程序设计之前,首先应该将程序的总体结构以层次图的形式表示出来,便于 对程序分层设计和实现。图1所示为公共计算机成绩管理系统的功能模块图。 图1公共计算机成绩管理系统功能模块 2. 数据库逻辑设计 进行数据库设计的依据有三个:第一是在进行系统调查时由成绩管理员提供的各种 处理数据;第二是功能设计结果;第三是数据库设计规范化理论。数据库设计是系统设 计的一项基本工作,其效果的好坏,对后续设计、调试、使用、维护等工作关系极大, 因此,一定要高度重视这一部分工作。当然,我们不能简单地将数据库设计理解为在计 算机上用可视化的方法建立表的过程,其主要工作是建立一种完整、规范的数据模型以 支持整个应用系统对数据的要求。 根据对实际情况进行分析建立关系模型 1) 学生信息表(学号,姓名,性别,出生日期,系科,备注,照片) 2) 管理人员信息表(用户名,密码,管理员姓名,权限,说明信息) 3) 学生成绩表(学号, 课程编号,平时成绩,笔试成绩,上机成绩,总评成绩,审核否) 4) 补考名单表(学号,姓名, 总评成绩,补考成绩) 5) 课程表(课程编号,课程名称) 11.3 创建项目 Visual Foxpro推荐在项目管理器中开发应用程序,因为项目管理器会为开发工作带来很多方便 。在项目管理器中创建一个项目后,应用程序就具备了一个开发框架,然后在这个框架 中,再利用项目管理器所提供的强大功能,按照需求来实现应用程序的设计。 用户可以启动Visual Foxpro,选择【文件】"【新建】命令,在打开的对话框中,选择"项目"单选按钮,然后 单击"新建文件"按钮,接着在"创建"对话框中,输入项目文件名并确定项目路径(本例 使用的路径为D:\公共计算机成绩管理系统),然后单击"保存"按钮,即可启动项目管理 器。 一个完整的应用程序,即使规模不大,也会涉及到多种类型文件,如dbc数据库、d bf表以及菜单、表单、报表、位图等。为了以后的修改、维护工作方便进行,就需要把 这些文件放在不同的文件夹中便于管理维护,例如一般把dbc数据库文件、dbf表文件和 cdx索引文件放在DATE目录,表单、报表、标签等放在FORMS目录等。 11.4数据库的物理设计 a) 数据库名为公共计算机成绩管理.dbc b) 数据表 i. 学生信息表.dbf 学号/C/10,姓名/C/10,性别/L/1,出生日期/D/8,系科/C/30,备注/M/4,照片/G/4 ii. 管理人员信息表.dbf 用户名/C/10,密码/C/10,管理员姓名/C/10,权限/C/4,说明信息/C/20 iii. 学生成绩表. dbf学号/C/10, 课程编号/C/2,平时成绩/N/6/2,笔试成绩/N/6/2,上机成绩/N/6/2,总评成绩/N/6/2,审 核否/L/1 iv. 补考名单表 学号/C/10,姓名/C/10, 总评成绩/N/6/2,补考成绩/N/6/2 v. 课程表 课程编号/C/2,课程名称/C/14 图2 公共计算机成绩管理数据库及其表结构 11.5界面设计 1) 创建启动表单 下面设计应用程序的封面,主要由一个

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bryan Ding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值