首页  前一页  后一页  末页
[477] [478] [479] [480] [481]
本留言簿共有493条记录, 现在时间2025-5-25 0:15:57,计算机地址:192.168.9.44
日期查询:
现在是第95页
一共有99页
Books库中表及结构信息 环境:一键安装 库表:Mysql.sql  xx3.sql xx4.sql 页面:Myphp.php   
序号 留言内容
481

D:2021-11-25
T:12:46:00
IP:192.168.9.36



作者:
张顺海

2021.11.25 星期四

教学内容:函数应用及数据表的查询与操作

教学目的:根据复习内容及题目,掌握常用的函数及表的操作

教学重点:

类型转换函数

测试函数

表的查询、排序、更新、输出

教学难点:类型转换函数

教学过程:

一、导入

通过上周的上机,我们看到,部分同学的基础理论仍然掌握的欠缺,在考试中,常用函数的应用及处理,在数据表及程序运行结果题目中,会常用到这些基础知识,尤其是函数这块,是考试和应用的重点。

二、教材上常用函数(37个),大纲上有24个

数值函数[8个]: INT ABS ROUND SQRT MOD MIN  MAX RAND

字符串函数[15个]:LEN  SPACE AT Rigth Left  Trim Ltrim Rtrim AllTrim Asc Chr replicate Like Stuff & 

日期、时间函数[6个]:Date Time Datetime Year Month Day

转换函数[6]:Str Val Dtoc Ctod Lower Upper

测试函数[2]:Type IIF

三、数据表的操作(VFP、SQL)

数据显示

数据更新

数据删除

数据转存

数据排序

四、总结

实例再分析

1)*题目一

*逻辑删除年龄为18岁以上(含18岁),学号前两位为“20”的记录 (用VisualFoxPro命令)
delete for 年龄>=18 and left(学号,2)="20"

2)*题目二

*对2016年入学的的学生按年龄升序、性别降序,生成表文件dab.dbf(用VisualFoxPro命令)
sort on 年龄/A,性别/D for year(入学日期)=2016 to dab
*sele * from dab   &&打开排序表,查看结果 

3)*题目三

*将专业为“园艺”的记录的入学日期提前两天,入学成绩提高5分(用SQL命令)
update da set 入学日期=入学日期-2,入学成绩=入学成绩+5 where 专业="园艺"
 

4)*题目四

 
*查询年龄在18岁以下的“张”姓记录,包括“学号”“姓名”“年龄”字段内容,按“学号”字段降序排列,结果附加到文本文件ff.txt中。(用SQL语句)
select 学号,姓名,年龄 from da where 年龄<18 and left(姓名,2)="张" order by 学号 desc to file ff
 

5)*题目五

 *在“学生”数据库中,建立表 "成绩.dbf" (学号 (c,6),姓名 (c,8),班级 (C,10),理论 (n,5,1),技能 (n,5,1),设置“学号”字段为主索引*理论的有效性规则为“成绩大于0”。 (用SQL语句)
create table 成绩 (学号 c(6) primary key ,姓名 c(8), 班级 c(10), 理论 n(5,1) check 理论>=0 ,技能 n(5,1))   &&创建一个数据表格

五、作业

480

D:2021-11-19
T:10:21:00
IP:188.188.2.220



作者:
张顺海

2021.11.19 星期五

上机内容:期中考试试卷题目验证

上机过程:

一、中英文打字各5分钟

二、下载数据表环境

1.【文件下载】,建立da.db数据表,下载至自己的VFP工作目录下,运行该程序,会创建da.dbf数据表,如下图

2.通过【命令窗口】逐条输入下列指令,完成相关操作

1)*题目一

*逻辑删除年龄为18岁以上(含18岁),学号前两位为“20”的记录 (用VisualFoxPro命令)
delete for 年龄>=18 and left(学号,2)="20"

2)*题目二

*对2016年入学的的学生按年龄升序、性别降序,生成表文件dab.dbf(用VisualFoxPro命令)
sort on 年龄/A,性别/D for year(入学日期)=2016 to dab
*sele * from dab   &&打开排序表,查看结果 

3)*题目三

*将专业为“园艺”的记录的入学日期提前两天,入学成绩提高5分(用SQL命令)
update da set 入学日期=入学日期-2,入学成绩=入学成绩+5 where 专业="园艺"
 

