数据库应用技术—Visual FoxPro及其应用系统开发_第1页
数据库应用技术—Visual FoxPro及其应用系统开发_第2页
数据库应用技术—Visual FoxPro及其应用系统开发_第3页
数据库应用技术—Visual FoxPro及其应用系统开发_第4页
数据库应用技术—Visual FoxPro及其应用系统开发_第5页
已阅读5页,还剩459页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Visual FoxPro及其应用系统开发主要内容第01章 Visual FoxPro简介第02章 Visual FoxPro程序设计基础第03章 面向对象的程序设计第04章 数据库与数据库表第05章 表操作第06章 查询与视图第07章 数据库查询语言SQL第08章 表单设计第09章 报表与标签第10章 菜单设计第11章 小型应用系统开发示例第1章 Visual FoxPro简介1.1 1.1 Visual FoxPro系统概况系统概况1.2 1.2 Visual FoxPro系统环境设置系统环境设置1.3 1.3 药品分销管理信息系统设计实例药品分销管理信息系统设计实例1.1.1 Visua

2、l FoxPro的特点1强大的查询功能2引入数据库表的概念 3界面友好4扩大了对SQL语言的支持5面向对象编程技术6与其它软件高度兼容7支持网络应用1.1.2 Visual FoxPro的安装1安装环境 Visual FoxPro为32位(或64位)的开发工具,其硬、软件的基本配置是: 处理器:80486DX/66MHz或更高档处理器 内存:16MB以上 硬盘空间:典型安装需要100MB,最小化安装需要15MB,完全安装需要240MB 显示器:VGA或更高分辨率的显示器 鼠标 光驱 操作系统:Windows2000,Windows xp操作系统1.1.2 Visual FoxPro的安装2安装

3、Visual FoxPro Visual FoxPro可以从CD-Rom(光盘)(光盘)、硬盘、硬盘、优盘优盘,或从网络服务器网络服务器上安装。以下介绍从CD-ROM安装的步骤。启动Windows操作系统,将Visual FoxPro的安装盘放入CD-ROM驱动器,自动运行安装向导程序。按照安装向导的提示,依次“接受协议”、输入产品ID号和用户信息、选择安装位置及安装类型后即进入安装界面系统根据用户的设置,开始复制文件,配置系统运行环境,直至安装完毕。Visual FoxPro的启动3启动Visual FoxPro【开始】|【所有程序】|【Microsoft Visual Studio 6.0

4、】|【Microsoft Visual FoxPro 6.0】)。利用【我的电脑】或【资源管理器】查找到Visual FoxPro 6.0启动程序vfp.exe。选择Windows桌面:【开始】|【运行】,在弹出的【运行】对话框中输入Visual FoxPro 6.0启动程序所在的文件夹及文件名,在单击“确定”按钮。在Windows桌面上为Visual FoxPro 6.0启动程序创建快捷方式,以后只要双击该快捷方式图标快捷方式图标即可启动Visual FoxPro 6.0。Visual FoxPro的退出4退出Visual FoxPro 选择系统菜单:【文件】|【退出】在命令窗口键入:QUI

5、T,并按下键盘“Enter”键单击系统主窗口右上角“关闭”按钮双击系统主窗体左上角控制菜单图标,或单击控制菜单图标后,再选择弹出菜单:【关闭】同时按下键盘“Alt”和“F4”键1.1.3 Visual FoxPro的用户界面 1.1.4 Visual FoxPro的工作方式1交互式工作方式 交互式工作方式又可分为菜单操作方式和命令方式两种。 菜单操作方式菜单操作方式 命令方式命令方式2. 程序方式 程序是命令代码的集合,用户先创建程序文件并保存起来,使用时只须调用程序文件,即可由系统依次自动执行文件内的程序代码。保存的程序文件可多次反复使用。1.1.5 Visual FoxPro的语法规则 1

6、命令格式 Visual FoxPro的命令有两部分组成:命令动词和命令动词后的短语。命令动词是用来告诉计算机需要完成什么任务;命令动词后的短语则用来限定计算机操作的范围、字段、和条件等。Visual FoxPro的语法规则 2命令常用短语 FIELDS子句该子句说明数据表的字段名称,一般后面跟一个字段名称表(简称字段名表)。在该字段名表中,每个字段名之间必须用逗号隔开。其一般形式为:FIELDS TO PRINTER子句选择该子句时,所发命令操作的结果送往打印机打印输出,否则在屏幕上显示。 OFF 子句选择该子句时,命令操作输出记录时不显示记录号。 Visual FoxPro的语法规则 3命令

7、书写规则每个命令都必须以命令动词开头,命令中各子句的书写顺序可任意每个命令都必须以命令动词开头,命令中各子句的书写顺序可任意排列。排列。命令中各词汇应以一个或多个空格隔开,但如果两个词之间有双引号、单引号、括号、逗号等符号时,则省略空格符。一行最多只能写一条命令,且长度不得超过254个字节。如果命令行较长,可分多行书写,但除最后一行外的每一行都必须以续行符“;”结束,且总长度不超过254个字节。命令中不区分大、小写。命令中不区分大、小写。许多命令动词和短语可以使用缩写,只要写出其至少前4个字母。如:Display可缩写为Disp、Displ、Displa均可应尽量避免使用Visual FoxP

