ImageVerifierCode 换一换
格式:PPT , 页数:40 ,大小:336KB ,
资源ID:7948641      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-7948641.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(VFP 课件 第11部分(多表程序及表的多重循环)zxl.ppt)为本站会员(wspkg9802)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

VFP 课件 第11部分(多表程序及表的多重循环)zxl.ppt

1、Visual Foxpro 6.0,程序设计基础,重庆工商大学计算机学院计算机基础教研室,作业中的问题,、建立关联的步骤 、上机成绩=“缺考” or “不及格” 、replace all成绩合格否 with “T”;for 笔试成绩=60 and 上机成绩=优秀 or 上机成绩=及格,第十一讲 多表程序及表的多重循环,多表程序 表的多重循环,内容提要,多表程序,例(实验指导书P35):根据如下两个数据表,分别设计程序完成以下功能。,输入课程名,查询该课程授课教师姓名和职称; 统计每位教师总的课时费。,kc.dbf,js.dbf,方法一: clear accept“请输入查询课程名称:“ to

2、kcm ?“课程名:“+kcm select 姓名 as 教师姓名,职称 from js,kc ;where 职工号=授课教师 and 课程名=kcm to screen return,方法二: clear set safety off sele 1 use js index on 职工号 tag zgh sele 2 use kc set rela to 授课教师 into js accept“请输入查询课程名称:“ to kcm ?“课程名:“+kcm ?“教师姓名 职称“ scan for 课程名=kcm?a.姓名,space(4),a.职称 endscan close all set

3、safety on return, 方法一: clear sele 姓名 as 教师姓名,sum(学时数)*单位课时费 as 课时费 ;from js inner join kc on 职工号=授课教师;group by 授课教师 return,方法二: clear set safety off sele 1 use kc index on 授课教师 tag skjs total on 授课教师 to zks use zks index on 授课教师 to skjs sele 2 use js set rela to 职工号 into a ?“教师姓名 课时费“ scan ?姓名,a.学时数

4、*单位课时费 endscan close all set safety on return,例:有一职工代码表(ZD.DBF),人事信息表(RS.DBF),ZD.DBF 代码 职称 013 助理工程师 015 技术工人 002 工程师 001 高工,RS.DBF编号 姓名 性别 职称 基本工资 工龄工资 扣款 实发工资1041 赵娟 女 013 113.00 13.00 25.705101 骆艺 男 002 150.00 21.00 31.511030 沈峥 女 015 87.00 5.00 11.004103 刘芳 女 001 180.00 25.00 45.605130 杨山 男 002

5、150.00 15.00 24.001025 刘柳 男 013 113.00 8.00 15.00,编一个程序,完成以下任务: 计算实发工资(实发工资=基本工资+工龄工资-扣款)并填入RS.DBF中。 统计各类职称的基本工资,工龄工资,扣款,实发工资总数。 显示统计结果,其中统计表中“高工,工程师,助理工程师,技术工人”等职称名字必须通过职工代码表得到,并以代码的索引顺序显示,其格式如下:基本工资 工龄工资 扣款 实发工资高工 . .工程师 . . . .合计 . .,clea clea all set talk off set safe off sele 1 use rs replace a

6、ll 实发工资 with 基本工资+工龄工资-扣款 inde on 职称 tag zcdm total on 职称 to hz use hz inde on 职称 tag zcdm sele 2 use zd set rela to 代码 into hz,该程序涉及到几个表,?,RS.DBF HZ.DBF ZD.DBF,一对一关系,汇总,?“ 基本工资 工龄工资 扣款 实发工资“ scan?职称,hz.基本工资,hz.工龄工资,hz.扣款,hz.实发工资 endscan?“合计“,jb,gl,kk,sf clos all set talk on set safe on retu,store 0

