FoxPro程序设计_第1页
FoxPro程序设计_第2页
FoxPro程序设计_第3页
FoxPro程序设计_第4页
FoxPro程序设计_第5页
已阅读5页,还剩117页未读 继续免费阅读

下载本文档

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

文档简介

1、2022-3-41第2章 Visual FoxPro程序设计 Visual FoxPro程序设计的特点 项目管理器的使用 程序设计方法 小结2022-3-422.1 Visual FoxPro程序设计的特点 VFP将过程化设计与面向对象的程序设计结合在一起,提供了强大而又灵活的应用程序设计工具。 程序:为了完成某一具体任务而编写的一系列指令。 VFP 6.0程序运行方式有以下三个明显的特点: 程序可被修改并重新执行。 程序可从菜单、表单和工具栏启动。 程序还能调用其他程序。 正因为如此,应用程序设计在VFP 6.0的应用中占有很重要的地位。 2022-3-432.1.1 数据库应用系统的开发步

2、骤 按照软件工程的方法,数据库应用系统的开发过程包括可行性分析、需求分析、数据库和应用程序设计、系统试运行和测试、系统运行和维护等几个阶段。 1. 可行性分析 确定开发应用系统的总体目标,给出它的功能、性能、可靠性及数据接口等方面的设想; 研究完成系统开发的可行性分析,探讨技术关键和解决问题的技术路线; 并对可供使用的资源、成本、可取得的效益和开发进度做出估计,制订完成任务的实施计划。 2022-3-442需求分析 需求分析包括数据分析和功能分析,这一阶段的主要任务是:(1)确认用户需求,确定设计范围。了解用户单位的组织机构、经营方针、管理模式、各部门的职责范围和主要业务活动等情况。明确系统处

3、理的范围和功能。(2)收集和分析需求数据。对收集到的资料进行加工、抽取、归并和分析,采用一定的方法建立数据流图、数据字典等设计文档。(3)建立需求说明书。对所开发的系统进行全面的描述,包括任务和目标、具体需求说明、系统功能结构、性能、运行环境和系统配置等。 2022-3-453数据库设计 需求分析结束后,就可以进行数据库设计,一般先进行概念设计,然后再作逻辑设计。 概念设计 独立于具体的计算机系统,把需求分析所得到的数据分析转化为相应的模型。可以使用第1章介绍的E-R图,建立能接近现实世界的数据模型,即概念模型。 逻辑设计 与具体的DBMS相关,将上面得到的概念模型转化成VFP 6.0所支持的

4、关系模型,进行性能评价和规范化处理,并对数据的安全性和完整性做出设计。 2022-3-464应用程序设计 开发数据库应用系统中的应用程序一般可按照总体设计模块设计编码调试的步骤进行。 在总体设计中,可采用层次图的方法,按功能要求,自顶向下划分若干子系统,子系统再分为若干功能模块。 划分模块时应注意遵守“模块的独立性”的原则,尽可能使每一模块完成一项独立的功能。 编码就是要将功能模块转换成计算机可以执行的程序代码,即用某种程序设计语言(例如,VFP 6.0)编写源程序。 2022-3-475测试 应用程序设计完成之后,应对系统进行测试,以检验系统各个组成部分的正确性,这也是保证系统质量的重要手段

5、。 首先,加载数据,进行单元测试,检查模块在功能和结构方面的问题。 其次,要作综合测试,将已测试过的模块组装起来进行联调。 最后,按总体设计的要求,逐项进行有效性检查,检验已开发的系统是否合格,能否交付使用。 2022-3-486维护 在系统投入正式运行之后,就进入了维护阶段。 由于多方面的原因,系统在运行中可能会出现一些错误,需要及时跟踪修改。 另外,由于外部环境或用户需求的变化,也可能要对系统进行必要的修改。 2022-3-492.1.2 开发Visual FoxPro应用程序的过程 VFP应用程序通常应由以下几部分组成 一个或多个用于组织和存储数据的数据库 一个用于设置应用程序系统环境的

6、主程序 一个方便用户使用的菜单和工具栏 一个或多个用于输入和显示数据的表单 一个或多个允许用户检索或输出数据的查询和报表 此外,还需添加某些代码以保证数据的完整性和安全性。2022-3-4101构造应用程序框架 推荐在项目管理器下开发应用程序,这会带来很多方便。在使用项目管理器创建一个项目之后,应用程序就已经具备一个开发框架了。 创建一个VFP应用程序,除了要创建应用程序的功能组件(菜单、表单、数据库、查询和报表等),还要进行以下四项工作:(1) 设置主程序(主文件)(2) 设置应用程序环境(3) 控制事件循环(4) 连接和编译(即连编)应用程序2022-3-411(1) 设置主程序(主文件)

7、 每个VFP应用程序都由大量的功能组件组成,它们都可以通过项目管理器进行有效的管理。 仅仅将各个组件链接在一起,并不能形成可执行的应用程序,还需要为应用程序设置一个起始点,即项目的主文件。 当用户运行应用程序时,系统首先启动项目的主文件,然后主文件再依次调用所需要的其他组件。 在程序运行前,主文件初始化程序的运行环境; 在程序运行中,它调度程序的事件操作; 在程序运行结束后,它还原系统环境。 2022-3-412(1) 设置主程序(主文件)(续) 一般地,最好是为项目建立一个程序作为主文件,当然也可以使用一个表单作为主文件,这样可以将主程序的功能和初始的用户界面集成在一起。 注意:在每个项目中