8、ro保留字作为文件名、字段名、变量名,以免发生混乱。1.1.6 Visual FoxPro常用文件类型 在使用Visual FoxPro时,应用系统会产生和管理许多类型的文件,如:项目文件、数据库文件等,它们用不同的扩展名区分。*.DBC 数据库文件 *.DCT 数据库备注文件 *.DBF 数据表文件 *.FPT 数据表备注文件*.PJX 项目文件 *.PRG 源程序文件*.FXP 源程序编译后的文件 * .IDX 单一索引文件 *.SCX 表单文件 * .APP 应用程序文件 *.MEM 内存变量文件 *.MPR 菜单源程序文件 1.2 Visual FoxPro系统环境设置 在使用Visu

9、al FoxPro的过程时,系统允许用户设置大量的参数控制其操作环境和工作方式, 其中包括:(1) 主窗口标题的设置。(2) 工作路径、项目、编辑器、表单工具选项等的设置。(3) 临时文件存储。(4) 拖放字段对应的控件。(5) 其他选项设置。 在在Visual FoxPro 6.0Visual FoxPro 6.0中,可以使用中,可以使用SETSET命令设置临时系统工作命令设置临时系统工作环境。环境。SETSET命令通常在程序中使用,也可以在命令窗口中执行。命令通常在程序中使用,也可以在命令窗口中执行。 使用SET命令设置SETSET命令命令 命令功能命令功能 SET STATUS BAR

10、ON|OFF SET STATUS BAR ON|OFF 是否显示状态栏是否显示状态栏 SET TALK ON|OFF SET TALK ON|OFF 是否显示命令执行的结果是否显示命令执行的结果 SET CLOCK ON|OFF SET CLOCK ON|OFF 是否显示时钟是否显示时钟 SET BELL ON|OFF SET BELL ON|OFF 是否发出警告声音是否发出警告声音 SET ESCAPE ON|OFF SET ESCAPE ON|OFF 用户按用户按【EscEsc】键时是否取消程序运行】键时是否取消程序运行 SET SAFETY ON|OFF SET SAFETY ON|O

11、FF 是否打开系统的安全性检查是否打开系统的安全性检查 SET EXCLUSIVE ON|OFFSET EXCLUSIVE ON|OFF 数据库是否以独占方式打开数据库是否以独占方式打开 表表 常用的常用的SETSET命令命令 SETSET命令命令 命令功能命令功能 SET DELETED ON|OFF SET DELETED ON|OFF 是否忽略已作删除标记的记录是否忽略已作删除标记的记录 SET EXACT ON|OFF SET EXACT ON|OFF 是否精确地对是否精确地对2 2个字符串进行比较个字符串进行比较 SET LOCK ON|OFF SET LOCK ON|OFF 是否自

12、动对文件进行加锁是否自动对文件进行加锁 SET MULTILOCKS ON|OFF SET MULTILOCKS ON|OFF 是否一次可对多条记录加锁是否一次可对多条记录加锁 SET DEFAULT TO cPathSET DEFAULT TO cPath 设置默认的工作目录设置默认的工作目录 SET PATH TO cPathSET PATH TO cPath 设置搜索路径设置搜索路径 SET HELP TO FileNameSET HELP TO FileName 设置帮助文件以替代系统帮助设置帮助文件以替代系统帮助 SET DATE TO SET DATE TO 设置日期格式设置日期格

13、式 SET CENTURY ON|OFF SET CENTURY ON|OFF 显示日期时,年号是否以显示日期时,年号是否以4 4位数显示位数显示 SET HOURS TO 12|24 SET HOURS TO 12|24 设置时间以设置时间以1212或或2424小时的格式显示小时的格式显示 SET SECONDS ON|OFF SET SECONDS ON|OFF 显示时间时,确定是否显示秒显示时间时,确定是否显示秒 SET MARK TO cDelimiterSET MARK TO cDelimiter 设置日期分隔符设置日期分隔符 SET DECIMALS TO nDecimalPlac

14、esSET DECIMALS TO nDecimalPlaces 设置数值显示时的小数位数设置数值显示时的小数位数 实验例子 Set Default to e:myvfp 设置用户数据库文件的工作目录(保存路径)为e:myvfp。1.3 药品分销管理信息系统实例 药品分销管理信息系统是一个比得较典型的计算机数据库应用系统实例,主要功能就是实现一般药品从进货、调拨到销售这样一个药品流通环节中各项信息的即时管理。1.3.1 业务与数据流程分析1进货数据录入2调拨数据录入3销售数据录入进货单药品进货数据录入库存数据表药品调拨数据录入调拨数据表药品销售数据录入库存数据查询销售数据表库 存 商品一览销售

15、单图1 “药品分销管理信息系统”数据与业务流程图1.3.2 系统功能分析 图2 “药品分销管理信息系统”功能结构图药品分销管理信息系统 药品进货数据录入 药品调拨数据录入 药品销售数据录入 库存数据查询 第2章 Visual FoxPro程序设计基础 2.5 2.5 顺序程序结构顺序程序结构2.1 2.1 数据类型数据类型2.2 2.2 常量与变量常量与变量2.4 2.4 表达式表达式2.3 2.3 系统函数系统函数2.8 2.8 模块化程序设计模块化程序设计2.7 2.7 循环程序结构循环程序结构2.6 2.6 分支程序结构分支程序结构本章学习要点 掌握数据和数据类型的概念 掌握字符型、数值

