1、2022年8月3日1计算机程序设计基础教程(第三版)第第1章章 程序设计与算法程序设计与算法 2022年8月3日2 主要内容 1.1程序设计的基本概念 1.2算法及算法的描述工具 1.3算法设计举例 习题 12022年8月3日31.1 程序设计的基本概念 1.1.1程序与程序设计 1.1.2程序设计的过程和特性 1.1.3程序设计语言 1.1.4程序设计方法 1.1.5程序的质量标准2022年8月3日41.1.1程序与程序设计 为了解决某个实际问题而编排的指令序列称之为程序。程序是由多条指令按照一定的顺序组合而成的。在程序中使用哪些指令?这些指令出现和执行应该按怎样的顺序?程序是基于某种指令系
2、统来实现的。对于计算机程序设计而言,就是要基于某种具体的计算机程序设计语言来编写程序。2022年8月3日51.1.2程序设计的过程和特性 程序设计过程 问题分析、确定算法、编码实现算法算法问题问题输入输入指令指令(computer)输出输出2022年8月3日6程序设计的特性 构造性 构造性决定了不能用统一的标准来衡量程序的质量。构造性决定了难以用形式化的方法来证明程序的正确性。严谨性 编制程序所使用的程序设计语言是上下文无关的形式语言,需要程序员具有认真的工作作风和缜密的逻辑思维能力等基本素质。抽象性 要让计算机来求解现实世界中的某一实际问题,程序员必须将该问题的求解方法和步骤进行归纳和抽象,
3、用计算机能够理解和执行的操作指令来实现每一个解题步骤,将这些指令合理地进行编排和控制,从而形成计算机程序。这就需要程序员具有较强的概括和抽象能力。2022年8月3日71.1.3程序设计语言汇编语言高级语言 通用语言比如,BASIC/Visual BASIC,C/C+/Visual C+,PASCAL等等 专用语言APL是为数组和向量运算设计的简洁而又功能很强的语言;BLISS是为开发编译程序和操作系统而设计的语言;FORTH是为开发微处理机软件而设计的语言;LISP语言和PROLOG语言特别适合于编写人工智能领域的应用程序。数据库管理系统目前常用的数据库管理系统有,SQL Server,Ora
4、cle,Visual FoxPro等等。2022年8月3日8图1.1 解释型语言源程序的执行过程 这种翻译方式执行速度较慢,因为它不产生可执行文件,每次运行都要重新解释一次。源程序源程序和数据和数据计算机计算机解释解释程序程序运行运行结果结果2022年8月3日9图1.2 编译型语言源程序的编译和执行过程 编译生成了可执行文件之后,就不再需要源程序了,而且执行速度较快。源源程程序序计算机计算机编译编译程序程序目标程序目标程序(文件)(文件)运行运行结果结果计算机计算机目标程序目标程序(文件)(文件)数据数据2022年8月3日10程序设计语言的发展 (1)机器语言(2)汇编语言(3)高级语言(4)
5、第四代程序设计语言2022年8月3日111.1.4程序设计方法 结构化分析与设计的方法 主要采用功能分解的方法,利用模块分解和功能抽象,自顶向下、分而治之。面向对象程序设计技术 可以将解决某个问题的全套解决方案作为一个对象来进行分析,也可以将问题中涉及到的具体事物作为对象。对象是一个容器,其中包括数据和处理该数据的代码,其内部的具体工作过程常常是与外部隔离的。模块仅包含代码,数据是游离在外的。对象的操作是由向对象发消息引起。2022年8月3日12面向对象程序设计技术中的基本概念 1、对象 对象可以表现为一个窗口、窗口中的一个按钮、一个图画框、一个表格等可视的程序组件,还可以表现为变量、文件等不
6、可视的程序元素。2、类 类是对象的原型,它描述该类任一对象的共同行为特征,是对一组性质相同对象的计算机语言描述,概括了对象的共同的数据结构和操作。例如,在程序实现时的一个窗口对象,就是窗口类的一个实例。2022年8月3日13图1.3对象、实体、与类之间的关系对象对象类类实体实体抽象数据类抽象数据类人脑人脑计算机计算机现实世界现实世界映射映射计算机逻辑的实现计算机逻辑的实现2022年8月3日14面向对象程序设计技术中的基本概念 3、属性 对象中描述实体静态特性的数据称为(对象的)属性。4、方法 对象中用以模拟实体动态行为的“对数据施加的操作”称为(对象的)方法。例如,对于对象“学生成绩表”,增加
7、一条记录、删除一条记录、求最大值、求平均值、求前十名等等都是方法。方法是封装在对象之中的特定的程序段,叫做方法过程。在程序中,使某个方法执行称为调用该方法。2022年8月3日15面向对象程序设计技术中的基本概念 5、事件 导致某个对象的“操作”被执行的过程称为。某个事件发生时,对象所执行的操作称为。面向对象的程序设计语言为每一个对象都预先定义了许多事件,一个事件发生时系统要作何响应,需要由程序员根据具体功能来编写相应的响应代码,该代码称做。2022年8月3日161.1.5程序的质量标准1.正确性2.易读性3.有效性4.可维护性5.适应性 此外,程序设计必须尽力达到的四个目标是:可检验的、可修正
8、的、可重复使用的、可移植的。2022年8月3日171.2 算法及算法的描述工具 1.2.1算法和算法设计 1.2.2算法描述工具 1.2.3算法的基本特性2022年8月3日181.2.1算法和算法设计 什么是算法?算法是一组(有限个)规则,它提供了解决某个特定问题的运算序列。程序和算法是怎样的一种关系呢?程序是算法用计算机语言实现的形式。程序数据结构算法 2022年8月3日191.2.3 算法的基本特性和性质 算法的基本特性有穷性确定性能行性有输入和输出 正确性正确性 可读性可读性 健壮性健壮性 较高的时空效率较高的时空效率2022年8月3日20*基本数据结构和经典算法简介 基本数据结构 重要
9、的经典算法图的遍历、拓扑排序、旅行商问题、图填色问题旅行商问题(最短路径问题)、图填色问题凸包问题解方程和方程组、算法定积分、求函数的解 数值问题:2022年8月3日21*算法的设计和分析过程决定:计算方法;精确和近决定:计算方法;精确和近似的解法;数据结构;算法似的解法;数据结构;算法设计技术设计技术理解问题理解问题设计算法设计算法正确性证明正确性证明分析算法分析算法根据算法写代码根据算法写代码2022年8月3日221.2.2 算法描述工具 目前广泛使用的算法描述工具有:程序流程图、N-S图、PAD图、伪码、自然语言等等。图图1.4 1.4 求一元二次方程根的算法求一元二次方程根的算法输入输
10、入:a,b,c开始开始计算计算:d=b*b-4*a*c计算根计算根:x1,x2输出输出:”无解无解”输出输出:x1,x2结束结束d=0?是是否否2022年8月3日23程序流程图的基本符号2022年8月3日24三种基本结构 2022年8月3日25三种基本结构(续)图图1.8 1.8 循环结构循环结构(a)(b)S SC C是是否否S SC C是是否否2022年8月3日26图1.7 使用多次判断的部分流程图101710112132xxxxxxy计算计算:y=xX=1?是是否否X10?是是否否计算计算:y=x3-17计算计算:y=x2-1If x=1 thenIf x=1 then y=x y=xE
11、lseElse if x10 then if x2)。例1.4 求n!。2022年8月3日28例1.1 统计10个数中,有多少个数为3的整数倍数。T=0;I=1;如果I10则转到;-1 输入X;-2 如果X不是3 的整数倍数,则转;-3 T加1;I加1,然后转;输出T;结束。图图1.9 1.9 例例1.11.1的流程图的流程图开始开始T=0,I=1T=T+1I10是是是是3的倍数的倍数I=I+1结束结束否否否否输入输入:X输出输出:T2022年8月3日29例1.2 找出2100间的素数。算法框架:n=2;如果n100则转到;判断n是否为素数;n加1,然后转;结束。开始开始n=2IsPrime=
12、0n100是是否否I=nI=I+1结束结束否否是是图图1.10 1.10 例例1.21.2的流程图的流程图IsPrime=1输出输出:不是素数不是素数I=2否否除不尽除不尽是是IsPrime=1输出输出:是素数是素数否否是是2022年8月3日30详细算法 n=2;如果n100则转到,否则执行下一步;-1 IsPrime=1;-2-1 I=2;-2-2 如果I=n,则转-3,否则执行下一步;-2-3 如果 n MOD I0,则转-2-5,否则执行下一步;-2-4 IsPrime=0,转-3;-2-5 I加1,转-2-2;-3 如果IsPrime=1,则输出“n是素数”,否则输出“n不是素数”;n
13、加1,然后转;结束。2022年8月3日31例1.3 求Fibonacci数列的第n项值(n2)。输入n;fa=0;fb=1;I=3;fc=fa+fb;如果I=n 则转到;1 1 10 012nFFnnFnnn1 1 10 012nFFnnFnnn开始开始fa=0,fb=1否否I=nI=I+1结束结束图图1.11 1.11 例例1.31.3的流程图的流程图I=3fc=fa+fb是是输出输出:fcfa=fbfb=fc输入输入:n I=I+1I=I+1;fa=fbfa=fb;fb=fcfb=fc;转;转;输出输出fcfc;结束。结束。2022年8月3日32例1.4 求n!。最容易理解的如下:输入n;
14、f=1;I=1;如果In 则转到;f=fI;I=I+1;转;输出f;结束。2022年8月3日33递归一般具有如下形式:若问题的规模满足边界条件,则计算并返回结果;否则,递归求解。计算m的阶乘的fact函数可定义如下:接受参数m;如果m=0,fact=1,转;否则,fact=m*fact(m-1),注意:自己调用自己;返回函数值fact。)1()1()0(1)(nnfactnnnfact2022年8月3日34求n!的算法如下:输入n;f=fact(n);注意:在此调用了前面定义的递归函数fact(m);输出f;结束。2022年8月3日35 以上通过四个例子简单介绍了几类常用的算法穷举递推递归其它
15、:迭代法、回溯法、贪心算法、动态规划2022年8月3日36习题 1 1.1 什么是程序?什么是程序设计?1.2 程序设计过程主要包括哪些步骤?各步骤的主要任务是什么?1.3 程序设计工作具有哪些特性?1.4 怎样评价一个程序质量的好坏?1.5 什么是解释型程序设计语言?什么是编译型程序设计语言?1.6 解释下列概念:对象,属性,方法,事件。1.7 什么是算法?1.8 简述算法与程序有什么关系?2022年8月3日37习题 1-续 1.9 算法有哪些基本特性?1.10 设计计算s=1+2+3+100的算法。1.11 设计计算s=1+(1+2)+(1+2+3)+(1+2+100)的算法。1.12 设
16、计求n个数的平均值的算法。1.13 设计求n个数中最小值的算法。1.14 一个n位数,如果其各位数字的n次方之和等于该数,则称之为Armstrong数。例如,3位数153是Armstrong数(153=13+53+33)。试用枚举的思想设计找出3位数中所有Armstrong数的算法。2022年8月3日38习题 1-续 1.15 观察下列数列Pn(n=1,2,3,),找出递推关系式,并设计计算其第20项的算法:1,2,4,7,11,16,。0,1,3,7,15,31,。1,1,3,7,13,21,。1/2,2/3,3/5,5/8,8/13,。1.16设计计算 近似值的算法(计算到末项的绝对值小于
17、10-5为止)。)11(!6!4!21cos642xxxxx2022年8月3日39习题 1-续1.17已知 。设计根据此式计算值的算法(计算到末项的绝对值小于10-5为止)。1.18 Hermite多项式定义为:设计求Hermite多项式第n项值的算法。715131141 )()1(2)(21 20 1)(21nxHnxxHnxnxHnnn2022年8月3日40下课第第1章章 完完2022年8月3日41第 2 章程序设计工具与界面设计v开发环境v界面及其基本设计v语句及语法v基本控件2022年8月3日42本章主要内容 2.1程序设计工具 2.2界面及其基本设计 习题 22022年8月3日432
18、.1 程序设计工具 2.1.1Visual Basic简介 2.1.2Visual Basic的特点 2.1.3Visual Basic的开发环境 2.1.4Visual Basic工程 2.1.5Visual Basic应用程序设计过程 2.1.6Visual Basic的语句及语法2022年8月3日442.1.1Visual Basic简介 Basic 的原意 Beginners All-purpose Symbolic Instruction Code初学者通用的符号指令代码 Visual Basic中的“Visual”意味着直观的编程方法面向对象的程序设计语言。即开发图形用户界面(GU
19、I,Graphical User Interface)的方法。Visual Basic 6.0包括三种版本,分别是学习版、专业版和企业版。2022年8月3日452.1.2Visual Basic的特点 1)可视化的设计平台 2)面向对象的设计方法 3)结构化的设计语言 4)事件驱动的编程机制 5)充分利用Windows资源 6)开放的数据库功能与网络支持2022年8月3日462.1.3Visual Basic的开发环境菜单栏菜单栏工具栏工具栏工具箱工具箱代码编辑器代码编辑器窗体编辑器窗体编辑器工程资工程资源管理源管理器器属性窗口属性窗口窗体布局窗体布局窗口窗口图图 2.1 界面界面2022年8
20、月3日47菜单栏文件(File)文件管理和打印,生成EXE文件等。编辑(Edit)标准编辑操作,有撤消、查找等功能。视图(View)显示或隐藏窗口和工具栏。工程(Project)设置工程属性,添加/删除窗体和模块,添加 /删除附注和组件。格式(Format)对齐或调整控件尺寸。调试(Debug)启动/中止整个程序的调试和单步调试。运行(Run)启动一个程序或全编译执行。工具(Tools)添加过程,启动菜单编辑器,设置IDE选项。外接程序(Add-Ins)外接程序管理器,列举和管理多个外接程序。窗口(Window)排列或选择打开的窗口。帮助(Help)管理所有“帮助”以及“关于”对话框。2022
21、年8月3日48工具栏图图 2.2 Visual Basic的标准工具栏的标准工具栏添加项添加项添加窗体添加窗体模块等模块等菜单菜单编辑器编辑器打开工程打开工程保存保存工程工程剪切剪切复制复制粘贴粘贴查找查找撤消撤消重复重复开始开始暂停暂停停止停止工程工程资源资源管理器管理器属性属性窗口窗口窗体窗体布局布局窗口窗口对象对象浏览器浏览器工具工具箱箱数据数据视图视图窗口窗口VisualComponentManager屏幕位置屏幕位置窗体尺寸窗体尺寸2022年8月3日49工程资源管理器 通过工程资源管理器,可以对整个工程有一个整体性的概览,可以在工程资源管理器中选择要处理的某个资源对象,也可以添加、删
22、除各类项目。尤其是在管理那些庞大的、包含许多组成部分的工程时,工程资源管理器的作用更明显。图图 2.3 2.3 工程资源管理器工程资源管理器2022年8月3日50属性窗口 当选中某个对象时,在属性窗口中就会显示该对象的各种属性设置,通过选中属性窗口中相应的属性项,可以改变或检查该对象的某个属性的设置。图图 2.4 2.4 属性窗口属性窗口2022年8月3日51窗体布局窗口 可以将窗体定位在希望它出现的地方。在窗体布局窗口中,将相应窗体拖动到新的位置上,即可实现该窗体的初始定位。窗体位置在工具栏的右侧有相应的坐标显示。图图 2.5 2.5 窗体布局窗体布局窗口窗口2022年8月3日52工具箱 单
23、击工具箱中的某一个工具,然后在窗体上放置即可完成一个对象的定义。图图 2.7 添加新控件后的工具箱添加新控件后的工具箱图图 2.6 工具箱工具箱2022年8月3日53窗体编辑器 窗体是Visual Basic工程中用于表现数据、进行人机交互的界面。工程中的每个窗体都将有一个窗体编辑器。窗体编辑器显示出正在进行编辑的窗体形状,以及添加到窗体上的控件布局情况。窗体编辑器也叫,参见图2.8。2022年8月3日54 可以使用“工程”菜单中的“添加窗体”选项向工程中添加新窗体。或者利用工程资源管理器来添加或移除窗体。窗体的位置可以在窗体布局窗口中进行调整。窗体的大小可以在窗体编辑器中通过拖动窗体边框外的
24、调整点来改变。利用窗体编辑器进行的工作,就是,即运行时的界面设计。2022年8月3日55代码编辑器 就是用来编辑代码的工具,代码编辑器也叫代码窗口。参见图2.9 作用:需要通过编写代码来响应对象所发生的相关事件,通过代码描述对具体问题的处理方法和步骤,实现相应算法。切换方法:在窗体编辑器中双击某个对象,可以切换到代码窗口中的相应位置。2022年8月3日56立即窗口 定义:所谓立即窗口,是指在这个窗口中输入的Visual Basic语句会立即被执行。打开方法:点击“视图”菜单中的“立即窗口”选项使之出现 作用:在该窗口输入一个语句后,光标位于语句行上时,按回车键即可使该语句立即执行。通常,可以在
25、该窗口中进行简单计算、效果测试操作等。2022年8月3日572.1.4 Visual Basic工程 以Visual Basic6.0 企业版为例,使用Visual Basic可以创建以下类型工程:v标准标准Windows EXE程序程序vActiveX EXE文件文件vActiveX DLLvActiveX 控件控件vVisual Basic向导管理器向导管理器vVisual Basic应用程序向导应用程序向导vActiveX 文档文档DLLvActiveX 文档文档EXEvDHTML应用程序应用程序vIIS应用程序应用程序vVisual Basic企业版控件企业版控件v外接程序外接程序v数
26、据工程数据工程2022年8月3日58工程 Visual Basic引用工程的概念来管理构成应用程序的所有不同的文件,有时工程也指所有与某应用程序相关的文件的集合。程序设计员只负责设计窗体、编写代码,这些文件的管理和组织工作大部分由IDE做了。2022年8月3日59根据不同的类型,一个工程所包含的各类文件不完全相同,主要文件类型如下:1.工程文件(.vbp)。工程文件就是用来把所有文件整合在一起用的文件,由与该工程有关的所有文件和对象的清单所组成。2.窗体文件(.frm)。包含窗体及其控件的正文描述,包括它们的属性设置。3.标准模块文件(.bas)。可以包含类型、常数、变量、外部过程和公共过程的
27、公共的或模块级的声明。4.类模块文件(.cls)。与窗体模块类似,只是没有可见的用户界面。可以使用类模块创建含有方法和属性代码的自己的对象。2022年8月3日605.资源文件(.res)。包含着无需重新编辑代码便可以改变的位图、字符串和其它数据。一个工程最多包含一个资源文件。6.ActiveX 控件的文件(.dob)。类似于窗体,但是在互联网资源管理器之类的互联网浏览器中是可以显示的。Visual Basic 的专业版和企业版能够创建 ActiveX文档。7.用户控件(.ctl)和属性页模块(.pag)。也类似于窗体,但它们被用于创建ActiveX 控件及与其关联的用来显示设计时属性的属性页。
28、Visual Basic 的专业版和企业版能够创建 ActiveX 控件。2022年8月3日61 当工程启动时,这些文件和对象自动链接到工程文件上。每次保存时,其相关文件信息随之更新。某个工程下的对象和文件也可供其他工程共享使用。在工程的所有对象和文件被汇集在一起并完成编码后,就可以编译工程,生成可执行文件。工程2022年8月3日622.1.5 Visual Basic应用程序设计过程 1)创建新的Visual Basic工程 2)创建应用程序的用户界面 3)设置对象的属性 4)编写程序代码 5)调试和运行程序 6)保存程序 7)编译、生成可执行的应用程序2022年8月3日63在VB6.0中演
29、示实现阶乘计算的算法 Private Sub Command1_Click()Dim i,n As Integer Dim t As Long n=Val(Text1.Text)t=1 For i=1 To n Step 1 t=t*i Next Text2.Text=Str(t)End Sub2022年8月3日642.1.6Visual Basic的语句及语法 基本语法1.在编辑命令时除字符串(由双引号括起来的部分)中的字符外语句不区分大小写,系统能对语句自动进行格式调整。2.语句中的标点均为英文标点。3.在每一对方括号中出现的内容是可选的,如果有多项可以选择,那么这些项之间就用竖线分隔。4
30、.在一对尖括号的用文字描述的是可以自己确定的项目,当然必须符合项目的要求。5.语句中关键字是不能变动的。2022年8月3日655.省略号用以表示前面的部分可以多次出现。6.在编写代码时,一句一行。如果一行写不完,也可用续行符(_)在第二个物理行上继续一个逻辑行上的内容。7.如果想使一行多句,可用冒号(:)来分隔各语句。例如:Private|Public|Friend Static Sub ()Exit SubEnd Sub例如:Dim WithEvents varname(subscripts)As New type,WithEvents varname(subscripts)As New t
31、ype.2022年8月3日66几个基本语句 1 赋值语句语法:=例子:Total=101A=36+Total/2 ReadOut=GoodMornig!Command1.Caption=取消操作Text2.Text=Text1.TextA=10:B=15:A=A+B:B=A+B2022年8月3日67 2 注释语句(不被执行,用于增强程序可读性)Rem 或 例如:i=i+1 计数器加1 Rem 下面的程序用于判断N是否为素数 3 End语句 End 作用:用来结束正在运行着的程序。例如:if x0 then end 2022年8月3日682.2 界面及其基本设计 2.2.1界面的作用 2.2.2
32、界面设计准备 2.2.3窗体 2.2.4常用基本控件 2.2.5对话框2022年8月3日692.2.1界面的作用1.数据显示2.数据输入与编辑3.程序流程控制4.显示提示和帮助信息2022年8月3日702.2.2界面设计准备 利用窗体设计器来实现。考虑:明确界面的表现主题 考虑要完成的功能的使用情况,以及使用该程序的用户情况 程序界面的设计目的是显示信息还是收集数据?2022年8月3日71界面设计的基本过程 界面设计 在具体设计前确定一个粗略的界面设计草图,对将表现的内容进行初步地规划、布局。然后考虑采用何种元素(各种控件)来表现界面的内容。最后,还必须经过多次观察、审视、调整,以获取最佳效果
33、。在完成布局后,就应该考虑如何通过事件驱动的方式来进行“看不见”的处理的设计,即编写解决具体问题的代码。2022年8月3日722.2.3窗体控制菜单控制菜单标题栏标题栏最小化按钮最小化按钮最大化最大化/还原按钮还原按钮关闭按钮关闭按钮图图2.20 窗体的结构窗体的结构窗体窗体对象对象2022年8月3日73窗体属性1 窗体名称name:一般默认为:Form1 2 设置标题栏文本:Caption属性 Form1.Caption=计算器3 设置窗体风格BorderStyle属性 0无边框1固定单边框2可调尺寸边框3固定对话框4固定工具窗口5可变大小工具窗口其中2是新窗体的默认值。4 最小化、最大化和
34、关闭按钮等标准窗口成分可以通过窗体属性ContrlBox设置/取消2022年8月3日74窗体属性5 设置窗体大小和启动位置窗体的Left和Top属性是用来确定其位置的窗体的大小由两个属性来控制,Higeh高度,Width宽度6 窗体的ScaleMode中选其他的单位,例如:0用户自定义1缇(每英寸为1440缇)2磅(每英寸为72磅)3像素4字符5英寸6毫米7厘米2022年8月3日75使用多窗体 如果需要添加新窗体可以点击“工程”菜单选择“添加窗体”来实现也可以直接在工程资源管理器的窗体文件夹下按鼠标右键,在快捷菜单中选择“添加”、“添加窗体”实现。2022年8月3日76主控窗体 通常第一个创建
35、的窗体在运行时将首先出现(称为启动窗体),此时,其他窗体并没有出现在屏幕上。为了分别控制Form2和Form3的出现,在Form1上放置了两个按钮,Command1和Command2,希望点击按钮时,分别使对应的窗体显示。这样Form1就成为控制其他窗体出现的主控窗体。2022年8月3日77窗体显示 使某个窗体显示或隐藏,可以通过调用该窗体的Show和Hide方法来实现。Form1的Command1的Click事件过程如下:Private Sub Command1_Click()Form2.ShowEnd Sub Form1的Command2的Click事件过程如下:Private Sub C
36、ommand2_Click()Form3.ShowEnd Sub2022年8月3日78窗体隐藏 在Form2上放一个按钮Command1,编写点击事件代码如下:Private Sub Command1_Click()me.HideEnd Sub 这里的me被认为是Form2,执行me.Hide后使Form2窗体隐藏起来。2022年8月3日79调用规则 通常,调用某个对象的方法、属性或事件过程,必须在方法、属性或事件过程名前加上其所属的对象名,以使系统正确地区分和识别调用的内容属于哪个对象。2022年8月3日80设置启动窗体 在仅有一个窗体的情况下,这个窗体就默认为启动时首先显示的窗体,即启动窗
37、体。在使用多个窗体时,其中的一个窗体为启动窗体。一般情况下,最先创建的窗体被默认为启动窗体.如果希望另一个窗体(例如:欢迎窗体)首先出现时,就需要选择设置启动窗体。2022年8月3日81设置的步骤如下:1.选择“工程”菜单中的“工程属性”,出现如图2.22所示对话框。2.选择“通用”选项卡。3.在“启动对象”项目的对象列表中,选择指定的窗体即可。图图2.22 设置启动窗体设置启动窗体2022年8月3日82窗体的运行方式 在Visual Basic中,把窗体的运行方式分为两种,一种称为模式的,另一种称为非模式的。使窗体采用不同方式运行的是窗体的Show方法。如果在调用Show时不加参数,则默认窗
38、体以非模式方式运行;如果加参数1,则以模式方式运行。2022年8月3日83窗体的模式和非模式运行方式的区别 非模式方式 不限制将焦点锁定在自己窗体之内,允许用户转去对其他窗体进行操作。模式方式 只允许对最后打开的模式窗体进行操作,不允许用户转去对其他窗体进行操作,就是说模式窗体将焦点锁定在自己窗体之内,以保证用户优先进行本窗体内的操作。只有关闭了模式窗体,才允许对其他窗体进行操作。2022年8月3日84窗体的Print和Cls方法 窗体对象的Print方法可以用来直接在窗体上显示文本字符串和表达式的值。窗体的Cls方法则可以用来清除由Print方法显示在窗体上的内容。示例:Print Text
39、1.Text;2,Text1.Text*Text1.Text Me.cls2022年8月3日85窗体的主要事件窗体有多种事件,这些事件在窗体进行某种动作时发生。例如,装载、单击、双击、鼠标移动、获得焦点、改变尺寸、卸载等等。1 Load 事件Load 事件即为装载事件,在一个窗体被装载时发生。2022年8月3日86例如,在以下的Load 事件过程代码中将完成对几个标签标题的设置,以及给几个文本框设置初始值:Private Sub Form_Load()Label1.Caption=学号 Label1.Caption=姓名 Label1.Caption=成绩 Text1.Text=2006043
40、023 Text1.Text=李天宇 Text1.Text=86End Sub2022年8月3日87Click事件 窗体的Click事件发生在用户使用鼠标点击窗体的时候。需要注意的是,如果使用鼠标点击的是放在窗体上的其他对象,引发的是那个对象的Click事件,而不是窗体的Click事件。示例2022年8月3日88Unload事件 当窗体从屏幕上删除时发生。当使用在 Control 菜单中的 Close 命令或 Unload 语句关闭该窗体时,此事件被触发。可以编写相关的事件过程代码,在此事件发生时完成一些在结束对当前窗体操作后所需的善后工作。2022年8月3日89窗体设计要点1.根据元素的重要
41、性级别布局2.将元素按不同主题分组3.外观风格的一致性很重要4.合理调整窗体及其控件的大小和位置使之整齐划一2022年8月3日902.2.4常用基本控件框架框架复选框复选框组合框组合框水平滚动条水平滚动条 计时器计时器目录列表框目录列表框形状形状图象图象OLE容器容器图片框图片框选择按钮选择按钮列表框列表框垂直滚动条标签垂直滚动条标签驱动器列表框驱动器列表框文件列表框文件列表框线线数据数据图图 2.24 工具箱中的基本控件工具箱中的基本控件2022年8月3日91标签(Label)作用:标签主要用来显示一个静态的文字说明信息;通常用来为其他控件对象添加描述性说明;运行时,标签是不能通过交互方式动
42、态地改变的,不能接受用户的输入操作。使用:可以在设计时修改属性值 也可以在程序中编写代码来改变标签的显示文本 2022年8月3日92标签的主要属性 (1)Caption属性 设置标签将显示文本内容。该值可以在属性值框内直接输入。(2)Alignment属性 设置在标签区域内文本的对齐方式。其值为0表示左对齐;为1表示右对齐;为2表示居中。该值可以在点击属性值框后出现的下拉列表中选择。默认值为0。(3)AutoSize属性 设置控件是否能够自动调整大小以显示所有的内容。如果AutoSize属性被设置为True,则标签能够根据文本的长短来调整自身的大小,以适应文本的长度。2022年8月3日93标签
43、的主要属性 (4)BackStyle属性 设置标签的背景样式。其值以为1表示是不透明的;为0表示是透明的。默认值为1。(5)BorderStyle属性 设置标签的边框样式。其值为0 表示无边框;为1表示单线边框。默认值为0。(6)Backcolor属性 设置标签的背景色。需要改变颜色时,选中该项,点击属性值框右的小箭头,在随后出现在其下方的颜色选项卡中选择适当的颜色即可。(7)Forecolor属性 设置标签上显示的文本颜色。改变其颜色的方法同上。2022年8月3日94标签的主要属性 (8)WordWrap属性 设置标签的文本在显示时是否具有自动换行功能。当该属性为True时 该标签具有自动换
44、行的功能,就是当文本内容较多一行显示不完时,可以自动分行显示。需注意的是 只有在AutoSize属性设置为True的时候WordWrap属性才有效。当AutoSize为True且WordWrap也为True时,标签能够根据文本的多少调整自身的高度来显示所有文本;当AutoSize为True且WordWrap为False时,标签则调整自身的宽度来显示所有文本。2022年8月3日95标签的主要事件和方法 标签的主要事件 单击Click和双击DblClick 标签的主要方法 Move:该方法的功能是移动标签到一个新的位置,并可以改变标签控件的大小。调用Move方法的语法如下:.Move,其中,是需要
45、移动的某对象,为必要参数,其他三个为可选参数。例如:Label1.Move Label1.Left+10,Label1.Top-102022年8月3日96文本框(Text)文本框可以供用户输入数据,是Visual Basic中显示和输入文本的主要机制,也是Windows用户界面中最常用的控件。文本框提供了所有基本文字处理功能,在Windows环境中几乎所有的数据输入都可以利用文本框来完成。2022年8月3日97文本框的常用属性 (1)Text属性 用户在程序运行时输入的文本数据就存放在其中。该属性值在设计和运行时都可以更改。(2)MaxLength属性 设置文本框中输入的字符串长度是否有限制。
46、默认值为0,表示该单行文本框中字符串的长度只受操作系统内存的限制;若设置为大于0的数,则表示能够输入的最大字符数目。2022年8月3日98文本框的常用属性 (3)PasswordChar属性 设置是否使控件只显示特定的字符。如将属性设置为“*”,那么无论Text属性值是什么,在文本框中都只显示若干个“*”,可以起到隐藏真正字符的作用,用来支持密码输入。(4)MultiLine属性 设置文本框是否以多行方式显示文本。设置为True时以多行文本方式显示;设置为False(默认)时以单行方式显示。(5)ScrollBars属性 设置以多行方式显示文本时文本框是否有垂直或水平滚动条。2022年8月3日
47、99文本框常用事件(1)Change事件 当文本框的内容被修改时,该事件被触发。如果事先编写了与该事件相应的事件过程,则该事件过程被自动调用执行。如果没有编写与该事件相应的事件过程,则事件发生时什么也不做。该事件主要用于检查被改变后的内容是否满足一定的要求。2022年8月3日100文本框常用事件(2)KeyPress事件 当光标位于文本框中时,按任一具有ASCII码值的键时触发该事件。例,希望文本框Text1只接受09数字输入,其他字符输入一律忽略。编写Text1的KeyPress事件过程如下:Private Sub Text1_KeyPress(KeyAscii As Integer)If
48、KeyAscii Asc(9)Then KeyAscii=0 End IfEnd Sub KeyAscii为0,表示放弃本次输入的按键。2022年8月3日101文本框常用事件(3)GotFocus事件 该事件在文本框获得焦点时被触发。(4)LostFocus事件 该事件在文本框失去焦点时被触发。所谓失去焦点,是指当使用鼠标或其他方式选择了其它对象,不再对当前对象继续处理的情况。通常,窗体中总是有且仅有一个对象取得焦点,当一个对象失去焦点后,就由另一个对象获得焦点。一个对象失去焦点的事件发生在另一个对象获得焦点之前。2022年8月3日102文本框的常用方法:SetFocus 作用 使程序将焦点移
49、动到指定的对象,其效果就象用鼠标点击某对象,使之处于当前操作状态。其语法为:.SetFocus 例子:如果利用文本框Text1让用户输入密码,要求密码长度必须为6位。如果不是6位,就显示提示信息,并阻止焦点离开,否则允许离开。至于密码是否正确的检查任务,交由命令按钮来处理。2022年8月3日103输入密码的例子的窗体设计 窗体中文本框的PasswordChar属性设置为“*”按钮下方是一个BorderStyle属性为1的标签,用以显示提示信息。图图2.25 检查密码的窗体检查密码的窗体2022年8月3日104输入密码的例子的事件过程代码 分析:输入了密码后,点击“确定”按钮时,文本框的Lost
50、Focus事件发生,执行LostFocus事件过程。该过程代码如下:Private Sub Text1_LostFocus()Label1.Caption=If Len(Text1.Text)6 Then Label1.Caption=密码长度不对,请重新输入!Text1.SetFocus End IfEnd Sub2022年8月3日105命令按钮(CommandButton)主要作用 用以开始、中断或结束一个处理过程。最主要的事件 Click事件,是鼠标单击按钮时,该事件发生。2022年8月3日106前例提到的检查密码是否正确的任务,也可交由命令按钮来处理。命令按钮的单击事件过程代码如下:P