《中职 Visual FoxPro程序设计案例教程 高教版第5章.ppt》由会员分享,可在线阅读,更多相关《中职 Visual FoxPro程序设计案例教程 高教版第5章.ppt(117页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第5章建立用户使用界面水利水电出版社沈阳市计算机学校 王焕杰第一章本章目的简单了解有关面向对象编程的特点和基础知识掌握程序设计的基本概念和常用命令掌握窗体的运行和关闭熟悉窗体的常用事件掌握窗体中的控件属性及代码编写本章任务任务一:录入超市管理系统数据任务二:设计用户主界面任务三:程序设计初步任务四:用户登录任务五:退出窗口任务六:商品信息浏览任务七:表单的综合应用水利水电出版社沈阳市计算机学校 王焕杰5.1基础知识面向对象的程序设计(OOP)(Object-OrientedProgramming,OOP)立意于创建软件重用代码,具备更好地模拟现实世界环境的能力,这使它被公认为是自上而下编程的优
2、胜者。面向对象的编程语言使复杂的工作条理清晰,编写容易,它是一场编程技术方面的革命。VisualFoxPro是一种混合型语言,可以使用面向对象编程,也可以使用传统的过程化编程。水利水电出版社沈阳市计算机学校 王焕杰5.1.1抽象在面向对象中的作用1抽象的概念一般来讲,抽象是通过从特定的实例中抽取共同的性质以形成一般化的概念的过程。抽象是对某个系统的简化的描述,即强调该系统中的某些特征,而忽略一部分细节。简单地说,抽象是人们在理解复杂现象和求解复杂问题中处理复杂事物的主要工具。2面向对象抽象的实现面向对象的原理有4个,分别是数据抽象、行为共享、进化和确定性。(1)数据抽象:它为程序员提供了一种对
3、数据和为操作这些数据所需要的算法的抽象。数据抽象包含两个概念:模块化和信息隐藏。模块化的优点是便于修改或维护,系统发现问题后,可以确定问题出在哪个模块上。在支持信息隐藏的系统中,错误的影响也通常被限制在一个模块内,增强了系统的可靠性。(2)行为共享:行为是数据抽象引进的概念,行为是由实体的外部接口进行定义的。行为共享是指许多实体具有相同的接口,这将增加系统的灵活性。(3)进化:进化是考虑到实际中的需求会很快发生变化。面向对象的方法要支持进化过程就是要适应可能发生的不断变化。(4)确定性:这里确定性是指用于描述一个系统确定的行为。一个确定的系统应该确保其中每个行为项都有一个确切的解释,系统不会因
4、不能响应某一行为而失败。水利水电出版社沈阳市计算机学校 王焕杰5.1.2面向对象的基本特征面向对象的系统包含3个要素:对象、类和继承。1对象在不同领域中对对象有不同的理解。一般认为,对象就是一种事物,一个实体。从概念上讲,对象是代表正在创建的系统中的一个实体。例如,一个商品销售系统,像顾客、商品、柜台、厂家等都是对象。从实现形式上讲,对象是一个状态和操作(方法)的封装体。状态是由对象的数据结构的内容和值定义的,方法是一系列的实现步骤,它是由若干操作构成的。2类类是创建对象的样板,它包含着所创建对象的状态描述和方法的定义。一个类的所有对象都有相同的数据结构,并且共享相同的实现操作的代码,而各个对
5、象有着各自不同的状态。类是所有对象的共同行为和不同状态的集合体。3继承继承提供了创建新类的一种方法,这种方法就是一个新类可以通过对已有的类进行修改或扩充来满足新类的需求。新类共享已有类的行为,而自己还具有修改或额外添加的行为。从一个类继承定义的新类,将继承已有类的所有方法和属性,并且可以添加所需要的新的方法和属性。新类被称为已有类的子类,而已有类称为父类,又叫基类。新类又叫派生类。水利水电出版社沈阳市计算机学校 王焕杰5.2任务一录入超市管理系统数据5.2.1相关知识数据库的对话框在VisualFoxPro中称为“窗体”,一般还称为表单。窗体也是VisualFoxPro中的一种对象,它使用计算
6、机屏幕将数据库中的表或查询中的数据显示出来。由于数据库软件是给用户使用的,所以要为使用的用户提供一个友好的使用界面。这是建立一个窗体的基本目标。一个设计优秀的窗体是非常必要的。不管数据库中表或查询设计得有多好,如果窗体设计得十分杂乱,而且没有任何提示,就会令使用者感觉到迷惑,甚至增加失误的概率。这样的窗体就不利于数据库软件的应用和推广。本任务将介绍如何使用VisualFoxPro编写一个简单的程序。在此之前先介绍VisualFoxPro的各个部分的功能,包括工具箱、项目管理器、“属性”窗体设计器等,下面分别介绍这几部分的功能。水利水电出版社沈阳市计算机学校 王焕杰1工具箱当建立一个新的表单时,
7、或者打开表单设计器时,一般会默认显示工具箱,上面提供了VisualFoxPro表单中常用的各个控件。选中控件,然后在窗体设计器中拖动鼠标,即可在其中绘制控件。初始状态的工具箱只有一个“常用”选项卡,在工具箱上右击,在弹出的快捷菜单中选择“添加选项卡”命令,可以为工具箱添加选项卡;右击,选择相关选项,可以打开其他选项卡。水利水电出版社沈阳市计算机学校 王焕杰常用表单控件名称水利水电出版社沈阳市计算机学校 王焕杰2项目管理器项目是VisualFoxPro的组织应用程序的方式,一般而言,一个工程包含开发一个应用程序所需要的所有文件,包括窗体文件、程序文件、数据库文件、表文件、报表文件、菜单文件、索引
8、文件等。水利水电出版社沈阳市计算机学校 王焕杰5.2.2任务实现本小节主要技能点如下:(1)创建最基本表单。(2)用表单向导创建表单。(3)一对多表单向导水利水电出版社沈阳市计算机学校 王焕杰1创建最基本的表单在的“项目管理器”中,选择“文档”选项卡,选择下面列表框中的“表单”选项,在右侧操作区单击“新建”按钮。在“新建表单”对话框中单击“新建表单”按钮。水利水电出版社沈阳市计算机学校 王焕杰选择“文件”菜单中的“保存”命令,选择相关的文件夹并输入正确的表单名即完成第一个表单的制作,如图所示。水利水电出版社沈阳市计算机学校 王焕杰选择要保存表单的位置水利水电出版社沈阳市计算机学校 王焕杰也可以
9、重新命名该表单,然后单击“保存”按钮,该表单就会出现在当前项目中,如图所示。关闭设计器,选择第一个表单,在右侧的功能区单击“运行”按钮。水利水电出版社沈阳市计算机学校 王焕杰表单运行结果如图5-9所示。单击Form1右上角的关闭按钮,可以关闭Form1。再次选择第一个表单,单击“修改”按钮,可以对Form1(第一个表单)进行修改。水利水电出版社沈阳市计算机学校 王焕杰选择菜单中的“显示”“表单控件工具栏”命令,可以控制表单控件工具栏的显示。单击工具栏中的按钮,并在第一个表单(Form1)上再次单击,则会在Form1中创建一个新的按钮。水利水电出版社沈阳市计算机学校 王焕杰双击Command1按
10、钮,会出现该按钮的代码编辑器在Command1的click事件中输入thisform.release,即运行表单后,单击此按钮就会退出表单。关闭表单设计器,运行表单,测试按钮Command1的效果。水利水电出版社沈阳市计算机学校 王焕杰2用表单向导创建简单表单(1)在“项目”菜单中,选择“新建”“表单向导”命令,出现如图所示的界面。水利水电出版社沈阳市计算机学校 王焕杰(2)选择“表单向导”选项,单击“确定”按钮。(3)选择一个数据表,然后为该表建立一个表单,这里选择的是“用户”表,单击按钮可以把“用户”表的所有字段全部选中,单击按钮可以选取单个字段。单击“下一步”按钮。水利水电出版社沈阳市计
11、算机学校 王焕杰(4)如图5-15所示,在该对话框中选择一个自己喜欢的样式,使表单更加美观,单击“下一步”按钮继续。水利水电出版社沈阳市计算机学校 王焕杰(5)该对话框主要是对“用户”表的数据进行排序的设置,这里选择“用户编号”作为索引,单击“添加”按钮,再单击“下一步”按钮水利水电出版社沈阳市计算机学校 王焕杰(6)根据该对话框的提示,可以单击“预览”,观看一下效果,也可以直接单击“完成”按钮,完成表单的制作水利水电出版社沈阳市计算机学校 王焕杰(7)单击“预览”按钮,效果如图5-18所示,返回向导,单击“完成”按钮,将表单命名为“用户”,选择一个存放表单的位置,如D:superMarket
12、水利水电出版社沈阳市计算机学校 王焕杰3一对多表单向导选择“项目”菜单中的“新建”命令,选择“一对多表单向导”单击“确定”按钮,效果如图5-20所示。选择“供货商”表,然后将字段导入到“选定字段”列表框中。单击“下一步”按钮图519选择“一对多表单向导”选项图520父表选择水利水电出版社沈阳市计算机学校 王焕杰从子表中选择字段(这里选择“商品信息”表,导出所有字段,单击“下一步”按钮。)水利水电出版社沈阳市计算机学校 王焕杰如图5-22所示,是建立两个表单的关系,以便联动显示。单击“下一步”按钮。图522建立表间关系水利水电出版社沈阳市计算机学校 王焕杰如图5-23所示,在“样式”列表框中选择
13、自己喜欢的样式,这里选择“阴影式”,单击“下一步”按钮。图523选择表单样式水利水电出版社沈阳市计算机学校 王焕杰图5-24是选择排序次序的字段,这里选择“供货商编号”,单击“下一步”按钮图524数据排序方式水利水电出版社沈阳市计算机学校 王焕杰单击“完成”按钮,保存为“供货渠道”图525完成及相关选项水利水电出版社沈阳市计算机学校 王焕杰单击“完成”按钮,保存为“供货渠道”,运行表单水利水电出版社沈阳市计算机学校 王焕杰课后练习1利用向导制作一个“入库记录”的表单,并用表单设计器修改和美化产生的表单,利用此表单浏览库存商品信息,并通过此表单输入相关的记录。水利水电出版社沈阳市计算机学校 王焕
14、杰课后练习2利用向导分别制作以下几个数据表的表单,如“供货商”表、“会员”表、“交易”表、“商品信息”表、“生产商”表、“销售”表、“用户”表,并通过表单为相关的数据表添加数据和修改数据。水利水电出版社沈阳市计算机学校 王焕杰5.3任务二设计用户主界面设计用户主界面,并为主界面各项按钮指定代码,用以访问相关表单。水利水电出版社沈阳市计算机学校 王焕杰5.3.1相关知识点1容器和控件2标签控件3“属性”窗口4和字体有关的属性5命令按钮控件6和鼠标操作相关的常用事件7设置访问键8设置控件的Tab键次序9设置工具提示文本10.启用和废止控件11.定义表单行为12指定表单的图标水利水电出版社沈阳市计算
15、机学校 王焕杰1容器和控件VisualFoxPro6.0的基类共分成两个大类:容器类和非容器类。一般称容器类基类为容器,而把非容器类基类称为控件,有时也把所有基类都称为控件。(1)容器类。容器类可以包含其他对象,并且允许访问这些对象。(2)控件类。控件类的封装比容器类更为严密,但也因此丧失了一些灵活性。(3)容器中各对象的调用。在进行容器类“子类”或“对象”的设计时,往往要调用容器中某一特定对象,这就要掌握OOP方法中对象的标识方法。例如,在图例如,在图5-12所示的代码编辑器中输入。所示的代码编辑器中输入。mand1.caption=点点击事件击事件,并删除,并删除thisform.rele
16、ase。运行表单,单击按钮,可以看到最后的效。运行表单,单击按钮,可以看到最后的效果。其中果。其中thisform是是command1的父容器,的父容器,command1是其中的一个控件,是其中的一个控件,caption是是command1的属性。文字的属性。文字“点击事件点击事件”是这个属性的值。是这个属性的值。注:注:thisform在在Visual FoxPro中用来代表当前的表单。中用来代表当前的表单。水利水电出版社沈阳市计算机学校 王焕杰2标签控件在设计表单界面时,几乎都要有一些提示某个控件的作用的文字,比如在注册时,就有用户名、密码等文字在某些表单控件之前进行显示,提示用户某控件可
17、以做什么,如果不知道,用户就会不了解这个界面,注册也就无从下手,这就是标签的作用。标签标签水利水电出版社沈阳市计算机学校 王焕杰3“属性”窗口“属性”窗口用于修改窗体和控件的属性,如图5-30所示,其中上方的下拉列表框中列出当前的窗体及其控件的名称,可以通过下拉列表来选择窗体或某一个控件。在窗体设计器中选择某一个对象之后,“属性”窗口也会显示该对象的属性。图5-30表单“属性”窗口在属性列表中,caption属性最为常用,用于显示文本。而为了编程方便些,还要修改name属性,即在代码中引用对象时所用的名称。水利水电出版社沈阳市计算机学校 王焕杰在设计表单时,为了让界面更友好、更美观,通常都要对
18、界面进行一定的美化,其中很重要的一项就是对字体属性的设置,常用的控件如标签和按钮等都会有字体属性,可以在“属性”窗口中进行设置,图5-31所示为与字体有关的属性。4和字体有关的属性图5-31和字体有关的属性FontBold、FontItalic、FontStrikethru、Fontunderline属性:指定文本是否具有粗体、斜体、删除线或下划线等效果。FontExtend的作用是指定文本是否可扩展。FontName属性:指定显示文本的字体名,默认值为ArialFontSize属性:默认的设置是9磅FontOutline属性:作用是指定与控件相关联的文字是否显示为空心字FontShadow属
19、性:作用是指定与控件相关联的文字是否带有阴影FontSize属性:指定对象文本的字体大小,以磅为单位,默认值为10磅ForeColor属性:指定用于显示对象中文本前景色水利水电出版社沈阳市计算机学校 王焕杰5命令按钮控件命令按钮通常用来启动一个事件,如关闭一个表单、移动到不同记录、打印报表等动作。可使用Caption属性指定在命令按钮上显示的文本。命令按钮常用的事件是Click事件,当编辑代码时,可以选择执行的事件,如图5-33所示。图5-33命令按钮事件选择水利水电出版社沈阳市计算机学校 王焕杰(1)Click:当在程序中包含触发此事件的代码,或者将鼠标指针放在:当在程序中包含触发此事件的代
20、码,或者将鼠标指针放在一个控件上按下并释放鼠标左键,或者更改特定控件的值,或在表单一个控件上按下并释放鼠标左键,或者更改特定控件的值,或在表单空白区单击时,此事件发生。空白区单击时,此事件发生。Click事件发生在用户:单击复选框、命令按钮、列表框或选项按钮控件时。使用箭头键或按鼠标键在下拉列表框或列表框中选择一项时。在命令按钮、选项按钮或复选框有焦点时按SPACEBAR键时。表单中有Default属性设置为“真”(.T.)的命令按钮并且按回车键时。按一个控件的访问键。例如,若一个命令按钮的标题为“Go”,则按ALT+G组合键可触发Click事件。单击表单空白区。当指针位于标题栏、控制菜单框或
21、窗口边界上时,不发生表单的Click事件。单击微调控件的文本输入区。单击废止的控件时,废止控件所在的表单发生Click事件。6和鼠标操作相关的常用事件水利水电出版社沈阳市计算机学校 王焕杰(2)DblClick:当连续两次快速按下鼠标左键(主键)并释放时,此事件发生。当从列表框或组合框中选择一个选项并按回车键时,也发生DblClick事件。如果在系统指定的双击时间间隔内不发生DblClick事件,对象认为这种操作是一个Click事件。因此,当向这些相关事件中添加过程时,必须确认这些事件不冲突。另外,不响应DblClick事件的控件可能会将一个双击事件确认为两个单击事件。6和鼠标操作相关的常用事
22、件水利水电出版社沈阳市计算机学校 王焕杰7设置访问键代表访问键的字符在菜单上或对话框中加有下划线或突出显示。同时按下Alt键和访问键可以激活菜单或对话框。有时用来指代热键。设置访问键的方式是在设置Caption属性时,在访问键的相关字母前加/Close则显示的结果为Close,设置的访问键为Alt+C。水利水电出版社沈阳市计算机学校 王焕杰8设置控件的Tab键次序按键盘上的Tab键时,焦点从一个字段或对象移向另一个字段或对象的次序。对表单中的控件来说,按照控件添加的次序指定Tab键次序,每个新建控件都位于Tab键次序的末尾。一个良好的Tab键次序,对于用户的使用以及提高用户的工作效率是至关重要
23、的。可以通过“属性”窗口来调整个别控件的Tab键值也可以通过菜单“显示”“Tab键次序”命令来依次指定。水利水电出版社沈阳市计算机学校 王焕杰9设置工具提示文本ToolTipText:指定控件工具的提示文本。当在运行状态时,鼠标悬停在相关控件上方,系统会给出相关的提示。水利水电出版社沈阳市计算机学校 王焕杰10启用和废止控件在某给定情况下,如果禁止使用某个控件,可以将该控件的Enabled属性设置为“假”(.F.)。将每个按钮的Enabled属性设置为“真”(.T.)或“假”(.F.),可以启用或废止组中单个选项按钮或命令按钮;也可通过设置组的Enabled属性来启用或废止组中的全部按钮。如下
24、面一行代码所示:Tmand1.Enabled=.F.当控件的Enabled属性设置为“假”(.F.)时,控件的所有事件都将废止,但会显示出禁用的前景色和背景色。水利水电出版社沈阳市计算机学校 王焕杰11.定义表单属性表5-3表单行为属性(一)属性说明默认值AlwaysOnTop控制表单是否总是处在其他打开窗口之上“假”(.F.)AutoCenter控制表单初始化时是否让表单自动在VisualFoxPro主窗口中居中“假”(.F.)BackColor决定表单窗口的颜色255、255、255BorderStyle决定表单是否没有边框,还是具有单线边框、双线边框或系统边框。如果BorderStyle
25、为3可调边框,用户能重新改变表单大小3Caption决定表单标题栏显示的文本Form1Closable控制用户是否能通过双击“关闭”框来关闭表单“真”(.T.)DataSession控制表单或表单集里的表是否能在可全局访问的工作区中打开,或仅能在表单或表单集所属的私有工作区内打开1MaxButton控制表单是否具有最大化按钮真(.T.)水利水电出版社沈阳市计算机学校 王焕杰11.定义表单属性表5-3表单行为属性(二)属性说明默认值MinButton控制表单是否具有最小化按钮真(.T.)Movable控制表单是否能移动到屏幕的新位置真(.T.)ScaleMode控制对象的尺寸和位置属性的度量单位
26、是pixels还是像素。由“选项”对话框中的设置决定由“选项”对话框中的设置决定Scrollbars控制表单所具有的滚动条类型0-无TitleBar控制标题栏是否显示在表单的顶部1-打开ShowWindow控制表单是否在屏幕中、悬浮在顶层表单中或作为顶层表单出现0-在屏幕中WindowState控制表单是最小化、最大化还是正常状态0-普通WindowType控制表单是非模式表单(默认)还是模式表单。如果表单是模式表单,用户在访问应用程序用户界面中任何其他单元前必须关闭这个表单0-无模式水利水电出版社沈阳市计算机学校 王焕杰12指定表单的图标在VisualFoxProforWindows中,可指
27、定表单的图标;当该表单在WindowsNT窗口中最小化或位于Windows95的标题栏上时显示为这个图标。如果要指定表单的图标,将表单的Icon属性设置为一个.ico文件的文件名。若要指定表单的图标,打开表单,再打开“属性”窗口,将Icon属性设置为希望显示的.ico文件。水利水电出版社沈阳市计算机学校 王焕杰5.3.2任务实现(1)效果如图5-34所示,添加按钮和图片,设置按钮的名称。各按钮的Click事件的代码分别如下:“采购商品”按钮Click事件:doform商品信息“生产商”按钮Click事件:doform生产商“供货商”按钮Click事件:doform供货商“会员注册”按钮Clic
28、k事件:doform会员注册“用户注册”按钮Click事件:doform用户注册“采购商信息”按钮Click事件:reportform采购商信息报表preview“生产商信息”按钮Click事件:reportform生产商信息报表preview水利水电出版社沈阳市计算机学校 王焕杰5.4任务三利用程序浏览数据5.4.1相关知识1程序设计的基本概念程序设计(程序设计(Programming)是指设计、编制、调试程序的方法和过程(程序设计=数据结构+算法)。它是目标明确的智力活动。由于程序是软件的本体,软件的质量主要通过程序的质量来体现,在软件研究中,程序设计的工作非常重要,内容涉及有关的基本概念
29、、工具、方法及方法学等。按照结构性质,有结构化程序设计与非结构化程序设计之分。前者是指具有结构性的程序设计方法与过程。它具有由基本结构构成复杂结构的层次性;后者反之。按照用户的要求,有过程式程序设计与非过程式程序设计之分。水利水电出版社沈阳市计算机学校 王焕杰2程序设计的过程软件设计思路和方法的一般过程,包括设计软件的功能和实现的算法及方法、软件软件设计思路和方法的一般过程,包括设计软件的功能和实现的算法及方法、软件的总体结构设计和模块设计、编程和调试、程序联调和测试以及编写、提交程序。的总体结构设计和模块设计、编程和调试、程序联调和测试以及编写、提交程序。(1)系统分析员通过和用户的沟通初步
30、了解需求,列出系统的主要功能模块,每个主要功能模块可能会有哪些小功能模块,对于有些需求比较明确相关的界面时,在这一步里可以初步定义好少量的界面。(2)系统分析员深入地了解和分析需求,根据自己的经验和需求做出一份系统的功能需求文档。文档会清楚列出系统大致的主要功能模块,主要功能模块有哪些小功能模块,并且会列出相关的界面和界面功能。(3)系统分析员和用户再次确认需求。(4)系统分析员根据确认的需求文档所列出的界面和功能需求,用迭代的方式对每个界面或功能做系统的概要设计。(5)系统分析员把写好的概要设计文档提交给程序员,程序员根据所列出的功能进行设计和编写代码。(6)测试编写好的系统,交给用户使用,
31、用户使用后逐一确认每个功能,然后验收。水利水电出版社沈阳市计算机学校 王焕杰3程序设计基础(1)变量。变量是在程序设计中最重要的一个要素,几乎任何一个程序设计语言中都要有变量存在。操作过程中可以改变其取值或数据类型的数据项。在VisualFoxPro系统中,变量分为字段变量、内存变量、数组变量和系统变量4类。此外,作为面向对象的程序语言,VisualFoxPro系统在进行面向对象的程序设计中引入了对象的概念,对象实质上也是一类变量。确定一个变量,需要确定其3个要素:变量名、数据类型和变量值。命名约定:在VisualFoxPro系统中,将表示、存储数据的常量、变量、数组、字段、记录、对象、表、数
32、据库等,都称为数据容器。所有数据容器均需命名以相互区别,为规范各类对象的命名,VisualFoxPro系统推荐若干“命名约定”供用户参考,以提高操作命令与程序的可读性和规范性。使用字母、下划线和数字命名。一般建议不采用汉字命名。命名以字母或下划线开头;除自由表中字段名、索引的TAG标识名最多只能有10个字符外,其他的命名可使用1128个字符。避免使用VisualFoxPro的保留字。水利水电出版社沈阳市计算机学校 王焕杰 字段变量。字段变量。在VisualFoxPro系统中,表由若干记录构成,每个记录包含若干数量相同的字段,而同一字段在不同记录中对应不同的值。所以字段是变量。字段变量与其他变量
33、不同,是定义在表中的变量,随表的存取而存取,是永久性变量。字段变量的变量名即字段名,数据类型为VisualFoxPro系统中的任意数据类型,变量值即字段值。内存变量。内存变量。内存变量是用户在内存中定义的,用来存放程序运行的中间结果和最终结果,是进行数据的传递和运算的变量。有一种内存变量在全部程序、过程和自定义函数,以及它调用的程序、过程和自定义函数中都有效,这就是全局型内存变量。全局型内存变量使用Public定义,在后面的实例中会有它的应用。系统变量。系统变量。系统变量是VisualFoxPro系统特有的内存变量,由VisualFoxPro系统定义、维护。系统变量的变量名均以下划线“_”开始
34、,如_WINDOWS、_CLIPTEXT等。因此在定义内存变量和数组变量名时,不要以下划线开始,以免与系统变量名冲突。系统变量设置、保存了很多系统的状态、特性,了解、熟悉并充分地运用系统变量,会给数据库系统的操作和管理带来很多方便,特别是开发应用程序时更为突出。水利水电出版社沈阳市计算机学校 王焕杰a变量的保存。VisualFoxPro提供相应命令,可用文件形式将某些变量保存起来,以便重复使用。格式:格式:SAVETOALLLIKE|ALLEXCEPT功能:功能:将指定变量的信息保存到指定的变量文件(*.MEM)中。ALLLIKE:只保存符合通配符条件的所有变量。ALLEXCEPT:只保存不符
35、合通配符条件的所有变量。b变量的恢复。需要保存在文件中的变量信息时,必须先恢复到内存后方可使用。格式格式:RESTOREFROMADDITIVE功能:功能:将指定变量文件(*.MEM)中的变量信息恢复到内存中。ADDITIVE:省略此项,清除内存所有变量后再恢复文件中变量的信息;加选此项,将变量文件中的变量信息追加到内存现有变量信息中。c变量的清除。VisualFoxPro系统对定义内存变量的数量是有限制的,应及时清理,尽量减少内存的占用,以定义其他变量。格式:RELEASERELEASEALLLIKE|EXCEPT水利水电出版社沈阳市计算机学校 王焕杰(2)分支结构。简单的条件语句。格式:I
36、FENDIF说明:条件表达式可以是各种表达式的组合,其值必须是逻辑“真”或“假”。当条件表达式的值为“真”时,先执行IF与ENDIF间的语句,然后执行ENDIF后面的语句;当条件表达式的值为“假”时,直接执行ENDIF后面的语句。例1:从键盘输入一个数,若小于0,则显示“输入的是负数”。*liti1clearinput输入一个数:toxifx0?输入的是负数endif水利水电出版社沈阳市计算机学校 王焕杰带ELSE的条件语句。格式:IFELSEENDIF说明:当条件表达式的值为“真”时,先执行命令序列1,然后转去执行ENDIF后面的语句;当条件表达式的值为“假”时,先执行命令序列2,然后转去执
37、行ENDIF后面的语句。例2:从键盘输入一个数,若小于0,显示“输入的是负数”;否则显示“输入的是非负数”。*liti2clearinput输入一个数:toxifx0?输入的是负数else?输入是的非负数endif水利水电出版社沈阳市计算机学校 王焕杰IF条件语句的嵌套。格式1:IFIFELSEENDIFELSEENDIF当“条件1”为“真”,同时“条件2”为“真”时,执行“命令序列1”。当“条件1”为“真”,同时“条件2”为“假”时,执行“命令序列2”。当“条件1”为“假”,执行“命令序列3”。水利水电出版社沈阳市计算机学校 王焕杰格式2:IFELSEIFELSEENDIFENDIF当“条件
38、1”为“真”,执行“命令序列1”。当“条件1”为“假”,同时“条件2”为“真”时,执行“命令序列2”。当“条件1”为“假”,同时“条件2”为“假”时,执行“命令序列3”。水利水电出版社沈阳市计算机学校 王焕杰例3:从键盘输入一个数,若小于0,显示“输入的是负数”;若等于0,显示“输入的是零”;若大于0,则显示“输入的是正数”。*liti3clearinput输入一个数:toxifx0?输入的是负数elseifx=0?输入的是零else?输入的是正数endifendif实现过程与例2一样,都是在命令窗口中执行,只是新建的文件名要另起一个,以免重复,这里使用liti4作为文件名,读者也可以自己起一
39、个名字。水利水电出版社沈阳市计算机学校 王焕杰DOCASE条件语句的嵌套。DOCASECASE条件表达式1命令序列1CASE条件表达式2命令序列2.CASE条件表达式N命令序列NOTHERWISE命令序列N+1ENDCASE在执行DOCASE命令时,依次判断各条件,若为.T.,就执行对应的,然后转去执行ENDCASE后面的语句。若为.F.,不执行,继续判断下一个条件。若没有一个条件为T,则执行OTHERWISE后面的。若没有OTHERWISE语句,则不作任何操作就转去执行ENDCASE之后的语句。水利水电出版社沈阳市计算机学校 王焕杰例4:利用docase判断今天是星期几。*liti4inpu
40、t输入一个1-7的数:toxdocasecasex=1?星期一casex=2?星期二casex=3?星期三casex=4?星期四casex=5?星期五casex=6?星期六casex=7?星期日otherwise?请输入要求输入的数字!endcase水利水电出版社沈阳市计算机学校 王焕杰(3)循环结构.条件循环(“当”型循环控制语句)。a语句格式:DOWHILEENDDOb执行过程:当执行到DOWHILE语句时,首先判断条件表达式的值是否为真,若为真则执行下面的命令序列,遇到ENDDO即返回到循环头,再检查条件是否为真,如果条件仍为真,则再执行序列;如此反复检查和执行,直到的值为假,即退出循环
41、,转去执行ENDDO后面的语句。c说明。循环体:被重复执行的命令序列。DOWHILE与ENDDO必须配对使用。循环条件的改变、死循环、循环的退出。d循环辅助语句格式:EXIT功能:用于终止本层循环,无条件转移到本层ENDDO后面的语句去执行。格式:LOOP功能:终止本次循环,返回到循环头,进行本层次的下一次循环。水利水电出版社沈阳市计算机学校 王焕杰例5:循环输出1+2+3+100的和。*liti5CLEAR&清除屏幕显示信息S=0&设置变量S初始值为0,用于保存和N=1&设置变量N初始值为1,用于计数DOWHILEN=100&当N100时,执行DO和ENDDO之间的代码S=S+N&将S+N的
42、值赋给SN=N+1&N的值增加1ENDDO?S=,S实现过程与例2一样,都是在命令窗口中执行,只是新建的文件名要另起一个,免得重复,这里使用liti6作为文件名,读者也可以自己起一个名字。水利水电出版社沈阳市计算机学校 王焕杰步长循环(“计数”型循环控制语句)。格式:FOR=TOSTEPENDFOR功能:根据给定的次数重复执行命令序列,实现程序循环。说明:STEP步长值:是循环控制变量递增或递减的步长。如果步长值为正,循环控制变量递增;如果步长值为负,则循环控制变量递减。如果缺省STEP子句,循环控制变量每次的增量为1。水利水电出版社沈阳市计算机学校 王焕杰例6:求1+2+3+99+100的值
43、。*liti6s=0forx=1to100&循环递增X的值,每次增长1s=s+xendfor?s=,s实现过程与例2一样,都是在命令窗口中执行,只是新建的文件名要另起一个,免得重复,这里使用liti7作为文件名,读者也可以自己起一个名字。水利水电出版社沈阳市计算机学校 王焕杰5.4.2任务实现(1)在“项目”选项卡中,建立一个自定义表单,命名为“程序结果”,用来输出分支结构、循环结构和统计用户数量的结果,如图5-36所示。注:Label1为标签。图5-36程序运行及结果显示水利水电出版社沈阳市计算机学校 王焕杰(2)编写“分支结构”按钮的代码。a=5Ifa3&如果a3thisform.labe
44、l1.caption=比3大&在标签上显示最终结果else&如果a3,则在标签中显示比3小,否则显示比3大。上面的标签中,主要利用的就是caption属性,而按钮的事件就是Click事件,如图5-37所示。图5-37按钮事件选择水利水电出版社沈阳市计算机学校 王焕杰(3)编写“循环结构”按钮的代码。S=0N=1DOWHILEN0,enabled为.T.,则当表单启动时计时器便开始计时。若enabled为.F.,则计时器不启动,调用reset方法可使计时器重新从0开始计时。图5-42计时器属性注计时器控件在运行时是不可见的,所以在设计时可把它放置在表单的任意位置。水利水电出版社沈阳市计算机学校
45、王焕杰4CHR函数CHR函数,根据指定的ASCII数值代码返回其对应的字符。5Time函数该函数主要是对时间进行操作,该类操作主要应用有:在注册用户时,希望用户在一定时间范围内读取一些协议;可以在某些页面进行时间的显示;可以做一些退出的设置,如在退出某些系统时,为了避免某些错误操作,导致退出系统而尚未保存信息,可以用倒计时来提醒用户,这种方式也用到了一些大型的网络游戏,利用这种方式来存储人物数据。与日期相关的函数如表5-5所列。表5-5日期相关的函数函数名操作例结果DATE()求当前日期DATE()2001/11/12DATETIME()求当前日期和时间DATETIME()2001/11/12
46、/0:22:33amYEAR(D)求年份YEAR(DATE()2001MONTH(D)求月份(数值)MONTH(DATETIME()11CMONTH(D)求月份字符)CMONTH(DATETIME()NovemberDAY(D)求日期DAY(DATE()12DOW(D)求星期几(数值)DOW(DATE()1CDOW(D)求星期几(英文)CDOW(DATE()sundayTIME(D)求当前时间TIME(DATE()10:20:38am水利水电出版社沈阳市计算机学校 王焕杰5.6.2任务实现:退出窗体在程序设计和软件开发中,经常需要设计计时器,如秒表、正计时器、倒计时器等。这些计时器的设计方法大
47、同小异,本文以倒计时器设计为例介绍两种设计倒计时器的方法。VisualFoxPro中的计时器控件有一个Timer事件,每经过Interval(单位为毫秒)属性指定的时间就执行该事件一次。利用该控件的这一特点再配合一些程序,可设计各种计时器,包括倒计时器。本程序通过计时器控件和时间函数seconds()来设计倒计时器。seconds()函数可以以秒为单位返回自午夜以来经过的时间。在“开始”按钮的Click事件中加入代码:t0seconds()。在计时器控件的Timer事件代码中加入:t1seconds()、t210t0、t3t2t1。t0为单击“开始”按钮时离午夜的时间,t1为计时器每次触发时距
48、午夜的时间,t2为定时结束时距午夜的时间,t3为剩余时间。水利水电出版社沈阳市计算机学校 王焕杰(1)打开超市管理系统工程,新建立一个窗体退出系统。(2)在窗体设计器中添加如图5-43所示的控件。图5-43退出表单(3)程序清单如下。表单Form1的Init事件代码:publict0&声明变量t0t0=seconds()&设置t0为表单运行的当前时间thisform.timer1.enabled=.t.&可以直接在属性中设置标签Label1的属性Caption:退出系统标签Label2的属性Caption:10秒钟水利水电出版社沈阳市计算机学校 王焕杰计时器Timer1的属性Interval:
49、500&时间间隔计时器Timer1的timer事件代码:t1seconds()&设置t1为表单运行后每次计时器响应的时间ift1-t0=10&判断当前时间与表单运行时的时间差messagebox(定时时间到!)elsethisform.label5.captionint(10-(t1-t0)endif命令按钮Command1的属性Caption:退出命令按钮Command1的Click事件代码:Quit命令按钮Command2的属性Caption:取消命令按钮Command2的Click事件代码:releasethisform说明:在上面的程序中,只是对倒计时的代码作一些修改,只要适当对上面的
50、代码进行修改,就可以改变出很多的实用功能。水利水电出版社沈阳市计算机学校 王焕杰课后练习利用计时器制作一个表单,要求用户阅读注册协议,在30秒后才可以进行下一步操作。要求只有剩余时间为0时按钮才可以使用,如图5-44所示。图544退出提示水利水电出版社沈阳市计算机学校 王焕杰5.7任务六商品信息浏览5.7.1相关知识类是面向对象程序设计中非常重要的一个知识点,正是类的存在,使得面向对象程序设计变得丰富多彩。恰当地使用类不仅可以使程序更加美观,更可以减轻大量的重复性工作。利用向导实现表单可以很快速地生成数据表单。但这并不是万能的方法,对于一些有特殊功能的表单并不能完全利用这种方法来生成。在这种情