8、,有且只有一个文件可设置为主文件,主文件在编译完成后将作为只读文件处理,并且主文件在项目管理器中用醒目的反差字体表示。 2022-3-413(2)设置应用程序环境(3)控制事件循环 上述(1)、(2)、(3)的具体内容请参阅2.2.4节。2022-3-414(4)连接和编译(即连编)应用程序 在设计完应用程序后,需要对它进行连编。 连编的作用就如同其他语言的编译一样 先对项目进行连编 如果在连编项目后没有产生错误信息,就可以开始连编应用程序1)连编应用程序的过程 将应用程序的所有组件连接在一起,生成扩展名为.app的应用程序或扩展名为.exe的可执行应用程序 应用程序和可执行文件的区别在于:

9、应用程序的运行依赖于VFP系统 可执行文件则可在没有VFP的系统中独立运行,它已经包含了VFP的全部运行库。 2022-3-4152)连编应用程序的步骤 连编一个应用程序可按下列步骤进行: 在项目管理器中,单击“连编”按钮。 在弹出的“连编选项”对话框中,单击“连编应用程序”按钮。 选择所需的其他选项并单击“确定”按钮。 在VFP 6.0中,连编应用程序有以下4种类型: 重新连编项目:重新确定项目中包含的文件,将上一次连编后添加后的组件加入到项目中,上一次连编后移去的组件移出项目,此时不生成应用程序。 连编应用程序:将项目连编为.app文件。 连编可执行程序:由一个项目创建可执行文件。 连编C

10、OM DLL:在项目文件中,使用类信息创建一个扩展名为.DLL的动态连接库,供其他程序共享。 2022-3-4162)连编应用程序的步骤(续) 连编应用程序还提供4个复选项: 重新编译全部文件:重新编译全部文件:重新编译项目中的所有文件,并对每个源文件创建其对象文件,如果没有核选该项,则只编译上次编译以来修改过的文件。 显示错误信息:显示错误信息:连编完成后,在一个编辑窗口中只显示编译时的错误信息。 连编后即运行:连编后即运行:应用程序在连编成功之后便立即运行。它只适用于连编.app文件和.exe文件。 重新生成组件:重新生成组件:是指在连编时重新生成应用程序组件。 2022-3-4172向项

11、目中添加文件 在构筑好应用程序框架后,可以将其他文件加入项目中,并将其功能并入应用程序中。将文件添加到某一项目中的最有效的方法是连编此项目。 如要添加一个文件到某一项目中,可以在项目管理器中选择“添加”按钮,或者在属于该项目的一个文件中加入对新文件的引用并连编该项目。 例如,要添加或调用一个名为New_Form的新表单,可以在某个菜单项中添加下面的命令:DO FORM New_Form.scx (.scx为表单文件的扩展名) 2022-3-4183引用可修改的文件 包含在应用程序中的表是只读的,若项目中含有可供用户修改的表或其他文件,则在编译时,这些文件必须被排除在外。 可按照下列步骤,排除可

12、修改的文件: (1)在项目管理器中,选择可修改的文件。 (2)从“项目”菜单中,选择“排除”命令项。 注意:在项目管理器中,数据库和数据表一般默认为“排除”,标记为“ ”。 2022-3-4194运行应用程序 在项目连编过程中,如果没有报告编译错误,则说明被连编的应用程序已经被正确连编了,此时,可以用以下两种方法运行所创建的应用程序:(1)从VFP系统主菜单中选择“程序”菜单,进而选择“执行”命令,然后选择要执行的应用程序。(2)在命令窗口中,输入DO和应用程序的文件名。 例如,要运行student.app,输入:DO student.app 2022-3-4202.1.3 应用程序生成器的使

13、用 为了方便用户创建应用程序,VFP 6.0不仅对VFP 5.0提供的应用程序向导进行了改进,而且新增加了应用程序生成器。 在项目管理器中,通过使用应用程序生成器,可以非常方便地向项目文件中添加数据、表单及报表等数据库资源,并提供对它们的基本选项设置。 应用程序生成器是一个比项目管理器更加集中、更加快捷的项目文件生成工具。 只要通过几个选择项之间的切换,就可对项目信息、项目帮助文件进行设置,并实现对项目中的数据、表单及报表的添加、修改、删除等编辑操作。2022-3-4211应用程序生成器的启动 当使用应用程序生成器时,先要打开一个项目 然后,用以下两种方法启动: (1)从VFP 6.0主菜单的

14、“工具”菜单或“组件管理库”启动 单击“工具”“向导”“全部”,在弹出的“向导选取”对话框中选取“应用程序生成器”。 或者,单击“工具”“向导”“组成数据库”,双击“新建应用程序”数据项。 注意:若要在项目没打开的情况下,启动应用程序生成器,那么只需按照单击“工具”“向导”应用程序(N)步骤操作即可。 (2)从项目管理器的窗口启动 在任何一个项目管理器的窗口中右击,便可启动应用程序生成器。 此外,还提供了启动应用程序生成器的快捷访问键Alt+F2键。2022-3-4222应用程序生成器的常用选项卡说明 如图2-1所示,在应用程序生成器窗口的上方,有6个选项卡。 “常规”选项卡 “信息”选项卡

15、“数据”选项卡 “表单”选项卡 “报表”选项卡 “高级”选项卡图图2-1 “图书馆管理系统图书馆管理系统”的应用程序生成器的应用程序生成器 2022-3-423(1)“常规”选项卡 在“名称”框中输入应用程序的名称 在“图像”框中还可指定一个图像文件,该图像将同应用程序名称一起显示在应用程序的标题栏和显示屏幕中 在“应用程序类型”框中,应在选项按钮组中确定应用程序的类型。 在“常用对话框”中,可在复选框中选择集成在应用程序中的标准对话框,这些对话框由系统类提供 “显示屏幕”对话框:在应用程序启动时,显示应用程序和名称和图像。 “快速启动”对话框:以列表的形式显示直接添加到应用程序的表单和报表等