4)*题目四

 
*查询年龄在18岁以下的“张”姓记录,包括“学号”“姓名”“年龄”字段内容,按“学号”字段降序排列,结果附加到文本文件ff.txt中。(用SQL语句)
select 学号,姓名,年龄 from da where 年龄<18 and left(姓名,2)="张" order by 学号 desc to file ff
 

5)*题目五

 *在“学生”数据库中,建立表 "成绩.dbf" (学号 (c,6),姓名 (c,8),班级 (C,10),理论 (n,5,1),技能 (n,5,1),设置“学号”字段为主索引*理论的有效性规则为“成绩大于0”。 (用SQL语句)
create table 成绩 (学号 c(6) primary key ,姓名 c(8), 班级 c(10), 理论 n(5,1) check 理论>=0 ,技能 n(5,1))   &&创建一个数据表格

3.总结如下:

删除:

VFP命令:delete  for  <条件>
SQL命令:delete from <表名> where <条件>

显示:

VFP命令:List/Disp  <输出字段列表> For <条件>    to <目标输出>

SQL命令:Select <输出字段列表> From <数据表> Where <条件> order by <排序依据> asc|desc   to <目标输出> | into table <表名> | into cursor <临时表名> | into array <数组名>

更新:

VFP命令:replace [范围]  字段1 with 表达式1,字段2 with 表达式2  For <条件>          &&默认当前记录,如果有For条件默认为ALL
SQL命令:update <表名> set  字段1=表达式1, 字段2=表达式2 where <条件>

排序:

SORT ON 排序依据1 /A | /D, 排序依据2 /A | /D For <条件> To <表名>      && /A 为升序,/D为降序 , /C 为不区分大小写  ,省略参数默认为升序。

 4.创建数据表

*在“学生”数据库中,建立表 "成绩.dbf" (学号 (c,6),姓名 (c,8),班级 (C,10),理论 (n,5,1),技能 (n,5,1),设置“学号”字段为主索引
*理论的有效性规则为“成绩大于0”。 (用SQL语句)
create table 成绩 (学号 c(6) primary key ,姓名 c(8), 班级 c(10), 理论 n(5,1) check 理论>=0 ,技能 n(5,1))   &&创建一个数据表格
 
三、期中考试其他题目代码:

1. P88题,【代码下载 prg_20211118_p88.prg】,运行效果如下
 
2.P89题,【代码下载 prg_20211118_p89.prg】,运行效果如
 
 
3.P94题目的数据表环境创建,P94题,【代码下载 prg_20211118_p94.prg】,运行效果如
 
479

D:2021-11-18
T:8:36:00
IP:192.168.9.36



作者:
张顺海

2021.11.18 星期四

期中考试试卷解析

一、试卷内容

二、重点解析代码

*期中考试试卷解析  2021.11.18 星期四
set safe off
clos table all
open database V109_zsh  &&打开数据库文件
if file("da.dbf")   &&判断如果 da已经存在,就从数据库中删除它
   remove table da
endif
 
if file("成绩.dbf")   &&判断如果"成绩“已经存在,就从数据库中删除它
   remove table 成绩
endif
 
*创建题目环境,增加一个表格,表名为da
create table da (学号 c(6),姓名 c(8), 年龄 n(3), 性别 c(2), 入学日期 d, 专业 c(8), 入学成绩 n(5,1))
 
*增加7个记录
inser into  da (学号,姓名,年龄,性别,入学日期,专业,入学成绩) value ("100001","张三",17,"女",{^2016/09/03},"园艺",358)
inser into  da (学号,姓名,年龄,性别,入学日期,专业,入学成绩) value ("100002","李四",19,"男",{^2016/09/03},"园艺",351)
inser into  da (学号,姓名,年龄,性别,入学日期,专业,入学成绩) value ("100003","王五",18,"男",{^2016/09/03},"园艺",315)
inser into  da (学号,姓名,年龄,性别,入学日期,专业,入学成绩) value ("200004","刘六",21,"女",{^2017/09/03},"机加工",335)
inser into  da (学号,姓名,年龄,性别,入学日期,专业,入学成绩) value ("200005","马七",20,"男",{^2017/09/03},"机加工",303)
inser into  da (学号,姓名,年龄,性别,入学日期,专业,入学成绩) value ("100006","张八",18,"女",{^2016/09/03},"园艺",298)
inser into  da (学号,姓名,年龄,性别,入学日期,专业,入学成绩) value ("100007","周九",17,"女",{^2016/09/03},"园艺",381)
 
*题目一
*逻辑删除年龄为18岁以上(含18岁),学号前两位为“20”的记录 (用VisualFoxPro命令)
delete for 年龄>=18 and left(学号,2)="20"
 
 
*题目二
*对2016年入学的的学生按年龄升序、性别降序,生成表文件dab.dbf(用VisualFoxPro命令)
sort on 年龄/A,性别/D for year(入学日期)=2016 to dab
*sele * from dab   &&打开排序表,查看结果 
 
 
*题目三
*将专业为“园艺”的记录的入学日期提前两天,入学成绩提高5分(用SQL命令)
update da set 入学日期=入学日期-2,入学成绩=入学成绩+5 where 专业="园艺"
 
*题目四
*在“学生”数据库中,建立表 "成绩.dbf" (学号 (c,6),姓名 (c,8),班级 (C,10),理论 (n,5,1),技能 (n,5,1),设置“学号”字段为主索引
*理论的有效性规则为“成绩大于0”。 (用SQL语句)
create table 成绩 (学号 c(6) primary key ,姓名 c(8), 班级 c(10), 理论 n(5,1) check 理论>=0 ,技能 n(5,1))   &&创建一个数据表格
 
*题目五
*查询年龄在18岁以下的“张”姓记录,包括“学号”“姓名”“年龄”字段内容,按“学号”字段降序排列,结果附加到文本文件ff.txt中。(用SQL语句)
select 学号,姓名,年龄 from da where 年龄<18 and left(姓名,2)="张" order by 学号 desc to file ff
 
 
*程序运行结果
set proc to test20211118_sjjx
clea
s=0
a=0
for i=1 to 10
for j=2 to i-1
if i%j=0
exit
endif
endfor
if j>=i   &&如果是素数,求i+1的阶乘
?? "j="+str(j,2)+"i="+str(i,2),spac(10)
do mm with a,i    &&在子程序中,a与p对应,对p的改变,就是对a的改变,二者同步。
s=s+a  &&返回后,累加
else
?? "s="+allt(str(s))+"+["+allt(str(i,2))+"]"
s=s+i  &&如果不是素数,就加上它本身
?? "="+allt(str(s))
endif
?
endfor
?s
 
 
 
*****
?
?
dime a(5)
a(1)=1
a(2)=2
a(3)=3
a(4)=5
a(5)=7
s=0
for i =1 to 5
   x=1
   for j=1 to a(i)+1
       x=x*j
   endfor
   ?? x
   s=s+x
endfor
?s
 
****
   do p87
   do p88
   do p89
   do p94
 
****
return
 
 
proc mm
para p,n
x=1
p=1
do whil x<=n
x=x+1    &&从2开始,实现的是(n+1)!
?? "*"+allt(str(x))
p=p*x
enddo
?? "="+allt(str(p))
return
endproc
 
 
proc p87
? repl("*",40)
dime a(4)
v=10
m=0
a(1)=28
a(2)=16
a(3)=33
a(4)=20
for x=1 to 4
*input "输入数据" to a(x)
v=v+a(x)
if a(x)<m
m=a(x)
endif
endfor
v=v/4
?m-v
? repl("*",40)
return
endproc
 
 
proc p88
if file("jy.dbf")   &&判断如果 jy已经存在,就从数据库中删除它
   remove table jy
endif
if file("jyr.dbf")   &&判断如果 jyr 已经存在,就从数据库中删除它
   remove table jyr
endif
 
create table jy (借书证号 c(4),借书日期 d) 
insert into jy (借书证号,借书日期) value ("0010",{^2019/05/20})
insert into jy (借书证号,借书日期) value ("0007",{^2019/05/24})
insert into jy (借书证号,借书日期) value ("0006",{^2019/06/03})
insert into jy (借书证号,借书日期) value ("0010",{^2019/04/19})
 
 
create table jyr (借书证号 c(4),姓名 c(6),职称 c(4))
insert into jyr (借书证号,姓名,职称) value ("0006","孟小梅","教授")
insert into jyr (借书证号,姓名,职称) value ("0010","郑财勇","讲师")
insert into jyr (借书证号,姓名,职称) value ("0007","王志军","助教")
 
? repl("*",40)
sele jyr
index on 借书证号 to jyr
sele jy
do while not eof()
   ts={^2019/06/19}-借书日期
   if ts>30
      sele jyr
      seek jy->借书证号
      if 职称<>"教授"
         ? 姓名+"同志,你借的书已经过期,请归还"
      else
         if ts>90
            ? 姓名+"同志,你借的书已经过期,请归还"
         endif
      endif
      sele jy
    endif
    skip
enddo
? repl("*",40)
endproc
 
proc p89
if file("ts.dbf")   &&判断如果 ts已经存在,就从数据库中删除它
   remove table ts
endif
if file("dd.dbf")   &&判断如果 dd已经存在,就从数据库中删除它
   remove table dd
endif
*创建ts数据表,并按题目要求增加记录
create table ts (书号 c(4),书名 c(10),作者 c(6),出版社 c(10),单价 n(5,2))
insert into ts (书号,书名,作者,出版社,单价) value ("Y001","C+语言","王晓","大众出版社",21.50)
insert into ts (书号,书名,作者,出版社,单价) value ("J002","计算机基础","程力","科技出版社",26.00)
insert into ts (书号,书名,作者,出版社,单价) value ("J003","计算机导论","舒彦","电子出版社",30.50)
insert into ts (书号,书名,作者,出版社,单价) value ("W004","网页制作","严谨","科技出版社",28.30)
 
 
create table dd (订单号 c(3),书号 c(4), 数量 n(3),金额 n(6,2))
insert into dd (订单号,书号,数量) value ("001","Y001",150)
insert into dd (订单号,书号,数量) value ("002","J001",200)
insert into dd (订单号,书号,数量) value ("003","J003",50)
insert into dd (订单号,书号,数量) value ("004","W004",100)
 
 
? repl("*",40)
sele ts
inde on 书号 tag tsh
sele dd
set relation to 书号 into ts
replace all 金额 with 数量*ts->单价
set relation to
sele 书名,出版社,订单号,金额 from dd,ts where dd.书号 = ts.书号 order by 订单号 desc into table temp
sele temp 
go bottom
? 金额
? repl("*",40)
endproc
 
 
proc p94
*创建学生成绩表,表单的数据环境依赖
 
if file("cj.dbf")   &&判断如果 cj 已经存在,就从数据库中删除它
   remove table cj
endif
create table cj (学号 c(10),姓名 c(6),课程 c(10),成绩 n(5,1))
insert into cj (学号,姓名,课程,成绩) value ("2000221021","王晓飞","平面设计",98)
insert into cj (学号,姓名,课程,成绩) value ("2000101001","李国华","平面设计",62)
insert into cj (学号,姓名,课程,成绩) value ("2000111015","王虹","ASP",68)
insert into cj (学号,姓名,课程,成绩) value ("2000221010","连小胜","高等数学",89)
insert into cj (学号,姓名,课程,成绩) value ("2000221011","孙联民","微机原理",77)
insert into cj (学号,姓名,课程,成绩) value ("2000221021","王晓飞","ASP",88)
insert into cj (学号,姓名,课程,成绩) value ("2000221011","孙联民","平面设计",95)
insert into cj (学号,姓名,课程,成绩) value ("2000221021","王晓飞","微机原理",80)
do form p94_20211118
endproc
 

运行结果:

478

D:2021-11-12
T:7:39:00
IP:192.168.9.36



作者:
张顺海

2021.11.12 星期五

上机内容:了解数据类型,掌握常量、变量、函数、表达式的概念及用法。

上机重点:函数的应用

上机过程:

一、中英文录入,各5分钟。

二、数据类型

数据类型,决定了数据的存储方式和运算方式,数据的管理和操作,根据场景不同,需要使用匹配的数据类型,否则就会报错,不能完成指定的功能。

VFP6.0主要有以下的【数据类型】:

字符型、数值型、逻辑型、货币型、日期型、日期时间型、整型、浮点型、双精度型、通用型、备注型、其他型(字符二进制型、备注二进制型)共13种。

三、数据存储

数据的输入、输出等操作,都是通过计算机的数据存储设备来完成的,主要有以下六种存储数据的的方式【或称为数据容器】:

常量、变量、数组、字段、记录、对象等。

四、常量、变量

常量:(字符型常量、数值型常量、逻辑型常量、日期型常量、货币型常量)     需要能识别出不同类型的常量。

变量: (内存变量、字段变量、数组变量、系统变量)    需要能识别出字段变量与内存变量,以及它们的区别。【变量相关资料

五、函数

函数:(系统函数、自定义函数)     需要掌握系统提供的常用的标准函数的应用。

函数的类型:(数值型函数字符型函数日期时间型函数数据类型转换函数、测试函数) 一般是根据处理数据的类型来区分的。

【考试大纲】函数介绍:

数值函数:ABS()、INT()、ROUND()、SQRT()。

字符函数:宏替换、SUBSTR()、LEN()、AT()、SPACE()、REPLICATE()。

日期和时间函数:DATE()、TIME()。

数据类型转换函数:STR()、VAL()、CTOD()、DTOC()。

测试函数:TYPE()、FILE()、IIF()。

其他需要了解的函数:MAX()、MIN()、FOUND()、MOD()、SELECT()、RECNO()。

1.       ABS(expN)       &&返回一个非负数,即绝对值,结果用在不能是负数的地方。返回值为N型。

? ABS(-45) && 显示45
? ABS(10-30) && 显示20
? ABS(30-10) && 显示20
STORE 40 TO gnNumber1
STORE 2 TO gnNumber2
? ABS(gnNumber2-gnNumber1) && 显示38

2.       INT(expN)   &&只取括号内结果的整数部分,并不四舍五入。返回值为N型。

? INT(12.5) && 显示12
? INT(6.25 * 2) && 显示12
? INT(-12.5) && 显示-12
STORE -12.5 TO gnNumber
? INT(gnNumber) && 显示-12

3.       ROUND(expN)  &&四舍五入,小数位数,可取(正值,零,负值)返回值为N型。

SET DECIMALS TO 4  &&设置数据默认的小数位数

SET FIXED ON     && 固定小数显示

CLEAR

? ROUND(1234.1962, 3) && 显示1234.1960

? ROUND(1234.1962, 2) && 显示1234.2000

? ROUND(1234.1962, 0) && 显示1234.0000

? ROUND(1234.1962, -1)  && 显示1230.0000

? ROUND(1234.1962, -2)  && 显示1200.0000

? ROUND(1234.1962, -3)  && 显示1000.0000

4.       SQRT(expN)&&求小括号里的数据的算术平方根。要求里边的数据不能为负数。返回值为N型。

CLEAR

? SQRT(4)  && 显示2.00

? SQRT(2*SQRT(2))  && 显示1.68

5.       &expC[.]        &&宏替换查找并替换,格式为符号&+c型变量。使用之前C型变量得存在。

Xy=”abc”  &&建立C型变量xy

Use xy   &&打开的表格为xy.dbf

Use &xy  &&打开的表格为abc.dbf

 

A=”3+5”  &&建立C型变量A

? A      &&显示变量A的值,结果为3+5

? &a     &&显示的是查找&a,并用变量A的值替换,即相当于?3+5,结果为8

C=”this is a dog.”

B=”xyz”

? “NO1 &C. NO2 &B. NO3”  &&显示的结果为:NO1 this is a dog. NO2 xyz NO3

 

For i=1 to 10

   X=ltrim(str(i))   &&将N型变量I的值,转换成字符型的I,去掉左边的空格后,赋值给X

   A&x=i

Endfor    &&这个循环,相当于建立了10个变量,即a1=1,a2=2,a3=3…..a10=10。

6.       SUBSTR(expC,expN1,expN2)  &&截取一个字符串的一部分,返回一个字符串,是原串的子串。

STORE 'abcdefghijklm' TO mystring

CLEAR

? SUBSTR(mystring, 1, 5)  && 显示abcde

? SUBSTR(mystring, 6)  && 显示fghijklm,省略第expN2,则从第6个到末尾。

相关函数:left(expC,expN),right(expC,expN),即左截取、右截取。

7.       LEN(expC)   &&返回expC结果的字符的个数,返回值为N型。

A=”abcdefg”

?len(a)    &&显示结果为7

?len(a)+2  &&显示结果为9,即函数值可参与运算

?len(a+a)  &&显示两个字符串的长度,结果为14

 

Accept “请输入一个字符串” to x   &&从键盘上获得一个字符串

Y=len(x)  &&将x中字符的个数,保存到变量y中。

For i=y to 1 step -1  &&从Y个循环至1,步长为-1

?? subs(x,i,1)   &&从X中截取第i个,顺序为:最后一个,倒数第二个…第一个。

Endfor           &&这个循环的结果就是

8.       AT(expC1,expC2[,expN])  &&判断第一个字符串,在第二个字符串左侧首次出再的位置,结果为N型值,expN为第几次出现的位置,省略默认为1。

STORE ‘河北省徐水县职教中心,是一所国家级职教中心。' TO gc

STORE '中心' TO zx

CLEAR

? AT(zx,gc)  && 显示17

? AT(zx,gc,2) && 显示39

? at(‘职业’,gc)   &&显示为0,因为没有存在‘职业’二字

 

Xm=”张宝康”

If at(‘张’,xm)=1  &&根据结果是不是出现的位置为1,判断是不是姓张。

  ? “姓张”

Else

  ? “不姓张”

Endif

9.       SPACE(expN)   &&产生由N个空格组成的字符串,结果为C型值。

A=”中国”

B=”您好”

? a+b     &&结果为  中国您好

? a+space(5)+b  &&结果为  中国     您好,两个词之间有5个空格。

10.   REPLICATE(expC,expN)  &&返回一个字符串,这个字符串是将指定字符表达式重复指定次数后得到的。

? repl(“abc”,3)    &&结果为  abcabcabc   即让abc重复三次,结果为9个字符。

A=”xyz”

? repl(a,4)       &&结果为  xyzxyzxyzxyz

?a+repl(“_”,10)+a     &&结果为  xyz__________xyz

11.   DATE()   &&返回由操作系统控件的当前系统日期,结果的格式受set date、set cent on/off的影响。一般没有自变量,即括号内是空的。

设今天的日期是2011-1-21

? date()      &&显示的结果为01/21/11   结果年份为2位,美国格式mm/dd/yy

Set cent on   &&打开世纪开关,即年份显示为4位

? date()      &&显示的结果为01/21/2011 结果年份为4位,美国格式mm/dd/yyyy

Set date ansi  &&设置中国格式,yyyy.mm.dd  分隔符为 .

? date()      &&显示结果为2011.01.21

SET MARK to "*"   &&设置日期分隔符为*

? date()      &&显示的结果为2011*01*21

? date()-100  &&结果为2011.01.21以前100天的日期,结果为D型2010*10*13

?date()+100   &&结果为2011.01.21以后100天的日期,结果为D型2011*05*01

X=ctod(“2011.4.28”)   &&将C型2011.4.28,转换成D型数据,保存到变量X中

? x-date()     &&结果为距离2011.4.28日相差的天数,  97

12.   TIME()   &&一般没有自变量,即括号是空的。以24 小时制、8 位字符串(时:分:秒)格式返回当前系统时间。结果为C型。

设现在的时间的:21:01:35

? time()   &&显示现在的系统时间,即任务栏中的时间。21:01:35

?”现在的时间是:”+time()  &&结果  现在的时间是:21:01:35

13.   STR(expN1,expN2,expN3)  &&将N型的expN1转化成expN2个长度且保留expN3个小数的C型字符串,内容由expN1中的数字组成,转化过程中可能补空格,或者四舍五入。

A=123.45678   &&建立一个N型的变量,值为123.45678

? str(a)  &&省略后边自变量,默认转换成10个长度,前7个空格,0个小数,结果四舍五入123

? str(a,6,2)   &&结果为  123.46

?str(a,5,2)   &&结果为  123.5

?str(a,2)    &&结果为   **   宽度不足盛放变量a的整数位数时,输入*

?str(a,4,2)   &&结果为  123   其中,123前有一个空格,共4个长度,2没有效果

 

14.   VAL(expC)  &&将expC转换成N型,结果为N型,转换到第一个非数字结束,字母e除外。

CLEAR

STORE '12' TO A

STORE '13' TO B

? VAL(A) + VAL(B)  && 显示25.00

STORE '1.25E3' TO C

? 2 * VAL(C)  && 显示2500.00

? val(“  1234 5abc”) &&结果为1234.00

? val(“ 1234 e2”)    &&结果为1234.00

?val(“  1234e 2”)  &&结果为123400.00

?val(“  1234d 2”)  &&结果为1234.00  科学计数只承认字母e

?val(“ 1234.567.88”) &&结果为1234.57  默认保留2个小数,第三位四舍五入

15.   CTOD(expC)、DTOC(expD)  &&C型数据与D型数据之间的转换。

Clea

SET CENTURY ON   && 显示世纪4位年份

Set date amer      &&设置当前的日期格式为美国格式

cDate="01/01/2003"

?CTOD(cDate)   &&显示D型的  01/01/2003

?GOMONTH(CTOD(cDate),12)  && 返回12个月后的日期01/01/2004

?CTOD(cDate)+12  && 显示12天后的日期  01/13/2003

 

B=date()   &&即获得今天的日期,前边说01/21/2011

? dtoc(b)  &&显示的结果为01/21/2011  这里是C型的01/21/2011

?”今天的日期:”+dtoc(b)  &&结果为  今天的日期:01/21/2011

?dtoc(b,1)  &&忽略set date所设置的日期格式,统一返回20110121格式的日期,没有分隔符,且采用yyyymmdd格式。

1.       TYPE(“exp”)  &&可以测试的表达式类型有: C D L N S M U

其中U是不存在,即未定义的意思,unfine。

Clea

A=date()  && 建立系统日期D型

B=time()  &&建立系统时间C型

C=date()-15  &&当前日期前15天的日期D 型

D=date()-c   &&计算两个日期之间的天数,结果为N型

E=”a”      &&建立一个字符变量C型

? type(“a”),type(“b”),type(“c”),type(“d”),type(“e”),type(e),type(“&e”),type(b)

&&最后一句的结果为   D C D N C D D U    注意后边四个结果

2.       FILE(expC) &&判断一个文件是不是存在,如果存在返回逻辑真(.t.),否则返回逻辑假(.f.)

SET PATH TO HOME()    &&设置默认目录为系统启动目录,即VFP6.0系统软件所在目录

CLEAR

IF FILE('foxuser.dbf')

   ? 'Visual FoxPro 资源文件,',”存在”

ELSE

   ? 'Visual FoxPro 资源文件,'+”不存在”

ENDIF

3.       IIF(expL,exp1,exp2) &&根据expL的真假,返回exp1、exp2其中的一个值,真返回exp1。

Input to x                          &&从键盘获得一个数,保存到X中

?iif(x>=0,”是正数”,”是负数”)           &&如果x>=0,则值为 是正数,否则相反

 

假如执行本程序,输入33,结果为 是正数,如果输入-20,结果为 是负数

Use xs

Do whil .not. eof()

   Repl  工资with 工资+iif(性别=”男”,10,20)

   Skip

Enddo

Use

&&本题的意思是,在从表格头至尾的循环中,将男同志的工资增加10元,女生增加20元。

4.       MAX()、MIN()、FOUND()、MOD()、SELECT()、RECNO()。

1)Max()、min()是求两个或者内个值中的最大值、最小值。可以同时比较多个值

? max(33,22,18,127,45.6)  &&返回5个数中的最大值   127

?max(10.3,14.7,10.5,2.2)   &&返回4个数中的最大值   14.7

?max(“abc”,”cde”,”fgh”)   &&返回3个字符串的最大值  fgh

?min(33,22,18,127,45.6)  &&返回5个数中的最小值   18

?min(“abe”,”cde”,”fgh”)   &&返回3个字符串中的最小值  abc

 

2)found()、found(expN)、found(expC)

SET TALK OFF

USE xt  && 打开xt 表

STORE 0 TO x

LOCATE FOR left(姓名,2)=’张'

DO WHILE FOUND()  &&这句可以使用do whil .not.eof()或者do whil recn()>recc()

   X=x+1

   CONTINUE

ENDDO

?”全班姓张的人数为”+str(x,3)

&&found()测试当前工作中的查找是不是找到了,受locate/cont、seek、find的影响

&&found(5)测试5号工作中的查找是不是找到了

&&found(“abc”)测试别名为abc的工作区中的查找是不是找到了

3)MOD(expN1,expN2)  &&计算expN1除以expN2的余数

