VF上机题归类新.docx
《VF上机题归类新.docx》由会员分享,可在线阅读,更多相关《VF上机题归类新.docx(29页珍藏版)》请在冰豆网上搜索。
VF上机题归类新
上机题归类
基本操作(前四章)
1.建项目:
11A1、12A1、21A1、22A1、45A2
2.建数据库:
10A1、12A2、16A1、20A1、22A2、23A1、28A2、28C1、40A3、45A3、47A1、48A1
3.添加删除表(数据库)、数据库(项目):
1A1、9A12、10A2、11A2、12A3、14A3、15A2(到项目)、19A1、20A2、21A2A3(到项目)、21A3、22A3(到项目)、25A1、27A1、28C2、34A1、44A2、45C1、46A1
4.建表:
1A2(要关闭数据库)、28A1(与A9同做,设计完字段后单击确定,在弹出的对话框中选“是”,直接输入A9中的记录)、30C1、42C1、44A3、47A3、50A1
5.增加修改字段:
2A1、8A1(与A9同做,加字段后不击确定,直接在默认值处写:
部门号+雇员号+”@”)、13A2、14A1、18A3(限定位置)、22A3、29A2、43A1、49A1、50A3
6.增加修改记录:
8A3、28A3
7.建索引:
7A4、9A3、16A23、18A1、19A2、25A3、27A2、29A4、34A2、38A2、42A1、44A1、46A23、47A2、48A2、50A2
8.有效性规则:
2A2、8A2、9A4、11A4、13A3、18A2、19A3、37A4、38A1
9.默认值:
13A4(先允许为NULL,再设置默认值为NULL)、25A2(默认值:
date())
10.永久联系:
2A3、8A4、10A3、11A3、13A1、16A4、20A3、21A4、22A4、25A4、27A3、38A3、46A4、47A4、48A3、37A4
11.参照完整性:
2A4、10A4、27A4、48A4
讲解题目:
3AB、12、28、18、38、44、11、8、9、10、7A34、29(两步操作)、46、13、25、21、2A123、1A12
SQL命令归类(第五章)
1.SQL-SELECT:
17A1、49A3、24A1、4A4
17A1:
select*fromstock_slintotablestock_bk
49A3:
selectdistinct*fromtabaintotabletabc
2.SQL-INSERT:
15A3、17A2、21B1(不是SQL—SELECT语句考点,不能用查询设计器做)、26A1、35A4、39A4
15A3:
insertintoscore1values(“993503433”,”0001”,99)
17A2:
insertintostock_bkvalues(“600028”,4.36,4.60,5500)
21B1:
update教师set新工资=原工资*1.2where职称=”教授”
update教师set新工资=原工资where职称!
=”教授”
insertinto教师values(“林红”,”讲师”,10000,10200)
26A1:
insertinto零件信息values(“p7”,”PN7”,1020)
35A4:
insertintogoldenvalues(”011”,9,7,11)
39A4:
insertinto分组情况表values(“01”,”通俗唱法”)注:
先做A3
3.SQL-UPDATE:
16C2、17A3、18A4、21B1、24A2、26A3、34A4、36A4、49A2
16C2:
updatebooks_bakset价格=价格*0.95
17A3:
updatestock_bkset现价=8.88where股票代码=”600007”
18A4:
update学生set出生日期={^1983/05/01}where姓名=”王三风”注:
先做A3
21B1:
update教师set新工资=原工资*1.2where职称=”教授”
update教师set新工资=原工资where职称!
=”教授”
insertinto教师values(“林红”,”讲师”,10000,10200)
24A2:
updaterate_exchangeset卖出价=829.01where外币名称=”美元”
26A3:
update零件信息set单价=1090where零件号=”p4”
34A4:
update金牌榜set奖牌总数=金牌数+银牌数+铜牌数
36A4:
updateteacherset工资=8000where姓名=”Jack”
49A2:
updatetabbset日期={^2005-10-1}注:
先做A1
4.SQL-DELECT:
17A4、26A2
17A4:
deletefromstock_bkwhere股票代码=”600000”
26A2:
deletefrom零件信息where单价<600
5.SQL-CREATE:
35A3、39A3
35A3:
createtablegoldenfree(国家代码c(3),金牌数I,银牌数I,铜牌数I)
39A3:
createtable分组情况表free(组号c
(2),组名c(10))
6.SQL-ALTER:
1A4、29A3、34A3、36A3、40A4
29A3:
altertablestudentaddunique学号
34A3:
altertable金牌榜add奖牌总数Icheck奖牌总数>=0
36A3:
altertable学院表add教师人数Icheck教师人数>=0
40A4:
altertable评委表alter评委编号setcheckleft(评委编号,2)=”11”先做A3
查询归类(第六章)
注:
查询设计器的“筛选“选项卡,即WHERE短语之后不能用的函数为:
COUNT、SUM、AVG、MAX、MIN。
1.查询向导:
15A1
2.只保存查询文件(只要.qpr文件):
1A3、12A4、17B1、26C1(一升一降)
3.只需设置查询去向(只要.dbf文件):
7B1、13B1、14A4、14B1、16C13
14A4:
select*fromscore1orderby学号,成绩descintotablenew_order
16C1:
select*frombookswhere书名like“%计算机%”intotablebooks_bak
4.既需保存查询文件,又需设置查询去向(同时需要.qpr文件和.dbf文件):
21B2、24B2、30B1、31B1(分组:
性别)、32B1、34B1、38B1、41B1、42B1、43B1、44B1(两个分组条件)、47B2、46B2、48B2
5.要求用SQL建立查询,但无需保留语句:
9B1、10B1(分组时满足条件)、11B1、12B1、23B2、40B2、45B2
6.要求用SQL建立查询,且要求把语句保存到txt文件中:
2B1、18AB1(筛选、分组时满足条件)、19B1、22B1、24A1、4A4
7.要求用SQL建立查询,且要求把语句保存到prg文件中:
25B2、28AB、35B1、38A4、43A4、50B2
8.建立视图(一定要先打开数据库设计器):
2B2、8C1、15B1、18C1、22B2、23B12、34B2、36B2、39B2、45C2
9.用SQL语句建立视图:
37B1、2B2
10.先建立视图再据视图建立查询:
30B1(year(出生日期)=1982)B2、32B12、33B12、42B12、27B2
程序归类(第七章)
1.程序改错:
7A12、17B2、18B2、20B1、25B1、26B1、29B2、36B1、38B2、39B1、50B1
7A1:
select*from销售表todbf销售表2001where日期<={^2000-12-31}into
7A2
closeall
delete销售表where日期<={^2000-12-31}from
pack
17B2:
modi.prg
SELECTCOUNT((现价-买入价)*持有数量);sum
FROMstock_sl;
WHERE股票代码;
=;in
(SELECT股票代码FROMstock_name;
WHERE"银行"LIKE股票简称)$
18B2:
modi.prg
***********Error***********
MODIFYTABLE学生ADD平均成绩N(6,2)alter
SELECT学生
***********Error***********
DOWHILEEOF()not
SELECTAVG(成绩)FROM选课WHERE学号=学生.学号INTOARRAYcj
***********Error***********
REPLACE平均成绩=cj[1]with
20B1:
rate_pro.prg
&&****ERROR****
FINDFOR姓名=”林诗因”locate
summ=0
&&****ERROR****
WHILENOTEOF()do
&&****ERROR****
summ=summ+a[1]*rate_exchange.持有数量去掉
25B1:
modi1.prg
***在下一行添加一条打开customer表的语句,然后把"(此处空行)"删除
(此处空行)usecustomer
***表没有索引,修改如下语句使之能显示所有“北京”客户的信息
SCANWHILE所在地='北京'for
?
客户编号,公司名称,联系人姓名
ENDSCAN
26B1:
modi1.prg
SELECT零件名称FROM零件信息WHERE零件号=;in
(SELECT零件号FROM使用零件;
GROUPBY项目号HAVINGCOUNT(项目号)=3);零件号
ORDERBY零件名称;
INTOFILEresultsto
29B2:
modi2.scx
“计算”按钮:
*******************found********************
x,s1,s2,s3=0store0tox,s1,s2,s3
*******************found********************
x=thisform.text1x=val(thisform.text1.value)
dowhilex>0
ifint(x/2)=x/2
s1=s1+1
else
s2=s2+1
endif
*******************found********************
ifdiv(x,3)=0ifmod(x,3)=0
s3=s3+1
endif
x=x-1
enddo
thisform.text2.value=s1
thisform.text3.value=s2
thisform.text4.value=s3
thisform.text5.value=s1+s2+s3
“退出”按钮:
closethisform.release
36B1:
FIVE.PRG
&&根据"教师表"计算每个系的教师人数并将数据填入"学院表"
CLOSEDATA
USE学院表
GOTOP
DO.NOT.EOF()&&错误WHILE
xihao=系号
SELECTCOUNT(*)FROM教师表WHERE教师表.系号=xihaoINTOA
&&错误ARRAY
REPLACE教师人数WITHA[1]
NEXT&&错误SKIP
ENDDO
38B2:
THREE.PRG
该命令文件用来查询与"姚小敏"同一天入住宾馆的每个客户的客户号、身份证、姓名、
*工作单位。
查询结果输出到表TABC中。
*该命令文件在第3行、第5行、第7行和第8行有错误,打开该命令文件,直接在错误处修改,不可*改变SQL语句的结构和短语的顺序,不允许增加、删除或合并行。
OPENDATABASE宾馆
SELECT客户.客户号,身份证,姓名,工作单位;
FROM客户JOIN入住;ON客户.客户号=入住.客户号
WHERE入住日期IN;
(SELECT;入住日期
FROM客户,入住;
WHERE姓名="姚小敏");AND客户.客户号=入住.客户号
TOTABLEBIAO3INTO
39B1:
FIVE.PRG
&&根据"歌手表"计算每个组的歌手人数
CLOSEDATA
USEone
GOTOP
WHILE.NOT.EOF()&&错误DO
zuhao=组号
SELECTCOUNT(*)FROM歌手表WHERE歌手表.歌手编号=zuhaoINTOARRAYA
&&错误LEFT(歌手表.歌手编号,2)
REPLACE歌手人数INTOA&&错误WITH
SKIP
ENDDO
50B1:
THREE.PRG
*请改正以下语句代码中的错误,然后运行程序。
SELECT部门表.部门号,部门名,销售表.商品号,商品名,一季度利润+二季度利润+三季度利润+四季度利润as年销售利润;
FROM部门表,销售表,商品代码表;joinjoin
ON销售表.商品号=商品代码表.商品号;
ON部门表.部门号=销售表.部门号;
WHERE销售表.年度="2006";
ORDER1,5;bydesc
TOTABLETABAinto
2.程序编写:
3C、7C1、33C、35C1、41C1、49B1、45A4
3C:
Select订单号,sunm(单价*数量)as总金额fromorder_detailgroupby订单号intotabletemp
Updateorder_listset总金额=temp.总金额whereorder_list.订单号=temp.订单号
Select*fromorder_listorderby总金额descintotableod_new
7C1SELECT*from商品表intotable商品表备份
UPDATE商品表set单价=出厂单价*0.1where商品号='10'
33C
opendatabasecj
select1
usechengji
indexon学号tagxh
select2
usexuesheng
setrelationto学号intoa
go1
dowhilenoteof()
ifa.数学<60
insertintotable3values(b.学号,b.姓名,"数学",a.数学)
endif
ifa.英语<60
insertintotable3values(b.学号,b.姓名,"英语",a.英语)
endif
ifa.信息技术<60
insertintotable3values(b.学号,b.姓名,"信息技术",a.信息技术)
endif
skip
enddo
select*fromtable3orderby分数,学号descintoarraya
deletefromtable3
pack
insertintotable3fromarraya
35C1:
SELECT国家名称,COUNT(名次)AS奖牌总数;
FROM国家,获奖牌情况;
WHERE国家.国家代码=获奖牌情况.国家代码;
GROUPBY国家.国家代码;
ORDERBY奖牌总数DESC,国家名称;
INTOTABLE假奖牌数
41C1:
SELECT歌手姓名,AVG(分数)AS得分;
FROM歌手表,评分表;
WHERE歌手表.歌手编号=评分表.歌手编号;
ANDLEFT(歌手表.歌手编号,2)="01"
GROUPBY歌手表.歌手编号;
ORDERBY2DESC,1DESC;
INTOTABLEFINAL
49B1:
updatetabasetx1=(-b+sqrt(b*b-4*a*c))/(2*a),x2=(-b-sqrt(b*b-4*a*c))/(2*a)whereb*b-4*a*c>=0
updatetabasetnote="无实数解"whereb*b-4*a*c<0
表单归类(第八章)
注:
要是把表直接拖放到表单里面,有时候还要重新设置其recordsource:
表名。
要是把字段添加到列表框,如果是用SQL语句,一定要在最后写intocursor表名。
一、基本操作
1.向导:
34B1(一对多)
2.表单基本属性修改:
3B2、19A4、20A4、30A(movable,建方法)、31A、32A(模式)、33A(布局)、36A12(THISFORM.COMMAND2.ENABLED=.T.)、37A12、39A12(Tab键次序)、41A、42A234(load代码:
useemployee/setordertotagxm;列表框属性设置:
MultiSelect:
.T.;rowsourcetype:
6字段;rowsource:
employee.姓名)、45A1
19A4:
test_form.scx将command2的enabled属性设为.T.
20A4:
test_form.scx将label2的fontname属性设为黑体
37A1:
one.scx
command1的click事件代码如下:
thisform.text1.value=year(date())
二、简单应用
1.建立简单表单:
15B2(可以不用设置数据环境)、16B2、29B1、35B2、40B1、43B2(列表框list1的rowsourcetype:
7文件,选项按钮组optiongroup1的value:
无;click(或者interactivechange)事件代码如下:
thisform.list1.rowsource=thisform.optiongroup1.value)、45B1
2.表单修改:
7B2、8B1、15A4、16B1、29C、37B2、44B2、45C4、46B1、47B1、48B1、49B2
7B2:
form1.scx
双击表单中“刷新标题”命令按钮,修改该控件的CLICK事件代码
Thisform.标题=”商品销售数量输入”caption
双击表单中“商品销售输入”命令按钮,修改该控件的CLICK事件代码
DOsellcommform
双击表单中“输出销售报表”命令按钮,修改该控件的CLICK事件代码
DOprint1TOPREVIEWreportform去掉TO
8B1:
form1.scx
双击表单中“刷新日期”命令按钮,修改该控件的CLICK事件代码
UPDATEALL日期WITHDATE()雇员SET=
29C3:
zonghe.scx修改命令按钮写代码
确定:
cn=""
****得到右边列表框中列表项的数目
cc=thisform.list2.ListCount
FORi=1TOcc
x=allt(thisform.list2.listitem(i))
cn=cn+"课程名称='"+x+"'"+"or"
ENDFOR
cn=substr(cn,1,len(cn)-4)&&去掉最后连接时的or
****以下是完成查询和存储的语句或程序,请考生完成
用查询设计器建好查询复制SQL语句,只需修改下划线部分
select姓名,课程名称,考试成绩fromstudentjoincoursejoinscore;
oncourse.课程编号=score.课程编号onstudent.学号=score.学号;
orderby课程名称,考试成绩desc;
where&cnintotablezonghe
37B2SIX.SCX
USE用户表
GOTOP
flag=0
&&添加一条语句DOWHILENOTEOF()
IFAlltrim(用户名)==Alltrim(Thisform.Text1.Value)
IFAlltrim(口令)==Alltrim(Thisform.Text2.Value)
WAIT"欢迎使用"WINDOWTIMEOUT2
ELSE
WAIT"口令错误"WINDOWTIMEOUT2
ENDIF
flag=1
EXIT
ENDIF
&&添加一条语句SKIP
ENDDO
&&添加一条语句IFflag=0
WAIT"用户名错误"WINDOWTIMEOUT2
ENDIF
44B2:
TESTA.SCX
*在下面的程序中,第3、4、12行语句不正确,请修改!
*注意:
修改时不允许增加或删除行,只能在错误行上进行修改!
USEpass
Key1=ALLTRIM(ThisForm.text1.value)
Key2=ALLTRIM(ThisForm2)ThisForm.text2.value
LISTALLWHILEUSER=Key1locatefor
IFFOUND()ANDPASS=Key2
WAIT"欢迎使用本系统!
"WINDOWTIMEOUT1
thisform.release
ELSE
num=num+1
IFnum=3
WAIT"用户名或口令不对,登录失败!
"WINDOWTIMEOUT1
LOOPthisform.release
ELSE
WAIT"用户名或口令不对,请重输入!
"WINDOWTIMEOUT1
ENDIF
ENDIF
45C4:
three.scx
Command1.click:
Selcet*fromviewscorderby学号,成绩descintotableresult
Command2.click:
Reportformthreepreview
Command3.click:
Thisform.release
46B1:
FORMONE.SCX
*下面代码的功能是读取所选职员的职员号,然后计算该职员所签订单的平均金额,并显示在文本框内。
*修改所有***FOUND***下面的一条语句。