16、,通过双击名称便可快速运行这些表单或报表。 “关于对话框”:用于显示有关应用程序版本和设置等信息。 “用户登录”对话框:用于在应用程序运行前显示一个登录对话框,可在其中输入用户名和密码,首次运行该对话框时,系统将提示是否将输入的用户名和密码存入系统。 2022-3-424(2)“信息”选项卡 “信息”选项卡如图2-2所示,主要用于输入作者、公司、版本、版权和商标等信息。 图图2-2 应用程序生成器的应用程序生成器的“信息信息”选项卡选项卡 2022-3-425(3)“数据”选项卡 在如图2-3所示的“数据”选项卡中: 单击“选择”按钮后,可在“打开”对话框中选择添加到项目中的数据库或数据表,并

17、通过“表单”或“报表”栏指定是否为相应的数据源自动生成表单或报表。 通过“表单样式”和“报表样式”列表框选择表单或报表的样式,单击“生成”按钮就可生成指定样式的表单或报表。 单击“数据库向导”和“表向导”按钮可启动“数据库向导”和“表向导”。 图图2-3 应用程序生成器的应用程序生成器的“数据数据”选项卡选项卡 2022-3-426(4)“表单”选项卡 在图2-4所示的“表单”选项卡中: 单击“添加”按钮,然后在“打开”对话框中,选择并添加系统内已有的表单 单击“编辑”按钮可在表单设计器中编辑选定的表单 单击“删除”按钮可删除选定的表单 此外,还可核选表单中的某些属性,如是否在表单中增加定位菜

18、单的工具栏等。 图图2-4 应用程序生成器的应用程序生成器的“表单表单”选项卡选项卡2022-3-427(5)“报表”选项卡 “报表”选项卡如图2-5所示,主要用于向项目中添加报表的编辑项目中的报表,其操作方法与“表单“选项卡基本相同,但其只有一个复选项。 图图2-6 应用程序生成器的应用程序生成器的“高级高级”选项卡选项卡2022-3-428(6)“高级”选项卡 “高级”选项卡如图2-6所示: 可在“帮助文件”框中输入或选择应用程序的帮助文件 还可在“菜单”框中选择是否在应用程序中出现“常用”工具栏和Favorities菜单栏等 单击“清理”按钮可以使活动项目与应用程序源表中的全部内容同步图

19、图2-6 应用程序生成器的应用程序生成器的“高级高级”选项卡选项卡2022-3-4292.2 项目管理器的使用 可使用项目管理器组织和管理项目中的文件。 项目:是文件、数据、文档以及VFP对象的集合,项目文件以.pjx扩展名保存。 当激活项目管理器窗口时,VFP在菜单栏中显示“项目”菜单。2022-3-4302.2.1 Visual FoxPro 6.0项目管理器1启动项目管理器 项目管理器的使用也与文件的使用一样,它是一个多页选项卡。 项目管理器可以通过新建项目文件或打开已有的项目文件启动。 用新建项目方法启动项目管理器的步骤为:(1)单击“文件”菜单栏中“新建”菜单项。(2)在“新建”对话

20、框中,选择“项目”选项,然后单击“新建文件”按钮。(3)在“创建”对话框中,输入项目文件名并确定项目路径。(4)单击“保存”按钮。 用打开已有项目文件的方法来启动项目管理器的步骤为:(1)单击“文件”菜单栏中的“打开”菜单项。(2)在“打开”对话框中,选择或直接输入项目文件路径和项目。(3)单击“确定”按钮。2022-3-4312项目管理器的选项卡 由6个选项卡组成,它们分别是: “全部”选项卡:显示与管理所有类型的文件。 “数据”选项卡:包含了某一项目中的所有数据。 “文档”选项卡:包含了用户处理数据时使用的所有文档。 “类”选项卡:显示和管理由类设计器建立的类库文件(.vcx/.vct)。

21、 “代码”选项卡:包含了用户的所有代码程序文件。 “其他”选项卡:显示和管理上述的文件。 每个选项卡用于显示某一类型文件。2022-3-432按钮名称功能新建创建一个新文件或对象。此按钮与“项目”菜单的“新建文件”命令的作用相同添加把已有的文件添加到项目中。此按钮与“项目”菜单中的“添加文件”命令的作用相同修改编辑高亮度显示的组件(表单、菜单、程序等)。此按钮与“项目”菜单中的“修改文件”命令的作用相同运行运行高亮度显示的组件(如选定的查询、表单或程序)。此按钮与项目菜单中的“运行文件”命令的作用相同移去从项目中移去高亮度显示的组件。使用此按钮时Visual FoxPro会询问你是仅从项目中移

22、去此文件还是同时将其从磁盘中删除,此按钮与“项目”菜单中的“移去命令”的作用相同连编连编(即建立)一个项目或应用程序。在专业版中,还可连编一个可执行文件。此按钮与“项目”菜单中的“连编命令”作用相同3项目管理器中的各按钮功能 2022-3-4332.2.2 Visual FoxPro 6.0项目管理器的使用1创建一个项目 创建一个项目的具体步骤是: (1)在“文件”菜单中选择“新建”命令,或按Ctrl+N 键,此时系统将弹出如图2-10所示的对话框。(2)在对话框的“文件类型”中选择“项目”,单击“新建文件”按钮。(3)在弹出的“创建”对话框中输入项目的名称,并选择保存项目的目录。(4)单击“

