VF程序设计复习资料36页.docx
《VF程序设计复习资料36页.docx》由会员分享,可在线阅读,更多相关《VF程序设计复习资料36页.docx(34页珍藏版)》请在冰点文库上搜索。
VF程序设计复习资料36页
06级别
VF程序设计复习资料
内容:
VF程序设计课后习题答案
历年考试题(带答案)
使用说明:
在资料中,所有答案均为直接在题目中给出,
“&&”符号后的内容为说明,“*”后的内容,
为建立的文件。
课后题答案主要给出考试重点
内容。
另外,请同学们上机实践以增强记忆。
VisualFoxPro程序设计教程课后题答案
说明:
仅重点部分设置答案
第一章数据库系统基础知识(P17)
2.什么是数据库、数据库管理系统和数据库系统?
答:
①数据库是在数据管理系统的集中控制下,按一定的组织方式储存起来的、相互关联的数据集合.数据库(Datebase,DB)是数据库系统中按一定法则储存在外存储器中的大批数据.
②数据库管理系统(DatebaseManagementSystem,DBMS)是系统软件,用来对数据进行同意的的控制和管理,从而有效减少数据冗余,实现数据共享,解决数据独立性问题,并提供统一的安全性和并发控制功能.
③数据库系统其实就是数据库应用为基础的计算机系统,是把有关计算机硬件、软件、数据和人员组合起来的拥护提供信息服务的系统.
5.实体之间的联系有哪几种,分别举例说明.
答:
①1对1联系,例:
一个人有一个身份证,一个身份证也只有一个人可以使用.
②1对多联系,例:
一个班主任可以带很多学生,一个学生只能有一个班主任.
③多对多联系,例:
一个人可以去任何酒吧中的任意一个,任意一个酒吧可以为任意多的人提供娱乐场地.
6.数据库有哪几种常用的数据模型?
VisualFoxPro属于哪一类?
答:
①层次模型,网络模型,关系模型.
②VisualFoxPro属于关系模型.
8.关系数据库管理系统的3种基本关系运算是什么?
答:
关系运算有3种方式:
选择、投影、联接.
第二章操作基础(P33)
3.VisualFoxPro有几种操作凡是?
各有什么特点?
答:
①菜单操作方式
特点:
优点是直观易懂,击键简单(主要是鼠标单、双击),对于不熟悉VisualFoxPro命令、又没有或不想花时间去学习它的最终用户十分适合.不足是操作环节多,步骤繁琐,因此速度慢,效率低.
②命令操作方式
特点:
输入命令完成操作比使用菜单和对话框速度更快,效率高,系统菜单不可能包含所有的功能,有些操作只能通过命令窗口输入;必须熟练掌握VisualFoxPro命令,才能谈的上开发应用程序.
③程序工作方式
特点:
为用户提供更简洁的界面,达到操作目的.
第三章数据及其运算(P55)
2.字段变量与内存变量有何区别?
答:
字段变量是随表存取而存取,定义在表中的变量.
内存变量是拥护在内存中定义的,用来存放程序运行中的中间结果和最终结果的变量,是进行数据的传递和运算的变量.
4.求下列表达式的值.
(1)LEN(DTOC(DATE()))
输出结果:
8
(2)STUFF("现代教育中心",5,0,LEFT("技术中心",4))
输出结果:
现代技术教育中心
(3)VARTYPE(08/23/03)
输出结果:
N
(4)SPCACE(5)-SPACE(5)
输出结果:
空白
(5)"PRO"$"FoxPro"AND"100">"90"
输出结果:
.F.
5.针对学生表,写出下列条件:
先制作学生表:
学号
姓名
性别
年龄
是否少数民族
出生日期
入学成绩
001
王**
男
20
否
1986/09/20
560
002
李**
女
19
否
1987/06/30
590
003
张**
男
20
是
1986/02/03
610
004
赵**
女
22
是
1985/12/17
620
…
…
…
…
…
…
…
(1)入学成绩大于600分的学生;
LISTFOR入学成绩>600
(2)年龄大于18岁但是小于25岁的学生;
LISTFOR年龄>18AND年龄<25
(3)少数民族的男生
LISTFOR是否少数民族="是"AND性别="男"
(4)在1985年1月1日至1983年12月31日之间出生的学生;
LISTFORYEAR(DATE())-YEAR(出生日期)>20ANDYEAR(DATE())-YEAR(出生;日期)<23&&以2007年为例
(5)入学成绩在580分以上的汉族女生.
LISTFOR入学成绩>580AND是否少数民族="否"AND性别="女"
6.写出下列表达式.
(1)求实数x的小数部分;
x=3.1415926535897932384626
?
x-INT(x)
(2)求自然数m的十位数字;
m=125
n=INT(m)
x=STR(&n)
?
RIGHT(&x,2)
(3)将实数x保留两位小数,第三位小数进行四舍五入处理;
x=3.1415926535897932384626
?
ROUND(x*3,2)
(4)将c中的小写字母转换成相应的大写字母;
CH2="c"
CH1=CHR(ASC(ch2)-ASC("a")-ASC("A"))
?
CH1
(5)判断n是否偶数.
?
MOD(n,2),"如果结果为1,则n是奇数,如果为0,则n是偶数"
第四章表的基本操作(P86)
13.就学生表,写出实现下列操作的命令.
(1)显示第5号记录;
USESTUDENTS.DBF
GO5
DISPLAY
(2)显示第5号至10号之间的全部记录;
USESTUDENTS.DBF
GO5
LISTNEXT6
(3)连续列出1980年以后出生的学生的姓名与出生年月;
USESTUDENTS.DBF
LIST姓名,出生年月FORYEAR(DATE()-YEAR(出生年月))<27
&&以07年为当前时间.
(4)显示在1985年1月1日至1983年12月31日之间出生的学生记录;
USESTUDENTS.DBF
LIST姓名,出生年月FORYEAR(DATE())-YEAR(出生年月)>22AND;YEAR(DATE())-YEAR(出生年月)<24&&以07年为当前时间
(5)在表的顶部增加一个新记录
USESTUDENTS.DBF
GOTOP
INSERTBLANKBEFORE
(6)修改最后一个记录
USESTUDENTS.DBF
GOBOTT
BROW
(7)将16岁以下的少数民族学生成绩提高20分;
USESTUDENTS.DBF
REPLACEALL入学成绩WITH入学成绩+20FOR是否少数民族="是"ANDYEAR(DATE())-YEAR(出生年月)<16
(8)将学生表原样复制为xsda.dbf,并物理删除xsda.dbf中记录号为偶数的记录;
USESTUDENTS.DBF
COPYTOxsda.dbf
USExsda
DELETEFORMOD(RECNO(),2)=0
PACK
(9)显示入学成绩前5名的记录;
USESTUDENTS.DBF
SORTON入学成绩/DTOCJ.dbf
USECJ.dbf
LISTNEXT5
(10)统计1985年出生学生的人数,并把它存在变量number中;
USESTUDENTS.DBF
COUNTFORYEAR(DATE())-YEAR(出生年月)=22TOnumber
(11)分别求男女学生的平均年龄;
USESTUDENTS.DBF
AVERYEAR(DATE())-YEAR(出生年月)FOR性别="男"TOx
AVERYEAR(DATE())-YEAR(出生年月)FOR性别="女"TOy
?
"男生的平均年龄为:
"+STR(x,3)+"岁","女生的平均年龄为:
"+STR(y,3)+;
"岁"
(12)查找并显示第一位少数民族学生;
USESTUDENTS.DBF
INDEXON少数民族否TOsy1FOR少数民族否="是"
GO1
DISPLAY
(13)建立一个结构符合索引文件,其中包括两个索引:
记录以学号降序排列;记录按出生年月升序排列;
USESTUDENTS.DBF
INDEXON-学号+出生年月TAGsy2
(14)查询年龄最小和最大的学生;
USESTUDENTS.DBF
LISTFORMIN(出生年月)
LISTFORMAX(出生年月)
(15)按性别对入学成绩进行汇总.
USESTUDENTS.DBF
INDEXON性别TAGsy3
TOTALON性别TOHZFIELDS入学成绩
第六章SQL语言的应用(P114)
2.利用第5章习题中给出的订货管理数据库和记录实例,用SQL语句完成下列操作:
(1)列出在北京的供应商名称;
USE供应商.dbf
LISTFOR地址=”北京”
(2)列出发给供应商S6的订购单号;
USE订购单.dbf
LIST订购单号FOR供应商号=”S6”
(3)列出职工E6发给供应商S6的供应商信息;
USE订购单.dbf
LIST订购单号,订购日期FOR职工号=”E6”AND供应商号=”S6”
(4)列出向供应商S3发过订购单的职工的职工号和仓库号;
SELECTa.职工号,b.仓库号FROM职工b,订购单aWHERE;
a.职工号=b.职工号ANDb.供应商号=”S3”
(5)列出和职工E1、E3都有联系的北京的供应商信息;
SELECTa.供应商号,b.供应商名,地址FROM订购单a,供应商bWHERE;
a.供应商号=b.供应商号ANDa.职工号=”E1”,a.职工号=”E3”
(6)列出与工资在1220元以下的职工没有联系的供应商的名称;
SELECTa.供应商名FROM供应商a,职工b,订购单cWHERE;
b.职工号=c.职工号,c.供应商号=a.供应商号ANDb.工资<1220
(7)列出向供应商S4发出订购单的仓库所在的城市;
SELECTa.城市FROM仓库a,职工b,订购单cWHEREa.仓库号=b.仓库号,;
b.职工号=c.职工号ANDc.供应商号=”S4”
(8)列出在上海工作并且向供应商S6发出了订购单的职工号;
SELECTa.职工号FROM职工a,仓库b,订购单cWHEREa.仓库号=b.仓库号,;
a.职工号=c.职工号ANDb.城市=”上海”,c.供应商号=”S6”
(9)列出由工资多于1230元的职工向北京的供应商发出的订购单号;
SELECTa.订购单号FROM订购单a,职工b,供应商cWHERE;
a.职工号=b.职工号,a.供应商号=c.供应商号ANDb.工资>1230,;
c.地址=”北京”
(10)列出仓库的个数;
SELECT仓库号,COUNT(仓库号)FROM仓库.dbf
(11)列出有最大面积的仓库信息;
SELECTa.仓库号,城市,面积FROM仓库aORDERBY面积
GO1
DISPLAY
(12)列出所有仓库的平均面积;
SELECTAVG(面积)AS“所有仓库的平均面积”FROM仓库.dbf
(13)列出每个仓库中工资多于1220元的职工个数;
SELECT职工号,COUNT(职工号)FROM职工.dbfGROUPBY仓库号WHERE;
工资>1220
(14)列出和面积最小的仓库有联系的供应商的个数;
SELECTa.职工号,COUNT(a.供应商号)FROM订购单a,职工b,仓库cWHERE;
a.职工号=b.职工号,b.仓库号=c.仓库号ANDMIN(c.面积)
(15)列出工资低于本仓库平均工资的职工信息.
SELECTa.职工号,b.仓库号,城市,c.供应商号,订购单号,订购日期FROM;职工a,仓库b,订购单cWHEREa.仓库号=b.仓库号,a.职工号=c.职工号;ANDa.工资第九章结构化程序设计
1.写出下列程序的执行结果.
(1)CLEAR
SETTALKOFF
x=10
y=-3
FORn=29+xTOxSTEPy
ENDFOR
?
n
RETURN
执行结果:
9
(2)主程序:
t1.prg
SETTALKOFF
STORE‘AB’TOk1,k2
DOt2
?
k1+k2
RETURN
子程序t2.prg
PRIVATEk1
k1=k2+”250”
?
k1
RETURN
执行结果:
AB250
ABAB
(3)SETTALKOFF
CLEAR
STORE1TOx
STORE20TOy
DOWHILEx<=y
IFINT(x/2)<>x/2
x=1+x^2
y=y+1
LOOP
ELSE
x=x+1
ENDIF
ENDDO
?
x,y
SETTALKON
RETURN
执行结果:
122.0023
(4)主程序:
z.prg
SETTALKOFF
STORE2TOx1,x2,x3
x1=x1+1
DOz1
?
x1+x2+x3
RETURN
子程序:
z1.prg
x2=x2+1
DOz2
x1=x1+1
RETURN
子程序:
z2.prg
x3=x3+1
RETURNTOMASTER
执行结果:
9
(5)SETTALKOFF
x=15
y=7
DOsubWITHx,(y)
?
x,y
RETURN
PROCECUREsub
PARAMETERSa,b
a=a+b
b=a-b
RETURN
执行结果:
227
(6)SETTALKOFF
x=9
y=13
z=fu(x,y)
?
z
RETURN
FUNCTIONfu
PARAMETERSa,b
a=a*b
RETURN(a)
执行结果:
117
3.输入学生成绩,若成绩大雨80分,则输出”优良”,成绩小于60分,则输出”不及格”,否则输出”中等”.
参考答案:
*CJ.prg
SETTALKOFF
USESTUDENTS.dbf
name=space(10)
@10,5SAY”请输入学生姓名并查看其成绩:
”GETname
READ
LOCATEFOR学生姓名=name
IF.NOT.EOF()
DOCASE
CASE成绩>=80
?
“该生成绩为优秀”
CASE成绩>=60AND成绩<80
?
“该生成绩为中等”
OTHERWISE
?
“该生成绩为不及格”
ENDCASE
ELSE
?
”无此学生”
ENDIF
SETTALKON
RETURN
4.在学生表中,分别统计汉族学生和少数民族学生的人数.
参考答案:
*TJ.prg
CLEAR
STORE0TOx,y
USESTUDENTS.dbf
SCAN
IF少数民族否=”是”
x=x+1
ELSE
y=y+1
ENDIF
ENDSCAN
?
“少数民族的学生有”+STR(x,3)+”人”
?
“汉族的学生有”+STR(y,3)+”人”
USE
RETURN
2003-2004学年第2学期期末考试试题(A卷)
foxpro程序设计基础试题
使用班级:
03级非计算机专业本科fox班
总分
得分
一、单项选择题(共20分)[每小题2分]
1.FOXPRO是一种(C)数据库管理系统。
A)层次型 B)网状型 C)关系型 D)面向对象型
2.将数据库文件的某一字段变量改名,以下命令正确的是(D)
A)ModifyB)Use C)Create D)Modifystructure
3.在无索引的情况下打开数据库文件,立即使用Display命令,其功能是(A);
A)显示第一条记录B)显示全部记录
C)显示最后一条记录D)显示从当前记录开始到表尾的所有记录
4.以下表达式的结果为数值型的是(D);
A)"牛"$"牛群" B)"wishyou"+"success"
C){98/6/14}+15 D){98/06/14}-{98/11/12}
5.关于索引,下列说法正确的是(B)。
A)通过建立索引可以改变记录在库中的实际存储顺序
B)可以对多个字段的表达式建立索引
C)一个数据库只能建立一个索引
D)建立索引以后,库中的记录就会按照索引规定的顺序重新排列
6.关于删除记录的说法,不正确的是(B)。
A)在BROWSE窗口中,对于要删除的记录,可以单击每个记录左边的框来标记该记录要被删除
B)对于添加了删除标记的纪录,它们仍然存在于磁盘上,但是不能再恢复原来的状态
C)为了避免错误删除有用信息,foxpro把库中删除记录的操作分为两步:
先对记录作删除标记,然后再移去要删除的记录。
D)删除当前库文件中所有记录时,通常需要用户进一步确认
7.下述程序段的运行结果为(C)。
ch="abcdef"
dowhilelen(ch)>0
?
?
right(ch,2)
ch=left(ch,len(ch)-2)
enddo
A)abcdefB)fedcbaC)efcdabD)badcfe
8.设职工数据库文件已经打开,其中有工资字段,要把指针定位在第一个工资大于1000元的记录上,应使用命令(C)。
A)FINDFOR工资>1000B)SEEK工资>1000
C)LOCATEFOR工资>1000 D)FIND工资>1000
9.以下程序段共执行(D )次循环
k=2.5
DOWHILEk<=4
?
k
k=k+0.5
ENDDO
A)1 B)2 C)3 D)4
10.要为当前表所有职工增加100元工资应该使用(D)命令。
A)CHANGE工资WITH工资+100
B)REPLACE工资WITH工资+100
C)CHANGEALL工资WITH工资+100
D)REPLACEALL工资WITH工资+100
得分
二、填空题(共20分)[每空2分]
1.计算机的中央处理器由 运算器 和控制器构成。
2.计算机网络按通信距离来划分,通常可分为___广域网和_局域___网。
3.结构化程序设计中的三种基本结构单元是顺序结构、__选择__结构和_循环__结构。
4.FoxPro系统的三种工作方式有_菜单操作方式__、_命令操作方式__和选单操作方式。
5.十进制数23,对应的二进制数是:
10110。
十六进制数F6对应的十进制数是:
262。
6.foxpro库文件的备注信息集中存放在一个与库文件同名但扩展名为:
.dct的备注文件中。
7.表达式"ab">"bb"OR"ac"<"ad"的运算结果为:
.T.。
8.执行命令:
?
AT("成绩","平时成绩")
显示的结果是__5_____。
9.能随着库文件的打开而自动打开的索引为:
结构复合索引文件。
10.按照不同库文件的两个字段表达式值相等来关联的原则,父文件多条记录对应子文件中一条记录的关联称为多对一关系,父文件一条记录对应子文件中多条记录的关联称为一对多关系。
得分
三、程序理解题(共20分)
1.读程序,写出运行结果(8分)
主程序main.prg子程序proc.prg
publicmpublicn
settalkoffprivatex
m=1m=m+1
x=5n=2
y=2x=3
doprocy=4
?
"main中:
",m,n,x,y?
"proc中:
",m,n,x,y
settalkonreturn
return
运行结果为:
proc中:
2234
main中:
2254
2. 程序填空(每空2分,共12分)
(1)*本程序用来求组合
modifycommandcmn
settalkoff
input"输入m"tom
input"输入n"ton
c=jc(m)/(jc(n)*jc(m-n))
?
c
settalkon
return
functionjc
PARAMETERjcn
f=1
fork=1tojcn
_f=f*k__
endfor
returnf
(2)*本程序用来统计学生数据库stud.dbf中成绩score大于80分的学生人数
SETTALKOFF
CLEAR
SELECT0
USEstud.dbf
S=0
DOWHILE.NOT.EOF()
IFSCORE>=80
S=S+1
ENDIF
CONTINUE
ENDDO
USE
?
"成绩大于等于80分的学生共有"+STR(S)+"人"
USE
SETTALKON
得分
四、编程题(每小题10分,共20分)
1.(10分)
输入一个数,判断它能否被3,5整除,并输出一下信息之一:
(1)能同时被3,5整除;
(2)只能被3整除;
(3)只能被5整除;
(4)既不能被3整除也不被5整除
参考答案:
*1.prg
CLEAR
INPUT’请输入数:
’TOnum1
IFnum1<>0
DOCASE
CASEMOD(num1,15)=0
?
"该数能同时被3和5整除"
CASEMOD(num1,3)=0ANDMOD(num1,5)<>0
?
"该数只能被3整除"
CASEMOD(num1,5)=0ANDMOD(num1,3)<>0
?
"该数只能被5整除"
OTHERWISE
?
"该数既不能被3整除也不能被5整除"
ENDCASE
ENDIF
2.(10分)
编程序求100到1000之间的所有奇数之和。
参考答案:
*求和.prg
SETTALKOFF
STORE100TOx
STORE0TOy
DOWHILE.T.
x=x+1
DOCASE
CASEINT(x/2)=x/2
LOOP
CASEx>=1000
EXIT
OTHERWISE
y