VFP秋上机试题.docx
《VFP秋上机试题.docx》由会员分享,可在线阅读,更多相关《VFP秋上机试题.docx(16页珍藏版)》请在冰豆网上搜索。
VFP秋上机试题
上机部分
一、项目、数据库和表操作(12分)
练习1
打开T盘根目录下的项目文件JXGL,在该项目文件中已有一数据库JXSJ。
1.在JXSJ数据库中按如下表格所示的结构创建AB表,并表格中的要求设置相关属性。
字段名
数据类型
宽度
字段标题
RQ
D
日期
SCSL
N
6
售出门票数量
SJRS
N
6
实际参观人数
BZ
M
备注
(1)设置AB表的表注释:
参观人数;
(2)设置日期字段的默认值:
当前系统日期;
(3)设置日期字段的显示类:
微调框;
(4)设置记录有效性规则:
实际参观人数小于或等于售出门票数量;
(5)创建普通索引:
索引名为abcd,要求按实际参观人数与售出门票数量之比排序;
2.在AB表中输入如下记录:
RQ
SCSL
SJRS
BZ
(默认值)
240100
198808
全天下雨
3.给KC表中所有学分大于或等于5的记录加删除标记。
4.JS表已存在主索引GH,索引表达式为GH,KCAP表已存在普通索引GH,索引表达式为GH,以JS表为主表,KCAP表为子表并按GH建立永久关系,并设置两表之间的参照完整性:
更新级联、删除级联。
练习2
打开T盘根目录下的项目文件JXGL,在该项目文件中已有一数据库JXSJ。
1.在JXSJ数据库中按如下表格所示的结构创建AB表,并表格中的要求设置相关属性。
字段名
数据类型
宽度
字段标题
RQ
D
日期
QCPH
C
8
汽车牌号
DD
C
20
地点
TP
G
图片
(1)设置AB表的表注释:
汽车违停记录;
(2)设置日期字段的默认值:
当前系统日期减1;
(3)设置日期字段的显示类:
列表框;
(4)设置记录有效性规则:
不能为空;
(5)创建普通索引:
索引名为abcd,要求按地点排序,相同时根据汽车牌号排序;
2.在AB表中输入如下记录:
RQ
QCPH
DD
(默认值)
苏A88888
世纪广场
3.修改JC表数据:
所有记录的单价字段的值取整。
4.JS表已存在主索引GH,索引表达式为GH,KCAP表已存在普通索引GH,索引表达式为GH,以JS表为主表,KCAP表为子表并按GH建立永久关系,并设置两表之间的参照完整性:
更新限制、插入限制。
练习3
打开T盘根目录下的项目文件JXGL,在该项目文件中已有一数据库JXSJ。
1.在JXSJ数据库中按如下表格所示的结构创建AB表,并表格中的要求设置相关属性。
字段名
数据类型
宽度
字段标题
RQ
D
日期
DW
C
20
报销单位
XM
C
20
开支项目
JE
N
6(小数1位)
金额
(1)设置AB表的表注释:
账目登记;
(2)设置日期字段的默认值:
系统当前日期;
(3)设置日期字段的显示类:
列表框;
(4)设置记录有效性规则:
不能为星期六和星期日(提示:
使用DOW()函数);
(5)创建普通索引:
索引名为abcd,要求按报销单位排序,相同时根据日期排序;
2.在AB表中输入如下记录:
RQ
DW
XM
JE
(系统当前日期)
数学系
机动费
2345.6
3.将DMB表中类型(LX)为“文化程度”的记录复制到新的表中(表名为WHCDB)。
4.XS表已存在主索引XH,索引表达式为XH,CJ表已存在普通索引XH,索引表达式为XH,以XS表为主表,CJ表为子表并按XH建立永久关系,并设置两表之间的参照完整性:
更新限制、插入限制、删除级联。
练习4
打开T盘根目录下的项目文件JXGL,在该项目文件中已有一数据库JXSJ。
1.在JXSJ数据库中按如下表格所示的结构创建AB表,并表格中的要求设置相关属性。
字段名
数据类型
宽度
字段标题
RQ
D
日期
DD
C
20
地点
QCPH
C
8
汽车牌号
CS
N
3
图片
(1)设置AB表的表注释:
汽车超速记录;
(2)设置日期字段的默认值:
当前系统日期;
(3)设置日期字段的显示类:
列表框;
(4)设置记录有效性规则:
大于120或小于60;
(5)创建普通索引:
索引名为abcd,要求按地点排序,相同时根据车速排序;
2.在AB表中输入如下记录:
RQ
DD
QCPH
CS
(默认值)
沪宁高速镇江段
苏A88888
142
3.修改JC表数据:
所有记录的单价字段的值增加10%。
4.JS表已存在主索引GH,索引表达式为GH,KCAP表已存在普通索引GH,索引表达式为GH,以JS表为主表,KCAP表为子表并按GH建立永久关系,并设置两表之间的参照完整性:
更新级联、插入限制。
练习5
练习6
练习7
二、设计查询(8分)
在TEST项目中已经存在查询chaxun
练习1
已知教师表(JS)含有工号(gh,C)、姓名(xm,C)等字段;自由表图书借阅表(JYB)含有读者号(dzh,C)、分类号(flh,C)、借阅日期(jyrq,D)、还书日期(hsrq,D)等字段,教师的读者号与工号相同。
按如下要求修改JXGL项目中的查询CHAXUN:
基于JS表和JYB表查询教师借书情况,计算过期罚款信息。
要求:
查询输出字段为dzh、xm、罚款额;查询结果按罚款额降序排序;输出去向为文本文件TEMP。
注:
罚款计算方法为30天以上超过部分每本每天0.10元,未还书者(即还书日期为空的记录)不统计。
练习2
已知学生表(XS)含有工号(xh,C)、姓名(xm,C)等字段;自由表图书借阅表(JYB)含有读者号(dzh,C)、分类号(flh,C)、借阅日期(jyrq,D)、还书日期(hsrq,D)等字段,学生的读者号与学号相同。
按如下要求修改JXGL项目中的查询CHAXUN:
基于XS表和JYB表查询学生借书情况,计算过期罚款信息。
要求:
查询输出字段为dzh、xm、罚款额;查询结果按罚款额降序排序;输出去向为文本文件TEMP.TXT。
注:
罚款计算方法为30天以上超过部分每本每天0.05元,未还书者(即还书日期为空的记录)不统计。
练习3
已知教师表(JS)含有工号(gh,C)、院系专业代码(yxzydm,C)等字段;自由表工资表(GZB)含有工号(gh,C)、基本工资(jbgz,N)、岗位津贴(gwjt,N)、综合津贴(zhjt,N)、住房补贴(zfbt,N)等字段。
按如下要求修改JXGL项目中的查询CHAXUN:
基于JS表和GZB表查询各院系专业教师人数和应发工资总额。
要求:
查询输出字段为yxzydm、人数、应发工资总额;查询结果按应发工资总额降序排序,且仅输出应发工资总额最多的前三个院系专业;输出去向表文件TEMP。
注:
应发工资总额=jbgz+gwjt+zhjt+zfbt。
练习4
已知教师表(JS)含有工号(gh,C)、院系专业代码(yxzydm,C)等字段;自由表图书借阅表(JYB)含有读者号(dzh,C)、分类号(flh,C)、借阅日期(jyrq,D)、还书日期(hsrq,D)等字段,教师的读者号与工号相同。
按如下要求修改JXGL项目中的查询CHAXUN:
基于JS表和JYB表查询各院系专业借书情况。
要求:
查询输出字段为yxzydm、借书本数、最大借阅天数;查询结果按最大借阅天数降序排序;输出去向为临时表TEMP。
注:
借阅天数为hsrq与jyrq之差,未还的图书按当前系统日期计算借阅天数。
练习5
练习6
练习7
三、设计菜单(5分)
练习1
JXGL项目中已存在菜单MENU,其中已定义了“文件”菜单栏及其中的“退出菜单”菜单项。
按如下要求设计菜单,完成后的运行效果如图1所示。
1.在“文件”菜单栏右侧创建“数据管理”菜单栏;
2.在“数据管理”菜单栏下创建子菜单“查询”和“数据备份”;图1
3.为“查询”菜单项设置快捷键:
F12;
4.在菜单项“查询”和“数据备份”之间插入分组线;
5.为“数据备份”菜单项设置过程代码:
d=GETFILE(‘dbf’,’.dbf’)
USE&d
COPYTObf1
练习2
JXGL项目中已存在菜单MENU,已定义了“文件”菜单栏及其中的“退出菜单”菜单项。
按如下要求设计菜单,完成后的运行效果如图1所示。
1.在“文件”菜单栏右侧创建“成绩管理”菜单栏;图1
2.在“成绩管理”菜单栏下创建子菜单“插入”和插入系统菜单“导出(E)”菜单项;
3.为“查询”菜单项设置命令:
SELECT*FROMcj
4.为“导出”菜单项设置跳过条件:
cj表打开时才可操作(启用)。
5.在菜单项“查询”和“导出”之间插入分组线。
练习3
JXGL项目中已存在菜单MENU,已定义了“文件”菜单栏及其中的“退出菜单”菜单项。
按如下要求设计菜单,完成后的运行效果如图1所示。
1.在“文件”菜单栏右侧创建“数据库”菜单栏;
2.在“数据库”菜单栏下创建子菜单“浏览文件;图1
3.为“浏览文件”菜单项设置快捷键“CTRL+D”
4.在“数据库”菜单栏下插入系统菜单“打开”和系统菜单“关闭”。
5.为“浏览文件”菜单项设置命令代码:
DIR*.doc。
练习4
JXGL项目中已存在菜单MENU,已定义了“文件”菜单栏及其中的“退出菜单”菜单项。
按如下要求设计菜单,完成后的运行效果如图1所示。
1.在“文件”菜单栏右侧创建“数据管理”菜单栏;
2.在“数据管理”菜单栏下创建子菜单“教师”和“学生”;图1
3.为“教师”菜单项设置跳过条件:
JS表打开时菜单项才可操作(启用)
4.为“教师”菜单项创建子菜单“浏览”、“复制”,并且插入分组线。
5.为“复制”菜单项设置命令代码:
COPYTObfjs。
练习5
练习6
练习7
四、设计表单(10分)
练习1
表单F101A用于统计输入文本中各类字符的个数。
按下列要求修改表单,修改后表单运行时如图2所示:
1.修改表单的有关属性,使表单的标题为“字符数统计”,并设置字数统计的三个文本框禁用。
2.适当加大Shape1形状的高度,在其区域内增加一个标签控件Label_Sum和一个文本框控件Text4,并设置Label1_Sum的标题为“总字符数:
”。
3.编写“清空”按钮的Click事件代码,用2条语句实现如下功能:
(1)清除编辑框Edit1中的文本;
(2)使“字符数统计”矩形区域内的4个文本框的值均置为零。
4.表单已定义了一个Count()方法,用来对Edit1编辑框中的文本进行字数统计。
编写“统计”按钮的Click事件代码,以实现:
先调用表单的Count()方法,然后将文本框Text1、Text2和Text3的值相加后显示在文本框Text4中。
练习2
表单F101C用于数据的录入。
按下列要求修改表单,修改后表单运行时如图2所示:
1.设置文本框的输入掩码,使其只能接受四位数字,不允许输入字母、汉字或其他字符,并设置文本框中的数字以粗体显示。
2.在表单的空白区域添加一个复选框控件Check1(如图所示),设置其标题为“自动排序”,值为逻辑值假(.F.),并设置有关属性使其能自动调整大小。
3.若复选框Check1被选中,表示列表框List1中的项自动排序,否则不自动排序。
编写Check1的Click事件代码,根据Check1的值,用一条语句设置列表框控件List1的自动排序属性(Sorted)。
4.编写“清除”按钮的Clcik事件代码,用2条语句实现如下功能:
将列表框List1的所有数据项清空,将文本框Text1的值置零。
练习3
表单F101G用于实现用户登录。
按下列要求修改表单,修改后表单运行时如图2所示:
1.设置文本框Text1的相关属性,使其最多能输入6个字符,且文本居中显示;设置文本框Text2的密码占位符为“*”。
2.创建一个包含当前表单的表单集FormSet1,然后在该表单中添加一个新表单Form2,并设置Form2的有关属性,使其在初始运行时隐藏。
3.为了使文本框Text1输入的字符数不少于4,可通过其Valid事件进行检验。
编写其Valid事件代码,要求:
当Text1中字符数小于4时返回.F.(表示验证不通过,焦点不会离开)。
4.修改“登录”按钮的Click事件代码,实现如下功能:
如果文本框Text1中输入的用户名为“admin”,且Text2中输入的密码为“123456”,则显示Form2表单,同时关闭Form1表单。
练习4
表单F101D用于实现系列数据的录入。
按下列要求修改表单,修改后表单运行时如图2所示:
1.设置列表框控件List1的列数为2列,并设置2列的宽度分别为30和60。
2.在表单的空白区域添加一个微调框控件Spinner1(如图2所示),用来控制列表框中数据的最大行数。
设置其初值为5,微调可达最小值为5、最大值为50。
3.在“添加”按钮的Click事件代码中增加一条语句,要求实现在向列表中添加一行新的数据后,在该行的第二列显示行号,且行号显示宽度为2个字符。
Thisform.list1.List[Thisform.list1.newindex,2]=str(thisform.list1.listcount,2)
4.将“添加”按钮的Click事件的所有代码放入一个IF。
。
。
ENDIF语句结构中,要求根据微调框控件的值来控制向列表框中添加数据,即如果列表框中的数据行数已经达到Spinner1的值,则用MESSAGEBOX()函数给出提示“已经达到最大行数,不能添加!
”,否则执行原来的所有代码。
练习5
练习6
练习7
五、程序改错(5分)
练习1:
下列程序的功能是找出100-999以内同时满足以下条件的数:
1)个位数字与十位数字之和的模等于百位数;2)该数是素数(仅能被1和本身整除的数称为“素数”)。
例如101、211、239等。
要求:
①将下列程序输入到项目中的程序文件PCODE中,并对其中的2条错误语句进行修改;
②在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。
CLEAR
FORi=100TO999
yn=.T.
FORj=3TOi-1
IFMOD(j,i)=0
Yn=.F.
EXIT
ENDIF
ENDFOR
IFyn
S=STR(i,3)
S1=SUBS(s,3,1)
S2=SUBS(s,2,1)
S3=SUBS(s,1,1)
IfMOD(VAL(s1)+VAL(s2))=VAL(s3)
?
i
ENDIF
ENDIF
ENDFOR
练习2:
我国古代数学家张丘建在《算经》一书中曾经提出著名的“百钱买百鸡”问题,该问题是:
1只公鸡5元、1只母鸡3元、3只仔鸡1元,若用100元恰好买100只鸡,则公鸡、母鸡和仔鸡各多少只?
。
修改下列程序以解决上述问题,要求:
①将下列程序输入到项目中的程序文件PCODE中,并对其中的2条错误语句进行修改;
②在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。
CLEAR
cString=’’
FORi=0TO100/5
FORj=0TO100/3
FORk=0TO3*100
IFaccord(i,j,k)=1
cString=”公鸡:
”+ALLT(STR(i))+”只,母鸡:
”+ALLT(STR(j));
+”只,小鸡:
”+ALLT(STR(k))+”只”
?
cString
ENDIF
ENDFOR
ENDFOR
ENDFOR
FUNCTIONaccord
PARAI,j,k
If5*i+3*j+k/3=100ori+j+k=100
RETURN1
ELSE
RETURN0
ENDIF
ENDFUNC
练习3:
回文数是指正读和反读都一样的数,例如121,1001,1221等。
下列程序的功能是:
求出小于2000的所有回文数,并将它打印出来(每行打印5个数,最后一行打印总个数)。
要求:
①将下列程序输入到项目中的程序文件PCODE中,并对其中的2条错误语句进行修改;
②在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。
STORE0TOn,n1,n2
FORi=1TO2000
S=ALLT(STR(i))
N1=LEN(s)
N2=INT(n1/2)
Istrue=.T.
FORj=1TOn2
IFSUBSTR(s,j1)=SUBSTR(s,n1-j+1,1)
Istrue=.F.
EXIT
ENDIF
ENDFOR
IFistrue
N=n+1
?
?
i
IFINT(n/5)=n/5
?
ENDIF
ENDIF
ENDFOR
?
’小于2000的回文数共’+STR(n)+’个’
练习4:
有红、黄、绿三种颜色的球,其中红球3个,黄球3个,绿球6个,现将这12个球混放在一个盒子中,从中人意摸出m个球,问会出现多少种不同情况?
下列程序的功能是解决上述问题,要求:
①将下列程序输入到项目中的程序文件PCODE中,并对其中的2条错误语句进行修改;
②在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。
CLEAR
FORm=1TO12
?
”任意取”+ALLT(STR(m))+”球的取法有”+ALLT(STR(solutionCount(m)))+”种”
ENDFOR
FUNCTIONsolutionCount
PARAiNum
sumNum=0
FORi=0TO3
FORj=0TO3
FORk=0TO6
Ifi+j+k=12
sumNum=sumNum+1
ENDIF
ENDFOR
ENDFOR
ENDFOR
EXITsumNum
ENDFUNC
练习5:
练习6:
练习7: