全国大学生计算机二级二级八至二十二套.docx
《全国大学生计算机二级二级八至二十二套.docx》由会员分享,可在线阅读,更多相关《全国大学生计算机二级二级八至二十二套.docx(26页珍藏版)》请在冰豆网上搜索。
全国大学生计算机二级二级八至二十二套
第八套
三、综合应用题(1小题,计30分)
对"出勤"数据库中的表"出勤情况",建立文件名为myf的表单,标题为"出勤情况查询",表单上有1个表格控件和3个命令按钮"未迟到查询"、"迟到查询"和"关闭"。
单击"未迟到查询"按钮,查询出勤情况表中每个人的"姓名"、"出勤天数"和"未迟到天数",其中"未迟到天数"为"出勤天数"减去"迟到次数"。
结果在表格控件中显示,同时保存在表tablel中。
单击"迟到查询"按钮,查询迟到天数在l天以上的人的所有信息,结果在表格控件中显示,同时保存在表table2中。
单击"关闭"按钮关闭表单。
【答案】
在命令窗口中输入命令:
CREATEFORMmyf,打开表单设计器,通过"表单控件"工具栏向表单添加1个表格和3个命令按钮。
选中表单,在属性面板中将Caption的属性值改为"出勤情况查询",然后在属性面板顶端的下拉框中选择Command1,修改该命令按钮控件的Caption属性值为"未迟到查询",以同样的方法将第二个、第三个命令按钮设置Caption属性值分别改为"迟到查询"和"关闭"。
双击命令按钮,编写各命令按钮的Click事件,程序代码如下。
******命令按钮Command1(迟到查询)的Click事件代码*****
SELECT姓名,出勤天数,(出勤天数-迟到次数)AS未迟到天数;
FROM出勤情况;
INTOTABLEtable1
Thisform.Grid1.RecordSourceType=1
Thisform.Grid1.RecordSource="table1"
*******************************************************
******命令按钮Command2(迟到查询)的Click事件代码*****
SELECT工号,员工档案.姓名,职位,出勤天数,迟到次数,性别,工资;
FROM出勤情况,员工档案;
WHERE迟到次数>1AND员工档案.姓名=出勤情况.姓名;
INTOTABLEtable2
Thisform.Grid1.RecordSourceType=1
Thisform.Grid1.RecordSource="table2"
********************************************************
以同样的方法为"关闭"命令按钮编写Click事件代码:
Thisform.Release。
保存并运行表单,结果如图8-3所示。
第九套
三、综合应用题(1小题,计30分)
为"部门信息"表增加一个新字段"人数",编写满足如下要求的程序:
根据"雇员信息"表中的"部门号"字段的值确定"部门信息"表的"人数"字段的值,即对"雇员信息"表中的记录按"部门号"归类。
将"部门信息"表中的记录存储到ate表中(表结构与"部门信息"表完全相同)。
最后将程序保存为myp.prg,并执行该程序。
【答案】
在命令窗口中输入命令:
MODIFYCOMMANDmyp,在弹出的程序编辑窗口中输入如下程序段:
******程序文件myp.prg中的程序段**********************
ALTERTABLE部门信息ADD人数I
SELECT部门号,COUNT(*)AS人数FROM雇员信息;
GROUPBY部门号;
INTOCURSORatemp
DOWHILENOTEOF()
UPDATE部门信息SET人数=atemp.人数;
WHERE部门信息.部门号=atemp.部门号
SKIP
ENDDO
SELECT*FROM部门信息INTOTABLEate
********************************************************
在命令窗口执行命:
DOmyp,运行程序,通过BROWSE命令可查看查询结果,程序运行结果如图9-2所示。
第十套
二、简单应用题(共2小题,每题20分,计40分)
(2)在考生文件夹下打开命令文件ASP.PRG,该命令文件用来查询各部门的分年度的"部门编号"、"部门名称"、"年度"、"全年销售额"、"全年利润"和"利润率"(全年利润/全年销售额),查询结果先按"年度"升序、再按"利润率"降序排序,并存储到Li表中。
注意,程序在第5行、第6行、第8行和第9行有错误,请直接在错误处修改。
修改时,不可改变SQL语句的结构和短语的顺序,不允许增加或合并行。
【答案】
(2)在命令窗口中输入命令:
MODIFYCOMMANDASP.prg,打开程序文件编辑窗口。
******文件中ASP.prg程序段如下*********
*下面的程序在第5行、第6行、第8行和第9行有错误,请直接在错误处修改。
*修改时,不可改变SQL语句的结构和短语的顺序,不允许增加或合并行。
OPENDATABASESALEDB
SELECTPT.部门编号,部门名称,年度,;
一季度销售额+二季度销售额+三季度销售额+四季度销售额AS全年销售额,;
一季度利润+二季度利润+三季度利润+四季度利润AS全年利润,;
一季度利润+二季度利润+三季度利润+四季度利润/一季度销售额+二季度销售额+三季度销售额+四季度销售额AS利润率;
FROMPTDE;
WHEREPT.部门编号=DE.部门编号;
GROUPBY年度利润率DESC;
INTOLI
******************************
根据源程序提供的错误,修改后的程序段如下所示:
******修改后的文件内容****
OPENDATABASESALEDB
SELECTPT.部门编号,DE.部门名称,PT.年度,;
PT.一季度销售+PT.二季度销售+PT.三季度销售+PT.四季度销售AS全年销售额,;
一季度利润+二季度利润+三季度利润+四季度利润AS全年利润,;
((一季度利润+二季度利润+三季度利润+四季度利润)/(一季度销售+二季度销售+三季度销售+四季度销售))AS利润率;
FROMPT,DE;
WHEREPT.部门编号=DE.部门编号;
ORDERBY利润率DESC;
INTOTABLELI
************************************************************
三、综合应用题(1小题,计30分)
考生文件夹下存在数据库"销售",其中包含表"购买信息"和表"会员信息",这两个表存在一对多的联系。
对销售数据库建立文件名为myf的表单,其中包含两个表格控件。
第一个表格控件用于显示表"会员信息"的记录,第二个表格控件用于显示与表"会员信息"当前记录对应的"购买信息"表中的记录。
表单中还包含一个标题为"关闭"的命令按钮,单击此按钮退出表单。
【答案】
在命令窗口中输入命令:
CREATEFORMmyf,打开表单设计器窗口。
从"表格控件"工具栏中单击表格控件,添加两个表格到新建的表单中,右击表单,选择"数据环境"快捷菜单命令,在数据环境中添加数据表"购买信息"和"会员信息",系统自动建立好两表的关联。
返回表单设计器中,右键单击表格Grid1,在弹出的快捷菜单中选择"生成器",弹出表格生成器对话框,在"1.表格项"中选择数据表"会员信息",将表中所有字段添加到选定字段中,如图10-2所示。
图10-2
以同样的方法设置第二个表格的生成器,然后再选择"4.关系"选项卡,把"父表中的关键字段"设置为"会员信息.会员号",把"子表中的相关索引"设置为"会员号",如图10-3所示。
图10-3
从表单控件工具栏中,向表单添加1个命令按钮,修改命令按钮的Caption属性值为"关闭",在"关闭"命令按钮的Click事件中输入:
Thisform.Release。
运行表单,结果如图1-4所示,保存表单设计到考生文件夹下。
第十一套
二、简单应用题(共2小题,每题20分,计40分)
(1)使用SQL命令查询2001年(不含)以前进货的商品,列出其"分类名称"、"商品名称"和"进货日期",查询结果按"进货日期"升序排序并存入文本文件infor.txt中,所用命令存入文本文件sql.txt中。
(2)用SQLUPDATE命令为所有"商品编码"首字符是"3"的商品计算销售价格:
销售价格为在进货价格基础上加22.68%,并把所用命令存入文本文件update.txt中。
【答案】
(1)在命令窗口中输入命令:
MODIFYFILEsql,在文本编辑器窗口输入如下程序段:
******文件sql.txt中的程序段*****
SELECT分类名称,商品名称,进货日期;
FROM商品,分类;
WHERE分类.分类编码=商品.分类编码;
ANDYEAR(进货日期)<2001;
TOFILEinfor;
ORDERBY进货日期
*******************************
在命令窗口输入命令:
DOsql.txt,运行程序。
程序运行结果如图11-2所示。
图11-2
(2)在命令窗口中输入命令:
MODIFYFILEupdate,在文本编辑器窗口输入如下程序段。
******文件update.txt中的程序段*****
UPDATE商品SET销售价格=进货价格*1.2268;
WHERELEFT(商品编码,1)='3'
*******************************
在命令窗口输入命令:
DOUpdate.txt,运行程序。
通过BROWSE命令可直接查看修改结果,结果如图11-3所示。
三、综合应用题(1小题,计30分)
对考生目录下的数据库rate建立文件名为myf的表单。
表单含有一个表格控件,用于显示用户查询的信息;表单上有一个按钮选项组,含有"外币浏览"、"个人持有量"和"个人资产"三个选项按钮:
表单上有一个命令按钮,标题为"浏览"。
当选择"外币浏览"选项按钮并单击"浏览"按钮时,在表格中显示"汇率"表的全部字段;选择"个人持有量"选项按钮并单击"浏览"按钮时,表格中显示"数量"表中的"姓名","汇率"表中的"外币名称"和"数量"表中的"持有数量";选择"个人资产"选项按钮并单击"浏览"按钮时,表格中显示"数量"表中每个人的"总资产"(每个人拥有的所有外币中的每种基准价*持有数量的总和)。
单击"关闭"按钮退出表单。
【答案】
在命令窗口中输入命令:
CREATEFORMmyf,打开表单设计器,通过"表单控件"工具栏向表单添加1个表格、1个选项按钮组和2个命令按钮。
选中表单,在属性面板顶端的下拉框中选择Command1,修改该命令按钮控件的Caption属性值为"浏览",以同样的方法将第二个命令按钮设置Caption属性值改为"关闭",在属性面板顶端的下拉框中选择(Optiongroup1),将其ButtonCount属性值改为3,右击选项按钮组,选择"编辑"快捷菜单命令,在此状态下(编辑状态下,控件四周出现蓝色框线),分别修改三个单选项的Caption属性值为"外币浏览"、"个人持有量"和"个人资产"。
双击命令按钮"浏览",编写该控件的Click事件,程序代码如下:
******命令按钮Command1(浏览)的Click事件代码*****
DOCASE
CASEThisform.Optiongroup1.Value=1
SELECT*;
FROM汇率;
INTOCURSORtemp
Thisform.Grid1.RecordSourceType=1
Thisform.Grid1.RecordSource="temp"
CASEThisform.Optiongroup1.Value=2
SELECT数量.姓名,外币名称,持有数量;
FROM数量,汇率;
WHERE汇率.外币代码=数量.外币代码;
INTOCURSORtemp
Thisform.Grid1.RecordSourceType=1
Thisform.Grid1.RecordSource="temp"
CASEThisform.Optiongroup1.Value=3
SELECT姓名,SUM(持有数量*基准价)AS总资产;
FROM汇率,数量;
WHERE汇率.外币代码=数量.外币代码;
GROUPBY姓名;
INTOCURSORtemp
Thisform.Grid1.RecordSourceType=1
Thisform.Grid1.RecordSource="temp"
ENDCASE
*********************************************************
以同样的方法为"关闭"命令按钮编写Click事件代码:
Thisform.Release。
保存表单完成设计,运行结果如图11-4所示。
第十二套
二、简单应用题(共2小题,每题20分,计40分)
设计一个表单my完成以下功能:
(1)表单上有1个标签,表单运行时标签的Caption属性显示为系统时间,且表单运行期间标签标题动态显示当前系统时间。
标签标题字体大小为25,布局为"中央",字体颜色为"红色",标签"透明"。
(2)表单上另有3个命令按钮,标题分别为"蓝色","绿色"和"退出"。
当单击"蓝色"命令按钮时,表单背景颜色变为蓝色;当单击"绿色"命令按钮时,表单背景颜色变为绿色;单击"退出"命令按钮表单退出。
表单的Name属性和表单文件名均设置为my,标题为"变色时钟"。
【答案】
(1)从菜单栏里单击"文件"并选择"新建",或直接单击工具栏上的"新建"图标,在弹出的对话框中文件类型选择"表单",单击对话框右边的"新建文件"图标,弹出了Form1的表单设计器,单击工具栏上的"保存"图标,以my命名保存在考生文件夹下。
单击"表单控件"窗口中的"标签"控件,在表单上放置一个标签控件,将其FontSize属性值改为20,调整标签的大小,将其Alignment属性值改为"2-中央",将其ForeColor属性值改为"255,0,0",将其BackStyle属性值改为"0-透明"。
单击"表单控件"窗口中的"计时器"控件,在表单上放置一个计时器控件,修改其"Internal"属性值为1000(Internal属性值1000表示1秒),双击"计时器"控件,在其Timer事件中输入以下代码:
*******计时器控件的timer事件代码********
Thisform.Label1.Caption=time()
****************************************
保存表单设计并运行。
(2)在命令窗口输入命令:
MODIFYFORMmy,打开刚设计的表单文件,在属性窗口中(注意当前操作对象是"表单form1")修改name属性值为my,修改Caption属性值为"变色时钟"。
接着,单击"表单控件"工具栏中的"命令按钮"控件,在表单上放置三个命令按钮控件,将它们的Caption属性值分别改为"蓝色"(Command1),"绿色"(Command2)和"退出"(Command3)。
双击"蓝色"命令按钮,在其Click事件中输入以入代码:
***命令按钮Command1(蓝色)的Click事件代码*****
Thisform.BackColor=rgb(0,0,255)
**************************************************
双击"绿色"命令按钮,在其Click事件中输入以入代码:
***命令按钮Command2(绿色)的Click事件代码*****
Thisform.BackColor=rgb(0,255,0)
*************************************************
双击"退出"命令按钮,在其Click事件中输入以入代码:
***命令按钮Command3(退出)的Click事件代码*****
Thisform.Release
*************************************************
在命令窗口输入命令:
DOFORMmy,表单运行结果如图12-1所示:
图12-1
第十三套
三、综合应用题(1小题,计30分)
在考生文件夹下有学生管理数据库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项,并且按平均分升序排序,如果平均分相等,则按学号升序排序。
单击"关闭"按钮,程序终止运行。
【答案】
在命令窗口输入命令:
CREATEFORMform_stu,打开表单设计器;单击表单控件工具栏上的"命令按钮"控件图标,向表单添加两个命令按钮。
选中第一个命令按钮(Command1),在属性对话框中将命令按钮的Name属性值修改为"cmdyes",将Caption属性值修改为"统计",如图13-3所示。
以同样的方法,将第二个命令按钮(Command2)的Name属性值修改为"cmdno",将Caption属性值修改为"关闭"。
图13-3
双击命令按钮cmdyes(统计),在Click事件代码中编写如下程序段:
****"统计"命令按钮的Click事件代码****
SETTALKOFF
SETSAFETYOFF
OPENDATABASEstu_7
USExuesheng
DOWHILENOTEOF()
SELECTAVG(成绩)FROMchengji;
WHERE学号=xuesheng.学号INTOARRAYatemp
REPLACE平均分WITHatemp(1,1)
SKIP
ENDDO
SELECT学号,姓名,平均分FROMxuesheng;
ORDERBY平均分,学号;
INTOTABLEpingjun
CLOSEALL
SETTALKON
SETSAFETYON
***************************************
双击命令按钮cmdno(关闭),在Click事件代码中编写如下程序段:
****"关闭"命令按钮的Click事件代码****
ThisForm.Release
***************************************
保存表单,在命令窗口输入命令:
DOFORMform_stu。
在运行的表单界面中单击"统计"命令按钮,系统将计算统计结果并保存到新表中。
第十四套
三、综合应用题(1小题,计30分)
在考生文件夹下有职员管理数据库staff_8,数据库中有yuangong表和zhicheng表。
yuangong的表结构:
职工编码C(4)、姓名C(10)、职称代码C
(1)、工资N(10,2)
zhigong的表结构:
职称代码C
(1)、职称名称C(8)、增加百分比N(10)
然后编写并运行符合下列要求的程序:
设计一个名为staff_m的菜单,菜单中有两个菜单项"计算"和"退出"。
程序运行时,单击"计算"菜单项应完成下列操作:
在表yuangong中增加一新的字段:
新工资N(10,2)。
现在要给每个人增加工资,请计算yuangong表的新工资字段,方法是根据zhicheng表中相应支撑的增加百分比来计算:
新工资=工资*(1+增加百分比/100)
单击"退出"菜单项对应命令SETSYSMENUTODEFAULT,用于返回到系统菜单,程序终止运行。
【答案】
在命令窗口输入命令:
CREATEMENUstaff_m,系统弹出一个"新建菜单"对话框,在对话框中单击"菜单"图形按钮,进入菜单设计器环境。
根据题目要求,首先输入两个主菜单名称"计算"和"退出",接着在"计算"菜单行的"结果"下拉框中选择"过程"选项(用于编写程序),在"退出"菜单行的"结果"下拉框中选择"命令"选项。
单击"计算"菜单行中的"编辑"按钮,进入程序设计的编辑窗口,在命令窗口中输入如下程序段:
*****"计算"菜单命令的程序设计****
SETTALKOFF
USEzhichengIN2
USEyuangongIN1
ALTERTABLEyuangongADD新工资N(10,2)
SELECT2
DOWHILENOTEOF()&&遍历zhicheng表中的每一条记录
SELECT1
UPDATEyuangongSET新工资=工资*(1+(zhicheng.增加百分比/100));
WHEREyuangong.职称代码=zhicheng.职称代码
SELECT2
SKIP
ENDDO
SETTALKON
************************************
在"退出"菜单项的"命令"文本框中编写程序代码:
SETSYSMENUTODEFAULT。
选择菜单命令"菜单"-"生成",生成一个可执行菜单文件staff_m.mpr。
关闭设计窗口,在命令窗口输入命令:
DOstaff_m.mpr,看到VisualFoxPro的菜单栏被新建的菜单所代替,单击"退出"菜单命令将恢复系统菜单。
执行"计算"菜单命令后,系统生成一个新的字段,并将计算结果自动保存到新字段中。
第十五套
二、简单应用题(共2小题,每题20分,计40分)
(1)用SQL语句查询课程成绩在60分以上的学生姓名,并将结果按姓名降序存入表文件res.dbf中。
(2)编写my.prg程序,实现的功能:
先为"学生成绩"表增加一个"学生平均成绩"字段,类型为N(6,2),根据"学生选课"表统计每个学生的平均成绩,并写入"学生成绩"表新的字段中。
【答案】
(1)在命令窗口中输入命令:
MODIFYCOMMANDquery1,在程序文件编辑器窗口输入如下程序段:
*******文件query1.prg中的程序段******************
SELECTDISTINCT(姓名)AS姓名;
FROM课程,学生选课,学生成绩;
WHERE学生成绩.学号=学生选课.学号;