VisualFoxPro程序设计案例教程 第5章 建立用户使用界面.ppt

上传人:sccc 文档编号:5698772 上传时间:2023-08-11 格式:PPT 页数:117 大小:1.66MB
返回 下载 相关 举报
VisualFoxPro程序设计案例教程 第5章 建立用户使用界面.ppt_第1页
第1页 / 共117页
VisualFoxPro程序设计案例教程 第5章 建立用户使用界面.ppt_第2页
第2页 / 共117页
VisualFoxPro程序设计案例教程 第5章 建立用户使用界面.ppt_第3页
第3页 / 共117页
VisualFoxPro程序设计案例教程 第5章 建立用户使用界面.ppt_第4页
第4页 / 共117页
VisualFoxPro程序设计案例教程 第5章 建立用户使用界面.ppt_第5页
第5页 / 共117页
点击查看更多>>
资源描述

《VisualFoxPro程序设计案例教程 第5章 建立用户使用界面.ppt》由会员分享,可在线阅读,更多相关《VisualFoxPro程序设计案例教程 第5章 建立用户使用界面.ppt(117页珍藏版)》请在三一办公上搜索。

1、第5章 建立用户使用界面,第一章,本章目的简单了解有关面向对象编程的特点和基础知识掌握程序设计的基本概念和常用命令掌握窗体的运行和关闭熟悉窗体的常用事件掌握窗体中的控件属性及代码编写本章任务任务一:录入超市管理系统数据任务二:设计用户主界面任务三:程序设计初步任务四:用户登录任务五:退出窗口任务六:商品信息浏览任务七:表单的综合应用,5.1 基础知识,面向对象的程序设计(OOP)(Object-Oriented Programming,OOP)立意于创建软件重用代码,具备更好地模拟现实世界环境的能力,这使它被公认为是自上而下编程的优胜者。面向对象的编程语言使复杂的工作条理清晰,编写容易,它是一

2、场编程技术方面的革命。Visual FoxPro是一种混合型语言,可以使用面向对象编程,也可以使用传统的过程化编程。,5.1.1 抽象在面向对象中的作用,1抽象的概念一般来讲,抽象是通过从特定的实例中抽取共同的性质以形成一般化的概念的过程。抽象是对某个系统的简化的描述,即强调该系统中的某些特征,而忽略一部分细节。简单地说,抽象是人们在理解复杂现象和求解复杂问题中处理复杂事物的主要工具。2面向对象抽象的实现面向对象的原理有4个,分别是数据抽象、行为共享、进化和确定性。(1)数据抽象:它为程序员提供了一种对数据和为操作这些数据所需要的算法的抽象。数据抽象包含两个概念:模块化和信息隐藏。模块化的优点

3、是便于修改或维护,系统发现问题后,可以确定问题出在哪个模块上。在支持信息隐藏的系统中,错误的影响也通常被限制在一个模块内,增强了系统的可靠性。(2)行为共享:行为是数据抽象引进的概念,行为是由实体的外部接口进行定义的。行为共享是指许多实体具有相同的接口,这将增加系统的灵活性。(3)进化:进化是考虑到实际中的需求会很快发生变化。面向对象的方法要支持进化过程就是要适应可能发生的不断变化。(4)确定性:这里确定性是指用于描述一个系统确定的行为。一个确定的系统应该确保其中每个行为项都有一个确切的解释,系统不会因不能响应某一行为而失败。,5.1.2 面向对象的基本特征,面向对象的系统包含3个要素:对象、

4、类和继承。1对象在不同领域中对对象有不同的理解。一般认为,对象就是一种事物,一个实体。从概念上讲,对象是代表正在创建的系统中的一个实体。例如,一个商品销售系统,像顾客、商品、柜台、厂家等都是对象。从实现形式上讲,对象是一个状态和操作(方法)的封装体。状态是由对象的数据结构的内容和值定义的,方法是一系列的实现步骤,它是由若干操作构成的。2类类是创建对象的样板,它包含着所创建对象的状态描述和方法的定义。一个类的所有对象都有相同的数据结构,并且共享相同的实现操作的代码,而各个对象有着各自不同的状态。类是所有对象的共同行为和不同状态的集合体。3继承继承提供了创建新类的一种方法,这种方法就是一个新类可以

5、通过对已有的类进行修改或扩充来满足新类的需求。新类共享已有类的行为,而自己还具有修改或额外添加的行为。从一个类继承定义的新类,将继承已有类的所有方法和属性,并且可以添加所需要的新的方法和属性。新类被称为已有类的子类,而已有类称为父类,又叫基类。新类又叫派生类。,5.2 任务一 录入超市管理系统数据,5.2.1 相关知识数据库的对话框在Visual FoxPro中称为“窗体”,一般还称为表单。窗体也是Visual FoxPro 中的一种对象,它使用计算机屏幕将数据库中的表或查询中的数据显示出来。由于数据库软件是给用户使用的,所以要为使用的用户提供一个友好的使用界面。这是建立一个窗体的基本目标。一

