150 likes | 368 Views
关系数据库 FoxPro. 重点:第 2 章 ~ 第 11 章 第 2-5 章:交互方式的数据库操作 第 7-11 章:程序控制语句、程序方式的数据库操作 考试题型:填空、判断、程序填空、 读程序、编程序. 数据库基本概念. 三种常用的数据模型:层次、网状、关系 三种基本的关系操作:选择、投影、连接 关系 —— 二维表 —— .DBF. FoxPro 基本成分. 常量的种类、形式 变量:内存变量、字段变量 标准函数的使用 P.21-P.26
E N D
关系数据库 FoxPro • 重点:第2章~第11章 • 第2-5章:交互方式的数据库操作 • 第7-11章:程序控制语句、程序方式的数据库操作 • 考试题型:填空、判断、程序填空、 • 读程序、编程序
数据库基本概念 • 三种常用的数据模型:层次、网状、关系 • 三种基本的关系操作:选择、投影、连接 • 关系 —— 二维表 —— .DBF
FoxPro基本成分 • 常量的种类、形式 • 变量:内存变量、字段变量 • 标准函数的使用 P.21-P.26 字符函数:&字符变量 SUBSTR(X,N1,N2) LEN(X) AT(X,Y,[n]) 类型转换函数:CTOD() DTOC() ASC() STR(X [,N1][,N2]) 测试函数:BOF() EOF() FOUND() • 运算符和表达式值 P.26-P.28 关系表达式:比较大小 (N、C、D、L) X $ Y 逻辑表达式 字符表达式 (+、-) 日期表达式 (D±N D-D)
数据库操作命令 • 建库结构 CREATE • 追加数据 APPEND • 插入数据 INSERT • 修改库结构 MODI STRU • 修改库记录 BROWSER | REPLACE • 删除库记录 •逻辑删除 DELETE • 恢复记录 RECALL • 物理删除 PACK • 删除所有记录 ZAP
数据库操作命令 • 数据库的排序与索引 • 排序(物理排序): SORT • 索引(逻辑排序): INDEX
数据库操作命令 • 数据查询 : 定位+输出 • 顺序(条件)查询: LIST/DISP LOCATE -CONTINUE + DISP • 索引查询: FINE/SEEK + DISP
数据库的程序设计 • 顺序结构程序 • 输入语句 input accept wait @ … get •计算(处理) = 数据库操作命令 •输出语句 ? ?? @ … say … get list disp • 分支结构程序IF…ELSE…ENDIF DO CASE CASE P1 S1 …… [OTHERWISE Sn] ENDCASE • 循环结构程序 DO WHILE P FOR I=n1 TO n2 [STEP n3] …… …… ENDDO ENDFOR
数据库的程序设计 SET TALK OFF STORE 0 TO X,Y N=0 DO WHILE N<100 N=N+1 IF INT(N/2)<>N/2 X=X+N ELSE Y=Y+N ENDIF ENDDO ? X,Y SET TALK ON 例: 求1~100之间的偶数和奇数之和。 SET TALK OFF STORE 0 TO X,Y N=1 DO WHILE N<100 X=X+N Y=Y+N+1 N=N+2 ENDDO ? X,Y SET TALK ON SET TALK OFF STORE 0 TO X,Y FOR N=1 TO 100 STEP 2 X=X+N Y=Y+N+1 ENDDO ? X,Y SET TALK ON
数据库的程序设计 例: 求S=1!+2!+ … +N! (N由键盘输入) SET TALK OFF INPUT “输入N” TO N T=1 FOR I=1 TO N T=T*I S=S+T ENDFOR ?”S=”,S SET TALK ON
数据库的程序设计 例:读程序,简述程序功能 SET TALK OFF USE STUDENT INDEX XH_I DO WHILE .T. ACCEPT “请输入学号:" TO XH IF XH=‘#’ EXIT ENDIF SEEK XH IF FOUND() ?学号,姓名,性别 ELSE ?“无此学号!" ENDIF ENDDO USE SET TALK ON
数据库的程序设计 例:读程序,回答问题 SET TALK OFF N =AT (“人民”,“中华人民共和国”) P=SUBSTR(“SRCXJSDY”,N,2)+“.DBF” USE &P 问题: GO N (1)第二条命令执行后,N的值为: INSERT BLANK (2)此程序段的功能是: USE RETURN
子程序、过程和自定义函数 • 子程序、过程和自定义函数:是功能相对独立的程序段;可以与主程序放在一个.PRG文件种,也可以是一个单独的.PRG文件 • 过程与过程文件 PROCEDURE 过程名 …… RETURN • 调用过程: DO 过程名 [ WITH 参数表 ] • 数据传递:变量属性、参数传递
A1= 10 A2= 20 A3= 43 A1,A2=43 30 A1,A2,A3=51 52 43 A1= 10 A2= 20 A3= 51 子程序、过程和自定义函数 *SUB.PRG PROCEDURE EE1 PRIVATE A1,A2 A1=41 A2=42 A3=43 RETURN PROCEDURE EE2 PARAMETER A1,A2 ?”A1,A2=”,A1,A2 A1=51 A2=52 A3=53 DO EE1 ?”A1,A2,A3=”,A1,A2,A3 RETURN 例:P.131 SET PROC TO SUB A1=10 A2=20 A3=30 DO EE1 ?”A1=”,A1 ?”A2=”,A2 ?”A3=”,A3 DO EE2 WITH A3,A1+A2 ?”A1=”,A1 ?”A2=”,A2 ?”A3=”,A3 RETURN
编程序: 1、计算: S=X+X/3!+X/5!+......+X/(2*N-1)! 。 X、N由键盘输入。 2、分别用IF … ELSE … ENDIF语句和DO CASE … ENDCASE语句 求分段函数的值 3、设有数据库“考分.DBF”,其中字段有:(考号N,姓名 C,性别 C,年龄 N, 优秀生 C,高考成绩 N ) 若考生是“省优秀”则“高考成绩”加20分,若考生是“市优秀”则“高考成绩” 加10分 。请编程实现。 4、对以上的库文件, 编程序查找并显示最高总成绩和获得该最高总成绩的人数, 并且打印这些学生的姓名。 5、编程:输入考号,显示“best!”(高考成绩700), 显示“better!”(600 ≤高考成绩<700), 否则显示“come on!”; 若库中查无此学号,则显示“not found!”。 6、 打印三角形
设有数据库“考分.DBF”,其中字段有:(考号N,姓名 C,性别 C,年龄 N, 优秀生 C,高考成绩 N ) 若考生是“省优秀生”则“高考成绩”加20分,若考生是“市优秀生”则“高考成绩” 加10分 。请编程实现。 set talk off use 考分 do while not eof() do case case 优秀生=“省优秀生” repl 高考成绩 with 高考成绩+20 case 优秀生=“市优秀” repl 高考成绩 with 高考成绩+10 endcase skip enddo use retu set talk off use 考分 scan do case case 优秀生=“省优秀生” repl 高考成绩 with 高考成绩+20 case 优秀生=“市优秀” repl 高考成绩 with 高考成绩+10 endcase endscan use retu