在考生文件夹下,打开招生数据库sdb,完成如下综合应用: ①创建文件名为fom的表单,将表单标题改为:录取研究生。 ②在表单中设计“录取”和“退出”两个按钮。两个按钮功能分别如下: . 在“录取”按钮(Commandl)中,编写

admin2014-11-30  23

问题 在考生文件夹下,打开招生数据库sdb,完成如下综合应用:
    ①创建文件名为fom的表单,将表单标题改为:录取研究生。
    ②在表单中设计“录取”和“退出”两个按钮。两个按钮功能分别如下:
    .   在“录取”按钮(Commandl)中,编写程序,查询总成绩大于或等于330分的考生的“考生号”、“姓名”、“性别”、“单位”和该生的“政治成绩”、“外语成绩”、“高数成绩”(即高等数学成绩)、“专业课成绩”、“总成绩”,并将结果按“总成绩”降序排序存储到表four。中。表:four(需要自己创建或生成)的字段名为:“考生号”、“姓名”、“性别”、“单位”、“政治成绩”、“外语成绩”、“高数成绩”、“专业课成绩”、“总成绩”(各成绩字段的类型为N(5,1),其他字段的类型与原表中一致)。
    .  单击“退出”按钮(Command2)时,关闭表单。
    ③表单设计完成后,运行表单,单击“录取”按钮进行统计,然后单击“退出”按钮关闭表单。
    注:在考试科目代码表dm中存储了各考试科目与考试科目名对应关系。

选项

答案步骤1:在命令窗口执行命令:CREATE FORM form,打开表单设计器新建表单。向表单添加两个命令按钮。 步骤2:选择表单对象,修改属性值,见表4—28。 [*] 步骤3:双击命令按钮,编写各个命令按钮的Click事件代码如下: *****“录取”按钮的Click事件代码***** 1 OPEN DATABASE SDB 2 SELECT KSB.考生号,姓名,性别,单位,SUM(成绩)总成绩FROM KSB,KSCJB; 3 WHERE KSB.考生号=KSCJB.考生号GROUP BY KSB.考生号; 4 HAVING SUM(成绩)>=330 INTO CURSOR TEMPl 5 SELECT考生号,姓名,性别,单位FROM TEMP1 ; 6 ORDER BY总成绩DESC INTO TABLE FOUR 7 ALTER TABLE FOUR ADD政治成绩N(5,1) 8 ALTER TABLE FOUR ADD外语成绩N(5,1) 9 ALTER TABLE FOUR ADD高数成绩N(5,1) 10 ALTER TABLE FOUR ADD专业课成绩N(5,1) 11 ALTER TABLE FOUR ADD总成绩N(5,1) 12 SELECT考生号,考试科目名,成绩FROM KSCJB,DM WHERE KSCJB.考试科目=DM.考试科目; 13 INTO CURSOR TEMP2 14 SELECT FOUR 15 DO WHILE NOT EOF() 16 SELECT成绩FROM TEMP2 WHER考生号 =FOUR.考生号AND考试科目名="政治"; 17 INTO ARRAY A1 18 REPLACE政治成绩WITH A1 19 SELECT成绩FROM TEMP2 WHER考生号 =FOUR.考生号AND考试科目名=”外语”; 20 INTO ARRAY A2 21 REPLACE外语成绩WITH A2 22 SELECT成绩FROM TEMP2 WHER考生号=FOUR.考生号AND考试科目名="高等数学"; 23 INTO ARRAY A3 24 REPLACE高数成绩WITH A3 25 SELE成绩FROM TEMP2 WHER考生号 =FOUR.考生号AND考试科目名=”专业课”; 26 INTO ARRAY A4 27 REPLACE专业课成绩WITH A4 28 REPLACE总成绩 WITH政治成绩+外语成绩+高数成绩+专业课成绩 29 SKIP 30 ENDDO 31 CLOSE DATABASE *****“退出”按钮的Click事件代码***** THISFORM.RELEASE 步骤4:单击“常用”工具栏中的“运行”按钮运行表单,单击“录取”进行计算,单击“退出”关闭表单。

解析 本题主要考查的是表单的建立、常用属性的设置、DO WHILE循环结构和SQL分组计算查询、SQL定义功能、Visual FoxPro修改记录命令。
    本题基本解题思路可按以下步骤进行:
    第一步,根据ksb和kscjb两张表,利用分组计算查询求出总成绩大于等于330分的考生的考生号、姓名、性别、单位和总成绩,将结果保存到一个临时表templ中。这里,总成绩用SUM函数实现。
    第二步,通过临时表templ查找出“考生号”、“姓名”、“性别”、“单位”4个字段,并按总成绩降序排序,将结果保存到表FOUR中。在这里,这四个字段正是题目中要求的FOUR表的前四个字段。
    第三步,分别用五个“ALTER TABLE”语句为FOUR表增加五个字段:政治成绩、外语成绩、高数成绩、专业课成绩和总成绩。为表增加字段的关键字是ADD。此时,题目所要求的FOUR表的结构已经完成,并且前四个字段的值也已经按要求完成了,下面的任务就是将后五个字段的值填充完整。
    第四步,根据dm和kscjb两张表求出所有考生的考生号、考试科目名和成绩,将结果保存到临时表temp2中。
    第五步,将FOUR表作为当前表,将记录指针指向文件首,然后开始执行DO WHILE循环对FOUR表中的每条记录进行处理。DO WHILE语句的循环条件是当记录指针没有到达FOUR表末尾时,执行循环体中的语句。循环体功能:用SQL简单查询从临时表temp2中求出与FOUR表当前所指记录“考生号”相同并且“考试科目名”是“政治”的“成绩”字段值,将该值保存到数组a1中,再通过REPLACE命令修改four表当前记录的“政治成绩”字段值。参照以上操作,可以将four表当前记录的“外语成绩”、“高数成绩”和“专业课成绩”三个字段值进行修改。而当前记录的“总成绩”字段值可以由当前记录的“政治成绩”、“英语成绩”、“高数成绩”和“专业课成绩”的和得到。修改完毕后,four表的记录指针指向下一条记录,又开始继续判断表指针是否到达表末尾,如果没有,则进入循环体继续同样的操作,直到four表的记录指针指向表末尾,处理完four表中的所有记录,程序结束。
转载请注明原文地址:https://kaotiyun.com/show/KoEp777K
0

最新回复(0)