Visual FoxPro基础知识.docx
《Visual FoxPro基础知识.docx》由会员分享,可在线阅读,更多相关《Visual FoxPro基础知识.docx(36页珍藏版)》请在冰豆网上搜索。
![Visual FoxPro基础知识.docx](https://file1.bdocx.com/fileroot1/2023-2/8/3c99a4de-9695-4c90-af06-a8bc8eb1acc3/3c99a4de-9695-4c90-af06-a8bc8eb1acc31.gif)
VisualFoxPro基础知识
第一章VisualFoxPro基础知识
1、什么叫数据库,数据库管理系统、数据库系统?
数据库,是存储在外存中有结构的相关数据的集合,是一种有结构的数据文件,是数据库管理系统管理的对象。
数据库系统,是一个引入数据库以后的计算机系统,他由计算机硬件及相关软件、数据库、数据库管理系统及用户组成。
数据库管理系统,是在操作系统支持下管理数据的软件,实现数据库的建立、使用和维护,是数据库系统的核心。
2、简述数据库的3种模型,关系数据库的主要特点及操作。
数据库的数据模型有三种:
层次模型,网状模型,关系模型。
VisualFoxPro是一个关系型数据库管理系统。
关系数据库的主要特点:
关系中每一个属性都是不能再分的基本元素;各元组的县同列具有相同的数据类型;每个属性列被指定一个不同的属性名,在一个关系中,属性名不能重复;行、列顺序可任意变动,不影响表格信息;每个元组的内容是不相同的,不允许重复。
有选择、投影、连接三种基本操作。
3、简述VisalFoxPro的常量和变量概念。
常量是以直观的数据形态和意义直接出现的数据,在整个程序的执行过程中,常量的值是固定不变的。
类型有:
数值性,字符性,逻辑型,日期型,货币型等。
变量是在程序执行过程中可以变化的数据项;变量实际上是用标示符命名的存放数据项的计算机内存单元。
变量有变量名、变量值、变量类型、长度、变量作用域等属性。
4、简述VisalFoxPro变量的类型,系统变量的概念及作用,内存变量的建立、现实、删除。
存盘和恢复方法。
VisualFoxPro的变量可分为字段变量和内存变量,内存变量又可分为一般内存变量、系统内存变量和数组变量。
系统内存变量是VisualFoxPro自动创建并维护的内置内存变量。
是用来保持固定信息。
内存变量操作如下:
1)显示:
DISPLAYMEMORY或LISTMEMORY.。
2)清除:
RELEASE或RELEASEALL。
3)保存和恢复:
SAVETO<内存变量文件名>、RESTOREFROM<内存变量文件名>。
5、简述VisalFoxPro的表达式类型,它们之间的运算规则。
VisualFoxPro的表达式可分为:
数值型表达式,字符型表达式,日期型表达式,关系型表达式,逻辑型表达式。
各种运算符的优先级为:
数值运算符高于关系运算符,关系运算符高于逻辑运算符。
所有同一级命令都是从左到右进行的,括号内的运算优先执行,嵌在最内层括号内的运算首先进行,然后依此由内向外执行。
6、什么是函数?
说明随机函数的概念和作用,宏代换函数的概念和作用。
函数是系统为实现一些特定功能而设置的内部程序,作为系统的一部分供用户使用。
随机函数(RAND())作用是返回一个0-1.0之间的随机数。
宏代换函数(&)作用是用字符型内存变量的"值"代替内存变量的"名"。
7、简述名表达式的概念和作用。
说明名表达式、宏代换函数、EVALUATE()函数三者的区
别及使用方法。
名表达式就是用一对括号将名称括起来,以实现替换功能。
例如:
X="学生.DBF"USE(X),后边的USE(X)相当于USE学生.DBF能用名表达式代替&时,尽量用名表达式,因为名表达式比&快得多,但应注意,只有在进行名称转换时才能使用名表达式,如果是处理表达式的读取,则不能使用名表达式取代&。
8、简述VisualFoxPro的启动和退出方法。
启动:
单击"开始"菜单上的"程序"选项,打开"程序"层叠菜单;移动标到MicrosoftVisualFoxPro,打开VisualFoxPro5.0;单击图标,即可启动VFP5.0
退出:
方法很多,最常用的是单击窗口右上角的关闭按扭。
第二章表的建立与操作
1、计表文件结构时如何确定字段明、字段类型和字段宽度?
对表结构的建立主要是确定表结构的字段名、字段类型、字段宽度。
字段名又称字段变量,最长为10个字符,允许由字母、汉字、数字和下划线组成,但必须以字母或汉字开头,中间不能有空格。
字段类型有13种,它们是:
字符型、数值型、逻辑型、日期型、备注型、通用型、整型、双精度型、浮点型、日期时间型、货币型、二进制字符型、二进制备注型。
字段宽度:
逻辑型,1;备注型,4;通用型,4;整型,4;日期型,8;货币型,8。
2、LIST与DISPLAY命令有什么区别?
LIST显示当前记录的内容和表达式的结果。
如果有更多的信息需要显示,而在窗口中显示不完,就滚动显示。
LIST也可用来显示表达式的结果,它可以包括字母和数字的组合、内存变量、数组元素、字段和备注字段。
DISPLAY显示当前表记录的内容和表达式的结果。
如果有更多信息需要显示,而在窗口中显示不完,就显示第一屏信息,然后暂停。
按任意键继续显示下一屏的信息。
不带所有选项时,DISPLAY的默认范围是当前记录。
3、FIND与SEEK命令在使用上有何区别?
FIND与SEEK命令都是索引查找命令。
由于索引查找速度快,又称快速查找。
FIND命令可用于字符型和数值型数据的快速查找,可以查找字符型和数值型常量,但不能查找变量和表达式。
用于查找的字符串呆以加定界符,也可以不加定界符。
若使用字符型变量,必须加"&"。
SEEK命令查找的对象是表达式,即可以是常量、变量或表达式,字符型常驻量必须加定界符,字符型变量前不需加"-"。
SEEK命令的功能远强于FIND命令,所以在VisualFoxPro中很少使用FIND命令,而用SEEK命令取而代之。
4、什么是排序和索引?
两者有何区别?
1)、概念不同:
排序是按关键字的顺序建立一个新的、与原文件同样大小、结构相同的物理文件,改变了物理顺序;索引只是在原表的基础上建一个按逻辑顺序排列的索引表,原表的物理顺序并无改变。
2)占存储空间大小不同:
排序后的文件与原文件大小相同,占存储空间大,且在排序时还要有临时转换空间,需有原表3倍大小的空间;索引文件只是一张相当于两个字段的表格,占存储空间小。
3)查找速度不同:
排序文件中的查询依然按记录的物理顺序,查找速度慢;索引文件中的查找是按逻辑顺序进行的,查找速度快。
4)使用方法不同;
5)建立所需时间不同。
5、删除表记录与删除表文件的命令各是什么?
两者有何区别?
删除表记录的命令是DELETE和PACK或ZAP
DELETE是对表中要删除的记录加上删除标记,然后使用PACK真正删除记录。
ZAP是将表文件中的所有记录完全删除,它相当于DELETEALL后用PACK。
删除表文件的命令是ERASE或DELETEFILE
删除表记录后表文件还存在,还存在表结构。
而删除表文件后,表记录和表结构都被删除。
6、REPLACE命令与STORE命令、"="运算符有何区别?
REPLACE命令是用来修改字段的值,例如我们可以用REPLACE来修改学生表中的姓名字段:
REPLACE奖学金WITH100FOR姓名="李平"
STORE和=命令是用来为内存变量赋值:
STORE30TOM或M=30,M是内存变量。
REPLACE与STORE和=的处理对象不同。
7、VISUALFOXPRO有几种类型的索引?
如何用表设计建立索引?
Visual FoxPro有种类型的索引文件:
一种是传统的.IDX文件,这种索引文件只有一个索引表达式,称为单项索引文件。
另一种是复合索引文件,其扩展名是.CDX,复合索引文件包含多个索引表达式,这些索引表达式称为索引标识。
在表设计器中建立索引的方法是:
打开要建立索引的表的表设计器,单击索引标识卡,出现其对话框;然后在索引名文本框中输入该索引标识的名字,索引名框右边按钮决定升序或降序;用鼠标可以改变索引表示列出的顺序;类型下拉表中可选择索引类型。
8、什么是主索引?
如何建立主索引?
什么是SETORDERTO〈数值表达式〉的规则?
主索引文件或主控标识决定了表文件的逻辑顺序,在使用打开索引文件或用SETORDERTO命令重新确定主索引文件或主控标识时,都会遇到索引序号这一概念。
所谓索引序号就是众多打开的索引文件或索引标识的排序。
首先是打开的单项索引文件在打开<索引文件名表>中的次序编号;然后是结构复合索引文件,按其生成顺序记数的索引标识的冷编号;最后是独立复合索引文件,按其生成顺序记数的索引标识的冷编号。
SETORDERTO就是确定主索引的命令,其后跟索引序号。
9、VFP中导出数据的几种方法:
当VFP处理好数据后,这时你可以用多种方法将这些数据导出,以便被其它应用程序(如Excel等)所用。
下面向你简单介绍几种导出数据的方法:
1.用"导出数据"对话框。
你可以从VFP主菜单中选择"文件/导出…"打开"导出"对话框,在该对话框中的"来源"框中输入表名(c:
\vfp\students.dbf),在"类型"中指定要导出数据的类型(MicrosoftExcel),在"到"框中输入导出的路径和文件名(C:
\excel\aa.xls),然后按"确定"即可。
这时你如果查看command窗口,可发现以下代码:
COPYTOC:
\excel\aa.XLSTYPEXL5
2.用COPYTO命令。
COPYTO命令的工作对象是VFP中的表,它要依据"TYPE"项才知道要产生哪一类导出文件。
对于上面的导出过程,可用以下方法实现:
USEstudents
COPYTOC:
\excel\aa.XLSTYPEXL5
3.用SETALTERNATETO写入ASCⅡ文件。
用该命令可以把屏幕上的内容导出,导向一个文件,下面例子可以将系统状态输入到status.txt文件中:
SETALTERNATETOstatus.txt
SETALTERNATEON
SETCONSOLEOFF
?
"系统状态"+DTOC(DATE())+"@"+TIME()
LISTSTATUS
SETALTERNATEOFF
SETCONSOLEON
4.用SETPRINTERTO命令。
用该命令可把打印输出到文本文件中:
SETPRINTERTOhello.txt
SETPRINTON
?
?
?
CHR(27)+"广大计算机爱好者"
?
?
"你们好!
"
?
"祝你们新年快乐"
SETPRINTOFF
5.用REPORTFORMTOFILE命令。
运行报表的REPORT命令有许多选项,把报表输出保存到文件中的方法为:
REPORTFORM(报表名)TOFILE(文件名)
10、什么是表结构文件?
如何用表结构文件建立和修改表结构?
表结构文件就是存储表的结构的文件,它也是一个表,但是它是以表的字段为记录的。
我们可以用表结构文件来建立新表。
格式为:
CREATE<表文件名>FROM<表结构文件名>。
利用<表结构文件名>中说明的结构创建新表<表文件名>。
第三章程序设计基础
1、结化程序设计具在几种基本控制结构?
哪几种?
顺序结构是指程序的执行按其中的命令从上到下顺序执行。
选择分支结构是根据条件的测试结果执行不同的操作。
依次判断某一条件后来执行某一段固定程序,直到条件不满足。
2、什么叫算法?
如何表示算法?
请用生活中的例子说明。
算法就是解决问题的方法及步骤。
表示算法的形式很多,如自然语言、传统流程图、N-S图和伪代码等。
无论哪种表示方法都可以达到清晰描述算法过程,整理解决问题思路的目的。
例如:
做一道菜,我们得先洗菜,然后用刀进行加工,加工好了后,点火,开始烧菜。
当然如果中间的步骤不同,做出来的菜的味道也就不同。
这一过程就是生活中做一道菜的"算法"。
3、程序文件一般包括几部分?
哪几部分?
程序文件主要包括三部分:
数据输入、数据处理和数据输出。
输入语句包括表达式接收语句INPUT;字符串接收语句ACCEPT;单字符接收语句WAIT。
输出语句包括换行输出语句?
和同行输出语句?
?
。
4、什么叫死循环?
如何预防死循环的出现?
死循环是在循环语句中没有退出循环语句,或有退出循环语句而永远达不到退出循环的条件。
所以在编写程序时要预防死循环的出现,方法是要使条件判断变量在循环过程中变化,并且最终满足条件退出循环。
举例如下:
死循环:
A=1
DOWHILEA>0
A=A+1
ENDDO
非死循环:
A=1
DOWHILEA>0
A=A+1
IFA>99
EXIT
ENDIF
ENDDO
5、请说明过程和过程文件的区别?
过程是一个由PROCEDURE<过程名>开头,ENDPROC结尾了子程序段,其所处的文件称为过程文件,即过程文件是由若干个过程构成的,而过程必须存放在一个过程文件中。
过程文件的扩展名为.PRG。
过程的存在格式为:
PROCEDURE<过程名>程序最后有ENDPROC。
过程是为完成某个操作而编写的代码,可以将过程放在单独的程序文件中,也可以放在一般程序的结尾。
6、程序之间参数传递有几种方法?
请说明每种方法的优缺点。
有两种:
利用内存变量的作用域属性;利用DO<文件名>WITH<参数表达式列表>。
利用不同属性的内存变量的作用域,可以实现程序之间参数和互传。
VisualFoxProK内存变量有4种作用域属性:
自然属性、公用属性、私有属性和本地属性。
利用内存变量的属性,可以实现主程序与子程序之间的参数传递,但使用的变量必须同名。
如果不想爱变量名的限制,又想达到传递参数的目的,就得利用DO<文件名>WITH<参数表达式列表>命令了。
7、请说明内存变量的自然属性、私有属性和本地属性三者的异同点。
自然属性:
1)定义格示:
STORE/=、DIMENSION、DECLARE、INPUT、SUM等。
2)作用范围:
该程序及其调用的下属子程序。
3)传递方向:
单向(由主程序到子程序)。
4)变量寿命:
所在程序运行结束后,该变量被自动删除。
私有属性:
1)格示定义:
PRIVATE<内存变量列表>
2)作用范围:
该程序及其下属子程序,同自然属性。
3)传递方向:
单向(由主程序到子程序),同自然属性。
4)变量寿命:
程序运行结束后,该变量被自动删除。
5)特殊作用:
可隐藏上级程序中与当前程序同名的变量,即对当前程序中变量的操作,不影响上级程序中与当前程序同名的变量值。
本地属性:
1)定义格示:
LOCAL<内存变量列表>。
2)作用范围:
该程序本身。
3)传递方向:
无。
4)变量寿命:
程序运行结束后,该变量被自动删除。
5)特殊作用:
可屏蔽上级程序中与当前程序同名的变量,即对当前程序中变量的操作,不影响上级程序中与当前程序同名的变量值。
同时也不受下属子程序中同名内存变量值的影响。
8、请说明调用过程和调用自定义函数方法的异同点。
调用过程是用DO语句,DO<过程名>,而自定义函数虽然是一个子程序,但是不能用DO命令来调用而只能象内部函数那样出现在表达式中,自定义函数名(<参数表达式列表>)。
9、一般一个VFP就用程序由几部分组成?
通常一个VFP程序由以下几个部分:
一个或多个数据库、设置应用程序系统环境的主程序以及用户界面。
此外,还可以包括查询和报表,允许用户检索或输出自己的数据。
因此,无论多简单的问题,也应该包括数据源、交互界面和数据输出。
10、面向过程的程序方法是什么?
通常是将应用程序目标系统的整体功能进行分解,自顶向下不断的把复杂的处理分解为子处理,这样一层一层地分解下去,直到仅剩下若干个容易处理的子处理为止。
第四章面向对象程序设计基础
1.问:
什么是面向对象程序设计方法(OOP)?
答:
在面向对象程序设计方法中,客观世界中的问题被看作客观世界中的实体与实体之间的关系及其相互作用。
每一个实体就是一个对象,其中包含有关数据和一组对这些数据的操作,是一个相当于微型程序的软件"零件"。
面向对象程序设计就是要将这些"零件"进行严密而有效的连接组装,形成能解决客观问题的软件"机器"。
2.问:
面向过程程序设计方法与面向对象程序设计方法的区别是什么?
答:
面向过程程序设计方法与面向对象程序设计方法的区别有以下几点:
①前者在程序设计时将数据和算法完全的分开,后者将数据和算法看作是不可分割的实体,称为对象;
②前者在程序设计过程中以算法为中心,围绕着实现系统功能的过程来构造系统,后者以数据为中心,所有的操作都围绕着数据而展开;
③前者是一句接一句地编写程序,后者主要是适当地创建对象、修改对象属性和编写对象的方法程序。
3.问:
利用面向对象程序设计方法进行程序设计的步骤是什么?
答:
面向对象程序设计方法要在应用程序的统筹规划和设计之后作以下步骤:
①创建对象或选用合适的对象
②设置对象的属性
③选择并设计适当的对象事件及操作
④在过程代码中调用对象以实现对象之间的通信
4.问:
什么是对象的封装性?
答:
封装是指将对象的方法程序和属性代码包装在一起,对象的属性数据也可称为对象的内部数据。
外界用户(包括应用程序用户和其他对象实体)不能跨越对象的方法直接操作对象的内部数据。
5.问:
面向对象程序设计中,如何利用对象类的继承性实现代码的可重用性?
答:
继承是指子类自动地共享其父类中定义的所有数据和方法的机制。
这样对于某一对象类的多个子类或多重子类而言,我们就不用重复地设计其中的一些基本数据和方法,从而实现了代码的可重用性。
6.多态性是指什么?
答:
子类继承了父类的方法,但是在定义其中的过程时,可以根据子类的不同需求改变或修改父类中原有方法的实现算法,新的实现算法在子类中屏蔽父类的实现算法,这就是继承中的屏蔽性。
由于继承屏蔽性的存在,同一方法名在不同的类层次中或同一层次的不同子类中可能具有不同的实现算法,这就是多态性。
7.问:
如何向对象发送消息?
消息的格式是怎样的?
答:
向对象发送消息就是对该对象的某一个固有操作(方法或事件)的调用。
消息的格式如下:
对象名.方法名/事件名([<参数列表>])
8.问:
消息与方法的区别和联系分别是什么?
答:
消息时要求某个对象执行某个操作的常规命令;方法是对象内部的一段能完成特定操作的程序代码。
消息是调用方法的命令;方法是相应消息的算法实现程序。
9.问:
在VFP中,对象的方法程序与事件有什么区别和联系?
答:
在VFP中,对象的方法程序分成两种:
第一种方法程序与对象的事件相关联,其中的代码当事件发生时执行,这种方法程序往往由程序设计人员自行设计算法;第二种方法程序是独立于事件存在的,其中的代码由消息来调用,这种方法程序一般是系统所固有的。
10.问:
容器和控件分别是什么?
它们之间有何联系?
答:
容器类对象可以包含其他对象;控件类对象是一个单一而独立的部件,其中不能包含其他对象。
它们之间是包含与被包含关系,这种关系可以不断的嵌套,从而形成容器层次。
11.问:
表单的Refresh方法和Release方法有何区别?
答:
Refresh方法的功能是根据对表单的最新修改重新画出表单,并刷新其中的所有值。
除表单以外,Refresh方法还可应用于文本框、命令按钮等各类控件。
Release方法的功能是从内存中释放表单,它还可用于表单集。
12.问:
按钮组的Click事件和组中某一按钮的Click事件的区别是什么?
答:
按钮组中按钮的Click事件是针对于该按钮而设置的,与组中其他按钮无关,也就是说,当别的按钮被单击时,该Click事件中的程序代码不会执行。
这类Click事件的编写相对较为简单。
按钮组的Click事件是对于整个按钮组而设置的,对组中的所有按钮都起作用。
因此,该Click事件必须知道用户单击的是哪个按钮,我们要用按钮组的Value属性来确定这一点,并由此确定不同的程序执行代码,这可以用DOCASE…ENDCASE语句实现。
所以按钮组的Click事件的编写比较复杂。
两种Click事件能够实现同样的操作,用户可以根据习惯和需求选择编写。
13.问:
在容器层次中,引用对象的格式是什么?
答:
在容器层次中,引用对象的格式有两种:
绝对引用对象:
表单集名.表单名.容器名1.….容器名n.控件名
例如,FormSet1.Form2.PageFrame1.Page1.Label3
相对引用对象:
例如,ThisForm.Text1
ThisFormSet.Form2.Command3等
14.问:
修改属性值的两种方式是什么?
答:
第一种方式是在程序设计的交互界面上修改属性值。
这种方式常用于一些一直保持不变的属性值或属性的初值。
第二种方式是在程序运行过程中修改属性值,这种修改是由写在各个方法程序中的语句来实现的。
这种方式用于随着程序运行不停变化的属性值。
15.问:
如何运用容器对象的"编辑"命令?
答:
当要在某一容器对象的内部增加、删除、修改对象时,我们就要用到容器对象的"编辑"命令。
使用方法:
右击容器对象的任意位置,在弹出的快捷菜单中选取"编辑"菜单命令即可。
第五章表单的建立与操作
16.问:
可以采用哪几种方法创建表单?
答:
(1)在"项目管理器"中选择"文档"选项卡,然后选择"表单",选择"新建"再选择"表单向导"。
(2)通过在"工具"菜单上选择"向导"选项并选中"表单"。
(3)通过在"文件"菜单上选择"新建",在"新建"窗口中,选择"表单"再选中"向导"按钮。
(4)通过在主窗口上的工具栏中选择"新建"按钮,在"新建"窗口中选择"表单"再选中"向导"按钮。
17.问:
可以采用哪几种方法进入表单设计器?
答:
(1)通过"项目管理器"。
(2)通过"文件"菜单。
(3)通过在主窗口上的工具栏中选择"新建"按钮。
(4)通过命令:
CREATFORM[<表单名>]。
18.问:
可以采用哪几种方法设置Tab键次序?
答:
(1)以交互方式设置Tab键次序。
(2)用列表方式设置Tab键次序。
19.问:
可以将哪些类型的对象添加到表单中?
答:
(1)数据环境。
(2)控件。
(3)容器。
(4)用户自定义类和OLE对象。
20.问:
什么是容器对象的收集属性和记数属性?
答:
VisualFoxPro中的所有容器对象都有与它们相关联的收集属性和记数属性。
收集属性是引用其每个被包含对象的数组,其得到的值的类型为对象型。
记数属性是指示其包含的对象数的数值属性,其得到的值的类型为数值型。
21.问:
表单中的控件可分为哪几类?
答:
表单中的控件可以分两类:
与表中数据绑定的控件(绑定型控件又称为数据型控件)和没有与数据绑定的控件(非绑定型控件)。
22.问:
编辑事件或方法程序代码可采用的步骤有哪些?
答:
(1)从"显示"菜单中选择"代码"选项。
(2)在"过程"框中选择事件或方法程序。
(3)在编辑窗口中键入代码,编辑方法与程序文件方法相似。
23.问:
如何设置表单或控件的前景或背景颜色?
答:
(1)从"显示"菜单中,选择"工具栏"并选择"调色板"。
(2)选择"前景颜色"按钮或"背景颜色"按钮。
(3)选定想改变的控件或表单。
(4)在"调色板"工具栏中选择想使用的颜色。
24.问:
如何创建自定义颜色?
答:
(1)在"调色板"工具栏中,选择"其他颜色"。
(2)在"颜色"对话框中,选择"规定自定义颜色"显示"自选颜色选择器"。
(3)选择"自定义颜色"框,然后在"自选颜色选择器"中单击,选择所需的自定义颜色。
(4)选择"添加到自定义颜色",把新颜色添加到调色板中。
(5)选择"确定"。
25.问:
要将参数传递到在表单设计器中创建的表单,可用哪些步骤来实现?
答:
(1)创建容纳参数的表单属性,也就是向表单中添加新属性,属性名根据问题的需要随