6、个设计优秀的窗体是非常必要的。不管数据库中表或查询设计得有多好,如果窗体设计得十分杂乱,而且没有任何提示,就会令使用者感觉到迷惑,甚至增加失误的概率。这样的窗体就不利于数据库软件的应用和推广。本任务将介绍如何使用Visual FoxPro编写一个简单的程序。在此之前先介绍Visual FoxPro的各个部分的功能,包括工具箱、项目管理器、“属性”窗体设计器等,下面分别介绍这几部分的功能。,1工具箱,当建立一个新的表单时,或者打开表单设计器时,一般会默认显示工具箱,上面提供了Visual FoxPro 表单中常用的各个控件。选中控件,然后在窗体设计器中拖动鼠标,即可在其中绘制控件。初始状态的工具

7、箱只有一个“常用”选项卡,在工具箱上右击,在弹出的快捷菜单中选择“添加选项卡”命令,可以为工具箱添加选项卡;右击,选择相关选项,可以打开其他选项卡。,常用表单控件名称,2项目管理器,项目是Visual FoxPro的组织应用程序的方式,一般而言,一个工程包含开发一个应用程序所需要的所有文件,包括窗体文件、程序文件、数据库文件、表文件、报表文件、菜单文件、索引文件等。,5.2.2 任务实现,本小节主要技能点如下:(1)创建最基本表单。(2)用表单向导创建表单。(3)一对多表单向导,1创建最基本的表单,在的“项目管理器”中,选择“文档”选项卡,选择下面列表框中的“表单”选项,在右侧操作区单击“新建

8、”按钮。在“新建表单”对话框中单击“新建表单”按钮。,选择“文件”菜单中的“保存”命令,选择相关的文件夹并输入正确的表单名即完成第一个表单的制作,如图所示。,选择要保存表单的位置,也可以重新命名该表单,然后单击“保存”按钮,该表单就会出现在当前项目中,如图所示。关闭设计器,选择第一个表单,在右侧的功能区单击“运行”按钮。,表单运行结果如图5-9所示。,单击Form1右上角的关闭按钮,可以关闭Form1。再次选择第一个表单,单击“修改”按钮,可以对Form1(第一个表单)进行修改。,选择菜单中的“显示”“表单控件工具栏”命令,可以控制表单控件工具栏的显示。,单击工具栏中的按钮,并在第一个表单(F

9、orm1)上再次单击,则会在Form1中创建一个新的按钮。,双击Command1按钮,会出现该按钮的代码编辑器,在Command1的click事件中输入thisform.release,即运行表单后,单击此按钮就会退出表单。关闭表单设计器,运行表单,测试按钮Command1的效果。,2用表单向导创建简单表单,(1)在“项目”菜单中,选择“新建”“表单向导”命令,出现如图所示的界面。,(2)选择“表单向导”选项,单击“确定”按钮。(3)选择一个数据表,然后为该表建立一个表单,这里选择的是“用户”表,单击按钮可以把“用户”表的所有字段全部选中,单击按钮可以选取单个字段。单击“下一步”按钮。,(4)

10、如图5-15所示,在该对话框中选择一个自己喜欢的样式,使表单更加美观,单击“下一步”按钮继续。,(5)该对话框主要是对“用户”表的数据进行排序的设置,这里选择“用户编号”作为索引,单击“添加”按钮,再单击“下一步”按钮,(6)根据该对话框的提示,可以单击“预览”,观看一下效果,也可以直接单击“完成”按钮,完成表单的制作,(7)单击“预览”按钮,效果如图5-18所示,返回向导,单击“完成”按钮,将表单命名为“用户”,选择一个存放表单的位置,如D:superMarket,3一对多表单向导,选择“项目”菜单中的“新建”命令,选择“一对多表单向导”单击“确定”按钮,效果如图5-20所示。选择“供货商”

11、表,然后将字段导入到“选定字段”列表框中。单击“下一步”按钮,图519 选择“一对多表单向导”选项,图520 父表选择,从子表中选择字段(这里选择“商品信息”表,导出所有字段,单击“下一步”按钮。),如图5-22所示,是建立两个表单的关系,以便联动显示。单击“下一步”按钮。,图522 建立表间关系,如图5-23所示,在“样式”列表框中选择自己喜欢的样式,这里选择“阴影式”,单击“下一步”按钮。,图523 选择表单样式,图5-24是选择排序次序的字段,这里选择“供货商编号”,单击“下一步”按钮,图524 数据排序方式,单击“完成”按钮,保存为“供货渠道”,图525 完成及相关选项,单击“完成”按