7、 to jb,gl,kk,sf,sum hz.基本工资,hz.工龄工资,hz.扣款,hz. 实发工资 to jb,gl,kk,sf,jb=jb+ hz.基本工资 gl=gl+ hz.工龄工资 kk=kk+ hz.扣款 sf=sf+ hz.实发工资,inde on 代码 tag dm &按代码升序排列,例:设有学生档案表、成绩表和学生课程表的表结构如下: 学生档案表(xsda.dbf):学号(C,10),姓名(C,8),性别(C,2),入学总分(N(5,1)。 学生成绩表(xscj.dbf):学号(C,10)(有重复值),课程号(C,5)(有重复值),学期(C,1),考试成绩(N(5,1)。 学

8、生课程表(xskc.dbf):课程号(C,5),课程名(C,14)。 按如下要求编写一个程序:,根据以上3个表,显示所有学生各门课程的学号、姓名、课程名、考试成绩。 通过键盘任意输入一个课程号和学期,计算并显示该门课程该学期的平均分、最高分和最低分,显示该门课程该学期所有需要参加补考的学生的补考通知单,其格式如下:补考通知单XXX同学:第X学期你的XXXXXX课程考试不及格,请利用假期看书复习,作好补考准备。 注意:补考通知单中的“X”需用数据表中的相应数据填充。,clear clear all set safe off set talk off select 1 use xsda inde

9、on 学号 tag xh select 2 use xskc inde on 课程号 tag kch select 3 use xscj set relation to 学号 into xsda set relation to 课程号 into xskc additive,?“学号 姓名 课程名 考试成绩“ scan ?学号,xsda.姓名,xskc.课程名,考试成绩 endscan accept “请输入课程号:“ to kch accept “请输入学期:“ to xq?“该门课程该学期的平均分为:“,pjf ?“该门课程该学期的最高分为:“,zgf ?“该门课程该学期的最低分为:“,zd

10、f,calculate avg(考试成绩),max(考试成绩), min(考试成绩) to pjf,zgf,zdf for 课程号=kch and 学期=xq,scan for 成绩60 and 课程号=kch and 学期=xq?“ 补考通知单“?xsda.姓名+“同学:“?“ 第“+学期+“学期你的“+xskc.课程名+“课程考试不及格,请利用假“?“期看书复习,作好补考准备。“ endscan close all set talk on set safe on return,表的双重循环,例:利用学生.dbf和选课.dbf,通过反复输入学生的学号(输入回车键退出),查询学生的姓名、籍贯、

11、课程号以及成绩情况。,方法1: set safety off sele 1 use 学生 alias xs index on 学号 tag xh sele 2 use 选课 set relation to 学号 into xs,do while .t. &外循环accept “请输入学生的学号:“ to xh? “姓名 专业班级 课程号 成绩“scan for 学号=xh &内循环?xs.姓名,xs.籍贯,课程号,成绩endscan enddo close all set safety on return,if len(alltrim(xh)=0exit endif,If alltrim(xh

12、)=“#”,方法2: clear all do while .t.accept “请输入学生的学号:“ to xhif len(alltrim(xh)=0exitendif select 姓名,籍贯,课程号,成绩 from 选课 xk,学生 xs where xs.学号=xh and xk.学号=xs.学号 to screen enddo ,学生情况表ST.DBF学号 姓名 性别 总成绩KI01 王子仪 女 409KI02 李丽萍 女 512KI03 张雨 男 390KI04 马思成 男 400KI05 陈艳 女 395,家庭情况表FAM.DBF学号 亲属姓名 关系 部门KI01 王松 父亲

13、DE3KI01 刘利 母亲 DE1KI02 李永 父亲 DE1KI03 张永强 父亲 DE5KI03 赵雯 母亲 DE7KI03 张明 哥哥 DE3KI04 李翠花 母亲 DE3KI05 陈兴平 父亲 DE5KI05 陈大伟 爷爷 DE2,例(实验指导书P40) :现有两个表文件,表结构及部分记录如下,编写程序,反复输入部门,查询亲属在该部门工作的学生名单(即按亲属工作部门查询学生)。要求输出式如下(假设输入的部门为DE3):DE3 部 门学生姓名 亲属关系 亲属姓名王子仪 父亲 王松张明 哥哥 张明马思成 母亲 李翠花,方法一: clear set talk off sele 1 use s

14、t inde on 学号 tag xh sele 2 use fam set rela to 学号 into a,yn=“y“ do while uppe(yn)=“Y“ accept “请输入部门:“ to bmclea?space(15)+bm+“部门“?“学生姓名 亲属关系 亲属名单“scan for 部门=bm?a.姓名+“ “+关系+“ “+亲属姓名endswait “是否还要继续?(y/n)“ to yn enddo close all set talk on return,方法二: CLEAR yn=“y“ do while upper(yn)=“Y“accept “请输入部门:

15、“ to bmclea?space(15)+bm+“部门“select stu.姓名 as 学生姓名,关系 as 亲属关系,亲属姓名 as 亲属名单 from stu,fam ; where stu.学号=fam.学号 and 部门=bm to screenwait “是否还要继续?(y/n)“ to yn enddo retu,(0801)设有一学生成绩表STU.DBF对“编号”已经建立复合索引。其内容如下: 记录号 编号 高数 外语 计算机 1 0701120 90 98 78 2 0701128 85 76 81 3 0702003 77 87 67 4 0702010 50 60 87

16、 5 0710010 65 73 55 6 0713108 76 80 90 学生编号的含义是:1-2位代表年级,3-4位代表专业,最后3位代表一个专业全部同学的顺序号。以下程序的功能是分组汇总各专业同学各门功课的总成绩和三门课程的总成绩,按顺序输出它们。请填空完成。,SET TALK OFF USE STU SET ORDER TO ? “专业编号 高数 外语 计算机 总分“ DO WHILE not eof() STORE 0 TO K1,K2,K3 BH=substr(编号,3,2) DO WHILE substr(编号,3,2)=BH AND K1=K1+高数K2=K2+外语K3=K3

17、+计算机SKIP ENDDO ? ENDDO USE,tag 编号,BH,K1,K2,K3,K1+K2+K3,not eof(),(0802)设有职工表和奖金表的表结构如下: 职工表(zg.dbf):职工号(C,7)(无重复值),姓名(C,6),工作日期(D)。 奖金表(jj.dbf):职工号(C,7)(无重复值),部门号(C,4)(有重复值),奖金(N,5,1)。 按如下要求编写一个程序: 根据以上两个表,可以通过键盘任意输入一个部门号(按回车键结束),按奖金从高到低显示该部门的职工姓名、工作年限(=系统当前日期的年份值-工作日期的年份值)及奖金,显示格式如下:职工姓名 工作年限 奖金 ,解

18、法一: clear clear all set safe off select 1 use zg inde on 职工号 tag xh (2分) select 2 use jj set relation to 职工号 into zg inde on 奖金 tag jj desc (1分) do while .t. accept “输入部门号:“ to bmh if len(allt(bmh)=0 (3分)exitendif ?“ 职工姓名 工作年限 奖金“,Scan for 部门号=bmh (4分)?zg.姓名, year(date()-year(zg.工作日期),奖金 Endscan End

19、do close all set safe on return,解法二: clear do while .t. accept “输入部门号:“ to bmh (3分)if len(allt(bmh)=0 exitendif select 姓名,year(date()-year(zg.工作日期) as工作年限,奖金 from zg,jj; (3分)where zg.职工号=jj.职工号 and 部门号=bmh; (5分) order by 奖金 desc (7分) Enddo,(0702)已知两个数据表:学生档案表XSDA.dbf,有学号、姓名、专业班级(均为字符型)等字段和学生成绩表XSCJ.

20、dbf,有学号(有重复值)、课程名、成绩(数值型)等字段。 编写一程序,通过反复输入学生的学号(输入回车键退出),查询学生的姓名,专业班级,课程名以及成绩情况。,方法1:利用VFP语言实现 clear set safety off clear all sele 1 use XSDA index on 学号 tag xh sele 2 use XSCJ set relation to 学号 into xsda,do while .T. accept “请输入学生的学号:“ to xhif len(alltrim(xh)=0exitendif?“姓名 专业班级 课程名 成绩“scan for 学号

21、=xh ?xsda.姓名,xsda.专业班级,课程名,成绩endscan enddo close all set safety on return,方法2:利用select-sql语言实现 Close all clear Do while .T. accept “请输入学生的学号:“ to xhif len(alltrim(xh)=0exitendif Select 姓名,专业班级,课程名,成绩; from xscj,xsda where xsda.学号=xh and xscj.学号=xsda.学号 to screen enddo,(0701)、有营业员数据表文件YYY.DBF和日销售数据表文

22、件RXS.DBF*YYY.DBF 营业员代码 姓名 性别 101 天涯 女 102 海角 男 103 风声 男 水起 女 *RXS.DBF 营业员代码 品名 数量 单价 营业额101 电视 3 1230.40 0000.00102 电话 4 223.00 0000.00101 电扇 5 334.00 0000.00103 电话 3 223.00 0000.00102 电视 1 1230.40 0000.00,编程要求:(1)计算出RXS.DBF中的营业额字段的值。注:营业额=数量*单价(2)根据用户输入的营业员代码查询某个营业员的全天营业额,按如下格式显示:代码:101姓名:天涯 性别: 女品

23、名 营业额电视 3691.20电扇 1670.00营业额: 5361.20,clear select 1 use rxs replace all 营业额 with 数量*单价 select 2 use yyy index on 营业员代码 tag dm select rxs set relation to 营业员代码 into yyy accept “输入营业员代码:” to dm ?”代码:”+dm locate for 营业员代码=dm ?“姓名:”+yyy.姓名+“ 性别:”+ yyy.性别 List 品名,营业额 for 营业员代码=dm off sum 营业额 to x1 for 营业员代码=dm ?” 营业额:”,x1 Close all return,第11次上机 准备,熟悉vfp环境,默认路径的设置 实验15 任务1(1)(2)(3)(下周周末提交) 实验15 任务2(课外自己完成,老师给参考程序),

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报