clea

A=5

B=3

? mod(a,b)    &&结果为  2

? mod(-a,-b)   &&结果为-2

? mod(-a,b)   &&结果为  1

? mod(a,-b)   &&结果为-1

&&分析:先求|expN1|除以|expN2|的余数,即先各自取绝对值,再求余数,得到2

&&如expN1、expN2符号相同,则同时为正时得+2,同时为负时得-2,上例得知

&&如expN1、expN2符号不同,则2先取expN1的符号,再加上expN2。即第三个:-2+3=1,第四个:+2+(-3)=-1

? mod(13,5),mod(-13,-5),mod(-13,5),mod(13,-5)

&&结果为:   3  -3  2  -2

 

?mod(12.5,4)  &&结果为0.5  即直接求,不四舍五入12.5/4=3……0.5

?mod(-12.5,4)  &&结果为3.5  -12.5/4=  -0.5+4=3.5

?mod(12.5,-4)  &&结果为-3.5  12.5/-4= +0.5+(-4)=-3.5

4) SELECT()  && SELECT([ 0 | 1 | expC])

Sele 2

Use xs

?Sele()  &&显示当前工作区的区号,返回N型值    2

?sele(0) &&显示当前工作区的区号,返回N型值     2

?sele(1) &&显示未被使用的最大的工作区号,返回N型值32767