12、钮,保存为“供货渠道”,运行表单,课后练习,1利用向导制作一个“入库记录”的表单,并用表单设计器修改和美化产生的表单,利用此表单浏览库存商品信息,并通过此表单输入相关的记录。,课后练习,2利用向导分别制作以下几个数据表的表单,如“供货商”表、“会员”表、“交易”表、“商品信息”表、“生产商”表、“销售”表、“用户”表,并通过表单为相关的数据表添加数据和修改数据。,5.3 任务二 设计用户主界面,设计用户主界面,并为主界面各项按钮指定代码,用以访问相关表单。,5.3.1 相关知识点,1容器和控件 2标签控件 3“属性”窗口 4和字体有关的属性5命令按钮控件 6和鼠标操作相关的常用事件 7设置访问

13、键 8设置控件的Tab键次序 9设置工具提示文本 10.启用和废止控件 11.定义表单行为 12指定表单的图标,1容器和控件,Visual FoxPro 6.0的基类共分成两个大类:容器类和非容器类。一般称容器类基类为容器,而把非容器类基类称为控件,有时也把所有基类都称为控件。,(1)容器类。容器类可以包含其他对象,并且允许访问这些对象。,(2)控件类。控件类的封装比容器类更为严密,但也因此丧失了一些灵活性。,(3)容器中各对象的调用。在进行容器类“子类”或“对象”的设计时,往往要调用容器中某一特定对象,这就要掌握OOP方法中对象的标识方法。例如,在图5-12所示的代码编辑器中输入。mand1

14、.caption=点击事件,并删除thisform.release。运行表单,单击按钮,可以看到最后的效果。其中thisform是command1的父容器,command1是其中的一个控件,caption是command1的属性。文字“点击事件”是这个属性的值。注:thisform在Visual FoxPro中用来代表当前的表单。,2标签控件,在设计表单界面时,几乎都要有一些提示某个控件的作用的文字,比如在注册时,就有用户名、密码等文字在某些表单控件之前进行显示,提示用户某控件可以做什么,如果不知道,用户就会不了解这个界面,注册也就无从下手,这就是标签的作用。,标签,3“属性”窗口,“属性”窗

15、口用于修改窗体和控件的属性,如图5-30所示,其中上方的下拉列表框中列出当前的窗体及其控件的名称,可以通过下拉列表来选择窗体或某一个控件。在窗体设计器中选择某一个对象之后,“属性”窗口也会显示该对象的属性。,图5-30 表单“属性”窗口,在属性列表中,caption属性最为常用,用于显示文本。而为了编程方便些,还要修改name属性,即在代码中引用对象时所用的名称。,在设计表单时,为了让界面更友好、更美观,通常都要对界面进行一定的美化,其中很重要的一项就是对字体属性的设置,常用的控件如标签和按钮等都会有字体属性,可以在“属性”窗口中进行设置,图5-31所示为与字体有关的属性。,4和字体有关的属性

16、,图5-31 和字体有关的属性,FontBold、FontItalic、FontStrikethru、Fontunderline属性:指定文本是否具有粗体、斜体、删除线或下划线等效果。FontExtend的作用是指定文本是否可扩展。FontName属性:指定显示文本的字体名,默认值为 Arial FontSize属性:默认的设置是 9 磅 FontOutline属性:作用是指定与控件相关联的文字是否显示为空心字 FontShadow属性:作用是指定与控件相关联的文字是否带有阴影 FontSize属性:指定对象文本的字体大小,以磅为单位,默认值为10磅 ForeColor属性:指定用于显示对象中

17、文本前景色,5命令按钮控件,命令按钮通常用来启动一个事件,如关闭一个表单、移动到不同记录、打印报表等动作。可使用Caption属性指定在命令按钮上显示的文本。命令按钮常用的事件是Click事件,当编辑代码时,可以选择执行的事件,如图5-33所示。,图5-33 命令按钮事件选择,(1)Click:当在程序中包含触发此事件的代码,或者将鼠标指针放在一个控件上按下并释放鼠标左键,或者更改特定控件的值,或在表单空白区单击时,此事件发生。Click 事件发生在用户:单击复选框、命令按钮、列表框或选项按钮控件时。使用箭头键或按鼠标键在下拉列表框或列表框中选择一项时。在命令按钮、选项按钮或复选框有焦点时按S

