您的当前位置:首页正文

VFP2010秋上机试题

2023-10-26 来源:好走旅游网
VFP2010秋上机试题

上机部分

一、项目、数据库和表操作(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表中输入如下记录:

- 1 -

VFP2010秋上机试题

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)设置日期字段的默认值:当前系统日期;

- 2 -

VFP2010秋上机试题

(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

- 3 -

VFP2010秋上机试题

二、设计查询(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。

- 4 -

VFP2010秋上机试题

注:借阅天数为hsrq与jyrq之差,未还的图书按当前系统日期计算借阅天数。

练习5 练习6 练习7

- 5 -

VFP2010秋上机试题

三、设计菜单(5分)

练习1

JXGL项目中已存在菜单MENU,其中已定义了“文件”菜单栏及其中的“退出菜单”菜单项。按如下要求设计菜单,完成后的运行效果如图1所示。

1.在“文件”菜单栏右侧创建“数据管理”菜单栏;

2.在“数据管理”菜单栏下创建子菜单 “查询”和“数据备份”; 图1 3.为“查询”菜单项设置快捷键:F12;

4.在菜单项“查询”和“数据备份”之间插入分组线; 5.为“数据备份”菜单项设置过程代码: d=GETFILE(‘dbf’,’.dbf’) USE &d

COPY TO bf1 练习2

JXGL项目中已存在菜单MENU,已定义了“文件”菜单栏及其中的“退出菜单”菜单项。按如下要求设计菜单,完成后的运行效果如图1所示。

1.在“文件”菜单栏右侧创建“成绩管理”菜单栏; 图1 2.在“成绩管理”菜单栏下创建子菜单 “插入”和插入系统菜单“导出(E)”菜单项; 3.为“查询”菜单项设置命令:SELECT * FROM cj 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.为 “复制”菜单项设置命令代码:COPY TO bfjs。

- 6 -

VFP2010秋上机试题

练习5 练习6 练习7

- 7 -

VFP2010秋上机试题

四、设计表单(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的值置零。

- 8 -

VFP2010秋上机试题

练习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

- 9 -

VFP2010秋上机试题

五、程序改错(5分) 练习1:

下列程序的功能是找出100-999以内同时满足以下条件的数:1)个位数字与十位数字之和的模等于百位数;2)该数是素数(仅能被1和本身整除的数称为“素数”)。例如101、211、239等。要求:

①将下列程序输入到项目中的程序文件PCODE中,并对其中的2条错误语句进行修改;

②在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。 CLEAR

FOR i=100 TO 999 yn=.T.

FOR j=3 TO i-1 IF MOD(j,i)=0 Yn=.F. EXIT ENDIF ENDFOR IF yn

S=STR(i,3)

S1=SUBS(s,3,1) S2=SUBS(s,2,1) S3=SUBS(s,1,1)

If MOD(VAL(s1)+VAL(s2))=VAL(s3) ?i ENDIF ENDIF ENDFOR 练习2:

我国古代数学家张丘建在《算经》一书中曾经提出著名的“百钱买百鸡”问题,该问题是:1只公鸡5元、1只母鸡3元、3只仔鸡1元,若用100元恰好买100只鸡,则公鸡、母鸡和仔鸡各多少只?。修改下列程序以解决上述问题,要求: ①将下列程序输入到项目中的程序文件PCODE中,并对其中的2条错误语句进行修改; ②在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。

CLEAR cString=’’

FOR i=0 TO 100/5 FOR j=0 TO 100/3 FOR k=0 TO 3*100 IF accord(i,j,k)=1

cString=”公鸡:”+ALLT(STR(i))+”只,母鸡:”+ ALLT(STR(j)); +”只,小鸡:”+ALLT(STR(k))+”只” ?cString ENDIF

- 10 -

VFP2010秋上机试题

ENDFOR ENDFOR ENDFOR

FUNCTION accord PARA I,j,k

If 5*i+3*j+k/3=100 or i+j+k=100 RETURN 1 ELSE

RETURN 0 ENDIF ENDFUNC 练习3:

回文数是指正读和反读都一样的数,例如121,1001,1221等。下列程序的功能是:求出小于2000的所有回文数,并将它打印出来(每行打印5个数,最后一行打印总个数)。要求:

①将下列程序输入到项目中的程序文件PCODE中,并对其中的2条错误语句进行修改;

②在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。 STORE 0 TO n,n1,n2 FOR i=1 TO 2000 S=ALLT(STR(i)) N1=LEN(s) N2=INT(n1/2) Istrue=.T.

FOR j=1 TO n2

IF SUBSTR(s,j1)=SUBSTR(s,n1-j+1,1) Istrue=.F. EXIT ENDIF ENDFOR IF istrue N=n+1 ??i

IF INT(n/5)=n/5 ? ENDIF ENDIF ENDFOR

?’小于2000的回文数共’+STR(n)+’个’

- 11 -

VFP2010秋上机试题

练习4:

有红、黄、绿三种颜色的球,其中红球3个,黄球3个,绿球6个,现将这12个球混放在一个盒子中,从中人意摸出m个球,问会出现多少种不同情况?下列程序的功能是解决上述问题,要求:

①将下列程序输入到项目中的程序文件PCODE中,并对其中的2条错误语句进行修改;

②在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。 CLEAR

FOR m=1 TO 12

?”任意取”+ALLT(STR(m))+”球的取法有”+ALLT(STR(solutionCount(m)))+”种” ENDFOR

FUNCTION solutionCount PARA iNum sumNum=0 FOR i=0 TO 3 FOR j=0 TO 3 FOR k=0 TO 6 If i+j+k=12

sumNum=sumNum+1 ENDIF ENDFOR ENDFOR ENDFOR

EXIT sumNum ENDFUNC 练习5: 练习6: 练习7:

- 12 -

因篇幅问题不能全部显示,请点此查看更多更全内容