16、型等数据类型所包括的范围 能正确判断数据的类型 了解数据存储的形式及特点 掌握内存变量及其使用方法 了解系统函数和表达式的使用 掌握面向过程程序设计的几种结构 掌握程序工作方式下内存变量及参数的使用2.1 数据类型 数据是数据库系统处理的对象和核心,每个数据都包含数据内容和数据形式两个方面,数据的形式是数据的基本属性,它决定了数据的存储方式和可进行的操作,被称为数据类型。与其他程序设计语言一样,Visual FoxPro提供了多种数据类型的支持,并可以将其存放于各种不同的数据容器中。2.1.1 字符型 字符型(Character)数据亦称为字符串、字符,用字母C表示,是描述不具备计算能力的文字

17、数据类型。字符型数据由字母(汉字)、数字符号、空格等ASCII字符集中任意可打印字符组成,其最大长度为254个字节。2.1.2 数值型1数值型 数值型(Numeric)数据由数字(09)、小点数和正负号组成,用字母N表示。其最大长度为20个字节。2浮点型 浮点型(Float)数据用字母F表示,是数值型数据的一种,与上述数值型基本等价,只是在存储形式上采用浮点格式,且数据的精度比数值型数据高。3双精度型 双精度型(Double)数据用字母B表示,是相对浮点型数据精度更高的数据类型。4整型 整型(Integer)数据用字母I表示,用于存储无小数部分的数值,只能用于数据表中字段的定义。整型字段占用4

18、个字节。5. 货币型 $做为第一个符号,后跟数据;包括整数和小数。2.1.3 日期型与日期时间型日期型(Date) 数据用字母D表示,用来存放表示日期的数据,有多种格式表示,默认为mm/dd/yy。日期型数据有固定宽度,占用8个字节,其存储格式为“yyyymmdd”,其中yyyy表示年号,占4位,mm表示月份,占2位,dd表示日期,占2位。日期时间型(DateTime) 数据用字母T表示,用作存放日期和时间,其默认格式为mm/dd/yyyy hh:mm:ssA|P,A表示上午,P表示下午。日期型有固定宽度,占用8个字节。存储格式为“yyyymmddhhmmss”,其中hhmmss分别为时间中的

19、小时,分钟和秒,各占2位。日期显示格式命令格式:命令格式:SET DATE TO 说明:说明:该命令用于设置日期的输出格式,的取值可以是AMERICAN 、ANSI 、BRITISH等,各取值及所对应的日期输出格式如表2-1所示设置值日期格式示例设置值 日期格式示例AMERICAN mm/dd/yy 06/19/97USAmm-dd-yy06-19-97ANSIyy.mm.dd97.06.19MDY mm/dd/yy06/19/97BRITISH/FRENCH dd/mm/yy19/06/97DMY dd/mm/yy 19/06/97GERMAN dd.mm.yy 19.06.97YMD yy

20、/mm/dd 97/06/19ITALIAN dd-mm-yy19-06-97SHORTWindows短日期格式按Windows系统设置JAPAN yy/mm/dd97/06/19LONGWindows长日期格式日期格式分隔符命令格式:命令格式:SET MARK TO 说明:说明: 可以利用式中 参数设置任意可显示字符作为日期分隔符。如果没有指定任何分隔符,则按SET DATE的设置恢复成系统默认分隔符。【例【例2-1】问题:问题: 设置日期显示格式为设置日期显示格式为ANSI方式,然后将其格式分方式,然后将其格式分隔符改为:隔符改为:,再还原成系统默认分隔符,并考察,再还原成系统默认分隔符,

21、并考察每次设置修改后的结果。每次设置修改后的结果。在系统【命令】窗口中依次输入下列命令在系统【命令】窗口中依次输入下列命令 ? date() &显示系统日期显示系统日期set date ansi &设置系统日期格式为设置系统日期格式为ANSI? date() &显示系统日期显示系统日期set mark to &设置日期格式分隔符为:设置日期格式分隔符为:? date() &显示系统日期显示系统日期set mark to &还原日期格式分隔符还原日期格式分隔符? date() &显示系统日期显示系统日期日期型数据中的世纪值命令格式: SET

22、 CENTURY ON | OFF | TO 说明: 式中ON设置在输出日期数据时显示世纪值;OFF设置在输出日期数据时不显示世纪值;TO 指定日期型数据的默认世纪值, 为199之间的某整数。【例【例2-2】问题:问题: 设置以十九世纪为日期型数据的世纪值。设置以十九世纪为日期型数据的世纪值。 在系统【命令】窗口中输入下列命令在系统【命令】窗口中输入下列命令 SET CENTURY TO 18 &设置以十九世纪为日期型数据的世纪值设置以十九世纪为日期型数据的世纪值严格日期格式检查命令格式:命令格式:SET STRICTDATE TO 0 | 1 | 2说明:说明: 式中:0设置关闭严格