18、PACEBAR键时。表单中有 Default 属性设置为“真”(.T.)的命令按钮并且按回车键时。按一个控件的访问键。例如,若一个命令按钮的标题为“Go”,则按ALT+G组合键可触发Click事件。单击表单空白区。当指针位于标题栏、控制菜单框或窗口边界上时,不发生表单的 Click 事件。单击微调控件的文本输入区。单击废止的控件时,废止控件所在的表单发生Click事件。,6和鼠标操作相关的常用事件,(2)DblClick:当连续两次快速按下鼠标左键(主键)并释放时,此事件发生。当从列表框或组合框中选择一个选项并按回车键时,也发生 DblClick 事件。如果在系统指定的双击时间间隔内不发生 D

19、blClick 事件,对象认为这种操作是一个 Click 事件。因此,当向这些相关事件中添加过程时,必须确认这些事件不冲突。另外,不响应 DblClick 事件的控件可能会将一个双击事件确认为两个单击事件。,6和鼠标操作相关的常用事件,7设置访问键,代表访问键的字符在菜单上或对话框中加有下划线或突出显示。同时按下 Alt 键和访问键可以激活菜单或对话框。有时用来指代热键。设置访问键的方式是在设置Caption属性时,在访问键的相关字母前加/Close则显示的结果为Close,设置的访问键为Alt+C。,8设置控件的Tab键次序,按键盘上的Tab键时,焦点从一个字段或对象移向另一个字段或对象的次

20、序。对表单中的控件来说,按照控件添加的次序指定Tab键次序,每个新建控件都位于Tab键次序的末尾。一个良好的Tab键次序,对于用户的使用以及提高用户的工作效率是至关重要的。可以通过“属性”窗口来调整个别控件的Tab键值也可以通过菜单“显示”“Tab键次序”命令来依次指定。,9设置工具提示文本,ToolTipText:指定控件工具的提示文本。当在运行状态时,鼠标悬停在相关控件上方,系统会给出相关的提示。,10启用和废止控件,在某给定情况下,如果禁止使用某个控件,可以将该控件的Enabled属性设置为“假”(.F.)。将每个按钮的Enabled属性设置为“真”(.T.)或“假”(.F.),可以启用

21、或废止组中单个选项按钮或命令按钮;也可通过设置组的Enabled属性来启用或废止组中的全部按钮。如下面一行代码所示:Tmand1.Enabled=.F.当控件的Enabled属性设置为“假”(.F.)时,控件的所有事件都将废止,但会显示出禁用的前景色和背景色。,11.定义表单属性,表5-3 表单行为属性(一),11.定义表单属性,表5-3 表单行为属性(二),12指定表单的图标,在Visual FoxPro for Windows 中,可指定表单的图标;当该表单在 Windows NT 窗口中最小化或位于 Windows 95 的标题栏上时显示为这个图标。如果要指定表单的图标,将表单的 Ico

22、n 属性设置为一个.ico 文件的文件名。若要指定表单的图标,打开表单,再打开“属性”窗口,将 Icon 属性设置为希望显示的.ico 文件。,5.3.2 任务实现,(1)效果如图5-34所示,添加按钮和图片,设置按钮的名称。各按钮的Click事件的代码分别如下:“采购商品”按钮Click事件:do form 商品信息“生产商”按钮Click事件:do form生产商“供货商”按钮Click事件:do form 供货商“会员注册”按钮Click事件:do form 会员注册“用户注册”按钮Click事件:do form 用户注册“采购商信息”按钮Click事件:report form 采购商信

23、息报表 preview“生产商信息”按钮Click事件:report form 生产商信息报表 preview,5.4 任务三 利用程序浏览数据,5.4.1 相关知识,1程序设计的基本概念程序设计(Programming)是指设计、编制、调试程序的方法和过程(程序设计=数据结构+算法)。它是目标明确的智力活动。由于程序是软件的本体,软件的质量主要通过程序的质量来体现,在软件研究中,程序设计的工作非常重要,内容涉及有关的基本概念、工具、方法及方法学等。按照结构性质,有结构化程序设计与非结构化程序设计之分。前者是指具有结构性的程序设计方法与过程。它具有由基本结构构成复杂结构的层次性;后者反之。按照

24、用户的要求,有过程式程序设计与非过程式程序设计之分。,2程序设计的过程软件设计思路和方法的一般过程,包括设计软件的功能和实现的算法及方法、软件的总体结构设计和模块设计、编程和调试、程序联调和测试以及编写、提交程序。(1)系统分析员通过和用户的沟通初步了解需求,列出系统的主要功能模块,每个主要功能模块可能会有哪些小功能模块,对于有些需求比较明确相关的界面时,在这一步里可以初步定义好少量的界面。(2)系统分析员深入地了解和分析需求,根据自己的经验和需求做出一份系统的功能需求文档。文档会清楚列出系统大致的主要功能模块,主要功能模块有哪些小功能模块,并且会列出相关的界面和界面功能。(3)系统分析员和用

