VFP春上机试题文档格式.docx
《VFP春上机试题文档格式.docx》由会员分享,可在线阅读,更多相关《VFP春上机试题文档格式.docx(27页珍藏版)》请在冰豆网上搜索。
![VFP春上机试题文档格式.docx](https://file1.bdocx.com/fileroot1/2023-2/6/52eeeb43-8028-4a9b-b4bd-430ff81bfee9/52eeeb43-8028-4a9b-b4bd-430ff81bfee91.gif)
3.为学生(XS)表增加一个年龄字段(字段名为NL,类型为整型),并为籍贯(JG字段)为“江苏”的学生计算年龄:
年龄等于当前系统日期的年份减去出生日期(CSRQ字段)的年份。
4.已知院系专业(YXZY)表和教师(JS)表存在相同的院系专业代码(YXZYDM)字段,以YXZY表为主表,JS表为子表,按YXZYDM建立永久关系,并设置YXZY表和JS表之间的参照完整性;
删除限制。
练习2
打开T:
盘根目录下的项目文件JXGL,在该项目文件中已有一数据库JXSJ。
CPBH
产品编号
CPMC
产品名称
RKRQ
入库日期
D
JBR
经办人
(2)为RKRQ字段设置默认值:
RKRQ为当前系统日期;
(3)为JBR字段设置有效性规则:
不能为空(即必须含有非空格字符=notempty());
(4)创建一个普通索引abcd,要求按RKRQ字段排序,相同时按CPBH字段排序。
课程代码为“60010”时必须选用“上海外语教育出版社”出版的教材。
3.为JS表增加一个备注字段(字段名为BZ,类型为备注型),并为它赋值;
如果性别为“女”,并且年龄大于或等于55,则BZ字段的值为“退休”(注:
年龄为当前系统日期的年份减去出生日期(CSRQ字段)的年份)。
4.已知课程(KC)表和教材(JC)表存在相同的课程代码(KCDM)字段,以KC表为主表,JC表为子表,按KCDM建立永久关系,并设置KC表和JC表之间的参照完整性;
插入限制。
练习3
打开T盘根目录下的项目文件jxgl,在该项目文件中已有一数据库jxsj。
1.按如下要求在数据库jxsj中新建一个表名为ab的数据库表。
(1)按下表所示创建ab表的表结构(包括字段的标题属性):
wlbh
物料编号
wlmc
名称
ckrq
出库日期
cksl
数量
N
(2)为ckrq字段设置默认值:
ckrq为当前系统日期–date();
(3)为cksl字段设置有效性规则:
不能为负数—cksl>
=0;
(4)创建一个普通索引abcd,要求按wlbh字段排序,相同时按ckrq字段排序—wlbh+dtoc(ckrq)。
2.为教材(jc)表设置更新触发器;
课程代码(kcdm字段)为“4039”时,必须选用2002年以后出版(cbnf字段)的教材。
--(kcdm=”4039”andcbnf>
=”2003”)orkcdm<
>
”4039”或cbnf=”2003”orkcdm<
”4039”或iif(kcdm=”4039”,cbnf>
=”2003”,.T.,.T.)
3.将jc表中单价(dj字段)大于或等于25元的记录全部加注删除标志。
Deletefromjcwheredj>
=25
4.已知院系(yxzy)表和教材(js)表存在相同的院系专业代码(yxzydm)字段,以yxzy表为主表,js表为子表,按因yxzydm建立永久关系,并设置yxzy表和js表之间的参照完整性;
先在窗口中写closetablesall
练习4
xh
学号
xm
姓名
bwbz
班委
L
zw
职务
(2)为bwbz字段设置默认值:
.F.;
(3)为表设置有效性规则:
当bwbz字段的值为.T.时,zw字段的值不能为空;
iif(bwbz,.not.empty(zw),empty(zw))
(4)创建一个普通索引abcd,要求按将班委(bwbz字段值为.T.)排在前面,非班委(bwbz字段值为.F.)排在后面。
2.为学生(xs)表设置更新触发器;
班级编号(bjbh字段)必须与入学日期(rxrq字段)的年份保持一致。
3.将kc表增加一个备注字段(字段名为bz,类型为备注型),并为院系专业代码(yxzydm字段)为空的记录赋值,bz字段的值为“各专业的课时数相同”。
4.已知教师(js)表和课程安排(kcap)表存在相同的工号(gh)字段,以js表为主表,kcap表为子表,按gh建立永久关系,并设置js表和kcap表之间的参照完整性;
练习5
csrq
出生日期
sg
2
(2)为xh字段设置输入掩码,使之只能输入数字,不能出现字母或其他非数字字符;
(3)为sg字段设置有效性规则:
不小于100,且不大于250;
(4)为表创建一个普通索引abcd,要求按csrq字段排序,相同时按sg字段排序。
2.为课程(kc)表设置插入触发器;
如果课程类型(lx字段)为“通修课程”,则院系专业代码(yxzydm字段)为空,否则不为空。
3.位xs表增加一个备注字段(字段名为bz,类型为备注型),并为它赋值:
若学生的籍贯(jg字段)不为“江苏”,则将bz字段的值置为“外省学生”。
4.已知课程(kc)表和教材(jc)表存在相同的课程代码(kcdm)字段,以kc表为主表,jc表为子表,按kcdm建立永久关系,并设置kc表和jc表之间的参照完整性;
更新级联。
练习6
byzx
毕业中学
gkcj
高考成绩
30
(2)为gkcj设置有效性规则:
大约或等于500,且小于或等于750;
(3)为csrq字段设置默认值:
1985年1月1日;
(4)创建一个普通索引abcd,要求按高考成绩(gkcj字段)排序,相同时按毕业中学(byzx)排序。
班级编号(bjbh字段)的后四位必须与院系专业代码(yxzydm字段)的前四位相等。
3.将教材(jc)表中出版年份(cbnf字段)在2002年之前(含2002年)的教材全部加注删除标志。
4.已知课程(kc)表和课程安排(kcap)表存在相同的课程代码(kcdm)字段,以kc表为主表,kcdm表为子表,按kcdm建立永久关系,并设置kc表和kcap表之间的参照完整性;
练习7
rq
日期
wbbz
外币币种
hl
汇率
bz
备注
M
(2)为rq字段设置默认值:
当前系统日期;
(3)设置wbbz字段的有效性规则:
不能为空(提示:
使用EMPTY函数);
(4)创建一个普通索引abcd,要求按rq字段排序,相同时按wbbz字段排序。
2.为学生(xs)表设置删除触发器;
班级编号(bjbh字段)的后四位与院系专业代码(yxzydm字段)的前四位不一致的可以删除。
3.为教材(jc)表增加一个进价字段(字段名为jj),其结构与单价(dj)字段相同,且为其赋值:
jj等于dj的85%。
4.已知院系专业(yxzy)表和学生(xs)表存在相同的院系专业代码(yxzydm)字段,以yxzy表为主表,xs表为子表,按yxzydm建立永久关系,并设置yxzy表和xs表之间的参照完整性;
二、设计查询(8分)
在TEST项目中已经存在查询chaxun
已知学生(XS)表存储了每个学生的基本信息,其中含学号(XH,C)、职称(XM,C)等字段,成绩(CJ)表存储了每个学生各门课程的成绩信息,其中含学号(XH,C)、课程代码(KCDM,C)和成绩(CJ,N)等字段。
按如下要求修改JXGL项目中的查询CHAXUN:
基于XS表和CJ表所有已登记的成绩中全部课程均合格的学生名单及其合格课程门数,要求输出字段为:
XH、XM、合格门数,查询结果按合格门数降序排序。
(提示:
“全部课程均合格”就是指最低分数大于或等于60。
)
基于XS表和CJ表统计所有已登记的成绩中,有两门或两门以上课程不合格的学生的总课程门数和成绩不合格门数,要求输出字段为:
XH、XM、不合格门数,查询结果按不合格门数降序排序。
(注:
“不合格”就是指成绩小于60)
已知学生(XS)表存储了每个学生的基本信息,其中含学号(xh,C)、姓名(xm,C)和班级编号(bjbh,C)等字段,成绩(cj)表存储了每个学生各门课程的成绩信息,其中含学号(xh,C)、成绩(xj,N)等字段。
基于XS表和CJ表,查询班级编号为“050202”的那些没有登记过任何课程成绩的学生名单,要求输出字段为:
xh、xm,查询结果按学号升序排序。
采用左联接)
已知课程安排(KCAP)表是用来存储各学期各班教学课程安排信息的表,其中含有学期编码(XQBM,C)、班级编号(BJBH,C)和课程代码(KCDM,C)等字段,课程(KC)表中含有课程代码(KCDM,C)、课程名称(kcmc,C)和课时数(KSS,N)等字段。
基于KCAP表和KC表按班级统计同一门课程跨2个或2个以上学期教学的课程。
要求输出字段为:
bjbh、kcdm、kcmc、开课学期数,查询结果按课程代码排序。
基于KCAP表和KC表统计学期编码为“2004-2005学年第1学期”的上课总课时数超过10的教师清单。
工号、上课总课时数,查询结果按上课总课时降序排序。
已知教师(JS)表中含有文化程度代码(WHCD,C)、职称(ZC,C)和出生日期(CSRQ,D)等字段,在数据库中含有文化程度视图(whcd),视图含有文化程度代码(DM)和文化程度名称(MC)字段。
基于JS表和WHCD视图统计各类学历的教师最早参加工作年龄和平均参加工作年龄。
文化程度名称、最早参加工作年龄、平均参加工作年龄,查询结果按文化程度名称排序。
参加工作年龄可以按工作日期与出生日期年份之差求得。
已知教材(jc)表存储了各门课程的教材使用情况,其中含有出版社名称(cbsmc,C)、作者(zz,C)和出版年份(cbnf,C)等字段。
基于jc表查询2000年以后(含2000年)在同一个出版社出版了2本或2本以上教材的所有作者,要求输出字段为:
作者、出版社名称、出版教材数,查询结果按出版教材数降序排序。
三、设计菜单(5分)
JXGL项目中已存在菜单MENU,其中定义了“文件”菜单栏及其中的“退出菜单”项。
按如下要求设计菜单,完成后的运行效果如图1所示。
1.创建“浏览学生记录”菜单栏,并创建其子菜单“浏览”、“上一记录”、“下一记录”;
2.在菜单项“浏览”和“上一记录”之间插入分组线;
3.在“上一记录”和“下一记录”分别设置命令:
SKIP-1和SKIP。
1.创建“浏览课程记录”菜单栏,并创建其子菜单“浏览”、“上一记录”、“下一记录”;
2.为“浏览”菜单项设置访问键“ALT+B”;
3.为“浏览”菜单项设置SELECT-SQL命令,功能是显示KC表的所有数据。
1.在“文件”菜单栏下增加“运行”菜单项,并创建其子菜单“程序”、“表单”;
2.为“表单”菜单项设置命令:
DOFORM?
;
3.在“文件”菜单栏下插入系统菜单项“关闭”;
4.在“关闭”和“退出菜单”菜单项之间插入分组线。
1.在“文件”菜单栏下增加“屏幕设置”菜单项,并创建其子菜单“背景图案…”、“背景色…”;
2.为“背景图案…”菜单项添加过程代码:
cF=GETFILE(“bmp,jpg”)
_SCREEN.Picture=cF
3.为“背景图案…”菜单设置命令:
_SCREEN.BackColor=GETCOLOR();
4.在“屏幕设置”和“退出菜单”菜单项之间插入分组线。
1.创建“教材管理”菜单栏,并创建其子菜单“教材浏览”、“教材查询”;
2.为“教材浏览”菜单项设置命令:
SELECT*FROMjc;
3.在“教材浏览”和“教材查询”菜单栏之间插入分组线;
1.创建“课程管理”菜单栏,并创建其子菜单“课程浏览”、“定位行…”;
2.为“课程浏览”菜单项设置命令:
SELECT*FROMkc;
3.在“定位行…”菜单项设置“跳过”条件:
!
USED(”kc”);
1.在“文件”菜单栏下创建“记录定位”菜单项,并创建其子菜单“First”、“Previous”、“Next”、“Last”;
2.将菜单项“First”、“Previous”、“Next”、“Last”的单词首字母设置为访问键;
3.为“First”菜单项添加过程代码:
GOTOP
BROWSE
4.为菜单项“Last”设置命令:
GOBOTTOM
四、设计表单(10分)
表单F072F用于浏览所选表的数据。
按下列要求修改表单,修改后表单运行时如图2所示。
1.修改表单的有关属性,使表单的标题为“浏览表”,且表单运行时不可移动其位置。
2.在表格控件下方添加一个标签控件(对象名为Label1)和文本框控件(对象名为Text1),并且将标签控件的显示文本修改为“记录数”。
3.修改表格控件的有关属性,使其数据只读。
4.修改命令按钮的标题属性,使其显示文本为“选择表”,访问键为ALT+S,且完善其Click事件代码,要求在原代码之后添加3条命令,功能分别为:
设置表格控件的数据源,使表格中显示当前工作区中打开的表的数据;
设置文本框Text1的属性,使其显示当前打开表的记录数;
刷新表单。
5.设置表单的Destroy事件的处理代码,其功能是关闭所有打开的表。
表单F072F浏览所选表的数据。
1.修改表单的有关属性,使表单的标题为“示例”,且最大化按钮不可用。
2.删除表单上的表格控件,在其位置添加一个列表框控件(对象名为List1),且将其数据源类型设置为“别名”。
4.修改命令按钮的标题属性,使其显示文本为“选择表”,访问键为ALT+T,且完善其Click事件代码,要求在原代码之后添加2条命令,功能分别为:
设置列表框控件的RowSource属性,使列表框中显示当前工作区中打开的表的数据;
设置列表框的ColumnCount属性,使其列数为当前工作区中打开表的字段数。
表单F072g用于选择所选表的学校,浏览毕业于该学校的教师名单(教师工号gh、姓名xm)。
1.修改表单的有关属性,使表单的标题为“校友”,且无最小化按钮和最大化按钮。
2.向表单上添加一个标签控件(对象名为Label1)、一个组合框控件(对象名为Combo1)和一个列表框控件(对象名为List1)。
3.将标签控件的显示文本修改为“学校”,其控件大小为自动调整。
4.将组合框控件的RowSourceType属性设置为“SQL语句”,RowSource为“SELECTDISTINCTbyxxFROMjsORDERBY1INTOCURSORtemp1”(注:
js表中byxx字段的含义是“毕业学校”)。
5.将列表框控件的列数设置为2,数据源类型设置为“SQL语句”。
6.为组合框控件的InterActiveChange事件设置代码,要求用一条命令来设置列表框的数据源,使得根据组合框中选择的学校,在列表框中显示毕业于该学校的教师工号(gh)和姓名(xm)。
7.设置表单的Destroy事件处理代码,其功能是关闭所有打开的表和临时表
表单F072g用于根据所输入的检索词在教材(jc)表中检索教材书目。
1.修改表单的有关属性,使表单的标题为“教材检索”,且运行时表单自动居中。
2.在表单上分别添加一个标签控件、文本框控件和命令按钮控件,且标签和命令按钮控件上显示的文本分别为“检索词”和“检索”。
3.向表单的数据环境中添加教材(jc)表,并利用鼠标的拖放操作,将该表从数据环境设计器窗口拖放到表单上,以生成一个表格控件(如图2所示),然后将其DeleteMark和ReadOnly属性分别设置为.F.和.T.。
4.为“检索”命令按钮设置Click事件代码,其功能是根据文本框的值检索有关教材,例如在文本框中输入“思想”,则表格中仅显示教材名称(jcmc字段)中包含有“思想”的教材。
要求利用两条命令实现功能:
首先根据文本框的值对jc表记录进行筛选,然后刷新表单。
表单F072h用于用户登录。
1.修改表单的有关属性,使表单的标题为“登录”,且无最小化、最大化按钮。
2.分别添加标签控件、文本框控件和命令按钮(如图2所示),且标签控件的显示文本为“再次输入密码”,命令按钮控件上显示文本为“确定”、访问键为“ALT+Y”。
3.为输入密码的两个文本框控件设置PasswordChar属性值,使其在运行时输入的密码字符均显示为“*”。
4.为添加的用于再次输入密码的文本框控件设置LostFocus事件处理代码,其功能是检查两次输入的密码是否相同:
若两次输入的密码不同,则用于MESSAGEBOX()函数显示提示信息“两次输入的密码不同!
”,然后将焦点定位到第一个密码输入文本框。
要求用4行命令实现,这4行命令分别是IF…、=MESSAGEBOX…、THISFORM…和ENDIF。
5.为添加的命令按钮设置Click事件代码,要求用2条命令实现:
首先将VFP主窗口(对象名为_SCREEN)的标题设置为用户名(即文本框Text1的值),然后关闭表单。
表单F072h用于用户登录,假定输入的用户名为学生姓名(基于xs表的xm字段),密码假定为学号(xh字段)。
1.修改表单的有关属性,使表单的标题为“登录”,且运行时自动居中、边框样式为“固定对话框”。
2.向表单的数据环境中添加xs表,并将其设置为只读。
3.添加一个图像(Image)控件,并且将其设置为显示pc.ico图标文件、背景为透明。
4.添加一个命令按钮,并且命令按钮控件上显示文本为“确定”、访问键为“ALT+Y”。
5.为添加的命令按钮设置Click事件代码,其功能是根据输入的用户名和密码在xs表中查找(假定用户名对应姓名、密码为学号),若找到则将VFP主窗口(对象名为_SCREEN)的标题设置为用户名(即文本框Text1的值),然后关闭表单,否则显示“用户名或密码不正确!
”消息框并返回。
要求用下列代码来实现其功能(该代码需要完善):
LOCATEFORxm=ALLT(THISFORM.Text1.Value)…
IF!
EOF()
_SCREEN.CAPTION=…
ELSE
=MESSAGEBOX…
ENDIF
THISFORM….
表单F072k用于根据所选的表,将其导出为文本文件或MicrosoftExcel文件。
1.修改表单的有关属性,使表单的