VFP题库141.docx
《VFP题库141.docx》由会员分享,可在线阅读,更多相关《VFP题库141.docx(38页珍藏版)》请在冰豆网上搜索。
VFP题库141
第一套
在考生文件夹下已有customers(客户)、orders(订单)、orderitems(订单项)和goods(商品)四个表。
(1)创建一个名为“订单管理”的数据库,并将已有的customers表添加到该数据库中。
(2)利用表设计器为customers表建立一个普通索引,索引名为bd,索引表达式为“出生日期”。
(3)在表设计器中为customers表的“性别”字段设置有效性规则,规则表达式为:
性别$"男女",出错提示信息是:
“性别必须是男或女”。
(4)利用INDEX命令为customers表建立一个普通索引,索引名为khh,索引表达式为“客户号”,索引存放在customers.cdx中。
然后将该INDEX命令存入命令文件pone.prg中。
(1)新建并打开数据库"订单管理",在数据库设计器的空白处单击鼠标右键,选择"添加表"命令,将考生文件夹下的表"customers"添加到新建的数据库中。
(2)在数据库设计器中右键单击表"customers",选择"修改"命令,在弹出的表设计器中单击"索引"选项卡,输入索引名"bd",选择类型为"普通索引",输入表达式"出生日期",最后单击"确定"按钮,保存对表的修改。
(3)以同样的方式打开customers表设计器,选中字段"性别",在规则文本框中输入:
性别$"男女",在信息文本框中输入:
"性别必须是男或女"。
(4)新建一个程序,编写下列命令语句。
Usecustomers
indexon客户号tagkhh
保存程序名为pone.prg,并运行程序。
(1)在考生文件夹下创建表单文件formone.scx,如图1所示,其中包含一个标签Label1、一个文本框Text1和一个命令按钮Command1。
然后按相关要求完成相应操作。
①如图2-43所示设置表单、标签和命令按钮的Caption属性。
②设置文本框的Value属性值为表达式Date()。
③设置“查询”按钮的Click事件代码,使得表单运行时单击该按钮能够完成如下查询功能:
从customers表中查询指定日期以后出生的客户,查询结果依次包含“姓名”、“性别”、“出生日期”3项内容,各记录按“出生日期”降序排序,查询去向为表tableone。
最后运行该表单,查询1980年1月1日以后出生的客户。
(2)向名为“订单管理”的数据库(在基本操作题中建立)添加orderitems表。
然后在数据库中创建视图viewone:
利用该视图可以从orderitems表查询统计各商品的订购总量,查询结果依次包含“商品号”和“订购总量”(即所有订单对该商品的订购数量之和)两项内容,各记录按“商品号”升序排序。
最后利用该视图查询视图中的全部信息,并将查询结果存放在表tabletwo中。
(1)
步骤1:
在命令窗口输入"Creaformformone",新建一个表单,按题目要求添加控件并修改控件的属性,将customers表添加到数据环境中。
步骤2:
然后将Text1的Value属性设置为"=date()",编写"查询"按钮的Click事件代码如下。
******"查询"按钮的Click事件代码******
x=ThisForm.Text1.Value
SELECTCustomers.姓名,Customers.性别,Customers.出生日期;
FROMcustomers;
WHERECustomers.出生日期>=x;
ORDERBYCustomers.出生日期DESC;
INTOTABLEtableone.dbf
*************************
步骤3:
保存并运行表单,查看表单的运行结果。
(2)
步骤1:
打开考生文件夹下的"订单管理"数据库,在数据库设计器中右键单击数据库的空白处,选择"添加表"命令,将orderitems表添加到数据库中。
步骤2:
新建一个视图,将orderitems表添加到视图设计器中;在"字段"选项卡中,将字段"商品号"和表达式"SUM(Orderitems.数量)AS订购总量"添加到"选定字段"列表框中;在"排序依据"选项卡中,选择按商品号升序排序记录,在"分组依据"选项卡中将"商品号"设置为分组字段。
步骤3:
将视图保存为"viewone"。
步骤4:
新建一个查询文件,将新建的"viewone"视图添加到新建的查询中,选择其中的全部字段,设置查询去向为表"tabletwo",保存并运行查询,查询文件名默认。
在考生文件夹下创建一个顶层表单myform.scx(表单的标题为“考试”),然后创建并在表单中添加菜单(菜单的名称为mymenu.mnx,菜单程序的名称为mymenu.mpr)。
①菜单命令“计算”和“退出”的功能都通过执行过程完成。
②菜单命令“计算”的功能是根据orderitems表和goods表中的相关数据计算各订单的总金额(一个订单的“总金额”等于它所包含的各商品的金额之和,每种商品的“金额”等于“数量*单价”),并将计算的结果填入orders表的相应字段中。
③菜单命令“退出”的功能是释放并关闭表单。
最后,请运行表单并依次执行其中的“计算”和“退出”菜单命令。
步骤1:
新建一个表单,修改表单的Caption为"考试",ShowWindow属性为"2-作为顶层表单"。
步骤2:
双击表单空白处,编写表单的Init。
DOmymenu.mprWITHTHIS,"myform"
步骤3:
新建一个菜单,选择"显示"菜单下的"常规选项"命令,在弹出的"常规选项"对话框中勾选"顶层表单"。
步骤4:
输入菜单项"计算"和"退出",结果均选择"过程",然后单击两个菜单项后面的"创建"按钮,分别编写如下代码。
******"计算"菜单项中的命令代码******
SELECTOrderitems.订单号,sum(orderitems.数量*goods.单价)as总金额;
FROMorderitems,goods;
WHEREOrderitems.商品号=Goods.商品号;
GROUPBYOrderitems.订单号;
ORDERBYOrderitems.订单号;
INTOTABLEtemp.dbf
CLOSEALL
SELE1
USEtemp
INDEXON订单号TOddh1
SELE2
USEorders
INDEXON订单号TOddh2
SETRELATIONTO订单号INTOA
DOWHILE.NOT.EOF()
REPLACE总金额WITHtemp.总金额
SKIP
ENDDO
BROW
*************************
******"退出"菜单项中的命令代码******
myform.Release
*************************
步骤5:
保存菜单名为"mymenu"并生成可执行文件。
步骤6:
保存表单名为"myform"并运行。
第二套
基本操作题
1.新建一个不包含任何控件的空表单myform.scx(表单名和表单文件名均为myform)。
2.打开表单文件formtwo.scx,将表单的标题设为"计算机等级考试"。
3、打开表单文件formthree.scx,使用布局工具栏操作使表单上的4个命令按钮按顶边水平对齐。
4、打开表单文件formfour.scx,设置有关属性使表单初始化时自动在VisualFoxPro主窗口内居中显示。
1、单击工具栏上的"新建"按钮,再单击"表单",单击"新建文件",将表单的Name属性修改为myform,单击"保存"按钮,将表单保存为myform.scx。
2、打开表单formtwo.scx,将表单的Caption属性修改为"计算机等级考试"。
3、打开表单formthree.scx,选择"显示"菜单下的"布局工具栏"子菜单,将布局工具栏显示出来。
选中表单上的4个命令按钮,单击布局工具栏上的"顶边对齐"按钮。
4、打开表单formfour.scx,将表单的AutoCenter属性值设置为".T.-真"
简单应用
1使用查询设计器设计完成:
查询“吴”姓读者(客户名第一个字为“吴”)订购图书情况,查询结果包括客户名、订单号、图书名、单价、数量和签订日期字段的值,要求按客户名升序排序,并运行该查询将查询结果存储在表文件appone,查询文件也保存为appone。
2使用SQL语句查询每个读者订购图书的数量和金额(数量*单价),查询结果包括客户名、订购总册数和金额,查询按金额降序排序,查询结果存储在apptwo.dbf表文件,最后将SQL语句保存在apptwo.prg命令文件。
建立查询可以使用"文件"菜单完成,选择文件--新建--查询--新建文件,将order、orderitem和goods表添加到查询中,并设置三表间的联系,从字段选项卡中依次选择"Order.客户名"、"Order.订单号"、"Goods.图书名"、"Goods.单价"、"Orderitem.数量"、"Order.签订日期";
切换到"筛选"选项卡,在"字段名"中选择"Order.客户名","条件"选择"=","实例"中输入:
吴;
切换到"排序依据"选项卡并在其中选择字段"Order.客户名",排序选项为"升序";
单击"查询"菜单下的"查询去向",选择"表",在"表名"右边的对话框中输入表名appone,最后保存并运行该查询。
SELECTOrder.客户名,sum(orderitem.数量)as订购总册数,;
sum(orderitem.数量*Goods.单价)as金额;
FROMgoodsINNERJOINorderitemINNERJOINorder;
ONOrderitem.订单号=Order.订单号;
ONGoods.图书号=Orderitem.图书号;
GROUPBYOrder.客户名;
ORDERBY金额DESC;
INTOTABLEapptwo.dbf
运行该SQL语句,然后将此语句保存在apptwo.prg文件中。
综合应用
在考生文件夹下完成如下综合应用:
①建立数据库“订单管理”,将表order、goods和orderitem添加到“订单管理”数据库;
②在“订单管理”数据库中创建视图orderview,该视图包含信息:
客户名、订单号、图书名、数量、单价和金额(单价*数量);
③建立文件名和表单名均为orderform的表单,在表单中添加表格控件grid1(将RecordSourceType属性设置为“表”)和命令按钮“退出”(command1);在表单的load事件中使用SQL语句,从视图orderview中按客户名升序、金额降序查询数量为1的客户名、图书名和金额信息,并将结果存储到表文件result.dbf。
在表单运行时使得在控件grid1中能够显示表result.dbf中的内容(在相应的事件中将grid1的recordsource属性指定为result.dbf);单击“退出”命令按钮时释放并关闭表单。
完成以上所有功能后运行表单orderform。
①创建数据库可以使用"文件"菜单完成,选择文件--新建--数据库--新建文件,在数据库设计器中依次添加order、goods和orderitem表。
②通过createVIEW命令打开视图设计器,在"添加表或视图"对话框中依次添加order、orderitem和goods表,并设置三表间的联系;在"字段"选项卡中选择order.客户名、order.订单号、goods.图书名、orderitem.数量、goods.单价5个字段,再在"函数和表达式"下输入:
goods.单价*orderitem.数量AS金额。
单击"添加"按钮。
③在命令窗口输入命令:
CREATEFORMorderform,打开表单设计器窗口,将表单的Name属性修改为orderform。
④在表单上添加表格、命令按钮,并进行适当的布置和大小调整。
将表格的RecordSourceType属性设置为"0-表",命令按钮的Caption属性设置为"退出"。
⑤在表单的load事件代码中输入:
select客户名,图书名,金额fromorderviewwhere数量=1;
orderby客户名,金额descintotableresult.dbf
⑥在表格的activatecell事件代码中输入:
thisform.Grid1.recordsource="result.dbf"
⑦设置"退出"按钮的Click事件代码:
THISFORM.RELEASE
⑧保存表单并运行
第三套
基本操作题
在考生文件夹下完成下列操作:
1.新建一个名为"学校"的数据库文件,将自由表"教师表"、"职称表"和"学院表"添加到该数据库中。
2.在"学校"数据库文件中,为"职称表"建立主索引,索引表达式为"职称级别",索引名为indexone。
3.使用报表向导为"职称表"建立一个报表myreport,选定"职称表"的全部字段,按"职称级别"字段降序排序,其他选项选择默认值。
4.修改test.prg中的语句,该语句的功能是将"职称表"中所有职称名为"教授"的记录的"基本工资"存储于一个新表prof.dbf中,新表中包含"职称级别"和"基本工资"两个字段,并按"基本工资"升序排列。
最后运行程序文件test.prg。
第3小题:
使用报表向导创建报表。
(1)单击工具栏上的"新建"按钮,打开"新建"对话框,文件类型选择"报表",单击"向导"按钮。
(2)按照报表向导提示操作,最后单击"打印预览"按钮。
第4小题:
修改程序。
(1)单击工具栏的"打开"按钮,选择文件类型"程序",再选择test.prg,单击"确定"按钮,打开程序编辑器窗口,显示如下程序清单:
select职称级别,基本工资from职称表where职称名="教授"todbfprof.dbfgroupby基本工资
(2)将其修改为:
select职称级别,基本工资from职称表where职称名="教授"intodbfprof.dbforderby基本工资
(3)单击工具栏的"保存"按钮,保存修改后的test.prg程序。
(4)单击工具栏的运行按钮"!
"运行该程序。
简单应用
在考生文件夹下完成下列操作:
1.请修改并执行程序temp.prg,该程序的功能是:
根据"教师表"和"职称表"计算每位教师的"应发工资",每位教师的"应发工资"等于:
与"职称级别"相符的"基本工资"+"课时"×80×职称系数,教授的职称系数为1.4,副教授的职称系数为1.3,讲师的职称系数为1.2,助教的职称系数为1.0。
计算结果存储于自由表salary.dbf中,salary.dbf中的字段包括姓名、系号和应发工资,并按系号降序排列,系号相同时按应发工资升序排列。
注意,只能修改标有错误的语句行,不能修改其他语句行。
2.创建一个新类MyCheckBox,该类扩展VisualFoxpro的CheckBox基类,新类保存在考生文件夹下的myclasslib类库中。
在新类中将Value属性设置为1。
新建一个表单MyForm,然后在表单中添加一个基于新类MyCheckBox的复选框,如图所示。
第1题:
用SQL语句,修改程序。
(1)单击工具栏的"打开"按钮,选择文件类型"程序",再选择temp.prg,单击"确定"按钮,打开程序编辑器窗口,显示如下程序清单并修改程序(箭头后蓝色字体是正确答案):
create职称系数表(职称名c(6),职称系数f(10,2))&&有错误
--》createtable职称系数表(职称名c(6),职称系数f(10,2))
insertinto职称系数表value("教授",1.4)
insertinto职称系数表value("教授",1.3)&&有错误
--》insertinto职称系数表value("副教授",1.3)
insertinto职称系数表value("讲师",1.2)
insertinto职称系数表value("助教",1.0)
SELECT姓名,系号,课时*80*职称系数+基本工资as应发工资;
FROM职称系数表,教师表;&&有错误
--》FROM职称表,职称系数表,教师表;
WHERE职称表.职称级别=教师表.职称级别;
OR职称表.职称名=职称系数表.职称名;&&有错误
--》AND职称表.职称名=职称系数表.职称名;
intodbfsalary.dbf;
orderby系号desc,应发工资
(3)单击工具栏的"保存"按钮,保存修改后的temp.prg程序。
(4)单击工具栏的运行按钮"!
"运行该程序。
第2题:
新建类。
(1)单击工具栏的"新建"按钮,在"新建"对话框中,选择"类",再单击"新建文件"按钮,在弹出的"新建类"对话框中输入或选择:
类名:
MyCheckBox
派生于:
选择CheckBox
存储于:
myclasslib
单击"确定"按钮,系统弹出"类设计器"窗口;
(2)在"类设计器"的属性窗口中,将复选框的Value属性设置为1;
(3)单击工具栏的"保存"按钮,并关闭类设计器窗口;
(4)单击工具栏的"新建"按钮,在"新建"对话框中,选择"表单",再单击"新建文件"按钮,弹出"表单设计器"窗口。
(5)单击"表单控件工具栏"的"查看类"按钮,在弹出的菜单中,选择"添加"命令,在弹出的"打开"对话框中,选择考生目录下的类库文件myclasslib.vcx,再单击"打开"按钮,此时"表单控件工具栏"中就出现mycheckbox控件,选择该控件添加到表单中。
(6)单击常用工具栏的"保存"按钮,保存表单myform.scx;
(7)单击常用工具栏的运行按钮"!
",运行该表单。
综合应用
在考生文件夹下完成下列操作:
1.建立一个文件名和表单名均为formtest的表单,表单中包括一个标签(Label1)、一个列表框(List1)、一个表格(Grid1)。
2.在表单的数据环境中添加"学院表"和"教师表"。
3.通过属性窗口将标签的标题设为"系名"。
4.列表框用于显示系名,通过属性窗口将列表框(List1)的RowSource和RowSourceType属性指定为"学院表.系名"和6。
5.表格用于显示所有教师的相关信息,通过属性窗口将表格(Grid1)的RecordSource和RecordSourceType属性指定为"select职工号,姓名,课时from教师表intocursortmp"和4。
6.为列表框(List1)的DblClick事件编写程序。
程序的功能是:
表单运行时,用户双击列表框中的选项时,将所选系教师的"职工号"、"姓名"和"课时"三个字段的信息存入自由表two.dbf中,表中的记录按"职工号"降序排列。
7.运行表单,在列表框中双击"信息管理"。
(1)在命令窗口输入下面命令并回车:
CREATEFORMformtest
打开表单设计器窗口;
(2)在属性窗口中,设置表单的Name属性为formttest;
(3)右击表单设计器窗口的空白处,在弹出的快捷菜单中,选择"数据环境"命令,打开"数据环境设计器"窗口,并将"学院表"和"教师表"添加进来;
(4)在表单设计器中添加标签控件Label1,并设其标题属性Caption值为:
系名;
(5)在表单设计器中添加列表框控件List1,在属性窗口设置RowSourceType属性为:
6-字段,RowSource属性为:
学院表.系名
(6)在表单设计器中添加表格控件Grid1,在属性窗口中,设置RecordSourceType的属性为:
4-SQL说明,设置RecordSource的属性为:
select职工号,姓名,课时from教师表intocursortmp
(7)设置"列表框"的DblClick事件代码:
SELECT职工号,姓名,课时;
FROM学院表,教师表WHERE学院表.系号=教师表.系号AND;
学院表.系名=Thisform.List1.Value;
ORDERBY教师表.职工号DESC;
INTOTABLEtwo.dbf
Thisform.Grid1.RecordSourceType=0
Thisform.Grid1.RecordSource="two"
(8)单击常用工具栏的"保存"按钮,保存表单;
(9)单击常用工具栏的运行按钮"!
",运行表单,在列表框中双击"信息管理"条目,即可在显示菜单看到two.dbf表,在表格控件中也看到two.dbf表。
第四套
基本操作题
在考生文件夹下完成下列操作:
1.建立名称为“CDB”的商品销售数据库。
然后将考生文件夹下的顾客表CUST、订单表ORDER和商品表COMM三个自由表添加到数据库CDB中。
2.分别为顾客表CUST、订单表ORDER和商品表COMM创建主索引,CUST表主索引的索引名和索引表达式均为“顾客号”;COMM表主索引的索引名和索引表达式均为“商品号”;ORDER表主索引的索引名为“PK_CC”、索引表达式为“顾客号+商品号”;分别为ORDER表的“顾客号”和“商品号”建立普通索引(升序),索引名与字段名相同。
3.通过字段“顾客号”建立ORDER与CUST之间的永久联系、通过字段“商品号”建立ORDER与COMM之间的永久联系。
然后为以上建立的永久联系设置参照完整性约束:
更新规则为“级联”;删除规则为“限制”;插入规则为“限制”。
4.在商品销售数据库CDB中使用SQL的CREATETABLE语句创建数据库表:
销售明细表(顺序号,日期,商品号,商品名,金额),其中:
顺序号为字符型,宽度为6;日期为日期型;商品号为字符型,宽度为6;商品名为字符型,宽度为10;金额为数值型,宽度为10(其中小数2位);表的主关键字为“顺序号”。
将创建表的SQL语句存放在文件ONE.PRG中。
(4)建立程序ONE.PRG,输入以下SQL语句。
CREATETABLE销售明细表(顺序号C(6)PRIMARYKEY,日期D,商品号C(6),商品名C(10),金额N(10.2))
保存并执行程序。
简单应用题
在考生文件夹下,打开该“CDB”数据库,完成如下简单应用:
1.使用一对多表单向导选择CUST表和ORDER表生成一个名为“ONE”的表单。
要求从父表CUST中选择所有字段,从子表ORDER中选择所有字段,使用“顾客号”建立两表之间的关系,样式为阴影式;按钮类型为图片按钮;排序字段为“顾客号”,升序;表单标题为“顾客订购商品维护”。
2.使用查询设计器设计一个名称为VIEW_C的查询,统计查询所有顾客购买商品应付款的情况。
查询结果包括顾客号、顾客名、地址和付款金额四个字段(注意:
每件商品的“金额”是由COMM表中该商品的单价*ORDER表中该商品的订购数量计算得到,每个顾客的付款金额则是顾客购买商品金额的合计),各记录按顾客号升