23、创建”按钮。图图2-10 “新建新建”对话框对话框2022-3-4342查看项目中的内容 项目管理器中的项是以类似于大纲的结构来组织的,可以将其展开或折叠,以便查看不同层次中的详细内容。 如果项目中具有一个以上某一类型的项,某类型符号旁边会出现一个“+”号。 单击符号旁边的“+”号可显示该项目中该类型项的名称 单击项名旁边的“+”号可看到该项的组件 若要折叠已展开的表,可单击列表旁边的“-”号2022-3-4353查看表中的数据 若要查看表中的数据,可在项目管理器窗口中,选择“数据”选项卡,然后选定一个表,再单击“浏览”按钮。2022-3-4364项目间共享文件 通过与其他项目共享文件,可以重

24、用在其他项目开发中的工作成果。 当将某一项目中的文件添加到其他项目中时,可同时打开这些项目,并把指定的文件拖动到该项目中。 添加的文件并没有被真正复制,目标项目只储存了对该文件的引用,由此可见,一个文件可出现不同的项目关联。 若要在项目之间共享文件,则在VFP 6.0中打开要共享文件的两个项目,在包含该文件的“项目管理器”中选择该文件,然后用鼠标把该文件拖动到另一个项目中。 2022-3-4375改变项目管理器的外观 改变项目管理器外观的操作:(1)移动项目管理器(2)改变项目管理器窗口的大小(3)折叠项目管理器(4)还原项目管理器的大小(5)拖开某一标签(6)某一标签始终显示在多窗口屏幕的最

25、外层(7)还原标签(8)停放项目管理器 2022-3-4386使用项目管理器的优点(1)项目管理器提供了简便的、可视的方法来组织和处理表、数据库、表单、报表、查询和其他一切文件。(2)双击应用程序组件(表单、菜单、程序等)就可进行运行或修改。(3)通过项目管理器,可直接将应用系统的大部分文件编译成一个扩展名为.app的应用文件,便于最终用户的管理,应用系统中所有在运行时不需改变的文件都可包含在一个应用文件中。(4)对于专业版本的用户,通过项目管理器将应用系统编译成扩展名为.exe的可执行文件,使得应用系统能够脱离VFP环境运行。(5)在项目管理器中,还能启动相应的设计器、向导来快速创建各类文件

26、,并可进行修改、管理。 2022-3-4392.2.3 使用项目管理器组织文件 数据和文件是任何一个应用程序开发过程中最基本、最重要的组成部分,而如何有效地管理这些信息是关系到一个应用程序是否能成功运行并实现既定开发目标的关键步骤。 项目管理器是组织项目中的数据和对象的主要组织工具,为组织管理文件提供了一个方便的集成开发环境。 当建立或打开了一个项目管理器,会在系统菜单栏上出现一个“项目”菜单命令栏,在此“项目”菜单命令栏中,包含对项目和文件的操作命令,如图2-11所示。2022-3-4401添加和移去文件 在VFP 6.0中应尽量避免空的项目管理器,可添加已经存在的文件到项目管理器中,也可从

27、中移去无用的文件。 在项目中添加文件: 选择要添加文件的类型; 单击“添加”按钮; 在弹出的“打开”对话框中选择要添加的文件名; 单击“确定按钮”。 从项目中移去文件或对象,可以执行以下操作: (1)从项目中选定要移去的文件或对象。(2)单击“移去”按钮。(3)在如图2-12所示弹出的提示框中,单击“移去”按钮,将从项目中移去该文件或对象;如果单击“删除”按钮,将从硬盘上删除该文件或对象。2022-3-4412创建及修改文件 利用项目管理器在项目中创建新文件的方法是: (1)选定要创建的文件类型。(2)单击“新建“按钮(或“修改按钮”),即可激活VFP 6.0相应的设计器或向导。 注意:利用“

28、项目”菜单的“新建文件”或“项目管理器”上的“新建”按钮创建的文件会自动包含在项目中,而从“文件”菜单中创建的文件则不会自动包含在项目中。2022-3-4423为文件添加说明 通过设置出现在项目管理器中的文件说明信息,可更简便地跟踪文件。方法是: (1)在项目管理器中选定所需的文件。(2)选择“项目”菜单中的“编辑说明”命令。(3)在弹出的“说明”对话框中键入该文件的说明信息。(4)单击“确定”按钮。 注:也可以用右击的方法选定文件,在随后出现的菜单中,选择“编辑说明”选项,亦可达到同样的目的。2022-3-4434连编一个项目 连编是将所有的程序链接并编译在一起,这是大多数程序设计者都要进行

29、的工作。 两个重要的概念:(1)主文件 主文件是“项目管理器”中起打头作用的文件,也就是起始程序的意思。(2)“包含”和“排除”1)“包含”是指不需要更新的项目,也就是一般不会再变动的项目。2)“排除”是指已添加在项目管理器中,但又在使用状态上被排除的项目。3)指定项目的“包含”与“排除”状态。2022-3-4444连编一个项目(续)4)不具有“包含/排除”状态的项目: 主文件项目:通常是指运行程序的主控程序,用黑体粗字标识。 数据表的字段或者代码过程。 保存在数据库中非单独文件形式的项目。 在使用连编之前,要确定以下几个问题:(1)在项目管理器中加进所有参加连编的项目。(2)指定主文件。(3

30、)对有关数据文件设置“包含/排除”状态。(4)确认程序(包括窗体、菜单、程序、报表)之间有明确的调用关系。(5)确定程序在连编完成之后的执行路径和文件名。 2022-3-4454连编一个项目(续) 在上述问题被确定之后,可在项目管理器窗口选择“连编”按钮,随之出现了“连编选项”对话框,如图2-14所示。其中,“操作”选择项的用法可参见表2-2。 图图2-14 “连编选项连编选项”对话框对话框 2022-3-4465生成应用程序文件 如果生成一个项目时没有出现错误,那么就可以准备去生成应用程序了。当生成应用程序时,包括在一个项目中的全部文件将被连编成带有.app扩展名的单个文件。 连编一个应用程