23、的日期格式检测,即设置日期格式按传统的严格格式;1设置严格的日期格式检测(默认值),要求所有日期型和日期时间型数据均按严格的格式;2设置与1相同,但程序代码中出现CTOD()和CTOT()函数时,会出现编译错误。这个设置最适合调试时使用,用来检测2000年兼容性错误;省略则恢复系统默认值,等价于1的设置。 在 Visual FoxPro 6.0 中,最小的日期值是 0001-01-01,即公元1年1月1日,最大的是 9999-12-31,即公元 9999 年12月31日。2.1.4 逻辑型 逻辑型(Logical)数据用字母L表示,用作存储只有两个值的数据,即“真”和“假”,常用来作逻辑判断。

24、逻辑型数据有固定宽度,占用1个字节。2.1.5 备注型备注型(Memo)数据用字母M表示,用于存储较长的字符型数据,只能用于数据表字段变量。记录在备注项中的信息,实际存放在与表文件同名但扩展名为“.FPT”的备注文件中。在数据表中,备注型数据占用4个字节,用来“引用”备注的实际内容;备注文件中实际备注内容的长度只受磁盘空间限制。 2.1.6 通用型 通用型(General)数据用字母G表示,用于存储OLE对象,OLE对象的具体内容可以是文本、图片、电子表格、声音、设计分析图及字符型数据等,只能用于数据表中字段的定义。有了通用型字段就使得Visual FoxPro成为全方位的数据库。同备注型数据

25、,通用型数据存入与表文件同名而扩展名为.FPT的文件中,其数据占用4个字节,实际数据长度仅受限于现有的磁盘空间。2.2 常量与变量 常量和变量是数据的两种存储方式。在Visual FoxPro系统环境下,数据的存储方式的不同,在一定程度上决定了数据使用。2.2.1 常量常量是指在命令操作或程序运行过程中,其值始终保持不变的量。数值型字符型日期型日期时间型逻辑型货币型2.2.2 变量变量是指在命令操作或程序运行过程中其值可能发生变化的量。 1 1字段变量字段变量字段变量是指数据表中定义的字段。2 2内存变量内存变量内存变量是用户通过命令或程序临时定义的变量,它在内存中有一存储区域,独立于数据库和

26、表文件。内存变量的类型有字符型、数值型、日期型、日期时间型、逻辑型、货币型和屏幕型。3 3数组变量数组变量数组变量,亦简称为数组,是指连续可索引的具有相同内在关系的元素所成的集合。数组中的每一元素具有唯一索引号,称为下标,数组中的元素用数组名后接顺序号(下标)来表示,如:ma(3),mb(2,3)。 【例【例2-3】问题:问题: 定义一个包含有两行三列六元素的数组定义一个包含有两行三列六元素的数组mb,并为,并为各元素赋值各元素赋值1、2、6,并按一维数组方式输,并按一维数组方式输出出mb(5)的值。的值。在系统【命令】窗口中依次输入下列命令在系统【命令】窗口中依次输入下列命令 Dimensi

27、on mb(2,3) &定义数组定义数组mbmb(1,1)=1 &为为mb(1,1)元素赋值元素赋值mb(1,2)=2mb(1,3)=3mb(2,1)=4mb(2,2)=5mb(2,3)=6Display Memo Like mb* &显示名称以显示名称以mb开头的内存变量信息开头的内存变量信息? mb(5) &输出输出mb数组中第数组中第5个元素的值个元素的值2.2.2 变量4系统变量 系统内存变量是Visual FoxPro自动创建和维护的变量,它们都以下划线开头,分别用于控制外部设备(如打印机、鼠标器等),屏幕输出格式,或处理有关计算器、日历、剪贴板等方面

28、的信息,例如:系统变量_DIARYDATE存储机器当前日期,系统变量_CLIPTEXT接受文本并送入剪贴板。用户可以通过修改系统变量改变系统状态。2.2.3 *内存变量* 内存变量常用来接受用户输入的数据、程序运行的中间结果或对数据表和数据库进行某种处理后的结果等。基于内存变量的操作有内存变量的赋值、内存变量的保存等。(1)内存变量的访问可以直接通过名称访问内存变量,但如果当前使用的数据表中含有的字段变量时,应采用如下格式访问内存变量:M.或:M - (2)内存变量的赋值 命令格式:命令格式:STORE TO |或| = 说明:说明: STORE一次能为若干变量赋予相同的值,但等号一次只能为一

29、个内存变量赋值。 在此使用赋值命令可以改变内存变量的值和数据类型。 建立屏幕型内存变量,使用命令:SAVE SCREEN TO 【例【例2-4】问题:问题: 使 用使 用 S T O R E 和和 = 命 令 为 内 存 变 量命 令 为 内 存 变 量cMessageTitle,cMessageText,mA,mB赋值赋值 在系统【命令】窗口中依次输入下列命令在系统【命令】窗口中依次输入下列命令 cMessageTitle = 药品编号不可为空!药品编号不可为空! &为内存变量为内存变量cMessageTitle赋值赋值store 请重新输入药品编号!请重新输入药品编号! to cM

30、essageText &为内存变量为内存变量cMessageText赋值赋值store 10 to mA,mB &定义内存变量定义内存变量mC和和mD均为数值型数据,值均为:均为数值型数据,值均为:10display memory like cMessage* &显示名称以显示名称以cMessage开头的内存变量开头的内存变量display memory like m? &显示名称为两个字符且以显示名称为两个字符且以m开头的内存变量开头的内存变量(3)内存变量的显示命令格式:命令格式:LIST| DISPLAY MEMORY LIKE TO PRINTER |

