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

admin2013-03-31  27

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

选项

答案步骤1:在命令窗口执行命令:CREATE FORM form,打开表单设计器新建表单。从“表单工具栏”中依次向表单添加两个命令按钮。 步骤2:在“属性”面板的下拉框中选择表单对象,在“全部”选项卡中修改对象属性值,见表2-16。 [*] 步骤3:双击命令按钮,编写各个命令按钮的Click事件代码。各按钮代码如下: *****“录取”按钮的Click事件代码***** OPEN DATABASE SDB SELECT KSB.考生号,姓名,性别,单位,SUM(成绩)总成绩FROM KSB,KSCJB; WHERE KSB.考生号=KSCJB.考生号GROUP BY KSB.考生号; HAVING SUM(成绩)>=330 INTO CURSOR TEMP1 SELECT考生号,姓名,性别,单位FROM TEMP1; ORDER BY总成绩DESC INTO TABLE FOUR ALTER TABLE FOUR ADD政治成绩N(5,1) ALTER TABLE FOUR ADD外语成绩N(5,1) ALTER TABLE FOUR ADD高数成绩N(5,1) ALTER TABLE FOUR ADD专业课成绩N(5,1) ALTER TABLE FOUR ADD总成绩N(5,1) SELECT 考生号,考试科目名,成绩FROM KSCJB,DM WHERE KSCJB.考试科目=DM.考试科目; INTO CURSOR TEMP2 SELECT FOUR DO WHILE NOT EOF() SELECT成绩FROM TEMP2 WHER考生号 =FOUR.考生号AND考试科目名="政治", INTO ARRAY A1 REPLACE 政治成绩 WITH A1 SELECT 成绩 FROM TEMP2 WHER 考生号=FOUR.考生号 AND 考试科目名="外语"; INTO ARRAY A2 REPLACE外语成绩WITH A2 SELECT成绩FROM TEMP2 WHER考生号=FOUR.考生号AND考试科目名=”高等数学”; INTO ARRAY A3 REPLACE高数成绩WITH A3 SELE成绩FROM TEMP2 WHER考生号 =FOUR.考生号AND考试科目名="专业课"; INTO ARRAY A4 REPLACE专业课成绩WITH A4 REPLACE总成绩WITH政治成绩+外语成绩+高数成绩+专业课成绩 SKIP ENDDO CLOSE DATABASE *****“退出”按钮的Click事件代码料***** THISFORM.RELEASE 步骤4:单击“常用”工具栏中的“运行”按钮运行表单,单击“录取”按钮进行计算,然后单击“退出”按钮关闭表单。

解析 本题主要考查的是表单的建立,常用属性的设置,DO WHILE循环结构和SQL分组计算查询、SQL定义功能、Visual FoxPro修改记录命令。
对本题操作时,首先建立表单及其表单控件,并修改对象的属性值,然后对命令按钮编写事件代码。
    本题所设计的的程序代码有些难度,需要考生好好掌握。基本解题思路可按以下步骤进行:
    第一步,根据ksb和kscjb两张表,利用分组计算查询求出总成绩大于等于330分的考生的考生号、姓名、性别、单位和总成绩,将结果保存到一个临时表temp1中。这里,总成绩用SUM函数实现。
    第二步,通过临时表temp1查找出考生号、姓名、性别、单位四个字段,并按总成绩降序排序,将结果保存到表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/3usp777K
0

最新回复(0)