31、序的操作,只需在“连编选项”对话框中选择连编“应用程序”就可以了。 BUILD APP命令也可以达到相同的目的。 2022-3-4472.2.4 构造应用程序框架 一个典型的数据库应用程序由数据结构、用户界面、查询选项和报表等组成。在设计应用程序时,应仔细考虑每个组件将提供的功能以及与其他组件之间的关系。 一个经过良好组织的VFP应用程序一般需要: 为用户提供菜单; 提供一个或多个表单,供数据输入并显示。 还需要添加某些事件响应代码,提供特定的功能,保证数据的完整性和安全性。 还需要提供查询和报表,允许用户从数据库中选取信息。 2022-3-4481设置起始点 将各个组件链接在一起,然后使用主

32、文件为应用程序设置一个起始点。 主文件作为应用程序执行的起始点,可以包含一个程序或者表单。 使用一个表单作为主程序,可以将主程序的功能和初始的用户界面集成在一起。 如果使用应用程序向导建立应用程序,可让向导自动建立一个主文件程序,无须专门来做,除非在向导完成之后,想改变主文件。 2022-3-4491设置起始点(续) 若要设置应用程序的起始点,可在项目管理器中,选择要设置为主文件的文件,然后从“项目”菜单中选择“设置主文件”命令。主文件名用反差字体显示,如图2-15所示。 应用程序的主文件将自动设置为“包含”。 该文件作为只读文件处理。 项目中仅有一个文件可以设置为主文件。 图图2-15 在项

33、目管理器中设置文件在项目管理器中设置文件 2022-3-4502初始化环境 主文件或者主应用程序对象必须做的第一件事情就是对应用程序的环境进行初始化。 在打开VFP时,默认的VFP开发环境将建立SET命令和系统变量的值。 对应用程序来说,这些值并非最合适。 注意:如果要查看VFP开发环境的默认值,在没有配置文件的情况下,输入VFP-C命令启动VFP ,再执行DISPLAY STATUS命令。 对于应用程序来说,初始化环境的理想方法是将初始的环境设置保存起来,在启动代码中为程序建立特定的环境设置。 2022-3-4512初始化环境(续) 若要从当前环境中截取命令,可以:(1)从“工具”菜单中,单

34、击“选项”命令。(2)按下Shift键并单击“确定”按钮,在“命令”窗口中将显示环境的SET命令。(3)从“命令”窗口中,将命令复制和粘贴到程序中。 在一个应用程序特定的环境下,可能需要使用代码以执行以下操作: 初始化变量。 建立一个默认的路径。 打开任意需要的数据库、自由表及索引。如果应用程序需要访问远程数据,则初始的例行程序也可以提示用户提供所需的注册信息。 添加外部库和过程文件。2022-3-4522初始化环境(续) 例如,如果要测试SET TALK命令的默认值,同时保存该值,并将应用程序的TALK设为OFF,可以在启动过程中包含如下的代码:IF SET(TALK) = ON“ SET

35、TALK OFF cTalkVal = ON“ELSE cTalkVal = OFF“ENDIF 如果要在应用程序退出时恢复默认的设置值,一个好的方法是把这些值保存在公有变量、用户自定义类或者应用程序对象的属性中:SET TALK &cTalkVal 2022-3-4533显示初始的用户界面 初始的用户界面可以是一个菜单,也可以是一个表单或其他的用户组件。 通常,在显示已打开的菜单或表单之前,应用程序会出现一个启动屏幕或注册对话框。 在主程序中,可以使用DO命令运行一个菜单,或者使用DO FORM命令运行一个表单以初始化用户界面。 2022-3-4544控制事件循环 应用程序的环境建立

36、之后,将显示出初始的用户界面,这时,需要建立一个事件循环来等待用户的交互动作。 若要控制事件循环执行,可以执行READ EVENTS命令,该命令使VFP开始处理例如单击、击键等用户事件。 从执行READ EVENTS命令开始,到相应的CLEAR EVENTS命令执行期间,由于主文件中所有的处理过程全部挂起,因此将READ EVENTS命令正确地放在主文件中十分重要。 2022-3-4554控制事件循环(续) 在启动了事件循环之后,应用程序将处在所有最后显示的用户界面元素控制之下。 例如,如果在主文件中执行下面的两个命令,应用程序将显示表单 Startup.scx:DO FORM STARTUP

37、.SCXREAD EVENTS 如果在主文件中没有包含READ EVENTS或等价的命令,在开发环境的“命令”窗口中,可以正确地运行应用程序。 如果要在菜单或者主屏幕中运行应用程序,程序将显示片刻,然后退出。 应用程序必须提供一种方法来结束事件循环。若要结束事件循环,可执行CLEAR EVENTS命令。 2022-3-4565恢复初始的开发环境 如要恢复储存的变量的初始值,可以将它们的宏替换为原始的SET命令。 例如,如要在公有变量cTalkVal中保存SET TALK设置,可执行下面的命令:SET TALK &cTalkval 注意:用宏替换时使用的变量名不要以“m.”作为前缀,因为