?sele(“xs”) &&显示别名为xs的工作区的区号,返回N型值   2

5)RECNO()   && RECNO([expN|expC])

Clea

Sele 1

Use xx   &&默认本表格有10条记录

Go 3

?recn()   &&返回当前指针所指向的记录的记录号   3

Skip -1

?recn()   &&返回当前指针所指向的记录的记录号   2

Sele 2

Use bf   &&默认本表格有10条记录

Go 5

?recn()   &&返回当前指针所指向的记录的记录号   5

Skip -2

?recn()   &&返回当前指针所指向的记录的记录号   3

?recn(1)  &&返回1号工作区上的记录指针         2

?recn("xx") &&返回别名为xs的工作上的记录指针  2

Sele 1

?recn()  &&返回当前指针所指向的记录的记录号   2

?recn(2) &&返回2号工作区上的记录指针         3

 

六、表达式

运算符:【相关资料

算术运算符、关系运算符、字符串连接运算符、逻辑运算符

表达式:通过运算符,将常量、变量、函数连接起来有意义的式子。

相关【表达式资料

优先级:

在混合运算的表达式中,各种运算符的优先级是:算术运算→字符运算→关系运算→逻辑运算

七、数据表操作

【环境创建代码】:【prg_20211112.prg下载

运行结果:

