1、第十章第十章 数据库应用程序开发数据库应用程序开发10.1 10.1 Visual FoxProVisual FoxPro程序设计的特点程序设计的特点10.2 10.2 应用软件的开发过程应用软件的开发过程10.3 10.3 编译应用程序编译应用程序2022-11-11110.1 VFP程序设计的特点程序设计的特点10.1.1 面向对象程序设计面向对象程序设计 在面向对象的程序中将数据以及处理这些数据的程序全在面向对象的程序中将数据以及处理这些数据的程序全部封装到一个类中,类的实例称为对象;程序由若干对象组部封装到一个类中,类的实例称为对象;程序由若干对象组成,每个对象都具有属性及方法;对象的
2、属性及方法均由系成,每个对象都具有属性及方法;对象的属性及方法均由系统事先定义,用户可以通过改变对象属性方法来控制对象。统事先定义,用户可以通过改变对象属性方法来控制对象。一、面向对象与面向过程程序设计的区别一、面向对象与面向过程程序设计的区别 程程 序序 数数 据据 代代 码码面向过程的结构化程序面向过程的结构化程序面向对象的程序设计面向对象的程序设计 数据数据 程序程序 数据数据 程序程序 数据数据 程序程序类类对象对象A对象对象B2022-11-112二、面向对象程序设计的特点二、面向对象程序设计的特点 在面向对象的程序设计中,引入了类、对象、事件、属在面向对象的程序设计中,引入了类、对
3、象、事件、属性、方法等一系列的概念以及前所未有的编程思路。性、方法等一系列的概念以及前所未有的编程思路。面向对象程序设计最重要的思想就是将数据以及处理这面向对象程序设计最重要的思想就是将数据以及处理这些数据的程序全部封装到一个类中,类的实例称为对象。在些数据的程序全部封装到一个类中,类的实例称为对象。在对象中,属于该对象的程序才能访问对象中,属于该对象的程序才能访问(包括读、写包括读、写)自己的数自己的数据,而其它的程序不能存取该对象的数据,这样就达到了保据,而其它的程序不能存取该对象的数据,这样就达到了保护数据的作用。护数据的作用。2022-11-113 所有面向对象的语言都提供三类机制:封
4、装、继承和多态。所有面向对象的语言都提供三类机制:封装、继承和多态。1.封装:把数据和操作这些数据的例程代码封装到一起。封装:把数据和操作这些数据的例程代码封装到一起。外部例程不能随意地更改对象中的数据,提高数据安全性。外部例程不能随意地更改对象中的数据,提高数据安全性。2.继承:在一个类上所做的改动反映到它的所有子类中继承:在一个类上所做的改动反映到它的所有子类中,对象可以通过继承其父类通用属性,来实现层次分类抽象。,对象可以通过继承其父类通用属性,来实现层次分类抽象。3.多态:可建立同一函数或操作的几种版本,运行时根多态:可建立同一函数或操作的几种版本,运行时根据输入的数据类型不同,调用相
5、应的版本,从而返回不同数据据输入的数据类型不同,调用相应的版本,从而返回不同数据类型的结果。类型的结果。即一个接口,多种方法。即一个接口,多种方法。2022-11-114三、面向对象程序设计的优点三、面向对象程序设计的优点 1.程序的可维护性好程序的可维护性好 2.提高了代码的可重用性提高了代码的可重用性 3.程序易读性好程序易读性好四、四、VFP中的程序中的程序 源程序:源程序:扩展名为扩展名为.PRG的文件(的文件(ASCII代码)代码)程序文件:扩展名为程序文件:扩展名为.FXP的文件(编译产生)的文件(编译产生)应用程序:扩展名为应用程序:扩展名为.APP的文件(连编产生)的文件(连编
6、产生)可执行程序:可执行程序:扩展名为扩展名为.EXE的文件(连编产生)的文件(连编产生)2022-11-11510.1.2 可视化设计可视化设计 一个一个Windows应用程序界面上包含若干个控件,例如应用程序界面上包含若干个控件,例如菜单、按钮、滚动条、对话框、列表框等。使用菜单、按钮、滚动条、对话框、列表框等。使用VFP开发程开发程序时,可以将工具箱中的控件直接放在窗口中,并通过设置序时,可以将工具箱中的控件直接放在窗口中,并通过设置控件的属性来控制它的外观及运行时的特性。同时,控件的属性来控制它的外观及运行时的特性。同时,VFP的的可 视 化 设 计 工 具(如 设 计 器、向 导、生
7、 成 器 等)将可 视 化 设 计 工 具(如 设 计 器、向 导、生 成 器 等)将Windows编程的复杂性隐蔽起来,使开发者可以将主要精编程的复杂性隐蔽起来,使开发者可以将主要精力放在应用程序本身,从而大大提高了应用软件的开发效率。力放在应用程序本身,从而大大提高了应用软件的开发效率。2022-11-11610.1.3 事件驱动编程事件驱动编程 VFP采用的是一种事件驱动的程序概念。采用的是一种事件驱动的程序概念。所谓事件就是窗体(所谓事件就是窗体(Form)或控件()或控件(Control)等对象可以识别的行为。在等对象可以识别的行为。在VFP中,每个窗体和控中,每个窗体和控件都有一套
8、预定义的事件集合,如果发生了其中的件都有一套预定义的事件集合,如果发生了其中的某个事件,某个事件,VFP会执行与该事件相关过程中的代码。会执行与该事件相关过程中的代码。用用VFP编程,可以不必考虑整个程序的流程,编程,可以不必考虑整个程序的流程,也不必考虑哪段代码放在何处。只需要了解什么动也不必考虑哪段代码放在何处。只需要了解什么动作产生何种事件,以及如何处理事件即可。事件驱作产生何种事件,以及如何处理事件即可。事件驱动程序由于对每个事件的处理目的明确,因此也十动程序由于对每个事件的处理目的明确,因此也十分简练并易于维护。分简练并易于维护。2022-11-11710.2.1 可行性研究阶段可行
9、性研究阶段 1.技术可行性:利用现有的技术能实现这个系统吗?技术可行性:利用现有的技术能实现这个系统吗?2.经济可行性:这个系统的经济效益能超过它的开发成经济可行性:这个系统的经济效益能超过它的开发成本吗?本吗?3.操作可行性:系统的操作方式在这个用户组织内行得操作可行性:系统的操作方式在这个用户组织内行得通吗?通吗?10.2.2 需求分析阶段需求分析阶段 产生系统说明书产生系统说明书 1了解用户环境和要求了解用户环境和要求 2数据分析数据分析10.2 应用程序开发过程应用程序开发过程2022-11-11810.2.3 系统设计阶段系统设计阶段 1.数据库设计:系统需求分析数据库设计:系统需求
10、分析、概念设计、实现设计、概念设计、实现设计、物理设计物理设计 2.总统设计:概要设计总统设计:概要设计、详细设计、详细设计 10.2.4 实现阶段实现阶段 1菜单设计菜单设计 2界面(表单)设计界面(表单)设计 3控件属性设计控件属性设计 4添加程序代码添加程序代码 5系统安全性设计系统安全性设计 6调试程序调试程序2022-11-11910.2.5 测试阶段测试阶段 1.模块测试模块测试 2.联合测试联合测试 3.试运行试运行 10.2.6 运行与维护阶段运行与维护阶段 开发一个应用程序应该遵循开发一个应用程序应该遵循“分析分析设计设计编编码码测试测试”等步骤等步骤。2022-11-111
11、0 以上以上6个阶段是一个软件系统的基本开发过程,每一阶段个阶段是一个软件系统的基本开发过程,每一阶段的工作都直接影响着整个系统的质量。的工作都直接影响着整个系统的质量。衡量一个系统性能优劣的重要标志是系统的可靠性、易衡量一个系统性能优劣的重要标志是系统的可靠性、易维护性、易理解性和运行效率。可靠性是指系统在意料的情维护性、易理解性和运行效率。可靠性是指系统在意料的情况下,能够正常工作,在意外的情况(比如硬件发生故障或况下,能够正常工作,在意外的情况(比如硬件发生故障或者输入数据不合理)时,能够作出适当的处理而不至于导致者输入数据不合理)时,能够作出适当的处理而不至于导致严重的损失;易维护性是
12、指系统在运行过程中出现的某些错严重的损失;易维护性是指系统在运行过程中出现的某些错误能够及时被发现并排除。另外,当用户提出一些新的要求误能够及时被发现并排除。另外,当用户提出一些新的要求后,能够对原有的系统功能进行扩充;易理解性是指系统的后,能够对原有的系统功能进行扩充;易理解性是指系统的内部结构清晰,易于软件人员阅读理解,系统运行界面简单内部结构清晰,易于软件人员阅读理解,系统运行界面简单明了,易于用户使用;运行效率是指系统能否有效地使用计明了,易于用户使用;运行效率是指系统能否有效地使用计算机的资源,如时间和空间等,能否满足用户对系统的要求。算机的资源,如时间和空间等,能否满足用户对系统的
13、要求。在一个软件的开发过程中,为了提高系统的质量,必须在一个软件的开发过程中,为了提高系统的质量,必须时刻注意这时刻注意这4个因素。个因素。2022-11-1111数据库的设计过程和每步产生的文档:数据库的设计过程和每步产生的文档:2022-11-1112一般来讲,应用程序的建立需要以下步骤:一般来讲,应用程序的建立需要以下步骤:构造应用程序框架。构造应用程序框架。将文件添加到项目中。将文件添加到项目中。连编应用程序。连编应用程序。10.3 编译应用程序编译应用程序10.3.1 典型应用程序结构典型应用程序结构 在建立应用程序时,需要考虑如下任务:在建立应用程序时,需要考虑如下任务:1.设置应
14、用程序的起始点。设置应用程序的起始点。2.初始化环境。初始化环境。3.显示初始的用户界面。显示初始的用户界面。4.控制事件循环。控制事件循环。5.退出应用程序时,恢复初始的开发环境退出应用程序时,恢复初始的开发环境。2022-11-1113 在主文件中,没有必要直接包含执行所有任务的命令,在主文件中,没有必要直接包含执行所有任务的命令,常用的一些方法是调用过程或者函数来控制某些任务,如环常用的一些方法是调用过程或者函数来控制某些任务,如环境初始化和清除等。境初始化和清除等。建立一个简单的主程序,步骤如下:建立一个简单的主程序,步骤如下:1.通过打开数据库、变量声明等初始化环境。通过打开数据库、
15、变量声明等初始化环境。2.调用一个菜单或表单来建立初始的用户界面。调用一个菜单或表单来建立初始的用户界面。3.执行执行READ EVENTS命令来建立事件循环。命令来建立事件循环。4.从一个菜单中(如从一个菜单中(如“退出退出”)执行)执行CLEAR EVENTS命令,命令,或者执行一个表单的或者执行一个表单的“退出退出”命令按钮。命令按钮。5.应用程序退出时,恢复环境设置。应用程序退出时,恢复环境设置。组织一个主程序文件组织一个主程序文件 2022-11-1114例如,用户的主程序可以如下所示:例如,用户的主程序可以如下所示:代码代码 注释注释 DO SETUP.PRG 调用程序建立环境设置
16、(在公有调用程序建立环境设置(在公有 变量中保存值)变量中保存值)DO MAINMENU.MPR将菜单作为初始的用户界面显示将菜单作为初始的用户界面显示 READ EVENTS建立事件循环建立事件循环DO CLEANUP.PRG在退出之前,恢复环境设置在退出之前,恢复环境设置 2022-11-1115教学管理教学管理”应用系统的主程序应用系统的主程序 MAIN.PRG 如下:如下:set sysmenu offset default to d:教学管理教学管理clear allopen database 教学管理教学管理 exclusivedo form 表单表单教学管理教学管理.scxrea
17、d events “教学管理教学管理.scx”为系统主页表单,其主要功能是当用户为系统主页表单,其主要功能是当用户输入正确密码后可调用教学管理信息系统主菜单,使用户进输入正确密码后可调用教学管理信息系统主菜单,使用户进入入“教学管理教学管理”数据库应用系统。数据库应用系统。“教学管理教学管理”数据库应用系统主菜单数据库应用系统主菜单2022-11-111610.3.2 应用程序生成过程应用程序生成过程一、使用应用程序生成工具一、使用应用程序生成工具 应用程序向导、设计器应用程序向导、设计器 应用程序生成器应用程序生成器二、手工生成二、手工生成 设计数据库、视图、查询、表单、报表、工具栏等设计数
18、据库、视图、查询、表单、报表、工具栏等 设计应用程序菜单,将前面设计的结果与菜单相联系设计应用程序菜单,将前面设计的结果与菜单相联系 编写必要的程序模块(如主控程序)编写必要的程序模块(如主控程序)进行应用程序连编,生成可执行程序进行应用程序连编,生成可执行程序2022-11-111710.3.3 连编应用程序连编应用程序、准备连编、准备连编 准备和设置主文件准备和设置主文件 主文件:一个表单、一个程序主文件:一个表单、一个程序 设置主文件:选择主文件,在设置主文件:选择主文件,在“项目项目”菜单中选择菜单中选择“设设置主文件置主文件”命令命令 在主文件(或主文件的事件代码)中加入必须的命令在
19、主文件(或主文件的事件代码)中加入必须的命令 表单作为主文件:表单作为主文件:在表单的在表单的init事件代码中增加事件代码中增加read events命令命令 在程序的退出代码中增加在程序的退出代码中增加clear events命令命令2022-11-1118 包含或排除文件包含或排除文件 包含文件:被包含的文件只在设计时可以修改,应用程包含文件:被包含的文件只在设计时可以修改,应用程序执行时不允许修改这类文件。一般将表单、报表、查询、序执行时不允许修改这类文件。一般将表单、报表、查询、菜单等不允许用户修改的内容设置为包含。菜单等不允许用户修改的内容设置为包含。排除文件:被排除的文件在设计时
20、和应用程序执行时都排除文件:被排除的文件在设计时和应用程序执行时都可以修改。一般将表文件、允许用户修改的报表文件设置为可以修改。一般将表文件、允许用户修改的报表文件设置为排除。排除。程序作为主文件:程序作为主文件:在程序代码中增加在程序代码中增加read events命令命令 在程序的退出代码中增加在程序的退出代码中增加clear events命令命令2022-11-1119二、连编二、连编 编译成:编译成:.app 只能在只能在VFP中运行中运行 .exe 标准的标准的Windows应用程序应用程序 使用项目管理器上的使用项目管理器上的“连编连编”按钮按钮 使用使用“项目项目”菜单中的菜单中的“连编连编”命令命令三、运行应用程序三、运行应用程序 VFP6r.DLL和和VFP6chs.dll(或或VFP6enu.dll)必须在当必须在当前查找路径中或在应用程序所在目录下前查找路径中或在应用程序所在目录下 DO 程序文件名程序文件名.app DO 程序文件名程序文件名.exe 对对.exe程序,像运行其他标准程序,像运行其他标准Windows应用程序一样应用程序一样2022-11-1120