38、句号会被理解为变量链接,并产生一个语法错误。 如果初始化时使用的程序和恢复时使用的程序不同(例如,如果调用了一个过程进行初始化,而调用另外一个过程恢复环境),这时,确保可以对存储的值进行访问。2022-3-4576将程序组织为一个主文件 如果在应用程序中使用一个程序文件(.prg)作为主文件,必须保证该程序中包含一些必要的命令,这些命令可控制与应用程序的主要任务相关的任务。 在主文件中,没有必要直接包含执行所有任务的命令。 例如,常用的一些方法是调用过程或者函数来控制某些任务,如环境初始化和清除等。 注意:如果使用了应用程序向导,同时让它建立了程序MAIN.PRG,那么就没有必要再建立一个新程

39、序,只须对该程序做些修改即可。该向导使用了一个特殊的类为该应用程序定义一个对象,主程序中包括对对象进行示例和对象配置的部分。 2022-3-4586将程序组织为一个主文件(续) 若要建立一个简单的主程序,可以:(1)通过打开数据库、变量声明等初始化环境。(2)调用一个菜单或表单来建立初始的用户界面。(3)执行READ EVENTS命令来建立事件循环。(4)从一个菜单中(例如,退出)执行CLEAR EVENTS命令,或者执行一个表单按钮(例如,“退出”命令按钮)。主程序不应执行此命令。(5)应用程序退出时,恢复环境。2022-3-4592.3 程序设计方法2.3.1 利用程序进行数据处理1数据的

40、手工处理和程序设计 通常,在程序中能够完成的工作都可以通过人工操作来完成,但需要花费一定的时间。 例如,要在读者信息表中查找某个读者的信息(例如,李兰),可执行以下步骤:(1)在VFP 6.0的系统菜单栏的“文件”菜单中选择“打开”命令。(2)在弹出的对话框中的“文件类型”列表框中选择“表”。(3)在文件列表中双击dz.dbf。注意:选择存储读者信息表dz.dbf文件的路径。(4)在“显示”菜单中单击“浏览”命令。(5)滚动浏览表,查找dzxm字段为“李兰”的记录。 2022-3-4601数据的手工处理和程序设计(续) 若想通过编程达到上述目的,可在命令窗口键入以下三条VFP的命令:USE d

41、zLOCATE FOR dzxm = “李兰”BROWSE 运行结果如图2-16所示。图图2-16 查找读者查找读者“李兰李兰” 2022-3-4611数据的手工处理和程序设计(续) 在表中找到读者“李兰”后,就可以执行预定的操作,如将其“家庭住址”改为“南京”。 通过人工操作来改jtzz,先选定jtzz字段,再输入字符串“南京”。 通过命令来完成上述操作,可在“命令”窗口输入:REPLACE jtzz WITH 南京BROWSE 图图2-17 修改读者李兰的家庭住址修改读者李兰的家庭住址2022-3-4621数据的手工处理和程序设计(续) 与在“命令”窗口中人工输入每条命令相比,运行程序有以

42、下优点:(1)程序可作修改并重新运行。(2)可从菜单、表单和工具栏启动程序。(3)一个程序可调用其他程序。(4)节省输入大量字符所花费的宝贵时间和精力。(5)可使用只能在程序设计中使用的结构化程序设计命令(例如,FORENDFOR,SCANENDSCAN和DO WHILEENDDO)。 2022-3-4632Visual FoxPro 的程序设计方法 VFP程序由代码组成,代码包括以命令形式出现的指令、函数或VFP可理解的任何操作。 这些指令包含在: “命令”窗口 程序文件 “表单设计器”或“类设计器”的事件/方法代码窗口 “菜单设计器”的过程代码窗口 “报表设计器”的过程代码窗口2022-3

43、-464(1)使用命令窗口 可以在“命令”窗口中,键入VFP命令并按回车键执行。 若要重新执行该命令,可将光标移到此命令所在行并按回车键。 在“命令”窗口执行多行代码的方法是:1)选择代码行。2)按回车键或在快捷菜单中选择“运行所选区域”。 命令窗口是一个编辑窗口,在编辑命令时,可使用VFP所提供的编辑工具,进行编辑、插入、删除、剪切、复制和粘贴正文等操作。 2022-3-465(1)使用命令窗口(续) 在命令窗口中,执行命令有以下优点: 可立即执行被键入的命令,不需要将其保存为文件并以程序方式执行。 在菜单和对话框中所作的选择可马上转换为“命令”窗口中的命令。可将这些命令复制并粘贴到Visu

44、al FoxPro的程序中,然后重复执行这些程序。 2022-3-466(2)创建程序 VFP程序是包含一系列命令的文本文件。 在VFP中,可通过以下三种方法来创建程序。1)在项目管理器中,选择“代码”选项卡中的“程序”项,再单击“新建”命令。2)在VFP的系统菜单栏中,选定“文件”菜单,单击“新建”命令;然后在弹出的“新建”对话框中,选择“程序”,再单击“新建文件”按钮。3)在“命令”窗口中,输入:MODIFY COMMAND 此时,Visual FoxPro打开了一个名称为“程序1”的新窗口,可在其中输入应用程序。 2022-3-467(3)保存程序 创建程序后,应加以保存。 其方法是从“

45、文件”菜单中选择“保存”命令即可。 关闭一个尚未保存的程序,则系统会弹出相应的对话框,提示用户是保存还是放弃对程序文件所作的修改。 若保存了一个由项目管理器创建的程序,则该程序被加进项目中。 若要保存一个尚未命名的程序,则系统会打开“另存为”对话框,并提示用户可为程序指定程序名。 程序经保存后,就可以运行或修改它了。 2022-3-468(4)修改程序 程序经保存后便可进行修改。 按以下4种方法来打开想要修改的程序。1)若程序包含在一个项目中,则可在“项目管理器”中选定它,并单击“修改”按钮。2)在Visual FoxPro的系统菜单栏的“文件”菜单中,单击“打开”命令;然后,在弹出的包含文件