31、TO FILE ?|? ,说明:说明:使用LIST MEMORY和DISPLAY MEMORY可以显示内存变量和系统变量。DISPLAY MEMORY是分页显示内存变量的,而LIST MEMORY滚屏显示全部信息。是指含有“*”和“?”的名称,其中“*”代表多个字符,“?”代表单个字符;TO PRINTER指定显示结果同时通过打印机输出;TO FILE 指定显示结果同时保存在的文件中。通过?和?可以显示内存变量的值,?命令后的表达式值将在下一行的起始处输出,?命令后的表达式值在当前行的光标所在处输出。【例【例2-5】问题:问题: 输出内存变量的值输出内存变量的值 在系统【命令】窗口中依次输入下

32、列命令在系统【命令】窗口中依次输入下列命令 STORE 100 TO pE? date() &显示系统当前日期显示系统当前日期? pE &显示内存变量显示内存变量pE的值结果为的值结果为 100? pE &在前面的结果行后面显示内存变量在前面的结果行后面显示内存变量pE的值的值(4)内存变量的保存命令格式:命令格式:SAVE TO ALL LIKE | ALL EXCEPT 说明:说明: 使用SAVE命令可以将内存变量以文件的形式存放到磁盘上。如果在文件名中不加上扩展名,Visual FoxPro将为其自动加上扩展名.MEM。 保存到内存变量文件后,内存变量并不会从内存

33、中被清除,也不会影响其使用。 (5)内存变量的清除 命令格式:命令格式:RELEASE RELEASE ALL LIKE|EXCEPT CLEAR MEMORYCLEAR ALL 说明:说明:RELEASE 命令可以释放中列出的所有内存变量,变量命令之间用逗号隔开。使用LIKE表示释放符合结构的内存变量,使用EXCEPT表示释放不符合结构的所有内存变量;省略子句LIKE|EXCEPT ,将释放所有的用户定义变量。CLEAR MEMORY命令用于释放所有内存变量。CLEAR ALL命令用于释放所有内存变量,同时还关闭所有数据表文件、索引文件及格式文件等,并将1号工作区设为当前工作区。【例【例2-

34、6】问题:问题: 使用内存变量清除命令分别清除指定内存变量使用内存变量清除命令分别清除指定内存变量pE、kL和清除以名称以和清除以名称以m开头的内存变量。开头的内存变量。在系统【命令】窗口中依次输入下列命令在系统【命令】窗口中依次输入下列命令 Release pE,kL &清除指定内存变量清除指定内存变量pE、kLRelease All Like m* &清除以名称以清除以名称以m开头的内存变量开头的内存变量(6)内存变量的恢复命令格式:命令格式:RESTORE FROM ADDITIVE说明:说明: 该命令可用于将中所有的内存变量恢复到内存中。 省略ADDITIVE子句:在恢

35、复内存变量之前系统将首先释放当前内存中的所有内存变量;相反,命令含有ADDITIVE子句:在恢复内存变量文件中的变量时仅覆盖同名的内存变量,其他内存变量将继续保留的内存中。(7)内存变量的作用域1.1.全局型内存变量全局型内存变量 PublicPublic, 全局型内存变量在全部程序,过程和自定义函数以及它调用的程全局型内存变量在全部程序,过程和自定义函数以及它调用的程序,过程和自定义函数都有效使用序,过程和自定义函数都有效使用局部型内存变量局部型内存变量 Private c1,c2Private c1,c2 局部型内存变量在定义它的程序以及被该程序调用的程序,过程局部型内存变量在定义它的程序

36、以及被该程序调用的程序,过程和自定义函数都有效使用和自定义函数都有效使用 本地型内存变量本地型内存变量 Local A,BLocal A,B 只在定义它的程序中有效使用只在定义它的程序中有效使用. .2.2.4 数组命令格式:命令格式:DIMENSION|DECLARE(,),(,)说明:说明: 系统规定各下标的下界为1。 Visual FoxPro中,允许同一数组的元素取不同类型,而且同一个元素的前、后类型也允许改变。 系统将各数组的初值设置为逻辑假:.F.。 理论上在Visual FoxPro中最多可定义65000个数组,且每个数组最多可包含65000个元素.【例【例2-7】问题:问题:

37、定义包含定义包含4个元素的一维数组个元素的一维数组aF和包含和包含3行行5列的列的二维数组二维数组aS,并分别为数组各元素赋相同的值:,并分别为数组各元素赋相同的值:武汉工业学院武汉工业学院和和200。 在系统【命令】窗口中依次输入下列命令在系统【命令】窗口中依次输入下列命令 Dimension aF,aF(3,5) &定义数组定义数组aF和和aSStore 武汉工业学院武汉工业学院 To aF &为数组为数组aF各元素赋相同的值:各元素赋相同的值:武汉工武汉工业学院业学院aF=200 &为数组为数组aS各元素赋相同的值:各元素赋相同的值:200Display Memo