创建表及记录的代码如下:

 

*创建一个ksf表  ,此代码段,运用到了SQL相关语句,及字符型常量、数值型常量、日期型常量、逻辑型常量,大家找一找。
*结构为  姓名 c, 出生日期 D ,区县 c , 总分 N, 是否三好生 L
set safe off
crea table ksf (姓名 c(6),出生日期 D,区县 c(10),总分 N(5,2),是否三好生 L)
inser into ksf (姓名,出生日期,区县,总分,是否三好生) value ("张三",{^2003/08/08},"徐水区",378,.f.)
inser into ksf (姓名,出生日期,区县,总分,是否三好生) value ("李四",{^2004/04/18},"徐水区",313,.t.)
inser into ksf (姓名,出生日期,区县,总分,是否三好生) value ("王五",{^2005/03/20},"满城区",421,.t.)
inser into ksf (姓名,出生日期,区县,总分,是否三好生) value ("刘六",{^2001/02/15},"徐水区",378,.f.)
inser into ksf (姓名,出生日期,区县,总分,是否三好生) value ("马七",{^2002/01/13},"满城区",443,.t.)
inser into ksf (姓名,出生日期,区县,总分,是否三好生) value ("周八",{^2003/12/02},"徐水区",312,.t.)
inser into ksf (姓名,出生日期,区县,总分,是否三好生) value ("郑九",{^2004/11/01},"徐水区",353,.t.)
inser into ksf (姓名,出生日期,区县,总分,是否三好生) value ("乔十",{^2001/05/23},"莲池区",401,.t.)
inser into ksf (姓名,出生日期,区县,总分,是否三好生) value ("武一",{^2001/04/01},"徐水区",409,.t.)
inser into ksf (姓名,出生日期,区县,总分,是否三好生) value ("岳二",{^2002/03/20},"莲池区",308,.f.)
 
477

D:2021-11-11
T:8:08:00
IP:192.168.9.36



作者:
张顺海

2021.11.11 星期四

 

复习内容:

1.常量

2.变量

3.函数

4.表达式

5.SQL查询语句 : Selcet_SQL查询功能

复习重点:

数据及其运算

Select_SQL

相关知识要求:

常量的概念及基本用法

变量、函数的概念及基本用法

表达式的概念及基本用法

数据库中的常用命令

首页  前一页  后一页  末页
现在是第95页一共有99页