46、列表的对话框中,选择“文件类型”列表框中的“程序”,在“文件列表”中选定要修改的程序,单击“确定”按钮。3)在“命令”窗口中,按如下方式输入要修改的程序名(例如:My_program):MODIFY COMMAND My_program4)在“命令”窗口中,输入MODIFY COMMAND ?;然后,从文件列表中选择要修改的程序,选择“打开”选项。文件打开后便可进行修改,修改完毕后,应注意保存。 2022-3-469(5)运行程序 程序经创建后便可进行修改。 运行程序,可采用以下三种方法:1)若程序已包含在一个项目中,则在项目管理器中选定它,再单击“运行”按钮。2)在Visual FoxPro

47、系统菜单栏的“程序”菜单中,选择“运行”菜单项;在弹出的对话框中,选择“程序列表”中想要运行的程序,再单击“运行”按钮。3)在“命令”窗口中,输入DO及要运行的程序名。 程序文件默认的扩展名为.prg。 2022-3-470(6)使用VFP设计工具编写代码 可借助于VFP众多的设计工具: 表单设计器 类设计器 菜单设计器 可以很容易地把程序代码与用户界面链接起来。 应用程序便可响应输入并执行相应的代码。 “报表设计器”可将程序代码与报表文件联系起来,用来定制结构复杂且符合需求的报表。 2022-3-4713存储和处理数据 上面简要地叙述了程序设计的过程。 设计程序,实际上就是用一系列指令存储这

48、些数据并对这些数据进行操作。 程序设计的原材料是数据和数据的存储容器,而处理这些原材料的工具是命令、函数和操作符。 2022-3-472(1)存储数据 在数据库应用中使用的数据通常包括时间、数量、货币、日期、名称和说明等。 这些数据都隶属于一定的数据类型,而同一类型的数据可按相似的方法来处理。 当然可以直接处理数据而不加以存储,但这样做会失去程序应有的灵活性,致使VFP提供的很多功能得不到正常发挥。 VFP 6.0以确定的数据类型来组织各种数据,并根据各种类型来进行存储空间的分配和有效的操作。 VFP 6.0以数据容器保存数据。主要数据容器有变量、表记录和数组。 数据容器允许对多个数据进行相同

49、的操作。 2022-3-473(2)处理数据 数据类型和数据容器构成了处理数据的基础,而对数据的处理最终还是要通过操作符、函数和命令来实现。 VFP中最常用的操作符如1.3.5节所述。 操作符的使用应与数据类型相匹配。 函数的功能是返回特定类型的数据。 可以使用以下5种方法来调用函数:1)将函数的返回值赋给某个变量。2)在Visual FoxPro命令中包含函数调用。3)在当前活动的输出窗口中输出返回值。4)调用函数,但不保存函数的返回值。5)在一个函数中嵌套另一个函数,即函数嵌套。 2022-3-474(2)处理数据 命令是为完成一个特定功能的指令。 每条指令都有自己特定的语法,用来说明该命

50、令的正确使用方法。 此外,与命令有关的还有一些可选子句(例如,“范围”子句和“字段名表”子句等),这些子句可进一步限定命令所能完成的功能。 表2-3列出了USE命令的一些用法。语法语法说明说明USE关闭当前工作区中的表关闭当前工作区中的表USE ZG在当前工作区中打开在当前工作区中打开ZG表,同时关闭当前工作区中所有已打开的表表,同时关闭当前工作区中所有已打开的表USE ZG IN 0在下一个可用工作区中打开在下一个可用工作区中打开ZG表表USE ZG IN 0 ALLAS mycomp在下一个可用工作区中打开在下一个可用工作区中打开ZG表,并指定该工作区的别名为表,并指定该工作区的别名为my

51、comp2022-3-4752.3.2 程序设计方法 VFP 6.0既支持面向过程程序设计,也支持面向对象的程序设计。1面向过程的程序设计技术 在传统的程序开发设计中,几乎都是采用结构化程序设计(Structured Programming),即SP模式,也叫过程化程序设计。 这种程序设计方法在为解决某个实际问题时,首先要确定一个算法,然后将抽象算法在计算机上具体实现,即为该算法构造适当的数据结构,通过对算法的操作过程体现算法的思想。 也就是说,程序是在数据的某种特定的表示方式的结构的基础上,对抽象算法的具体实现。 2022-3-4761面向过程的程序设计技术(续) 从本质上来看,这种程序设计

52、方法是面向过程的,即它的设计出发点是处理事务的过程,其基本组成机构是过程。 它不能直接反映人的解决问题的思路,因此,这种设计方法存在以下两个固有的缺陷:(1)程序的可用性差 应用程序的规模日益增大,结构日趋复杂,但其中仍有许多重复性的工作。 代码重用成了提高效率的关键。 面向过程的程序设计模式,每次程序员进行一次新系统的开发,几乎都要从零开始做起,并且要针对具体问题做大量重复而烦琐的工作。即使重用代码,也只是进行简单的拷贝,如稍有不同,必须逐字修改。 不能对已编好的应用程序的某些部分直接继承引用。 2022-3-4771面向过程的程序设计技术(续)(2)程序维护的一致性差 数据和方法是分开的,

