利用表设计器在考生文件夹下建立表table3,表结构如下: 学号 字符型(10) 姓名 字符型(6) 课程名 字符型(8) 分数 数值型(5,1) 然后编写程序。prog1.prg,在xues

admin2017-02-28  37

问题 利用表设计器在考生文件夹下建立表table3,表结构如下:
    学号    字符型(10)
    姓名    字符型(6)
    课程名    字符型(8)
    分数    数值型(5,1)
    然后编写程序。prog1.prg,在xuesheng表和chengji表中查询所有成绩不及格(分数小于60)的学生信息(学号、姓名、课程名和分数),并把这些数据保存到表table3中(若一个学生有多门课程不及格,在表table3中就会有多条记录)。要求查询结果按分数升序排列,分数相同则按学号降序排列。
    要求:在程序中用SET RELATION命令建立chengji表和xuesheng表之间的关联(同时用INDEX命令建立相关的索引),并通过DO WHILE循环语句实现规定的功能。最后运行程序。

选项

答案步骤1:通过前面所学的知识,按照题目的要求新建一张表table3。 步骤2:新建程序prog1.pfg,输入下列命令语句,并运行该程序。 *******progl.prg中的代码******* &&关闭程序运算的显示过程 SET TALK OFF &&打开数据库 OPEN DATABASE cj_m &&选择查询字段,制定字段来源,设置查询条件,将查询结果存储列表temp中 SELECT * FROM table3 WHERE.F.INTO TABLE temp SELECT 1 &&打开xuesheng表 USE xuesheng &&建立索引 INDEX ON学号TAG学号 SELECT 2 &&打开chengji表 USE chengji &&建立索引 INDEX ON学号TAG学号 SET RELATION TO学号INTO xuesheng GO TOP &&循环直至遍历所有记录 DO WHILE.NOT.EOF() &&先进行判断,满足条件就向temp表中插入数据 IF chengji.数学<60 INSERT INTO temp Values(xuesheng.学号。xuesheng.姓名,‘数学’,chengji.数学) ENDIF &&先进行判断,满足条件就向temp表中插入数据 IF chengji.英语<60 INSERT INTO temp Values(xuesheng.学号,xuesheng.姓名,‘英语’,chengji.英语) (ENDIF &&先进行判断,满足条件就向temp表中插入数据 (IF chengji.信息技术<60 INSERT INTO temp Values(xuesheng.学号。xuesheng.姓名.‘信息技术’,chengji.信息技术) (ENDDO &&选择查询字段.指定字段来源,查询结果按分数升序排列,分数相同按学号升序排列,将查询结果存储到AR-RAY arr中 SELECT*FROM temp ORDER BY分数,学号DESC INTO ARRAY arr &&将ARRAY arr中数据插入table3中 INSERT INTO table3 FROM ARRAY arr &&关闭数据库 CLOSE DATABASE 关闭表 CLOSE TABLES ALL 删除temp DROP TABLE temp &&关闭程序运算的显示过程 SET TALK ON &&返回 RETURN ***********************************

解析 利用建立索引的命令来新建索引,通过循环语句的使用来判断满足条件的数据,再使用IF语句进行分段节选,将符合要求的信息进行保存,最后再将查询出的结果进行排序和保存,删除中间表。
转载请注明原文地址:https://kaotiyun.com/show/xcIp777K
0

最新回复(0)