1、VFP秋上机试题上机部分一、项目、数据库和表操作(12分)练习1打开T盘根目录下的项目文件JXGL,在该项目文件中已有一数据库JXSJ。1.在JXSJ数据库中按如下表格所示的结构创建AB表,并表格中的要求设置相关属性。字段名数据类型宽度字段标题RQD日期SCSLN6售出门票数量SJRSN6实际参观人数BZM备注(1)设置AB表的表注释:参观人数; (2)设置日期字段的默认值:当前系统日期; (3)设置日期字段的显示类:微调框; (4)设置记录有效性规则:实际参观人数小于或等于售出门票数量; (5)创建普通索引:索引名为abcd,要求按实际参观人数与售出门票数量之比排序;2在AB表中输入如下记录
2、:RQSCSLSJRSBZ(默认值)240100198808全天下雨3给KC表中所有学分大于或等于5的记录加删除标记。4JS表已存在主索引GH,索引表达式为GH,KCAP表已存在普通索引GH,索引表达式为GH,以JS表为主表,KCAP表为子表并按GH建立永久关系,并设置两表之间的参照完整性:更新级联、删除级联。练习2打开T盘根目录下的项目文件JXGL,在该项目文件中已有一数据库JXSJ。1.在JXSJ数据库中按如下表格所示的结构创建AB表,并表格中的要求设置相关属性。字段名数据类型宽度字段标题RQD日期QCPHC8汽车牌号DDC20地点TPG图片(1)设置AB表的表注释:汽车违停记录; (2)
3、设置日期字段的默认值:当前系统日期减1; (3)设置日期字段的显示类:列表框; (4)设置记录有效性规则:不能为空; (5)创建普通索引:索引名为abcd,要求按地点排序,相同时根据汽车牌号排序;2在AB表中输入如下记录:RQQCPHDD(默认值)苏A88888世纪广场3修改JC表数据:所有记录的单价字段的值取整。4JS表已存在主索引GH,索引表达式为GH,KCAP表已存在普通索引GH,索引表达式为GH,以JS表为主表,KCAP表为子表并按GH建立永久关系,并设置两表之间的参照完整性:更新限制、插入限制。练习3打开T盘根目录下的项目文件JXGL,在该项目文件中已有一数据库JXSJ。1.在JXS
4、J数据库中按如下表格所示的结构创建AB表,并表格中的要求设置相关属性。字段名数据类型宽度字段标题RQD日期DWC20报销单位XMC20开支项目JEN6(小数1位)金额(1)设置AB表的表注释:账目登记; (2)设置日期字段的默认值:系统当前日期; (3)设置日期字段的显示类:列表框; (4)设置记录有效性规则:不能为星期六和星期日(提示:使用DOW()函数); (5)创建普通索引:索引名为abcd,要求按报销单位排序,相同时根据日期排序;2在AB表中输入如下记录:RQDWXMJE(系统当前日期)数学系机动费2345.63将DMB表中类型(LX)为“文化程度”的记录复制到新的表中(表名为WHCD
5、B)。4XS表已存在主索引XH,索引表达式为XH,CJ表已存在普通索引XH,索引表达式为XH,以XS表为主表,CJ表为子表并按XH建立永久关系,并设置两表之间的参照完整性:更新限制、插入限制、删除级联。练习4打开T盘根目录下的项目文件JXGL,在该项目文件中已有一数据库JXSJ。1.在JXSJ数据库中按如下表格所示的结构创建AB表,并表格中的要求设置相关属性。字段名数据类型宽度字段标题RQD日期DDC20地点QCPHC8汽车牌号CSN3图片(1)设置AB表的表注释:汽车超速记录; (2)设置日期字段的默认值:当前系统日期; (3)设置日期字段的显示类:列表框; (4)设置记录有效性规则:大于1
6、20或小于60; (5)创建普通索引:索引名为abcd,要求按地点排序,相同时根据车速排序;2在AB表中输入如下记录:RQDDQCPHCS(默认值)沪宁高速镇江段苏A888881423修改JC表数据:所有记录的单价字段的值增加10%。4JS表已存在主索引GH,索引表达式为GH,KCAP表已存在普通索引GH,索引表达式为GH,以JS表为主表,KCAP表为子表并按GH建立永久关系,并设置两表之间的参照完整性:更新级联、插入限制。练习5练习6练习7二、设计查询(8分)在TEST项目中已经存在查询chaxun练习1已知教师表(JS)含有工号(gh,C)、姓名(xm,C)等字段;自由表图书借阅表(JYB
7、)含有读者号(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)、还
8、书日期(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)等字段。按
9、如下要求修改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项目中的查询CHAXU
10、N:基于JS表和JYB表查询各院系专业借书情况。要求:查询输出字段为yxzydm、借书本数、最大借阅天数;查询结果按最大借阅天数降序排序;输出去向为临时表TEMP。注:借阅天数为hsrq与jyrq之差,未还的图书按当前系统日期计算借阅天数。练习5练习6练习7三、设计菜单(5分)练习1JXGL项目中已存在菜单MENU,其中已定义了“文件”菜单栏及其中的“退出菜单”菜单项。按如下要求设计菜单,完成后的运行效果如图1所示。1.在“文件”菜单栏右侧创建“数据管理”菜单栏;2.在“数据管理”菜单栏下创建子菜单 “查询”和“数据备份”; 图13.为“查询”菜单项设置快捷键:F12;4.在菜单项“查询”和“
11、数据备份”之间插入分组线;5.为“数据备份”菜单项设置过程代码: d=GETFILE(dbf,.dbf) USE &d COPY TO bf1练习2JXGL项目中已存在菜单MENU,已定义了“文件”菜单栏及其中的“退出菜单”菜单项。按如下要求设计菜单,完成后的运行效果如图1所示。1.在“文件”菜单栏右侧创建“成绩管理”菜单栏; 图1 2.在“成绩管理”菜单栏下创建子菜单 “插入”和插入系统菜单“导出(E)”菜单项; 3.为“查询”菜单项设置命令:SELECT * FROM cj 4.为“导出”菜单项设置跳过条件:cj表打开时才可操作(启用)。5.在菜单项“查询”和“导出”之间插入分组线。练习3
12、JXGL项目中已存在菜单MENU,已定义了“文件”菜单栏及其中的“退出菜单”菜单项。按如下要求设计菜单,完成后的运行效果如图1所示。1.在“文件”菜单栏右侧创建“数据库”菜单栏; 2.在“数据库”菜单栏下创建子菜单 “浏览文件; 图1 3.为“浏览文件”菜单项设置快捷键“CTRL+D” 4.在“数据库”菜单栏下插入系统菜单“打开”和系统菜单“关闭”。5.为“浏览文件”菜单项设置命令代码:DIR *.doc。练习4JXGL项目中已存在菜单MENU,已定义了“文件”菜单栏及其中的“退出菜单”菜单项。按如下要求设计菜单,完成后的运行效果如图1所示。1.在“文件”菜单栏右侧创建“数据管理”菜单栏; 2
13、.在“数据管理”菜单栏下创建子菜单 “教师”和 “学生”; 图1 3.为“教师”菜单项设置跳过条件:JS表打开时菜单项才可操作(启用) 4.为“教师”菜单项创建子菜单“浏览”、“复制”,并且插入分组线。5.为 “复制”菜单项设置命令代码:COPY TO bfjs。练习5练习6练习7四、设计表单(10分)练习1表单F101A用于统计输入文本中各类字符的个数。按下列要求修改表单,修改后表单运行时如图2所示:1.修改表单的有关属性,使表单的标题为“字符数统计”,并设置字数统计的三个文本框禁用。2.适当加大Shape1形状的高度,在其区域内增加一个标签控件Label_Sum和一个文本框控件Text4,
14、并设置Label1_Sum的标题为“总字符数:”。3.编写“清空”按钮的Click事件代码,用2条语句实现如下功能:(1)清除编辑框Edit1中的文本;(2)使“字符数统计”矩形区域内的4个文本框的值均置为零。4.表单已定义了一个Count()方法,用来对Edit1编辑框中的文本进行字数统计。编写“统计”按钮的Click事件代码,以实现:先调用表单的Count()方法,然后将文本框Text1、Text2和Text3的值相加后显示在文本框Text4中。练习2表单F101C用于数据的录入。按下列要求修改表单,修改后表单运行时如图2所示:1.设置文本框的输入掩码,使其只能接受四位数字,不允许输入字母
15、、汉字或其他字符,并设置文本框中的数字以粗体显示。2.在表单的空白区域添加一个复选框控件Check1(如图所示),设置其标题为“自动排序”,值为逻辑值假(.F.),并设置有关属性使其能自动调整大小。3.若复选框Check1被选中,表示列表框List1中的项自动排序,否则不自动排序。编写Check1的Click事件代码,根据Check1的值,用一条语句设置列表框控件List1的自动排序属性(Sorted)。4.编写“清除”按钮的Clcik事件代码,用2条语句实现如下功能:将列表框List1的所有数据项清空,将文本框Text1的值置零。练习3表单F101G用于实现用户登录。按下列要求修改表单,修改
16、后表单运行时如图2所示:1.设置文本框Text1的相关属性,使其最多能输入6个字符,且文本居中显示;设置文本框Text2的密码占位符为“*”。2.创建一个包含当前表单的表单集FormSet1,然后在该表单中添加一个新表单Form2,并设置Form2的有关属性,使其在初始运行时隐藏。3.为了使文本框Text1输入的字符数不少于4,可通过其Valid事件进行检验。编写其Valid事件代码,要求:当Text1中字符数小于4时返回.F.(表示验证不通过,焦点不会离开)。4.修改“登录”按钮的Click事件代码,实现如下功能:如果文本框Text1中输入的用户名为“admin”,且Text2中输入的密码为
17、“123456”,则显示Form2表单,同时关闭Form1表单。练习4表单F101D用于实现系列数据的录入。按下列要求修改表单,修改后表单运行时如图2所示:1.设置列表框控件List1的列数为2列,并设置2列的宽度分别为30和60。2.在表单的空白区域添加一个微调框控件Spinner1(如图2所示),用来控制列表框中数据的最大行数。设置其初值为5,微调可达最小值为5、最大值为50。3.在“添加”按钮的Click事件代码中增加一条语句,要求实现在向列表中添加一行新的数据后,在该行的第二列显示行号,且行号显示宽度为2个字符。Thisform.list1.ListThisform.list1.new
18、index, 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等。要求:将
19、下列程序输入到项目中的程序文件PCODE中,并对其中的2条错误语句进行修改;在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。CLEARFOR 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 ENDIFENDFOR练习2:我国古代数学家张丘建在算经一书中曾经提出著名的“百钱
20、买百鸡”问题,该问题是:1只公鸡5元、1只母鸡3元、3只仔鸡1元,若用100元恰好买100只鸡,则公鸡、母鸡和仔鸡各多少只?。修改下列程序以解决上述问题,要求:将下列程序输入到项目中的程序文件PCODE中,并对其中的2条错误语句进行修改;在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。CLEARcString=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(
21、STR(k)+”只” ?cString ENDIF ENDFOR ENDFORENDFORFUNCTION accord PARA I,j,k If 5*i+3*j+k/3=100 or i+j+k=100 RETURN 1 ELSE RETURN 0 ENDIFENDFUNC练习3:回文数是指正读和反读都一样的数,例如121,1001,1221等。下列程序的功能是:求出小于2000的所有回文数,并将它打印出来(每行打印5个数,最后一行打印总个数)。要求:将下列程序输入到项目中的程序文件PCODE中,并对其中的2条错误语句进行修改;在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少
22、语句数目。 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)+个练习4:有红、黄、绿三种颜色的球,其中红球3个,黄球3个,绿球6个,现将这12个球混放在一个盒子中,从中人意摸出
23、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:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1