四、程序设计题(本大题共5小题,每小题5分,共25分) 34.文件press.dbf用于存放出版社信息,其字段有:name(名称,字符型),addr(地址,字符型),bnum(书目数,数值型)。下述程序的功能是:查找书目数最少的所有出版社的信息。完成下述程序。 SET TALK OFF USE press IF (1) THEN RETURN ENDIF minval=bnum pstr=SPACE(0) SCAN IF (2) THEN IF bnum (3) pstr=name ELSE pstr=pstr+","+name ENDIF ENDIF ENDSCAN DISPLAY ALL FOR AT(name,pstr) >0 USE RETURN (1) (2) (3) 35.文件grades.dbf用于存放学生成绩信息,其字段有:sname(姓名,字符型),cname(课程名,字符型),grade(成绩,数值型)。sname为主键。下述程序的功能是查找“李平”、“张和”均学过的课程名称。完成下述程序。 SET TALK OFF (1) STORE SPACE(0) To str1, str2 SCAN FOR sname="李平" (2) =str1+cname+"/" ENDSCAN SCAN FOR (3) IF AT(cname, str1)< >0 THEN str2=str2+cname+"/" ENDIF ENDSCAN ? str2 USE RETURN (1) (2) (3) 36.计算S=1+2+3+…+(n-1)+n的值。完成下述程序。 SET TALK OFF INPUT〃请输入一个正整数x〃TO x (1) k=1 DO WHILE (2) s=s+k k=k+1 ENDDO ?〃S=〃, (3) SET TALK ON RETURN (1) (2) (3) 37.文件student.dbf的字段有sno(学号,数值型),sname(姓名,字符型),sex(性别,字符型),cno(班号,数值型),grade(成绩,数值型);文件class.dbf的字段有cno(班级号,数值型),cname(班级名,字符型)。在两库之间建立连接,然后为班级名为“计算机”的每个学生成绩增加5分,要求显示“计算机”班学生的姓名、班级名、成绩。完成下述程序。 SET TALK OFF SELECT 1 USE class (1) TO cno SELECT 2 USE student SET RELATION TO (2) REPLACE ALL grade WITH grade+5 FOR (3) LIST FIELDS sname, (4) SET RELATION TO CLOSE ALL SET TALK ON RETURN (1) (2) (3) (4) 38.有帐号数据库文件account.dbf,其字段有name(姓名,字符型),accountno(帐号,字符型),init_balance(初始余额,数值型);明细帐数据库文件detail.dbf,其字段有accountno(帐号,字符型),datel(日期,日期型),deposit(存入金额,数值型),credit(支出金额,数值型),balance(余额,数值型)。数据库内容如下所示。程序要求显示用户给定的任一帐号的姓名和该帐号发生帐目。完成下述程序。 account.dbf detail.dbf accountno name init_balance accountno datel deposit credit balance 1001 王三 530 1001 98.01.21 100 120 1008 李四 150 1001 98.09.10 80 50 1003 程程 1500 1001 99.07.25 90 110 SET TALK OFF SELECT 1 USE account SELECT 2 USE detail SELECT 1 accountx=SPACE(4) ACCEPT 〃请输入帐号:〃 TO (1) LOCATE FOR (2) IF FOUND( ) THEN name1=name ELSE ?〃帐号库文件中无此帐号〃 CLOSE ALL RETURN ENDIF SELECT 2 ?〃姓名:〃+namel+〃和〃+accountx+〃帐号发生帐目如下〃 DISPLAY FIELDS date1, deposit, credit, balance FOR (3) CLOSE ALL SET TALK ON RETURN (1) (2) (3) 五、综合题(本大题共2小题,每小题5分,共10分) 39.数据库文件mark.dbf的字段有:sno(学号,字符型),maths(高数,数值型),alg(线性代数,数值型),computer(计算机基础,数值型),fox(Foxpro,数值型),english(英语,数值型)和average(平均成绩,数值型),并以sno为关键字创建索引文件,说明主程序、函数abc( )、pjs( )各自完成什么功能。 SET TALK OFF SET PROCEDURE TO stud SELECT 1 USE mark INDEX mark COPY STRUCTURE TO avgm SELECT 2 USE avgm SELECT 1 n=0 @10, 10 SAY"请输入统计学生人数"GET n READ DO WHILE n>=1 sno3=abc( ) SEEK sno3 DISPLAY n=n-1 ENDDO SELECT 2 SORT TO avgm1 ON average SELECT 3 USE avgm1 BROWSE CLOSE DATA RETURN 文件 stud的内容如下 FUNCTION abc( ) PRIVATE mark1, sno1 sno1=SPACE(4) @12, 10 SAY"请输入学号"GET sno1 READ mark1=pjs(sno1) SELECT 2 APPEND BLANK REPLACE sno WITH A->sno REPLACE maths WITH A->maths REPLACE agl WITH A->alg REPLACE computer WITH A->computer REPLACE fox WITH A->fox REPLACE english WITH A->english REPLACE average WITH mark1 SELECT 1 abc=sno1 RETURN abc FUNCTION pjs(sno2) PRIVATE sno2 SELECT 1 LOCATE FOR sno=sno2 pjs=(alg+maths+computer+fox+english)/5 RETURN pjs (1)主程序功能: (2)函数abc( )功能: (3)函数pjs( )功能: 40.设有关系模式R(A,B,C),其函数依赖为F={A→B,B→A,A→C},请回答如下问题 (1)指出R的所有候选键并说明原因。 (2)R最高属于第几范式?为什么?
|