![[教育学]数据库基础知识.ppt_第1页](http://file.renrendoc.com/FileRoot1/2018-12/23/4b065333-a655-49c4-8411-698ceeba5210/4b065333-a655-49c4-8411-698ceeba52101.gif)
![[教育学]数据库基础知识.ppt_第2页](http://file.renrendoc.com/FileRoot1/2018-12/23/4b065333-a655-49c4-8411-698ceeba5210/4b065333-a655-49c4-8411-698ceeba52102.gif)
![[教育学]数据库基础知识.ppt_第3页](http://file.renrendoc.com/FileRoot1/2018-12/23/4b065333-a655-49c4-8411-698ceeba5210/4b065333-a655-49c4-8411-698ceeba52103.gif)
![[教育学]数据库基础知识.ppt_第4页](http://file.renrendoc.com/FileRoot1/2018-12/23/4b065333-a655-49c4-8411-698ceeba5210/4b065333-a655-49c4-8411-698ceeba52104.gif)
![[教育学]数据库基础知识.ppt_第5页](http://file.renrendoc.com/FileRoot1/2018-12/23/4b065333-a655-49c4-8411-698ceeba5210/4b065333-a655-49c4-8411-698ceeba52105.gif)
已阅读5页,还剩49页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库及其应用 第 6 章 结构化程序设计 第 6 章 结构化程序设计 学习目标与要求 通过本章学习,应达到以下要求: 1、理解程序的概念,了解 VFP程序的建立、编辑与运行,掌 握程序调试的基本方法; 2、理解程序的基本结构,了解结构化程序设计含义及基本 方法,掌握三种结构化程序的编制方法和步骤; 3、理解过程、自定义函数、全局变量、参数以及参数传递 的概念和作用,掌握过程的调用方法及过程调用过程中的参 数传递; 4、能够将数据库操作与程序设计结合,在程序中实现简单 的数据库操作。 什么是程序设计? 程序是 一种把程序设计语言提供的具有各种功 能的命令语句,根据算法的需要和一定的语法 规则组织起来的 语句集合 ,计算机执行这个语 句集合就能得到预期的结果。 所以 ,程序设计就是把语句组织成集合的过程 ,简称编程。 与在命令窗口逐条输入命令相比,采用程序方式有如下好处: 1、可以利用编辑器,方便地输入、修改和保存程序。 2、可以用多种方式、多次运行程序。 3、可以在一个程序中调用另一个程序。 引例:编写程序,查询某个学生的的专业。 程序如下: *该程序用来查询湖北学生王远雄是哪个专业的学生。 set talk off SET DEFAULT TO E:学生管理 open database 学生管理 select 姓名 ,专业名称 ,籍贯 from专业 JOIN 学生 ON 专业 .专业 编号 =学生 .专业编号 where 籍贯 =“湖北省 ” AND 姓名 =“王远雄 ” FROM 专业 JOIN 学生 ON 专 业 .专业编号 =学生 .专业编号 ; JOIN 成绩 ON 学生 .学号 = 成绩 .学号 ; GROUP BY 学生 .学号 ,姓名 ,专业 ; ORDER BY 平均成绩 DESC CLOSE DATABASE RETURN 视图的方法: SET DEFAULT TO E:学生管理 OPEN DATABASE 学生管理 SELECT 学号 ,姓名 ,平均成绩 ; FROM PJF ; ORDER BY 平均成绩 CLOSE DATABASE RETURN 如果建立了视图 PJF,包含本题 所需要的信息,所以可以直接使 用这个视图完成这个查询。 课堂练习 编写通用程序。 根据籍贯和姓名查询某个学生是哪 个专业的学生。 set talk off SET DEFAULT TO E:学生管理 open database 学生管理 select 姓名 ,专业名称 ,籍贯 from 专业 JOIN 学生 ON 专 业 .专业编号 =学生 .专业编号 ; where 籍贯 = AND 姓名 = close database set talk on SET DEFAULT TO return ACCEPT “请输入姓名 “ TO XM ACCEPT “请输入籍贯 “ TO JG JG XM 思考 :能否用 INPUT 语句接收输入信息 ? 6.3 分支结构程序设计 程序的流程需要根据条件的结果确定。 条件 语句块 1 语句块 2 T F IF语句 IF 语句块 1 ELSE 语句块 2 ENDIF 例 1:查询某学生入学成绩是否在 600分以上 SET DEFAULT TO E:学生管理 open database 学生管理 USE 学生 CJ=“入学成绩低于 600 分 “ ACCEPT “请输入学号 : “ TO XH LOCATE FOR 学号 =XH IF 入学成绩 =600 CJ=“入学成绩 600 分以上 “ ENDIF ? CJ USE Close database return 用选择分支语句 , 重新编写上例程序。 USE 学生 ACCEPT “学号 : “ TO XH LOCATE FOR 学号 =XH IF 入学成绩 =600 ELSE ENDIF USE ? “该学生入学成绩 600 分以上 “ ? “该学生入学成绩低于 600 分 “ 例 2:键盘输入教师姓名,查询教师信息以及所在学院的名称。 *检索教师信息程序 CLEAR SET DEFAULT TO E:学生管理 OPEN DATABASE 学生管理 SELECT 0 USE 教师 ACCEPT “输入教师姓名 :” TO XM LOCATE FOR 姓名 =XM FROM 学生 JOIN 成绩 ON 学 生 .学号 =成绩 .学号 ; WHERE 成绩 =90; INTO CURSOR RC ?“90分以上的人次: “+STR(RECCOUNT(),3) +“人 “ RETURN 例 2思考 :查询成绩超过 90分的学生信息。 SELECT 学生 .学号 ,姓名 ,专业名称 ,课程名 ,成绩 ; FROM 专业 JOIN 学生 on 专业 .专业编号 =学生 . 专业编号 ; JOIN 成绩 ON 学生 .学号 =成绩 .学号 ; join 课程 on 课程 .课程编号 =成绩 .课程编号 ; WHERE 成绩 =90 RETURN CLEAR SET DEFAULT TO e:学生管理 OPEN DATABASE 学生管理 6.4 循环结构程序设计 表扫描循环 SCAN FOR |WHILE LOOP EXIT ENDSCAN 逻辑表达式的值 =? 循 环 体 LOOP EXIT ENDSCAN ENDSCAN后 面的语句 .T. .F. 例 3:统计 “成绩 ”表中成绩超过 90分的人次。 CLEAR SET DEFAULT TO E:学生管 OPEN DATABASE 学生管理 CLOSE TABLES SELECT 0 USE 成绩 S=0 DO WHILE .NOT. EOF() IF 成绩 =90 S=S+1 ENDIF ENDDO ? “90分以上的人次 :“,S USE RETURN CLEAR SET DEFAULT TO E:学生管 OPEN DATABASE 学生管理 CLOSE TABLES SELECT 0 USE 成绩 S=0 SCAN FOR 成绩 =90 S=S+1 ENDSCAN ? “90分以上的人次 :“,S USE RETURN SKIP 计数循环 (FOR循环 ) FOR I=C TO Z STEP B LOOP EXIT ENDFOR C:初始值 Z:终值 B:步长值 I:计数变 量 6.4 循环结构程序设计 例 4: 计算 1+2+3+100 的和 。 S=0 N=1 FOR I=1 TO 100 S=S+N N=N+1 endfor ? “1+2+3+100=“,S 6.4 循环结构程序设计 三种循环的比较: 1、若事先知道循环次数,可以使用 FOR循环。 2、若事先不知道循环次数,只知道在某一条件满足时结 束循环,可以使用 DO WHERE 循环。 3、 FOR和 SCAN循环都可以用 DO WHERE 循环实现。 4、 DO WHER 循环和 FOR循环可以用于对表的循环处理 ,也可以用于其他循环处理,而 SCAN循环只能用于对表 的处理。 数据库程序设计的复杂性 1、数据表打开后,其字段变量就是一个多值变量,它随着 记录指针的变化而变化其值,为了取得某一个字段的值, 必须移动指针到该记录处; 2、数据表的记录数在数据表打开之前是不能确定的,所以 ,在表文件打开后,可以用一个求记录数的函数 RECCOUNT()来求出,才能控制循环次数。也可以用 EOF()和 BOF()来控制循环次数; 数据库程序设计的复杂性 3、控制循环次数命令与移动记录指针命令是两个独立的 命令,它们之间没有必然的联系,必须根据实际情况使 它们相互配合,才能达到数据处理的目的 ; 4、记录指针从首记录移动到尾记录之后,不能自动恢复 到首记录,必须用 GO TOP命令把它移动到首记录,以便 下一次处理。 课堂练习 :下面是按学号查询学生情况的程序 ,并能多次查询 clear open database E:学生管理 学生管理 use 学生 do while .t. accept “请输入学生学号: “ locate for 学号 =xh IF EMPTY(XH) =messagebox(“查询结束! “,0+48) EXIT ENDIF if found() display ? “没有该学生! “ endif wait “还继续检索吗 (Y/N)? “ to yn window if lower(yn)=“n“ =messagebox(“谢谢使 用本系统! “,0+48) endif ENDDO close database set talk on return to xh else exit 6. 5 数组及其应用 概念 :用一个名称来代表若干个内存变量 ,变量的引用通过在 这组数中的位置序号实现 ; 数组使用前需先定义 : DIMENSION 数组名 (下标 ,下标 2) 数组定义时的每一个数组元素的初值为 .F.; 数组的引用 :数组名 (下标序号 ) 数组可以整体赋值 := 此外 ,只能通过数组元素 (下标变量 )来使用 . 数组与表之间的数据交换 1.将 表 中当前记录的字段值赋予一个数组或者同名的内存变量 格式: SCATTER FIELDS TO | MEMvar 例 1:比较下面命令结果。 USE 学生 SCATTER memvar USE 学生 SCATTER to aa 建立内 存变量 数组与表之间的数据交换 2、将与表中字段同名的内存变量或者一个数组的值传送给当前 记录 格式: GATHER FROM | MEMvar FIELDS 例 2:观察执行结果。 DIMENSION bb(3) bb(1)=“0611010006“ bb(2)=“刘一 “ bb(3)=“男 “ GO 2 GATHER FROM BB 数组与表之间的数据交换 数组与表之间进行数据传递时,要注意以下问题: 1、两者之间的传送顺序 2、关于数据类型的规定 3、两者之间个数不匹配时,按系统的有关规定。 4、两者之间的传送是针对当前记录进行操作的。 数组与表之间的数据交换 例题:用 SCATTER命令和 GATHER命令实现 “学生 ”表中首记 录与尾记录之间的互换 (表中有 6个字段 )。 Dimension t1(6) Dimension t2(6) Open database 教学管理 Use 学生 Scatter to t1 过程不返回值; 2.调用方式 :函数调用时实参放在括号中;过程调用时实参 放在 WITH子句中。 自定义函数的格式 : FUNCTION 函数名 PARAMETERS 形式参数表 RETURN 6.6.2 过程与自定义函数的用法 3、 过程调用中的参数传递 过程 (子程序 )仍是一段程序,也是由三种基本结构组成。但它 有自己的特点, 主要体现在主程序与过程之间的数据交换方 面。 以工厂加工产品为例: 工厂 (主程序 ) 买进 原料 (原始数据 ),放入原料库 (原始数据存储区 ) 命令 第 1车间 (过 程 1)取来加 工成半成品 (中间数据 ) 存入半成品库 ( 中间数据 存储区 ) 命令第 n车间 (过程n)取来加工成 成品 (结果数 据存储区 ) 出售 (结 果数据 输出 ) 带参数的调用语句 : DO With 参数语句 : PARAMETERS 以上两条语句必须配合使用 , 前一条放在主程序中 , 后一 条放在被调用的过程中。 参数传递方式:值传递 (传值方式 )和引用传递 (传址方式 ) 。 3、过程调用中的参数传递 主程序调用本过程时传送给 本过程的变量名或数组名。 传送给子过程的变量、 常量、表达式、数组。 3、过程调用中的参数传递 值传递 (传值方式 ): 指调用程序将实际参数的备份传给 形参,传递完毕,实参与形参就没有关系了。 引用传递 (传址方式 ): 指调用程序将实际参数在内存中 的地址传给被调用的过程,由形式参数接收,而形参也 使用该地址。 在实参为变量时,可以是引用传递;且为缺省传递方式 ;其它方式的实参为值传递。 *过程: YMJ.prg PARAMETERS R,S S=3.1416*R*R RETURN *主程序 : Y=0 INPUT “半径 =“ TO X DO YMJ WITH ,Y ? “园面积 =“+str(Y,5,2) 3、过程调用中的参数传递 输入 5,结果: 园面积 = 78.54 例 1: 输入半径,计算圆面积。 引用传递过程 (传址方式 ): 在调用过程时 , 将 DO 语句 中的实参数值传递给 PARAMETERS 语句中的形参 ; 调 用终止时 , 返回对应参数的计算值。 3、过程调用中的参数传递 例 2:给出程序执行结果。 *MAIN.PRG SET TALK OFF A=5 B=10 DO SUB WITH 2*A,B ? “A=”,A, “B=”,B SET TALK ON RETURN *SUB.PRG PARAMETRS X,Y Y=X*Y ?“Y=”+STR(Y,3) RETURN 结果为 : 传值方式 传址方式 Y=100 A=5 B=100 3、过程调用中的参数传递 例 3:给出程序执行结果。 *MAIN.PRG SET TALK OFF X=10 Y=5 SET PROC TO PROC1 DO P1 WITH X,Y ?X,Y X=10 Y=5 DO P2 WITH X,Y ?X,Y X=10 Y=5 DO P1 WITH X+5,Y ?X,Y SET PROC TO RETURN *PROC1.PRG PROCEDURE P1 PARAMETRS S1,S2 S1=S1*5 S2=S2+5 RETURN PROCEDURE P2 PARAMETRS X,Y X=5 Y=X+20 RETURN 结果为 : 50 10 5 25 15 10 6.6.2 过程与自定义函数的用法 过程的嵌套 VFP中允许执行一个过程时 , 调用第二个过程 ; 执行第二 个过程时 , 调用第三个过程。这样一个接一个地调用下去 ,称 为过程嵌套调用。系统允许这种嵌套最多 126层。 主程序 过程 1 过程 2 . . . DO 过程 1 DO 过程 2 DO 过程 3 . . . . . . . . . RETURN RETURN RETURN 课堂练习:写出下面程序执行结果。 *MAIN.PRG X1=1 X2=3 DO P1 WITH X1,X2 ?”X1=“+STR(X1,1),”X2=“+STR(X2,1) X1=2 X2=4 DO P1 WITH X1,X1+X2 ?”X1=“+STR(X1,1),”X2=“+STR(X2,1) RETURN *P1.PRG PARAMETRS W1,W2 W1= W1 *2 W2= W2 *2 RETURN 6.6.3 内存变量的作用域 全局变量 在所有程序模块中都可以使用的变量。 在命令窗口中建立或用 PUBLIC语句定义; 私有变量 在建立它的过程及所调用的下层模块中有效, 不能被更高层的程序模块访问。当他们所属的程序模块停止运 行时,定义的变量将被释放。 语句格式: PRIVATE 局部变量 (本地变量 ) 只能在创建它们的程序模块中使用。 当他们所属的程序模块停止运行时,定义的变量将被释放。 语句格式: LOCAL 例 1:写出程序执行结果 *主程序 X=1 Y=2 Z=0 SET PROCEDURE TO E: 程序 GC DO SUB1 M=X+Y+Z SET PROCEDURE TO ?M *过程文件 (GC.PRG) PROCEDURE SUB1 PRIVATE X,Y,M X=10 Y=20 Z=30 M=X+Y+Z ?M RETURN 执行结果: 60 33 打开过程文件 例 2:写出程序执行结果 主程序 :例 1.prg set talk off store 5 to a,b,c do E:学生管理 程序 SUB1 ? a,b,c ? l,m,n set talk on return 过程: SUB1.prg private x,y,z public l,m store 2 to x,y,z store 6 to l,m,n l=x+y x=y+z y=m+n ?x,y,z return 思考:该语句 放在主程序中 ,运行结果是 什么? 运行结果: 4 1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年AI编程师专业技能提升指南与模拟考试题目
- 2025年铜压延加工材项目建议书
- 2025年办公商业空间设计合作协议书
- 2025年浮子水管倾斜仪项目合作计划书
- 抗震支架讲解课件
- 第3章 位置与坐标 单元测试(含答案)北师大版(2024)数学八年级上 册
- 小学化学知识题目及答案
- 2025年涡轮螺桨发动机合作协议书
- 抗洪抢险知识培训课件
- 减数分裂题库及答案
- 2025年农村应急广播系统使用与维护培训模拟题集及解析答案
- 班级日常管理规范及实施方案
- 田径短跑教学课件
- 2025-2026学年教科版(2024)小学体育与健康二年级全一册教学计划及进度表(第一学期)
- 2025年彩票技术管理员招聘笔试模拟题
- 员工思想培训课件内容
- 迷彩九月+启航青春+课件-2025-2026学年高一上学期开学军训动员主题班会
- 2025年暑期教师研修心得-研修蓄力笃行致远
- 2025秋人教版初中数学九年级上册教学计划及进度表
- 2025年中国烟花爆竹协会烟花工艺师认证考试专项练习含答案
- 2025年政府会计准则制度实施能力考试(气象事业单位)高频错题及答案
评论
0/150
提交评论