38、 Like a* &显示名称以显示名称以a开头的内存变量信息开头的内存变量信息2.3 系统函数Visual FoxPro的函数有两种:一种是用户自定义的函数,由用户根据需要自行编写;另一种是系统函数,由Visual FoxPro提供的内部函数,用户可随时调用。命令格式:命令格式:(说明:说明: 函数名、参数和函数值是函数的三个要素,函数名起标识作用;参数是自变量,一般是表达式,写在括号内。 函数运算后通常会返回一个值,称为函数值。函数值会因参数值而异。 有的函数缺省参数,称为哑参,但仍有返回值。如:系统函数TIME()能返回系统当前时间。 函数的返回值有确定的类型,因而在组成表达式时要

39、特别注意类型匹配。2.3.1 数值函数函数功能示例命令返回值ABS()返回的绝对值? ABS(-5)5EXP()返回e的次方的值? EXP(2)7.39LOG()返回的自然对数值? LOG(2)0.69LOG10()返回的常用对数值? LOG10(2)0.30INT()不作四舍五入处理返回的整数部分? INT(10.99)10MAX(,)返回一组数值表达式中较大者? MAX(3,9,4)9MIN(,)返回一组数值表达式中较小者? MIN(3,9,4)3MOD(,)取模,返回整除后所得的余数? mod(7,3)1RAND()返回01之间的随机数? RAND()(随机数)ROUND(,)四舍五入,

40、保留位小数? ROUND(123.4567,3)123.457SIGN()返回的正负号? SIGN(-5)-1SQRT()求的平方根? SQRT(9)3.002.3.2 字符函数函数功能示例命令返回值ALLTRIM()返回去除前后空格后的值?ALLTRIM( Wu Han )Wu HanASC()返回中最左边一个字符的ASCII码值? ASC(WHPU)87AT(,)返回字符串在中第次出现的位置,若未出现则返回0? AT(HA,HA-HA,2)4CHR()返回对应的ASCII码字符? CHR(65)ALEFT(,)返回左起个字符的子串? LEFT(WHPUCC,4)WHPULEN()返回的字节

41、数? LEN(Hello -!)7LIKE(,)返回是否符合通配符结构? LIKE(S*,SUBSTR).T.LOWER()返回将中字母转换成小写后结果? LOWER(Hello)helloLTRIM()删除前导空格字符? LTRIM( 中国人)中国人RIGHT(,)返回右起个字符的子串?RIGHT(WHPUC,2)CSPACE()返回个空格?Hello+SPACE(3)+!Hello !SUBSTR(, ,)返回中第位起的长度为的字符子串 mCh=University? subs(mCh,4,3)verTRIM()删除的尾部空格?TRIM(国庆节 )国庆节UPPER()返回将中字母转换大写后

42、结果? UPPER(Hello)HELLO2.3.3 日期与日期时间函数函数功能示例命令返回值DATE()返回系统的当前日期? DATE()10/03/05DATETIME()返回系统的当前日期和时间? DATETIME()10/03/05 11:04:37 AMDOW()返回是一个星期中第几天? DOW(DATE()2DAY()用数字返回中的日数? DAY(DATE()3MAX(,)返回一组日期/时间表达式中较大者dp=2004/12/09? MAX(DATE(),dp)10/03/05MIN(,)返回一组日期/时间表达式中较小者dp=2004/12/09? MIN(DATE(),dp) 1

43、2/09/04MINUTE()返回的分钟值? MINUTE( DATETIME()04MONTH(|)用数字返回|中的月份? MONTH(DATE()10SEC()返回的秒钟值? SEC(DATETIME()37TIME()返回系统当前时间? TIME()11:04:37WEEK(|)返回|是一年中第几个星期? WEEK(DATE()41YEAR(|)用数字返回|年份值? YEAR(DATE()20052.3.4 数据类型转换函数函数功能示例命令返回值CTOD()将转换为日期? CTOD(10/04/04)10/04/04DTOC()将转换为字符串? DTOC(2004-10-04)10/04

44、/04DTOS()转换为YYYYMMDD格式字符串? DTOS(DATE()20051003STR(, ,)将数值转换为长度为位,具有位小数的字符串? STR(123.4567,9,2) 123.46TTOC()将转换为字符串? TTOC(DATETIME() 1 0 / 0 3 / 0 5 11:04:37 AMTTOD()将转换为日期型数据? TTOD(DATETIME()10/03/05VAL()将字符串转换为数值? VAL(123.456)123.4562.3.5 测试函数函数功能举例BOF()工作区W中记录指针指向首记录之前时返回.T.,否则为.F.?BOF()COL()返回光标所在

45、的列坐标,返回值为数值型?COL()CURDIR()返回当前文件夹?CURDIR()DBF()返回打开的表的名称?DBF()EOF()记录指针指向末记录之后时返回.T.,否则为.F.?EOF()ERROR()返回程序出错的错误号?ERROR()FCOUNT()返回工作区W中打开表文件中的字段数?FCOUNT()FIELD()返回工作区W中表文件中指定序号的字段名?FIELD()FILE()名为的文件存在则返回.T.,否则返回.F.?FILE(ABC.MEM)FOUND()工作区W中指定的表文件检索操作成功返回.T.,否则返回.F.?FOUND()PROW()返回打印机字头所在行坐标,返回值为数

46、值型?PROW()PCOL()返回打印机字头所在列坐标,返回值为数值型?PCOL()RECNO()返回工作区W中当前记录的记录号?RECNO()RECCOUNT()返回工作区W中打开表的记录数?RECOUNT()ROW()返回光标所在的行坐标,返回值为数值型?ROW()TYPE()返回表达式E计算结果的类型,以字符N,C,D,L等表示,U表示不可识别数据类型? TYPE(2+3)VARTYPE(, )返回表达式E计算结果的类型,若E的运算结果是Null值,则根据逻辑表达式L的值决定是否返回表达式的类型。A=Null? VARTYPE(A,.F.)2.3.6 其他函数函数功能举例BETWEEN(

47、, )返回表达式E1计算结果是否介于表达式E2和表达式E3之间? BETWEEN(2+3,1,35)EMPTY()测试表达式E计算结果是否为空值? EMPTY(SPACE(0)IIF(,)根据表达式的值为真(.T.)或假(.F.),返回表达式或的值? IIF(85,正确,错误)INKEY()返回在N秒时间内用户操作键盘或鼠标触发的整数值,N取0则时间为无限长? INKEY(5)MESSAGEBOX( , ,)弹出一个系统对话框,提示信息为表达式C1,标题为表达式C2,对话框的样式由表达式N决定? MESSAGEBOX(HELLO!)【例【例2-8】在系统【命令】窗口中依次输入下列命令在系统【命

48、令】窗口中依次输入下列命令 所得到的结果cMessageTitle = 药品编号可能有误!药品编号可能有误!cMessageText = 你想录入一个新的药品吗?你想录入一个新的药品吗?nDialogType = 4 + 32 + 0nAnswer = MESSAGEBOX(cMessageText, nDialogType, cMessageTitle)2.4 表达式 用运算符将常量、变量、函数或运算符连接起来的式子称为表达式。表达式可分为:算术表达式、字符表达式、逻辑表达式、关系表达式、日期表达式和名表达式六类。2.4.1 算术表达式算术表达式由与数值型常量、变量、函数和和算术运算符所组成

49、的式子。算术表达式的结果是数值型数据。算术运算符优先级次序依次为:*或或(乘方)(乘方) *、/、%(乘、除和余数)(乘、除和余数) +和和-(加和减)(加和减) 【例【例2-9】在系统【命令】窗口中依次输入下列命令在系统【命令】窗口中依次输入下列命令 ? 2*7%32+3 &显示结果为显示结果为8? 5+2*3-1 &显示结果为显示结果为102.4.2 字符表达式字符表达式由字符型常量、变量、函数和字符运算符组成的式子。字符表达式的结果仍然是字符型。在字符串中嵌入引号,只需将字符串用另一种引号括起来即可。字符串运算符有三种:+ 将前后的字符串连接起来组成一个新字符串- 将两个

50、字符串连接成为一个字符串,并将前面字符串尾部的空格移至该运算的结尾$ 测试前面的字符串是否包含在后面的字符串中。若是,返回逻辑值真,否则返回逻辑值假。【例【例2-10】在系统【命令】窗口中依次输入下列命令在系统【命令】窗口中依次输入下列命令 ? 武汉武汉 +工业学院工业学院 &结果为结果为武汉武汉 工业学院工业学院 ? 武汉武汉 -工业学院工业学院+学报学报 &结果为结果为武汉工业学院武汉工业学院 学报学报? 武汉武汉$湖北省湖北省 &结果为结果为.F.2.4.3 日期与日期时间表达式日期表达式由日期或日期时间型常量、变量、函数和日期运算符组成的式子。日期运算符有:+

51、一个日期加上天数- 一个日期减去天数或者两个日期相减【例【例2-11】在系统【命令】窗口中依次输入下列命令在系统【命令】窗口中依次输入下列命令 ? 2001/08/18+20 &结果显示为结果显示为09/07/01,系统日期为,系统日期为mm/dd/yy格式格式? 2001/08/10-20 &结果显示为结果显示为07/29/01? 2001/08/18-2001/03/08 &结果显示为两个日期的间隔天数结果显示为两个日期的间隔天数1632.4.4 关系表达式关系表达式是由字符表达式或者算术表达式与关系运算符组成的式子。关系表达式的运算结果总是逻辑值。 关系运算符有以

52、下7种: 大于 = 等于 = = 恒等于= 大于等于 , !=, # 不等于关系运算符的优先级相同。【例【例2-12】在系统【命令】窗口中依次输入下列命令在系统【命令】窗口中依次输入下列命令 ? 3020 &显示结果为显示结果为.T.? 3020+100 &显示结果为显示结果为.F.2.4.5 逻辑表达式逻辑表达式由逻辑型常量、变量、函数和逻辑运算符组成的式子。逻辑表达式的结果仍然是逻辑值,即.T.或.F.。逻辑运算符有以下三种,按照其优先级递减的次序依次为:!,NOT 逻辑非AND 逻辑与OR 逻辑或ABA AND BA OR BNOT A.T.F.F.T.F.F.T.F.T

53、.T.F.F.F.F.T.T.T.T.T.F.表2-10逻辑运算真假表【例【例2-13】在系统【命令】窗口中依次输入下列命令在系统【命令】窗口中依次输入下列命令 A=1000B=100? A=B*10 AND NOT 3020+100 &显示结显示结果为果为.T.2.4.6 名表达式 利用命令和函数的名称: 间接引用和宏替换两种方式.1. 间接引用方式间接引用方式 store “c:myvfpxsxa.dbf” to name use (name) list2. 宏替换宏替换: & store “52” to exp ? &exp2.4.7 类和对象操作符 . 点操作符

54、,确定对象和类的关系以及属性,事件,方法与 所属对象的关系. Thisform.label1.caption : 作用域操作符,用于在子类中调用父类的方法. Navbutton:click2.5 顺序程序结构 程序设计就是为了完成某一具体任务而编写的一系列指令集合。程序设计也要遵循一定的结构要求。第三代计算机语言将程序结构分为顺序结构、分支结构和循环结构等三种,也有将子程序作为第四种程序结构的说法。AB2.5.1 程序设计方式1程序设计器 可通过下述三种方法来创建程序。在【项目管理器】中,选择【代码】选项中的【程序】选项,再选择【新建】命令。然后在弹出的【程序设计器】中设计程序。选择Visua

55、l FoxPro系统菜单:【文件】|【新建】,将弹出【新建】对话框。在对话框中选择【程序】单选按钮,并单击【新建文件】命令按钮,然后在弹出【程序设计器】中设计程序。在【命令】窗口中,键入Modify Command命令打开【程序设计器】,并在其中完成程序文件的建立、编辑。 命令格式:命令格式:Modify Command 2.5.1 程序设计方式2程序的运行若要运行程序,可采用以下三种方法之一。若程序包含在一个项目中,则在【项目管理器】中选择【代码】选项卡中【程序】项下的程序文件,再选择【运行】命令。打开【程序设计器】并编辑程序文件,选择系统菜单:【程序】|【运行】,或单击“运行”按钮。在【命

56、令】窗口中,键入命令运行程序文件 命令格式:命令格式:Do With 2.5.2 基本语句1接受字符串输入命令 在程序执行过程中需要接受用户通过键盘所输入的字符串数据,并存入指定的内存变量。命令格式:命令格式:Accept To 说明:说明:可以是字符串、字符型内存变量、返回值为字符型数据的函数和由它们组成的表达式。Accept “请输入职称:” to zcBrowse all for 职称=zc2.5.2 基本语句2接受任意数据输入命令命令格式:命令格式:Input To 说明:说明:其中和的含义及使用方法与Accept命令中的一样,只是用户可以输入任意类型的数据,将其赋值给指定的;如果要输

57、入字符串数据还必须用定界符括起来;如果输入的是表达式,赋给内存变量的值将是表达式的计算结果。Input “请输入出生日期:” to csrqdele all for 出生日期= csrq2.5.2 基本语句3等待接受字符输入命令等待接受字符输入命令命令格式:命令格式:WAIT WAIT 提示符提示符 TO TO 内存变量表内存变量表 WINDOW AT WINDOW AT , , TIMEOUT TIMEOUT 数值表达式数值表达式 说明:说明:在程序执行到该命令时,系统首先在屏幕上显示用户设置的提示信息,然后等待用户从键盘输入一个字符,并将其保存到指定的内存变量中。 【例】有时要求程序执行完

58、某一条命令以后需要暂时停止程序的执行,在【例】有时要求程序执行完某一条命令以后需要暂时停止程序的执行,在用户按任意键以后再继续执行。若要这样做,可以在程序要暂时停止的位置用户按任意键以后再继续执行。若要这样做,可以在程序要暂时停止的位置添加如下命令:添加如下命令: WAIT “按任意键继续!按任意键继续!” WINDOW2.5.2 基本语句4格式输出命令命令格式:命令格式: , Say Picture 说明:说明:命令可使的值在指定的位置按指定的格式输出。 10,10 Say “姓名” Picture “xxxxxxx”2.5.2 基本语句5格式输入命令 命令格式:命令格式: , Say Ge

59、t Read例如:- xm=“ “ - use 人才档案 10,10 Say 姓名 get xmReadLocate all for 姓名=xm 14,16 Say “姓名” Picture “xxxxxxx” 14,26 Say 姓名 Picture “999.99”2.5.2 基本语句6注释命令命令格式:命令格式:* /Note & 说明:说明:如果程序语句是以*或Note开头,就是注释语句行,程序执行到此将跳过该行,继续执行后面的语句。&命令则是用于语句尾部的注释语句。2.5.2 基本语句7终止程序执行命令命令格式:命令格式:CANCELQUIT说明:说明:这两个命令终止

60、程序执行的结果有所不同。前者用于终止当前正在执行的Visual FoxPro程序,返回Visual FoxPro系统。后者用于终止当前Visual FoxPro系统,并返回操作系统。2.5.3 顺序结构 结构化程序设计方法是基于模块化、自顶向下逐层细化等程序设计技术基础上发展而来的。 顺序结构的每一段程序从总体上看都是顺序结构的,经历了开始处理结束等三个顺序执行的步骤。 【例【例2-14】问题:问题: 从键盘输入变量从键盘输入变量nA和变量和变量nB的值,然后将其值交换。的值,然后将其值交换。Input 请输入第一个数请输入第一个数A的值:的值: To nAInput 请输入第二个数请输入第二个数B的值:的值: To nBT=nAnA=nBnB=T? 数值交换后数值交换后A、B两个变量的值分别为:两个变量的值分别为:,nB,nA2.6 分支程序结构 程序在执行过程中,有必要根据不同的情况选择执行不同的程序代码组合,这种结构称为分支结构。分支结构也成为选择结构,可分为简单分支、双向分支

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论