25、户再次确认需求。(4)系统分析员根据确认的需求文档所列出的界面和功能需求,用迭代的方式对每个界面或功能做系统的概要设计。(5)系统分析员把写好的概要设计文档提交给程序员,程序员根据所列出的功能进行设计和编写代码。(6)测试编写好的系统,交给用户使用,用户使用后逐一确认每个功能,然后验收。,3程序设计基础(1)变量。变量是在程序设计中最重要的一个要素,几乎任何一个程序设计语言中都要有变量存在。操作过程中可以改变其取值或数据类型的数据项。在Visual FoxPro系统中,变量分为字段变量、内存变量、数组变量和系统变量4类。此外,作为面向对象的程序语言,Visual FoxPro系统在进行面向对象

26、的程序设计中引入了对象的概念,对象实质上也是一类变量。,确定一个变量,需要确定其3个要素:变量名、数据类型和变量值。命名约定:在Visual FoxPro系统中,将表示、存储数据的常量、变量、数组、字段、记录、对象、表、数据库等,都称为数据容器。所有数据容器均需命名以相互区别,为规范各类对象的命名,Visual FoxPro系统推荐若干“命名约定”供用户参考,以提高操作命令与程序的可读性和规范性。使用字母、下划线和数字命名。一般建议不采用汉字命名。命名以字母或下划线开头;除自由表中字段名、索引的TAG标识名最多只能有10个字符外,其他的命名可使用1128个字符。避免使用 Visual FoxP

27、ro的保留字。,字段变量。在Visual FoxPro系统中,表由若干记录构成,每个记录包含若干数量相同的字段,而同一字段在不同记录中对应不同的值。所以字段是变量。字段变量与其他变量不同,是定义在表中的变量,随表的存取而存取,是永久性变量。字段变量的变量名即字段名,数据类型为Visual FoxPro系统中的任意数据类型,变量值即字段值。内存变量。内存变量是用户在内存中定义的,用来存放程序运行的中间结果和最终结果,是进行数据的传递和运算的变量。有一种内存变量在全部程序、过程和自定义函数,以及它调用的程序、过程和自定义函数中都有效,这就是全局型内存变量。全局型内存变量使用Public定义,在后面

28、的实例中会有它的应用。系统变量。系统变量是Visual FoxPro系统特有的内存变量,由Visual FoxPro系统定义、维护。系统变量的变量名均以下划线“_”开始,如_WINDOWS、_CLIPTEXT等。因此在定义内存变量和数组变量名时,不要以下划线开始,以免与系统变量名冲突。系统变量设置、保存了很多系统的状态、特性,了解、熟悉并充分地运用系统变量,会给数据库系统的操作和管理带来很多方便,特别是开发应用程序时更为突出。,a变量的保存。Visual FoxPro提供相应命令,可用文件形式将某些变量保存起来,以便重复使用。格式:SAVE TO ALL LIKE|ALL EXCEPT 功能:

29、将指定变量的信息保存到指定的变量文件(*.MEM)中。ALL LIKE:只保存符合通配符条件的所有变量。ALL EXCEPT:只保存不符合通配符条件的所有变量。b变量的恢复。需要保存在文件中的变量信息时,必须先恢复到内存后方可使用。格式:RESTORE FROM ADDITIVE功能:将指定变量文件(*.MEM)中的变量信息恢复到内存中。ADDITIVE:省略此项,清除内存所有变量后再恢复文件中变量的信息;加选此项,将变量文件中的变量信息追加到内存现有变量信息中。c变量的清除。Visual FoxPro系统对定义内存变量的数量是有限制的,应及时清理,尽量减少内存的占用,以定义其他变量。格式:R

30、ELEASE RELEASE ALL LIKE|EXCEPT,(2)分支结构。简单的条件语句。格式:IF ENDIF说明:条件表达式可以是各种表达式的组合,其值必须是逻辑“真”或“假”。当条件表达式的值为“真”时,先执行IF与ENDIF间的语句,然后执行ENDIF后面的语句;当条件表达式的值为“假”时,直接执行ENDIF后面的语句。,例1:从键盘输入一个数,若小于0,则显示“输入的是负数”。*liti1clearinput 输入一个数:to xif x0?输入的是负数endif,带ELSE的条件语句。格式:IF ELSE ENDIF说明:当条件表达式的值为“真”时,先执行命令序列1,然后转去执