53、可能产生问题空间和求解方法空间在结构上的不一致,如图2-19所示。 对程序运行起重要作用的数据一般要做全局处理,若为了新的需要,改变某一数据结构,则所有处理数据的过程都要重新考虑,才能保证与数据的一致性。 维护数据和过程的一致性要花费很多精力,易出错。 客观世界的对象和操作数 据结 果问题空间客观世界的算法客观世界的对象对结果的解释对问题的认识和表达程序语言的对象和操作输出数据计算机算法求解空间图图2-19 问题的求解模型问题的求解模型2022-3-4782面向对象的程序设计 OOP(Object-Oriented Programming)是近年来发展起来的一种编程方法,它克服面向过程的程序设

54、计方法的缺陷。 OOP以对象的数据结构为中心,而不是以过程和操作为中心。 用对象表现事物,用消息传递表现事物之间的相互联系,用方法表现处理事物的过程。 基本特征是封装性、继承性和多态性。 工作的重点不再是单纯考虑从代码的第一行到最后一行的程序编写,而是将考虑的重点放在如何创建对象、如何利用对象简化程序设计、提供代码的可用性等方面。 2022-3-4792面向对象的程序设计(续) 类是OOP技术中的最核心部分。 VFP 6.0是一个面向对象程序设计与传统的面向过程程序设计模式相结合的开发环境,它建立在事件驱动模型的基础之上,以对象来组织应用程序。 VFP 6.0提供的类是创建应用程序的基础。 在

55、一个应用程序中,控件、表单等都是对象。 对VFP中对象的操作,可通过属性、事件和方法来实现。其触发方式是采用事件驱动,通过事件的发生来引发对方法的调用,进而达到对象操作的目的。 而对对象的操作,实质上就是对其属性的操作,这直接表现在对其数据的改变上。 VFP提供的大量控件简化和方便了程序的开发。 2022-3-4802面向对象的程序设计(续) 对象和类不是一回事,但它们是紧密相关的。 类是具有一般属性和一般行为的对象的静态集合,只有对它们进行实例化形成对象后,它才具有行为的能力。 对象就是类的实例化、具体化,它除了具备类所具有的一般属性和行为外,它还具有新增的一些属性和功能,实际上就是数据和方

56、法。 在VFP中建立的对象具有属性。 属性表明了对象的一些基本特征,如大小、颜色及所处的位置等,这些属性由对象所基于的类决定。 属性可在设计阶段或运行阶段被设置。 2022-3-4812面向对象的程序设计(续) 每个对象都可以对一个被称为事件的动作所识别并予以响应。 事件是一种预先定义好的特定动作,由用户或系统激活。 在多数情况下,事件是由用户的交互行为产生的,事件集合是固定的,用户不能扩充。 在VFP中,可激发事件的用户动作是:单(双)击、移动鼠标和按键。 表2-5列出了命令按钮的典型事件。 2022-3-4822面向对象的程序设计(续) 方法实际上就是内部函数,每个类型的对象都有它自己的方

57、法集,例如,在命令按钮对象中,调用MOVE方法可以移动按钮的位置。 与事件不同的是,方法可由用户进行扩展。 表2-6列出了表单对象的常用方法。 2022-3-4832面向对象的程序设计(续) 经表单设计器或编程方法建立了对象,便可通过修改其属性和调用其方法来处理这些对象。 建立对象后,可使用DISPLAY PROJECT命令来显示此对象的类层次、属性设置、所包含的对象及现存的方法和事件 还可以用A MEMBER()函数将一个对象的属性、事件、方法和所包含的对象填入一个数组。 2022-3-484(1)在容器层次中引用(访问)对象 在程序中,要以命令方式来处理对象,首先要知道对象相对于容器层次的

58、关系。 例如,若要在表单集中处理一个表单的控件,则需要引用表单集、表单和控件。1)绝对引用,如图2-20所示 FormSet1:表单集对象 Form1:包含在FormSet1中的一个表单对象 Txt1和Group1 :包含在Form1中的文本框对象和选项按钮组的对象; Opt1和Opt2 :包含在Group1中的选项按钮对象 其中,FormSet1、Form1和Group1叫容器对象,而Txt1和Opt1、Opt2叫控制对象。 容器对象可包含其他的对象,而控制对象则不能。 2022-3-4851)绝对引用(续) 可用以下形式来引用Txt1对象:FormSet1.Form1.Txt1 可用以下形

59、式来引用Opt2对象:FormSet1.Form1.Group1.Opt2 FormSet1 Form1Txt1Group1Opt1Opt2图图2-20 对象在容器中的层次关系对象在容器中的层次关系2022-3-4862)相对引用 在容器层次中引用对象时,还可以通过快捷方式引用该对象,表2-7列出的是可快捷引用对象的关键字。 若在对象Txt1中要引用对象Group1,则可使用:THISFORM.Group1或THIS Parent.Group1 其中,THIS就代表Txt1对象,THISFORM和THIS Parent都是指表单Forrn1对象。 关键字引用关系THIS该对象本身THISFOR

60、M包含该对象的表单THISFORMSET包含该对象的表单集Parent包含该对象的直接容器表表2-7 关键字和引用关系关键字和引用关系 2022-3-487(2)设置属性 在运行时或设计阶段均可设置对象的属性,用命令方式设置对象属性的语法形式为:Parent.Object.Property = Value & 父.对象.属性 = 值 仍以图2-20为例,若要使Txt1不可用,则可用:FormSet1.Form1.Txt1.Enable = .f. 若要同时设置一个对象的多个属性,可采用WITHENDWITH结构,如:WITH FormSet1.Form1.Txt1 Visible = .t. & 使其可见 Enable = .t. &

温馨提示

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

评论

0/150

提交评论