VFP总复习题.docx
- 文档编号:24004323
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:13
- 大小:20.57KB
VFP总复习题.docx
《VFP总复习题.docx》由会员分享,可在线阅读,更多相关《VFP总复习题.docx(13页珍藏版)》请在冰豆网上搜索。
VFP总复习题
第一部分基本操作复习
创建项目管理器和数据库
1、在d:
\学生管理建立一个名为“学生管理”的项目文件;
2、在项目管理器中建立一个名为“学生管理”的数据库。
3、在"学生管理"数据库中建立"学生成绩"表,表结构如下:
学号字符型(8)
姓名字符型(10)
数学数值型(5.1)该字段允许出现"空"值,默认值为.NULL.
英语数值型(5.1)该字段允许出现"空"值,默认值为.NULL.
计算机数值型(5.1)该字段允许出现"空"值,默认值为.NULL.
数据如下:
学号姓名数学英语计算机
20041030谢林胜788890
20041031张辉臣826754
文件备份
4、将“学生表”备份到“学生备份表”中,将”学生选课表”备份到“学生选课备份表”中。
use学生表
copyto学生备份表
5、将"学生备份表"中"出生日期"字段值为1985年8月1日以前的记录进行逻辑删除。
出生日期<{^DELEALLFOR1985/08/01}
6、复制“学生表”结构,删除入学时间、入学成绩、专业编号、简历、照片字段,将其命名为“学生简表”,将“学生备份表”中的所有记录追加到“学生简表”中,并取消所有逻辑删除标记。
COPYSTRUTO学生简表
USE学生简表
APPEFROM学生表
RECLALL
添加数据表
7、将"学生备份表"和“学生选课备份表”添加到“学生管理”数据库中。
字段有效性规则
8、为学生备份表的"性别"字段设置字段有效性规则:
性别=“男”.or.性别=“女”,
出错提示信息为:
“性别等于男或女”,
默认值为:
"男"。
修改数据表
9.在学生备份表中增加一个名为"班级"的字段,字段数据类型为"字符型"、宽度为20。
建立表间关系
10、通过"学号"字段建立"学生备份表"表和"学生选课备份"表间的永久联系(如果必要请先建立有关索引)。
数据排序
11、将"学生备份"表中的记录按"出生日期"先后顺序排序,在"出生日期"相同的情况下,再按"学号"从低到高排序,排序结果存入表NEW_STUDENT中。
sorttoNEW_STUDENTon出生日期,学号
查询向导
12、使用查询向导建立一个标准查询QUERY.QPR,表选取“学生表”,字段选取“姓名”和“出生日期”。
13、从"学生备份表"中查询所有女同学(即:
性别="女")信息,查询结果存入"女同学"表。
本地视图
14、建立本地视图"stu_view",视图的字段为"学生备份表"的"学号"、"姓名"和"出生日期"字段,并按"出生日期"先后顺序排序,"出生日期"相同的情况下,按"学号"升序排序。
第二部分SQL语言复习
知识点
SELECT…FROM文件名查询
CREATEVIEW视图名AS…创建
SELECT说明要查询的数据
FROM说明要查询的数据来自哪个或哪些表,可以对单个表或多个表进行查询;
WHERE说明查询条件,即选择元组的条件;
GROUPBY短语用于对查询结果进行分组,可以利用它进行分组汇总;
HAVING短语必须跟随GROUPBY短语使用,它用来限定分组必须满足的条件;
ORDERBY用来对查询的结果进行排序。
简单查询
1、列出学生表里所有学生的信息
SELECT*FROM学生
2、列出学生选课表里所有课程的编号
SELECTDIST课程编号FROM学生选课
*(使用DIST可去掉重复行)
条件查询
1、列出学生表里03专业所有学生的学号,姓名,专业编号
SELECT学号,姓名,专业编号FROM学生;
WHERE专业编号='03'
2、查找入学成绩500~600之间所有学生;
SELECT*FROM学生WHERE入学成绩;
BETWEEN500AND600
3、查询专业编号为03和04的学生信息;
SELECT学号,姓名,专业编号FROM学生;
WHERE专业编号IN('03','04')
4、查询入学成绩600分以上学生信息并排序输出
SELECT学号,姓名,入学成绩AS总成绩;
FROM学生WHERE入学成绩>600;
ORDEBY总成绩DESC
5、查询专业编号为“04”所有女学生信息
SELECT*FROM学生;
WHERE专业编号='04'AND性别="女"
6、查询专业编号为“04”且入学成绩大于600分的所有男学生信息。
SELECT*FROM学生;
WHERE专业编号='04'AND入学成绩>=600;
AND性别='男'
7、查找所有姓“李”学生指定信息;
SELECT学号,姓名,入学成绩FROM学生;
WHERE姓名LIKE"李%"
8、查询选课成绩>=80学生姓名成绩;
SELECT学生.姓名,学生选课.成绩;
FROM学生INNERJOIN学生选课;
ON学生.学号=学生选课.学号;
AND学生选课.成绩>=80
统计查询
1、查询全体学生总人数;
SELECTCOUNT(*)AS全体学生总人数;
FROM学生
&&COUNT(*)用来统计元组的个数,不消除重复;
&&不允许使用DISTINCT关键字
2、求2004年年龄大于18岁的学生人数。
SELECTCOUNT(*)AS大于18岁人数;
FROM学生;
WHERE2004-YEAR(出生日期)>18
3、计算入学成绩在600分以上人数;
SELECTCOUNT(*)AS入学600分人数;
FROM学生WHERE入学成绩>=600
4、计算女生平均入学成绩;
SELECTAVG(入学成绩)AS女生平均分;
FROM学生WHERE性别="女"
*(问:
要求统计最高(低)入学成绩如何修改表达式)
5、统计每个学生选修课的门数;
SELECT学号,COUNT(*)AS选修门数;
FROM学生选课GROUPBY学号
*(该题把学号相同的记录作为一组,;
*对每一组用COUNT进行计算,统计出每个学生选修课的门数)
6、统计选修课门数3门以上学生;
SELECT学号,COUNT(*)AS选修门数;
FROM学生选课GROUPBY学号;
HAVINGCOUNT(*)=>3
*(注意:
此语句中用了HAVING语句,其功能是选择满足条件的组。
)
7、求入学成绩最高与最低相差分数。
SELECTMAX(入学成绩)AS最高成绩,;
MIN(入学成绩)AS最低成绩,;
MAX(入学成绩)-MIN(入学成绩);
AS高低成绩相差FROM学生
8、显示总分最高的前3位学生的信息;
SELECT*TOP3FROM学生成绩;
ORDERBY总分DESC
9、显示总分最低的30%学生信息;
SELECT*TOP30PERCENT;
FROM学生成绩ORDERBY总分
查询输出
1、学生选课成绩输出到数据表;
SELECT学号,课程编号,成绩FROM学生选课;
ORDERBY成绩desc;
INTOTABLE作业44
2、学生选课成绩输出到文本文件;
SELECT学号,课程编号,成绩FROM学生选课;
ORDERBY成绩desc;
TOFILE作业44.TXT
数据库定义
1、从单个表派生出的视图
从学生表中创立视图1,使其显示学号和专业编号两个字段全部记录。
OPENDATA学生选课库
CREATEVIEW视图1AS;
SELECT学号,专业编号FROM学生
2、从多个表中派生出来的视图
在"学生选课库"数据库中,根据学生表建立一个统计各专业学生人数的视图,该视图包含"专业编号"、"学生人数"两个字段,视图名为"view1",并按专业编号升序排序;(提示:
可先编一个程序,用SQL语句直接建立这个视图)
在“学生选课库”数据库中,根据学生表建立一个统计各专业学生人数的视图,该视图包含“专业编号”、“学生人数”两个字段,视图名为“view1”,并按专业编号升序排序
OPENDATA学生选课库
CREATEVIEWview1AS;
SELECT专业编号,COUNT(*)AS学生人数;
FROM学生GROUPBY专业编号
用SQL编写视图实例(作业35)
在"职工管理"数据库中,建立一个名称为s_view的视图,字段为职工表中的"编号"、"姓名"、"性别"、"民族"和工资表中的"基本工资"、"奖金"、"工资合计"(其中工资合计=基本工资+奖金),结果按"工资合计"降序排序,工资相同的情况下按编号升序排序。
注意:
视图中的字段个数、字段名和字段先后排列的顺序,要与题目叙述的一致,否则不得分。
opendata职工管理
CREATEVIEWs_viewAS;
SELECT职工表.编号,职工表.姓名,;
职工表.性别,职工表.民族,,;
工资表.基本工资,工资表.奖金,;
工资表.基本工资+工资表.奖金as工资合计;
FROM职工表INNERJOIN工资表;
ON工资表.编号=职工表.编号
第三部分报表制作(简单应用题)
简单应用题1(作业37)
请在VisualFoxPro中完成下列操作(本题共有1小题):
使用报表向导建立一个简单报表。
要求选择成绩表中"学号"、"姓名"和"英语"三个字段,报表的标题为"英语考试成绩表",其他选项使用默认设置,报表文件名为English_score.frx。
简单应用题2(作业38)
请在VisualFoxPro中完成下列操作(本题共有1小题):
使用向导建立一对多报表student_report。
父表为学生.dbf,字段为学号、姓名、性别和入学成绩,子表为学生成绩.dbf,字段为各科成绩和总分,报表标题为"学生入学前后成绩对照表",其他使用默认设置。
第四部分表单制作(综合应用题)
等级考试综合应用题1(作业57)
请在VisualFoxPro中完成下列操作(本题共有1小题):
建立一个表单,将表单的标题和表单文件名都设置为:
"查询职工信息"。
在表单中,添加下列控件:
1)表格控件(Grid1),其数据源类型(RecordSourceType)设置为:
0-表;
2)选项组控件(Optiongroup1),选项组控件有两个按钮"职工表"(名称为Option1)和"工资表"(名称为Option2);
3)命令按钮(Command1),标题设置为:
"查询",功能为:
在选项组控件中选择"职工表"或"工资表",单击"查询"命令按钮后,在表格控件(Grid1)中显示所选择表的记录(使用IF语句判断);
4)命令按钮(Command2),标题设置为:
"退出",功能为:
用鼠标单击该按钮时,释放所在表单。
5)表单上要有考生姓名
1)表格控件(Grid1)
2)选项组控件有两个按钮“职工表和”工资表”
3)命令按钮(Command1),标题设置为:
"查询",功能为:
在选项组控件中选择"职工表"或"工资表",单击"查询"命令按钮后,在表格控件(Grid1)中显示所选择表的记录(使用IF语句判断);
4)命令按钮(Command2),标题设置为:
"退出"
查询按钮方法代码
N=THISFORM.Optiongroup1.VALUE
IFN=1
THISFORM.GRID1.RECORDSOURCE="职工表.dbf"
ELSE
THISFORM.GRID1.RECORDSOURCE="工资表.dbf"
ENDIF
等级考试综合应用题2(作业58)
请在VisualFoxPro中完成下列操作(本题共有1小题):
建立一个表单,将表单的文件名和标题均设置为:
"浏览";
在表单中,添加下列控件:
1)页框(PageFrame1),有"学生表"(Page1)和"成绩表"(Page2)两个选项卡,单击选项卡"学生表"时,在选项卡"学生"中使用"表格"方式显示"学生表"中的记录;单击选项卡"成绩"时,在选项卡"成绩表"中使用"表格"方式显示"成绩表"中的记录;
要求:
将学生表和成绩表添加到数据环境。
2)命令按钮(Command1),其标题为:
退出,功能为:
用鼠标单击该按钮时,释放所在表单。
3)表单上要有考生姓名
等级考试综合应用题3(作业47)
打开testform2表单,表单的标题设置为:
"学生成绩查询"。
在表单中,添加下列控件:
1)文本框(text1);
2)"查询"按钮(Command1):
在"查询"按钮的Click事件中,使用SQL的SELECT命令查询"成绩表"中每个学生的学号、姓名、总分,并将查询结果存储到"总分表"表中。
在文本框text1中,显示"查询结束"。
(注:
总分为数学、英语和计算机三门课成绩之和)
3)"退出"按钮(Command2):
单击"退出"按钮时,关闭表单。
表单设计完成后,运行表单进行查询。
查询按钮代码:
SELE学号,姓名,数学+外语+计算机AS总分;
FROM学生成绩ORDEBY总分DESC;
intotabl总分表
thisform.refresh
THISFORM.TEXT1.VALUE="查询结束!
"
等级考试综合应用题4(作业49)
请在VisualFoxPro中完成下列操作(本题共有1小题):
在"人事管理"数据库中,根据"职工表"建立一个统计各部门职工人数的视图,该视图包含"部门号"、"职工人数"两个字段,视图名为"view1",并按部门号升序排序;
打开考试文件夹下的表单testform7。
将表单的标题设置为:
"查询部门职工人数";在表单的数据环境中,添加视图view1。
在表单中,添加下列控件:
1)表格控件Grid1,运行表单时,在表格控件Grid1中显示视图"view1"的记录;
2)命令按钮Command1,标题设置为:
"关闭",功能为:
用鼠标单击该按钮时,释放所在表单。
本题可编写程序制作视图:
opendata人事管理
creaviewview1as;
SELECT部门号,COUNT(*)AS职工人数;
FROM职工表GROUPBY部门号
等级考试综合应用题5(作业18)
打开考试文件夹下的表单testform3。
表单的标题设置为:
"查询职工信息"。
在表单的数据环境中,添加"职工管理"库中的表:
职工.dbf。
在表单中,添加下列控件:
1)标签label1和label2,其标题为:
"姓名"和"年龄";
2)文本框text1和text2,设置文本框text1和text2的ControlSource属性,当执行表单时,该框中分别显示职工.dbf中的姓名和年龄;(不需要编写事件代码)
3)命令按钮command1和command2,其标题分别为:
"上一记录"和"下一记录"。
功能分别为:
用鼠标单击command1按钮时,将表记录指针移动到上一条记录,如果移到表文件首,则移到末记录;用鼠标单击command2按钮时,将表记录指针移动到下一条记录,如果移到表文件末,则移到首记录;
4)命令按钮command3,其标题为:
"退出",功能为:
用鼠标单击该按钮时,释放所在表单。
“上一记录”方法代码:
ifnotbof()
skip-1
thisform.refresh
else
gobott
thisform.refresh
endif
“下一记录”方法代码:
ifnoteof()
skip1
thisform.refresh
else
gotop
thisform.refresh
endif
等级考试综合应用题6(作业56)
打开考试文件夹下的表单testform4。
将表单的标题设置为:
"浏览";将表单中的表格控件(Grid1)的数据源类型(RecordSourceType)设置为:
0-表;在表单中,添加三个命令按钮Command1、Command2和Command3,并完成下列操作:
1)命令按钮Command1的标题设置为:
"显示学生表",功能为:
用鼠标单击该按钮时,表格控件(Grid1)的数据源(RecordSource)设置为"学生表.dbf";
2)命令按钮Command2的标题设置为:
"显示成绩表",功能为:
用鼠标单击该按钮时,表格控件(Grid1)的数据源(RecordSource)设置为"成绩表.dbf";
3)将命令按钮Command3的标题设置为:
"退出",功能为:
用鼠标单击该按钮时,释放所在表单。
THISFORM.Grid1.RecordSource="学生表.dbf"
thisform.refresh
等级考试综合应用题7(作业55)
打开考试文件夹下的表单testform5。
表单的标题设置为:
浏览学生表。
在表单的数据环境中,添加学生库中的表:
学生表.dbf。
在表单中,添加下列控件:
1)标签label1和label2,其标题为:
学号和姓名;
2)编辑框Edit1和Edit2,设置编辑框Edit1和Edit2的ControlSource属性,当执行表单时,该框中分别显示表"学生表"中的学号和姓名;(不需要编写事件代码)
3)计时器Timer1,功能为:
表单运行时,每1秒钟向下移动1条记录,如果移到表文件末,再返回到首记录;(在移动记录过程中,表单中的内容要随着更新。
)
4)命令按钮command1,其标题为:
退出,功能为:
用鼠标单击该按钮时,释放所在表单。
ifnoteof()
skip1
thisform.refresh
else
gotop
thisform.refresh
endif
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VFP 复习题