31、行ENDIF后面的语句;当条件表达式的值为“假”时,先执行命令序列2,然后转去执行ENDIF后面的语句。,例2:从键盘输入一个数,若小于0,显示“输入的是负数”;否则显示“输入的是非负数”。*liti2clearinput 输入一个数:to xif x0?输入的是负数else?输入是的非负数endif,IF条件语句的嵌套。格式1:IF IF ELSE ENDIFELSE ENDIF当“条件1”为“真”,同时“条件2”为“真”时,执行“命令序列1”。当“条件1”为“真”,同时“条件2”为“假”时,执行“命令序列2”。当“条件1”为“假”,执行“命令序列3”。,格式2:IF ELSE IF ELS

32、E ENDIFENDIF当“条件1”为“真”,执行“命令序列1”。当“条件1”为“假”,同时“条件2”为“真”时,执行“命令序列2”。当“条件1”为“假”,同时“条件2”为“假”时,执行“命令序列3”。,例3:从键盘输入一个数,若小于0,显示“输入的是负数”;若等于0,显示“输入的是零”;若大于0,则显示“输入的是正数”。*liti3clearinput 输入一个数:to xif x0?输入的是负数else if x=0?输入的是零 else?输入的是正数 endifendif实现过程与例2一样,都是在命令窗口中执行,只是新建的文件名要另起一个,以免重复,这里使用liti4作为文件名,读者也可

33、以自己起一个名字。,DOCASE条件语句的嵌套。DO CASE CASE条件表达式1 命令序列1 CASE 条件表达式2 命令序列2.CASE 条件表达式N 命令序列N OTHERWISE 命令序列N+1ENDCASE在执行DO CASE命令时,依次判断各条件,若为.T.,就执行对应的,然后转去执行ENDCASE后面的语句。若为.F.,不执行,继续判断下一个条件。若没有一个条件为T,则执行OTHERWISE后面的。若没有OTHERWISE语句,则不作任何操作就转去执行ENDCASE之后的语句。,例4:利用do case判断今天是星期几。*liti4 input 输入一个1-7的数:to x d

34、o case case x=1?星期一 case x=2?星期二 case x=3?星期三 case x=4?星期四 case x=5?星期五 case x=6?星期六 case x=7?星期日otherwise?请输入要求输入的数字!endcase,(3)循环结构.条件循环(“当”型循环控制语句)。a语句格式:DO WHILE ENDDOb执行过程:当执行到DO WHILE 语句时,首先判断条件表达式的值是否为真,若为真则执行下面的命令序列,遇到ENDDO即返回到循环头,再检查条件是否为真,如果条件仍为真,则再执行序列;如此反复检查和执行,直到的值为假,即退出循环,转去执行ENDDO后面的语

35、句。c说明。循环体:被重复执行的命令序列。DO WHILE 与ENDDO必须配对使用。循环条件的改变、死循环、循环的退出。d循环辅助语句格式:EXIT功能:用于终止本层循环,无条件转移到本层ENDDO后面的语句去执行。格式:LOOP功能:终止本次循环,返回到循环头,进行本层次的下一次循环。,例5:循环输出1+2+3+100的和。*liti5CLEAR&清除屏幕显示信息S=0&设置变量S初始值为0,用于保存和N=1&设置变量N初始值为1,用于计数DO WHILE N=100&当N100时,执行DO 和ENDDO之间的代码 S=S+N&将S+N的值赋给S N=N+1&N的值增加1ENDDO?S=,

36、S实现过程与例2一样,都是在命令窗口中执行,只是新建的文件名要另起一个,免得重复,这里使用liti6作为文件名,读者也可以自己起一个名字。,步长循环(“计数”型循环控制语句)。格式:FOR=TO STEP ENDFOR功能:根据给定的次数重复执行命令序列,实现程序循环。说明:STEP步长值:是循环控制变量递增或递减的步长。如果步长值为正,循环控制变量递增;如果步长值为负,则循环控制变量递减。如果缺省STEP子句,循环控制变量每次的增量为1。,例6:求1+2+3+99+100的值。*liti6s=0for x=1 to 100&循环递增X的值,每次增长1 s=s+xendfor?s=,s实现过程

37、与例2一样,都是在命令窗口中执行,只是新建的文件名要另起一个,免得重复,这里使用liti7作为文件名,读者也可以自己起一个名字。,5.4.2 任务实现,(1)在“项目”选项卡中,建立一个自定义表单,命名为“程序结果”,用来输出分支结构、循环结构和统计用户数量的结果,如图5-36所示。注:Label1为标签。,图5-36 程序运行及结果显示,(2)编写“分支结构”按钮的代码。a=5If a 3&如果a3thisform.label1.caption=比3大&在标签上显示最终结果else&如果a3,则在标签中显示比3小,否则显示比3大。上面的标签中,主要利用的就是caption属性,而按钮的事件就

