1、上机操作题-试卷 80 及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.编写程序并执行,计算“01”组(歌手编号的前 2 位)歌手的得分并将结果存入自由表 finaldbf 中。finaldbf 包含“歌手姓名“和“得分”两个字段,“得分”取各评委所打分数的平均值。finaldbf 中的结果按“得分”降序、“歌手姓名”降序排列。请将程序存储在 twoprg 中,否则不得分。 新建一个文件名和表单名均为 score form 的表单,向表单添加一个命令按钮 Commandl,标题为“计算”,为该命令按钮的 Click 事件增加命令,调用 twop
2、rg 程序执行。最后运行该表单,并单击“计算”按钮执行two 程序。 新建一个项目文件 score projiect,将自由表“歌手表”、“评委表”和“评分表”以及表单文件 score form 加入该项目,然后将项目文件连编成应用程序文件 score app。(分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.在考生文件夹下完成下列操作(在“成绩管理”数据库中完成): (1)为“学生”表在“学号”字段上建立升序主索引,索引名为学号。 (2)为“学生”表的“性别”字段定义有效性规则,规则表达式为:性别$”男女”,出错提示信息是:“性别必须是男或女”。 (3)在“学生”表的“性别
3、”和“年龄”字段之间插入一个“出生日期”字段,数据类型为“日期型”(修改表结构)。 (4)用 SQL,的 IYPDATE 命令将学生“王三风”的出生日期修改为 1983 年 5 月 1 日,并将该语句粘贴在 sqLtxt 文件中(第一行且只占一行)。(分数:2.00)_三、综合应用题(总题数:1,分数:2.00)3.(1)用 SQL,语句查询至少有三门的课程成绩在 70 分以上(包括 70 分)的学生姓名,并将结果按升序存入表文件 resultsdbf,然后将该 SQr,语句粘贴在 SQLTXT 文件的第二行(只占一行)。(2)modiprg程序的功能是:先为“学生”表增加一个“平均成绩”字段
4、,数据类型为 N(6,2);然后根据“选课”表统计每个学生的平均成绩,并写入新添加的字段。 该程序有三处错误,请改正,使程序能正确运行(在指定处修改,不允许增加或删除程序行)。(分数:2.00)_上机操作题-试卷 80 答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.编写程序并执行,计算“01”组(歌手编号的前 2 位)歌手的得分并将结果存入自由表 finaldbf 中。finaldbf 包含“歌手姓名“和“得分”两个字段,“得分”取各评委所打分数的平均值。finaldbf 中的结果按“得分”降序、“歌手姓名”降序排列。请将程序存储在 twopr
5、g 中,否则不得分。 新建一个文件名和表单名均为 score form 的表单,向表单添加一个命令按钮 Commandl,标题为“计算”,为该命令按钮的 Click 事件增加命令,调用 twoprg 程序执行。最后运行该表单,并单击“计算”按钮执行two 程序。 新建一个项目文件 score projiect,将自由表“歌手表”、“评委表”和“评分表”以及表单文件 score form 加入该项目,然后将项目文件连编成应用程序文件 score app。(分数:2.00)_正确答案:(正确答案:本大题主要考查了程序文件的建立与运行;SQL 分组计算查询;连编应用程序等。本题关键是 SQL 分组计
6、算查询的设计,设置过程可参照以下步骤进行编写: 在 SELECT 短语中指定要输出的字段,包括通过 AVG()函数计算生成的新字段。 通过 FROMJoINON等短语指定查询数据源,并建立表间联系,查询源表为“歌手”表和“评分”表,两个表的联接字段为“歌手编号”。 利用GROUP BY 短语对表记录分组,分组字段为“歌手编号”。 利用 ORDER BY 短语设置两个字段的排序方式。ASC 短语表示升序排序,为系统默认的排序方式,可省略该短语;DESC 短语表示降序排序,不可缺省。最后将查询结果通过 INTO TABLE 命令输出到指定的数据表中。 另外,调用程序文件的命令是 DO:连编应用程序
7、可通过单击项目管理器右侧的“连编”命令打开“连编选项”对话框完成。 步骤 1:在命令窗口执行命令:MODIFY COMMAND two,打开程序文件编辑器。 步骤 2:在编辑器中输入如下程序代码并保存(以下 SQL 查询语句是通过查询设计器生成):SELECT。歌手姓名,AVG(分数)AS 得分 FROM 歌手表,评分表; WHERE 歌手表歌手编号=评分表歌手编号 AND LEFT(歌手表歌手编号,2)=“01”; GROUP BY 歌手表歌手编号; ORDER BY 得分 DESc,歌手姓名 DESC INTOTARTR fina 步骤 3:在命令窗口执行命令:CREATE FORMsco
8、reform,打开表单设计器新建立表单。 步骤 4:从“表单控件”工具栏中向表单添加一个命令按钮。在“属性”面板中修改表单(Forml)的 Name 属值为:score form,修改命令按钮(Commandl)的 Caption 属性值为:计算。 步骤 5:双击命令按钮(Commandl)编写 Click 事件代码:DO two。单击“常用”工具栏中的“运行”按钮查看结果,将表单文件保存到考生文件夹下。 步骤 6:在命令窗口执行命令:CREATE PROJECTscoreproj ect,新建一个项目管理器。在项目管理器的“数据“选项卡中选中“自由表”,然后单击项目管理器右边的“添加”按钮,
9、将考生文件夹下的“歌手表”、“评委表”和“评分表”依次加入到项目中;以同样的方法,在“文档”选项卡中,将 score form 表单添加到项目中。 步骤 7:单击项目管理器右侧_的“连编”命令打开“连编选项”对话框,在对话框中选中“连编应用程序”,单击“确定”按钮,在弹出的“另存为”对话框的“应用程序名”中输入:score app,单击“保存”按钮保存连编项目文件。)解析:二、简单应用题(总题数:1,分数:2.00)2.在考生文件夹下完成下列操作(在“成绩管理”数据库中完成): (1)为“学生”表在“学号”字段上建立升序主索引,索引名为学号。 (2)为“学生”表的“性别”字段定义有效性规则,规
10、则表达式为:性别$”男女”,出错提示信息是:“性别必须是男或女”。 (3)在“学生”表的“性别”和“年龄”字段之间插入一个“出生日期”字段,数据类型为“日期型”(修改表结构)。 (4)用 SQL,的 IYPDATE 命令将学生“王三风”的出生日期修改为 1983 年 5 月 1 日,并将该语句粘贴在 sqLtxt 文件中(第一行且只占一行)。(分数:2.00)_正确答案:(正确答案:本题考查了表索引的建立;字段有效性规则的建立;表结构修改和 SQL 更新语句。表索引也可以在表设计器中建立,在表设计器的“字段”选项卡中可先建立一个普通索引,然后在“索引”选项卡中修改索引类型。 字段有效性规则是在
11、表设计器中建立的,“默认值”、“规则”和“信息”的设置均属于字段有效性规则范围,在输入各有效性规则的值时要注意对应的数据类型,且在表设计器中可在字段任意间位置插入新字段。 利用 SQL uPDATE 语句可以更新表中记录,本题只需熟记 SQL 更新语句,直接套用即可完成表记录的更新。 【操作步骤】 (1)在命令窗口执行命令:MOD 工 FY DATABASE 成缝管理,打开“成绩管理”数据库设计器。 右击数据库设计器中的“学生”表,选择【修改】快捷菜单命令,打开“学生”表设计器,在“字段”选项卡中选中“学号”,在“索引”列中选择“升序”,然后将“索引”选项卡中“学号”的“类型”更改为“主索引”
12、。 (2)接上小题操作,在“学生”表设计器中选中“字段”选项卡中的“性别”字段,在“字段有效性”的“规则”文本框中输入:性别$It 男女”,在“信息”文本框中输入:”性别必须是男或女”。 (3)接上小题操作,在“学生”表设计器中选中“字段”选项卡中的“年龄”字段,然后单击表设计器右边的“插入”按钮,插入一个新字段行,修改“字段名”为:出生日期,修改“类型”为:日期型。单击“确定”按钮保存表修改。 (4)在命令窗口执行命令:MODIFY FILE SQL,打开文本文件编辑器。 在编辑器中输入 SQ。更新记录的代码: uPDATE 学生SET 出生日期=1 983-05-01 WHERE 姓名=”
13、王三风” 在命令窗口执行命令:DO SQLLTXT,执行文本文件。)解析:三、综合应用题(总题数:1,分数:2.00)3.(1)用 SQL,语句查询至少有三门的课程成绩在 70 分以上(包括 70 分)的学生姓名,并将结果按升序存入表文件 resultsdbf,然后将该 SQr,语句粘贴在 SQLTXT 文件的第二行(只占一行)。(2)modiprg程序的功能是:先为“学生”表增加一个“平均成绩”字段,数据类型为 N(6,2);然后根据“选课”表统计每个学生的平均成绩,并写入新添加的字段。 该程序有三处错误,请改正,使程序能正确运行(在指定处修改,不允许增加或删除程序行)。(分数:2.00)_
14、正确答案:(正确答案:本题主要考查的是 SQL 分组计算的查询。根据题目要求,SQL 语句主要设计思路如下: 首先对“学生”和“选课”表进行联接,联接条件为两个表中“学号”相同的记录;接着筛选表中成绩大于 70 的所有记录(通过 WHERE 短语指出),对筛选后的记录按“学号”字段分组(通过 GROUP BY短语分组),然后通过 HAVING 语句进一步限定分组条件,要求统计每组学号中“课程号”记录总数大于等于 3,这样便可得出至少有三门课程成绩在 70 分以上的学生记录;查询结果最终保存在 results 表中,输出字段只包括学生的“姓名”字段。 【操作步骤】 在命令窗口输入如下 SQL 查
15、询代码(以下 SQL 查询语句是通过查询设计器生成): SELECT 学生姓名; FROM 成绩管理!学生工 NNER JoIN 成绩管 理!选课; ON 学生学号:选课学号; WHERE 选课成绩=70; ORDER BY 学生姓名; GROUP BY 学生学号; HAVING COUNT(选课课程号):3; INTO TABIE resuitSdbf 在命令窗口执行命令:MODIFY FILE SQL,打开文本文件编辑器。将命令窗口的查询语句复制到 SQL 文本文件中。 (2)本题主要考查了 SQL 定义功能;SQL 简单计算查询;DO WHILE 循环;Visual FoxPro 修改记
16、录命令。题目所提供的源程序功能大致如下: 首先打开“成绩管理”数据库,并打开库中的数据表“选课”和“学生”;接着利用 SQL 定义功能修改表结构;然后利 用 DO WHILE 循环,依次计算“选课”表中每个学生的平均成绩,计算条件为“选课”表中的“学号”字段值等于“学生”表中当前记录的“学号”字段值,并将平均成绩保存到数组中;最后利用 Visual FoxPro 修录命令 REPLACE 将数细中的值赋给“学生”表的“平均成绩”字段。 本题第一处错误是表结构修改语句的错误,为表增加字段的关键字是 ADD 而不是 ALTER,ALTER 只能用来修改已存在的字段;第二处错误是 DO WHILE
17、循环格式错误,缺少 WHILE 短语;第三处错误是修改记录命令格式错误,指定修改值的短语为 WITH 而不是 SET。 步骤 1:在命令窗口执行命令:MODIFY COMMANDmodi,打开程序文件,文件中的命令代码如下: OPEN DATABASE 成绩管理 USE 选课 IN 0 USE 学生 EXCL IN 0 *Errot* MODIFY TABLE 学生 ADD 平均成绩 N(6,2) SELECT 学生 *Error* DO WHILE EOF() SELECT AVG(成绩)FROM 选课 WHERE 学 号=学生学号INTO ARRAY cj *rror* REPLACE 平
18、均成绩=cj1 cj1=0 SKIP ENDDO DA 个ABASE 修改程序中的错误行,修改后的程序如下: CLOSE ALL OPEN DATABASE 成绩管理 USE 选课 IN 0 USE 学生 EXCL IN 0 ALTER TABLE 学生 ADD 平均成绩 N(6,2) SELECT 学生 DO WHILE NOT EOF() SELECT AVG(成绩)FROM 选课 WHERE 学号:学生学号 INTO ARRAY cj REPLACE 平均成绩 WITH cj1 cj1=O SKIP ENDDO DATABASE 步骤 2:保存文件修改,在命令窗口执行命令:DO MODI,执行程序文件。)解析: