四、程序设计(每小题5分,共25分)
34.数据库文件stud1.dbf的字段有学号、姓名、性别、专业,数据库文件stud2.dbf的字段有学号、数学、物理、英语,数据库文件stud3.dbf的字段有学号、大学生修养。下述程序实现将前述三个数据库文件按学号关联。完成下述程序。
SET TALK OFF
CLEAR ALL
SELECT 1
USE stud1
SELECT 2
USE stud2
____(1)____
SELECT 3
USE stud3
____(2)____
SELECT 1
SET RELATION TO 学号 INTO B
____(3)____
LIST FIELDS 学号,姓名,专业,B->数学,C->大学生修养
SET RELATION TO
CLOSE ALL
SET TALK ON
RETURN
(1)
(2)
(3)
35.数据库文件grades.dbf用于存放学生的成绩,其字段有:sname(姓名,字符型),grade(成绩,数值型)。下述程序的功能是:查找至少学过两门课程的学生姓名。完成下述程序。
SET TALK OFF
USE grades
INDEX ON sname TO grades
DO WHILE ___(1)__
mname=sname
COUNT TO num WHILE __(2)__
IF __(3)__
? mname
ENDIF
ENDDO
USE
RETURN
(1)
(2)
(3)
36.下述程序的功能是:求数组a中数组元素的最大值。完成下述程序。
SET TALK OFF
DIME a(10)
a=0
FOR i=1 TO 10
@i,20,SAY ″整数″GET a(i)
ENDFOR
__(1)__
__(2)__
FOR i=1 TO 10
IF __(3)__ THEN
maxval=i
ENDIF
ENDFOR
? a(maxval)
RETURN
(1)
(2)
(3)
37.数据库文件item.dbf用于存放商品信息,其字段有:iname(商品名,字符型),itype(型号,字符型),price(单价,数值型)。下述程序的功能是:查找单价最高的商品。完成下述程序。
SET TALK OFF
____(1)____
SCATTER TO ary BLANK
SCAN
IF price>ary(3)
____(2)____
ENDIF
____(3)____
?ary(1)+ary(2)+STR(art(3))
USE
REYURN
(1)
(2)
(3)
38.数据库文件schoola.dbf和schoolb.dbf具有相同的结构,其字段有:course(课程名,字符型),chour(学时数,数值型),credit(学分,数值型),flag(标志,逻辑型)。下述程序的功能是:查找在schoola.dbf和schoolb.dbf中都有的课程名称。完成下述程序。
SET TALK OFF
SELECT B
USE schoolb ALIAS new
INDEX ON ____(1)____ TO schoolb
SELECT A
USE来源:91exam.org schoola ALIAS old
INDEX ON course TO schoola
REPLACE ALL flag WITH .F.
UPDATE ON course FROM ____(2)____ REPLACE flag WITH .T.
SCAN ____(3)____
? course
ENDSCAN
CLEAR ALL
RETURN
(1)
(2)
(3)
五、综合题(每小题5分,共10分)
39.数据库文件z.dbf存在,说明函数abc()、uvw()及主程序实现的功能。
SET TALK OFF
SET PROCEDURE TO ulty
USE z
srecord=abc()
DO WHILE SPACE(0) <> srecord
GO xyz()
DISPLAY
ENDDO
USE
SET PROCEDURE TO
RETURN 文件ulty.prg的内容如下:
FUNCTION abc
PRIVATE mstr, mno
mstr=SPACE(0)
DO WHILE .T.
mno=uvw()
IF mno=0
EXIT
ENDIF
mstr=mstr+LTRIM(TRIM(STR(mno)))+′#′
ENDDO
RETURN mstr
FUNCTION nvw
PRIVATE mno
mno=0
@10,10SAY ″记录号″ GET mno VALID mno>=0 .AND. mno<=RECCOUNT(″z″)
READ
RETURN mno
FUNCTION xyz
PRIVATE mno, prt
prt=AT(′#′,srecord)
mno=VAL(SUBSTR(srecord,1,prt-1))
srecord=SUBSTR(srecord,prt+1)
RETURN mno
abc()的功能:
uvw()的功能:
主程序实现的功能:
40.描述学生的关系模式R(SNO,SD,MN,CNO,G),其中SNO表示学号,SD表示系名,MN表示系主任姓名,CNO表示课程号,G表示学生成绩。其数据语义是:一个系有若干学生,但一个学生只属于一个系;一个系只有一名系主任;一个学生可以选修多门课程,每门课程有若干学生选修;每个学生所学的每门课程都有一个成绩。完成如下要求:
(1)给出关系模式R上的所有函数依赖;
(2)关系模式R存在哪些数据存储异常问题?
(3)具体说明每一种数据存储异常所反映的存储异常问题的语义。