问答题 在考生文件夹下有学生管理数据库stu_7,该库中有chengji表和xuesheng表,结构如下: chengji表(学号C(9)、课程号C(3)、成绩N(7,2)),该表用于记录学生的考试成绩,一个学生可以有多项记录(登记一个学生的多门成绩)。 xuesheng表(学号C(9)、姓名C(10)、平均分N(7,2)),该表用于记录学生信息,一个学生只有一个记录(表中有固定的已知数据)。 请编写并运行符合下列要求的程序: 设计一个名为form_stu的表单,表单中有两个命令按钮,按钮的名称分别为cmdyes和cmdno,标题分别为“统计”和“关闭”。 程序运行时,单击“统计”按钮应完成下列操作: 根据chengji表计算每个学生的平均分,并将结果存入xuesheng表的“平均分”字段。 根据上面的计算结果,生成一个新的自由表pingjun,该表的字段按顺序取自xuesheng表的学号、姓名和平均分3项,并且按平均分升序排序,如果平均分相等,则按学号升序排序。 单击“关闭”按钮,程序终止运行。
【正确答案】
【答案解析】在命令窗口输入命令:CREATE FORM form_stu,打开表单设计器;单击表单控件工具栏上的“命令按钮”控件图标,向表单添加两个命令按钮。选中第一个命令按钮(Command1),在属性对话框中将命令按钮的Name属性值修改为cmdyes,将Caption属性值修改为“统计”,如图3-39所示。以同样的方法,将第二个命令按钮(Command2)的Name属性值修改为cmdno,将Caption属性值修改为“关闭”。 双击命令按钮cmdyes(统计),在Click事件代码中编写如下程序段: ****“统计”命令按钮的Click事件代码**** SET TALK OFF OPEN DATABASE stu_7 USE xuesheng DO WHILE NOT EOF() SELECT AVG(成绩)FROM chengji; WHERE学号=xuesheng.学号INTO ARRAY atemp REPLACE平均分WITH atemp(1,1) SKIP ENDDO SELECT学号,姓名,平均分FROM xuesheng; ORDER BY平均分,学号; INTO TABLE pingjun CLOSE ALL SET TALK ON SET SAFETY ON ***************************************** 双击命令按钮cmdno(关闭),在Click事件代码中编写如下程序段: ****“关闭”命令按钮的Click事件代码**** Thisform.Release ***************************************** 保存表单,在命令窗口输入命令:DO FORM form_stu。在运行的表单界面中单击“统计”命令按钮,系统将计算统计结果并保存到新表中。 [解析] 本题考查的是表单设计,在设计控件属性中,不要将控件的标题(Caption)和名称(Name)属性弄混淆了,名称属性是该控件的一个内部名称,而标题属性是用来显示的一个标签名称;程序部分可以利用一个DO循环来依次浏览表中的记录,然后利用SQL语句查询符合条件的记录存放到数组中,最后利用数组保存的记录存入到新的数据表中。