38、是Click事件,如图5-37所示。,图5-37 按钮事件选择,(3)编写“循环结构”按钮的代码。S=0N=1DO WHILE N=100 S=S+N N=N+1ENDDOTHISFORM.LABEL1.CAPTION=STR(S)&LABEL1为在此表单上建立的一个标签的默认名称上面的代码还是利用命令按钮的click属性和标签的caption属性。这个命令按钮的作用就是求1+2+3+100的和,最终将结果显示到标签中。在代码中,str()需要注意一下,因为标签显示的是文本,而利用循环得出的值是数值型的,所以需要利用该函数将数值型数据转换为字符型。,(4)编写“统计用户数量”按钮的代码。USE

39、 用户&“用户”表是超市系统里的一个数据表 N=0&设置变量N的初始值为0DO WHILE.NOT.EOF()&当数据表没有到达文件尾时Display&显示记录 N=N+1&变量N+1 SKIP&转到下一条记录ENDDO&跳回到do while 语句THISFORM.LABEL1.CAPTION=STR(N)&显示最后统计的结果,课后练习,1制作一个表单,添加一个按钮和标签,利用循环输出100以内的奇数和,代码加入到按钮的单击事件中,单击按钮后在标签上显示结果。提示利用modify command 命令设计程序,利用do命令运行程序,程序名称自定义2利用循环语句,输出数据库中交易表的某会员的交

40、易信息。提示利用modify command 命令设计程序,利用do命令运行程序,代码如下:clearuse 供货商&“供货商”表是超市系统里的一个数据表 do while.not.eof()&当数据表没有到最后记录时 disp&显示记录 skip&转到下一条记录enddo&跳回到do while 语句use&关闭此表3利用循环显示“商品信息”表的最新10条数据。提示可以利用modify command 命令设计程序和用do命令运行程序,也可以利用项目管理器设计程序并运行程序。,5.5 任务四 用户登录,5.5.1 相关知识,1数据环境的使用每一个使用表的表单都包括一个数据环境。数据环境是一个

41、容器对象,它用来定义与表单相联系的数据实体(表、视图)的信息及其相互联系。数据环境容器一般包含一到多个Cursor类对象,表单中所含Cursor类对象的个数与表单关联的数据实体(表、视图)的个数相同,一个Cursor类对象与一个数据实体(表、视图)对应,如果一个表单关联多个表,在数据环境容器中还有一个Relation类对象描述这些表之间的关系。下面对数据环境容器及其可能包含的对象分别进行说明。,(1)游标(cursor)类对象(2)关系(Relation)类对象(3)数据环境设计器,2Init事件对于表单集和其他容器对象来说,容器中对象的init事件在容器的init事件之前触发,因此容器的in

42、it事件可以访问容器中的对象。容器中对象的init事件的发生顺序与它们添加到容器中的顺序相同。如果不创建控制,可以在init事件中返回“假”(.F.),这时不触发 Destroy 事件。例如,下面的代码在 Invoice 表不存在时返回“假”(.F.)。,3接受预先不能确定的输入该功能是一个软件必不可少的功能,举个例子来讲,用户在登录一个系统时,如果没有填写用户名和密码,直接单击登录,结果会怎么样?有两种结果:一种是进入到系统,这就是没有容错的结果,这就使得用户无须注册,进而使得注册功能失败和降低了系统的安全性和权限控制;第二种结果是提示用户输入用户名和密码,如果容错的好一些,还会限制用户输入

43、次数,如果超过预定的次数,这个账号将被锁定。4文本框创建一个文本框(Textbox),从中可以编辑变量、数组元素或字段的内容。所有标准的 Visual FoxPro 编辑功能,如剪切、复制和粘贴在文本框中都可用。使用输入掩码和 Format 属性,可以指定在文本框中如何输入和显示数值。例如,PasswordChar属性就可以设置成希望的任何掩码,如“*”。,5组合框创建一个组合框(Combobox)后,当被选中时,组合框打开,并显示项的列表,从中可选择一项。组合框控件结合了文本框控件和列表框控件的特性。可在文本框部分输入信息或从列表框部分选择一项。通过在组合框控件中的一项前面加一个反斜杠(),

44、可以让该项失效。Style属性确定组合框的类型。若Style属性设为0,则创建一个下拉组合框;若Style属性设为2,则创建一个下拉列表框。6命令按钮组前面已经提到过命令按钮,这里再讲解一下命令按钮组。使用CommandGroup控件可创建一组命令按钮,并且可以单个或作为一组操作其中的按钮。使用CommandButton控件可创建单个命令按钮。可使用ButtonCount属性指定组中的命令按钮数目,使用Caption属性指定命令按钮组的标签。,5.5.2 任务实现,(1)打开超市管理系统工程,新建一个窗体Login。(2)在窗体设计器中添加如图5-39所示的控件。,图5-39 用户登录表单,(

45、3)添加数据环境:右键单击该表单,在弹出的快捷菜单中选择“数据环境”命令,将用户表添加到数据环境中,如图5-40所示。,图5-40 表单添加数据环境,(4)双击“确定”按钮,将会自动切换到代码编辑器,并添加以下代码:,*-确定按钮代码-select 用户&选择用户表,当表单数据环境中只有一个表时可以省略locat for 用户名称=alltrim(thisform.text1.value)&查找相关记录 if found()&如果查找到相关用户 if trim(thisform.text2.value)=trim(用户密码)&检验密码 release thisform&退出窗口 do form

46、 主窗体&打开主窗体 else&密码错误 messagebox(密码有误,请确认以后重新输入,16,错误)thisform.text1.value=&设置text1的值为空 thisform.text2.value=&设置text2的值为空 endif else&如果没有查找到该用户 messagebox(用户名有误,请确认以后重新输入,16,错误)endif,(5)选择菜单“文件”“保存”命令。(6)单击工具栏上的按钮或按+E组合键即可运行窗体。,注:代码说明:首先查找用户表的用户名称,是否有文本框中输入的值,如果找到则判断密码是否和输入的密码相符,相符合,则退出本表单,进入到主窗体,如果不

47、相符则发出提示信息,将用户名和密码的文本框设置为空。如果没有查到该用户名,则发出提示信息。,Alltrim():删除指定字符表达式的前后空格符,并且返回删除空格符后的字符串。Trim():返回删除全部后缀空格后的指定字符表达式。Messagebox():显示一个用户自定义对话框,其中代表“停止”图标,依次是指定在对话框中显示的文本,对话框的高度和宽度根据 cMessageText 适当增大,以包含全部信息;指定对话框中的按钮和图标、显示对话框时的默认按钮及对话框的行为;指定对话框标题栏中的文本。,课后练习,制作一个表单如图5-41所示,当输入一种商品的编号后,核实数据库中是否存在该商品。利用文

48、本框进行数据的输入,利用“查找结果”标签显示结果。,提示查找结果为label,如果查找到则显示相关商品的名称;如果查不到相关商品,则显示“库中无此商品”。,5.6 任务五 退出窗口,5.6.1 相关知识,1给定时间间隔执行指定操作计时器(Timer):提供计时功能,即每隔一段指定的时间就产生一次timer事件,用于控制某些进程。,图标就是计时器控件。,表5-4 定时器属性设置,时间间隔一般不能太小,否则频繁产生timer事件会降低系统的效率。计时器不能自动直接实现定时中断,比如希望8点产生定时事件,应将8点时间与当前时间datetime()相减,换算成秒数后作为interval属性值。,2计时

49、器控件的初始化在使用了计时器以后,就要对它进行初始化设置,设置如图5-42所示。这里主要设置interval和enabled两个属性,具体解释如表5-4所示。3对计时器事件的响应计时器常用的事件是timer事件,常用的方法是reset。在设计阶段,设置interval0,enabled为.T.,则当表单启动时计时器便开始计时。若enabled为.F.,则计时器不启动,调用reset方法可使计时器重新从0开始计时。,图5-42 计时器属性,注计时器控件在运行时是不可见的,所以在设计时可把它放置在表单的任意位置。,4CHR函数CHR函数,根据指定的ASCII数值代码返回其对应的字符。5Time函数

50、该函数主要是对时间进行操作,该类操作主要应用有:在注册用户时,希望用户在一定时间范围内读取一些协议;可以在某些页面进行时间的显示;可以做一些退出的设置,如在退出某些系统时,为了避免某些错误操作,导致退出系统而尚未保存信息,可以用倒计时来提醒用户,这种方式也用到了一些大型的网络游戏,利用这种方式来存储人物数据。与日期相关的函数如表5-5所列。,表5-5 日期相关的函数,5.6.2 任务实现:退出窗体,在程序设计和软件开发中,经常需要设计计时器,如秒表、正计时器、倒计时器等。这些计时器的设计方法大同小异,本文以倒计时器设计为例介绍两种设计倒计时器的方法。Visual FoxPro中的计时器控件有一

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号