第一部分Visual Basic程序设计上机要求 Visual Basic 6.0是Microsoft公司推出的基于Windows环境的计算机程序设计语言,它继承了Basic语言简单易学的优点,同时增加了许多新的功能。由于Visual Basic采用面向对象的程序设计技术,摆脱了面向过程语言的许多细节,而将主要精力集中在解决实际问题和设计友好界面上,使开发Windows应用程序更迅速、便捷。 什么是Visual Basic(简称VB)?Visual指的是开发图形用户界面(GUI)的方法。在图形用户界面下,不需要编写大量代码去描述界面元素的外观和位置,而只要将预先建立的对象加到屏幕上的适当位置,再进行简单的设置即可。Basic指的是BASIC(Beginners AllPurpose Symbol Instruction Code,初学者通用的符号指令代码)语言,是一种应用十分广泛的计算机语言。Visual Basic在原有BASIC语言的基础上进一步发展,至今包含了数百条语句、函数及关键词,其中很多和Windows GUI有直接关系。专业人员可以用Visual Basic实现其他任何Windows编程语言的功能,而初学者只要掌握几个关键词就可以建立简单的应用程序。 VB语言具有许多优秀的特性,用它来设计应用程序有两个最基本的特点: 可视化设计和事件驱动编程。 1. 可视化设计 同其他的一些可视化程序开发工具一样,VB具有可视化设计的特点,Microsoft Word刚进入中国市场时,同WPS竞争的一个重要功能砝码就是“所见即所得”的字处理功能,VB在设计应用程序界面时也可以说是“所见即所得”。在设计时,头脑中所想象的应用程序界面完全可以通过键盘鼠标画出来,而不是编制大量的代码然后再编译生成,如果需要修改,也是利用键盘鼠标,而底层的一些程序代码可由VB自动生成或修改。 VB为用户提供了大量的界面元素(VB中称为控件对象),这些控件对象对于熟悉Windows应用程序的用户而言一点也不陌生,如“窗体”“菜单”“命令按钮”“工具按钮”“检查框”等,用户只需要利用鼠标、键盘把这些控件对象拖到适当的位置,设置其大小、形状、属性等,就可以设计出自己所需的应用程序界面。 2. 事件驱动编程 操作系统进入Windows时代以来,图形化的用户界面和多任务多进程的应用程序要求程序设计不能是单一性的,在使用VB设计应用程序时,必须首先确定应用程序如何同用户进行交互。例如发生鼠标单击、键盘输入等事件时,用户必须编写代码控制这些事件的响应方法。这就是所谓的事件驱动编程。 在VB中,把“窗体”以及“菜单”“按钮”等控件称为对象,如果设计出了应用程序,那么与应用程序的用户直接进行交互的就是这些对象组成的图形界面,也称为用户接口或用户界面。在设计应用程序时就必须考虑到用户如何与程序进行交互(更进一步地,甚至程序和程序之间也会有通信和交互),基本上用户是通过鼠标与键盘同应用程序进行交互的,这时那些对象就必须对鼠标和键盘操作所引发的事件做出响应。所谓“响应”,有可能是这些对象改变自身或是其他对象的一些属性,在与用户交互的过程中改变对象属性这一过程可以利用对象的“方法”来实现。 学习VB语言程序设计,必须要重视VB语言的上机实践环节。一方面要独立编写出程序,另一方面要独立上机调试程序,同时必须保证有足够的上机实验时间。上机实验的目的绝不仅仅是为了验证教材和讲课的内容或者验证自己所编程序正确与否。上机实验的主要目的及作用为: (1) 加深对VB课程讲授内容的掌握和理解,尤其是一些语法规定、可视化控件的用法,仅靠课堂讲授难以记住,只有通过多次上机,才能自然地、熟练地掌握。实践证明,通过上机来掌握VB语言的语法规则及操作过程是行之有效的方法。 (2) 熟悉和了解VB语言程序开发环境。一个程序必须在一定的外部环境下才能运行,VB语言的运行必须要有计算机系统的硬件和软件条件。使用者应该了解为了运行一个VB程序,需要哪些必要的外部条件,即硬件配置、软件配置,可以利用哪些系统的功能来帮助自己开发程序。每一种计算机系统的功能和操作方法不完全相同,但只要熟练掌握一两种计算机系统的使用,再遇到其他的系统时便会触类旁通,很快学会。 (3) 学会上机调试VB语言程序的过程。在调试中学会发现程序中的错误,并能很快地排除这些错误,使程序正确运行。经验丰富的人,当编译出现“出错信息”时,能很快地判断出错误所在并改正; 而缺乏经验的人即使在明确的出错提示下也往往找不出错误而求助于人。 (4) 计算机技术是实践性很强的技术,要求从事这一领域工作的人不仅能了解和熟悉有关理论和方法,还能自己动手实现。对程序设计来说,要求会编程序并上机调试通过。因此调试程序本身是程序设计课程的一个重要的内容和基本要求,应给予充分的重视,调试程序的经验固然可以借鉴他人的现成经验,但更重要的是通过自己的直接实践来累积。因此,在实验时千万不要在程序通过后就认为万事大吉、完成任务了,而应当在已通过的程序基础上做一些改动(例如修改一些参数、增加一些程序功能、改变输入数据的方法等),再进行编译、连接和运行,观察和分析所出现的情况; 这样的学习才会有真正的收获,应当灵活、主动地学习,而不是呆板、被动地学习。 学生上机前一定要做好上机的各项准备,按指导老师的要求进行上机; 每次应完成所需的实验内容,在时间充裕的情况下,可选择其他一些相关程序进行上机。具体上机实验要求为: (1) 按实验要求准备好上机所需的程序。 (2) 上机输入和调试程序的时候,要养成独立思考的能力。 (3) 在程序调试通过后,应做好程序清单和运行结果的记录,实验结束后,应该整理实验报告。 (4) 为便于统一管理及检查学生实验内容,要求实验者按文件存储在磁盘空间中。 (5) 程序调试完后,检查运行结果。每个实验完成后,应写出实验报告或实验运行情况和结果。 第二部分Visual Basic实验内容 实验一Visual Basic运行及界面设计操作 一、 实验目的与要求 (1) 通过本实验,掌握Windows程序设计的基本原理和方法。 (2) 通过本实验,掌握Visual Basic(以下简称VB)程序在集成环境下编写、编译、调试和运行的过程。 (3) 掌握VB程序的风格及设计思想。 (4) 掌握窗体Print方法的使用。 二、 实验内容 【题目1】掌握VB编译器的启动与退出,按如下步骤设计一个简单的VB程序。 【分析】按如下步骤操作。 【步骤】 1. 启动与退出 同其他Windows应用程序启动方法一样,正确安装VB 6.0后,VB 6.0软件就会出现在Windows的“开始”菜单中。 (1) 启动。 单击“开始”|“程序”|“Microsoft Visual Basic 6.0中文版”|“Microsoft Visual Basic 6.0中文版”,就会启动VB 6.0中文版。 (2) 退出。 如果要退出,则可以选择菜单“文件”|“退出”或单击窗口右上角的关闭按钮,就会退出VB 6.0系统。 (3) 新建工程。 从弹出的“新建工程”对话框中选择“标准EXE”项,然后单击“打开”按钮,如图11所示。 图11“新建工程”对话框 (4) VB集成开发环境(IDE)的元素组成。 VB应用程序图形界面如图12所示。其元素的组成主要包括:  菜单栏(Menubar)。  上下文菜单(Context Menu)。  工具栏(Toolbar)。  工具箱(Toolbox)。  工具管理器(Project Explorer)。  属性窗口(Properties Window)。 图12VB应用程序图形界面  对象浏览器(Object Browser)。  窗体设计器窗口(Form Window)。  代码编辑器窗口(Code Window)。  窗体布局窗口(Form Layout Window)。  立即、本地和监视窗口(Immediate Window、Watches Window、Locals Window)。  在线帮助系统(Online Help System)。 2. 向窗体添加控件 (1) 向窗体添加“标签”控件。 在“工具箱”中双击“标签”控件,将“标签”控件添加到窗体上,此时可以用鼠标拖动窗体上的“标签”控件,也可以调整它的大小,将“标签”控件调整到适当位置。也可以在“工具箱”中选中“标签”控件,然后在窗体上画出“标签”控件,如图13所示。 图13添加“标签”控件 (2) 向窗体添加“命令按钮”控件。 与步骤(1)类似,向窗体添加一个“命令按钮”控件,如图14所示。 图14添加“命令按钮” 下面可以修改“标签”控件和“命令按钮”控件的属性。 ① 在“属性窗口”找到“标签”控件的Caption属性,将它的值改为“VB实验一”; 在font属性中,改变字体和大小,具体为: 黑体、二号字。 ② 接着找到“命令按钮”控件的Caption属性,将其值改为“VB命令按钮”,此时窗体的效果如图15所示。 ③ 最后,在“属性窗口”找到“窗体”控件的Caption属性,将它的值改为“VB练习窗口”。 图15窗体设计效果 ④ 添加事件响应代码。 双击“窗体”控件上的“VB命令按钮”控件,会弹出一个“代码编辑器”窗口,如图16所示。在其中添加如下代码: Private Sub Command1_Click() Label1.Caption = "现在开始学习VB 程序设计。" End Sub 图16“代码编辑器”窗口 3. 改变窗体的位置 利用“窗体布局窗口”进行预览并设置窗体的位置,应用程序中所有可见的窗体都将显示出来。当把鼠标指针放置到某个窗体上时,按下鼠标左键并拖动该窗体,可以将窗体定位在希望它出现的地方。 4. 保存工程 窗体、控件和代码完成后,应该及时保存工作成果。 执行“文件”菜单中的“保存工程”命令,出现“保存窗体文件”对话框,单击“保存”按钮,出现“保存工程”对话框。单击“保存”按钮,就完成了保存工作。激活工程浏览窗口,所保存的窗体及工程名就出现在其中。 5. 运行程序 应用程序设计好后,单击工具栏上的“启动”按钮。程序被执行,如图17所示。 图17程序执行结果 单击“VB命令按钮”,“标签”控件会显示出文本字符信息,如图18所示。 图18单击按钮后程序的执行结果 6. 生成可执行文件 执行“文件”菜单中的“生成工程1.exe”,其中工程1就是所建立的工程名。工程建立完毕后,就可以脱离VB环境,在操作系统下单独运行。 通过题目1的示例可以学习VB设计的操作步骤及设计方法。 【题目2】设计一个窗体,窗体标题为“红黄背景”,程序运行时,在窗体上单击,窗体背景变成黄色; 双击,窗体背景变成红色。运行界面如图19所示。 图19窗体的红黄背景 【分析】窗体背景属性为: Form1.BackColor = vbRed 【题目3】设计一个应用程序,实现标签的显示和隐藏,单击“显示标签”按钮,将标签显示; 单击“隐藏标签”按钮,将标签隐藏,运行界面如图110所示。 图110标签实例 【分析】标签隐藏属性设置为: Label1.Visible = False 【题目4】使用窗体的Print输出方法。 【分析】按如下步骤操作。 【步骤】 (1) 在Microsoft VB编译器中,新建一个工程; 用鼠标拖曳窗体的边框,改变窗体的大小,让窗体为显示输出留下空间; 使用CommandButton(命令按钮)控件在窗体右边创建一个命令按钮。 (2) 打开属性窗口,然后把命令按钮的Caption属性设置为“显示学号”。 打开属性窗口顶部的对象下拉列表框,然后单击Form1对象名。该窗体的属性显示在属性窗口中。 将Font属性修改为Times New Roman。Font属性决定了窗口中显示文本所使用的字体。可以使用系统中已经安装的任何字体,建议选择TrueType类型字体(这种类型的字体可以调整字号大小显示,并且打印效果与显示效果相同)。 将AutoRedraw属性设置为True。当窗口被遮挡后,窗体重新显示时,值为True的AutoRedraw属性使得窗体重新显示由Print方法输出在窗体上的任何文本。 (3) 双击窗体上的“显示学号”按钮。CmdStudentID_Click事件过程显示在代码窗口中,在该过程中输入下面的语句: Private Sub Command1_Click() For i = 1 To 10 Print "学生学号: " & "200609_" ; i FontSize = 10 + i Next i End Sub 这个For…Next循环使用Print方法显示学号,然后显示循环计数器i的值,这样的显示一共完成10次。Print语句中的分号(;)告诉VB在字符串“学号:”的后面显示计数器的值,并且两者之间不留空格。 FontSize=10+i这条语句把窗体的FontSize属性的值设置为比循环计数器的值大10的值。第一次执行循环时,字体大小设置为11磅,第二次循环时设置为12磅,以此类推,直到执行最后一次循环,此时字体大小变成了20磅。 (4) 单击工具栏上的“启动”按钮。 单击“显示学号”按钮。For…Next循环在窗体上显示10行,如图111所示。 图111Print运行效果 单击工具栏上的“结束”按钮,终止程序运行。 (5) 单击工具栏上的“保存工程”按钮,将窗口保存为DemoPrint.frm,然后将工程保存为Print2.vbp。 实验二顺序结构程序设计 一、 实验目的与要求 (1) 熟悉Visual Basic 6.0的数据类型。 (2) 掌握变量和常量的基本用法。 (3) 熟悉常用内部函数。 (4) 掌握Visual Basic 6.0中的基本输入输出语句。 (5) 掌握输入对话框和消息框的使用。 (6) 了解Visual Basic 6.0应用程序的常见错误和调试技术。 二、 实验内容 预备知识 1. InputBox输入函数 InputBox的语法如下: InputBox(prompt,[Title],[Default],[Xpos],[Ypos],[HelpFile],[Context]) As String 在对话框中显示一个提示符,并返回用户输出的文本。  prompt是唯一必需的参数,它定义了输入框中的提示信息。提示信息必须是一个字符串表达式,其最大长度为1024B。VB会自动将过长信息分隔成多行。  Title是可选项,是一个字符串表达式,定义输入框的标题,默认为应用的名字。  Default是可选项,定义默认的输入字符串,如果用户在输入框中没有输入内容则返回该值,默认输入文本框为空。  XPos是可选项,定义输入框左上角的x坐标值,默认输入框水平居中。  Ypos是可选项,定义输入框左上角的y坐标值,默认输入框垂直居中。  HelpFile是可选项,帮助文件名字符串,用来指定为输入框提供上下文相关帮助。如果指定了该项,那么Context也必须指定。  Context是可选项,指定与帮助文件相关内容的数字。如果指定该项,那么HelpFile也必须指定。  InputBox函数返回字符串型值,因此使用InputBox函数时的语法规则是: 变量名[$]=InputBox(…) 2. MsgBox输出函数 MsgBox函数的语法如下: MsgBox(prompt,[Buttons As VbMsgBoxStyle vbOKOnly],[Title],[HelpFile],[Context]) As VbMsgBoxResult 函数过程显示一个对话框并返回一个整数值。  Prompt是唯一必需的参数,它定义了在消息对话框中显示信息。显示信息必须是一个字符串表达式,其最大长度为1024B。VB会自动将过长的信息分隔成多行。  Buttons是可选项,它是一个数字表达式,指定了消息对话框中的按钮、图标和其他特征,默认值为0。  Title是可选项,是一个字符串表达式,定义消息对话框的标题,默认为应用的名字。  HelpFile是可选项,帮助文件名字符串,用来指定为消息对话框提供上下文相关帮助。如果指定了该项,那么Context也必须指定。  Context是可选项,指定与帮助文件相关内容的数字。如果指定该项,那么HelpFile也必须指定。  Buttons参数决定了消息对话框的外观,要对它进行设置,首先要知道它的取值及含义。如表21所示为Buttons参数的取值和含义说明。 表21Buttons参数的取值和含义说明 类型系 统 常 量数值功 能 说 明 按钮类型 vbOKOnly0(默认值) 只显示一个“确定”按钮 vbOKCancel1显示“确定”和“取消”按钮 vbAbortRetryIgnore2显示“终止”“重试”和“忽略”按钮 vbYesNoCancel3显示“是”“否”和“取消”按钮 vbYesNo4显示“是”和“否”按钮 vbRetryCancel5显示“重试”和“取消”按钮 图标样式 vbCritical16显示停止图标 vbQuestion32显示提问图标 vbExclamation48显示警告图标 vbInformation64显示输出图标 默认按钮 vbDefaultButton10第1个按钮为默认按钮 vbDefaultButton2256第2个按钮为默认按钮 vbDefaultButton3512第3个按钮为默认按钮 vbDefaultButton4768第4个按钮为默认按钮 模式 vbApplicationModal0应用程序强制返回; 应用程序一直被挂起,直到用户对消息框做出响应才继续工作 vbSystemModel4096系统强制返回; 全部应用程序都被挂起,直到用户对消息框做出响应才继续工作 使用MsgBox有无返回值是由MsgBox函数或MsgBox过程决定的,MsgBox过程无返回值,其调用的一般形式为: MsgBox "程序执行结束,按""确定""返回", , "提示信息" 而MsgBox函数有返回值,其调用的一般形式为: x = MsgBox("程序执行结束,按""确定""返回", , "提示信息") 当函数只有一个OK按钮时,可以不必给变量赋值,函数仅作消息说明。在判断函数返回值时,可以参照表22。 表22MsgBox函数返回值 系 统 常 量返回值操 作 说 明 vbOK1选择了“确定”按钮 vbCancel2选择了“取消”按钮 vbAbort3选择了“终止”按钮 vbRetry4选择了“重试”按钮 vbIgnore5选择了“忽略”按钮 vbYes6选择了“是”按钮 vbNo7选择了“否”按钮 3. Print输出方法 利用Print方法可以显示图形文本,包括字符串和数字值。其语法如下: 对象.Print[expressionlist] 对象参数指定了文本显示的位置。可取以下4个值之一: 窗体名称、图片框名称、Debug或Printer。后两个值将分别使文本在调试(Debug)窗口和打印机上显示。如果表达式省略,则打印一空白行。 expressionlist语法结构如下: {Spc(n)|Tab(n)}expression charpos 其含义如下:  Spc(n)是可选的。用来在输出中插入空白字符。这里n为要插入的空白字符数。  Tab(n)是可选的。用来将插入点定位在绝对列号上,这里n为列号。使用无参数的Tab(n)将插入点定位在下一个打印区的起始位置。  expression是可选的。要打印的数值表达式或字符串表达式。  charpos是可选的。指定下个字符的插入点。使用分号(;)直接将插入点定位在上一个被显示的字符之后; 使用逗号(,)将下一个输出字符的插入点定位在制表符上; 如果省略charpos,则在下一行打印下一字符。 例如,以下是4种对象的Print方法,分别在自身对象上打印消息“This is a testing message.”。  名称为MyForm的窗体对象: MyForm.Print "This is a testing message."  名称为picMiniMsg的图片框对象: picMiniMsg.Print "This is a testing message."  当前窗体对象: Print "This is a testing message."  Printer对象: Printer.Print "This is a testing message." 不同expressionlist值的不同输出方法:  对于Boolean数据,或者打印True或者打印False。根据主机应用程序的地区设置来翻译True和False关键字。  使用系统能识别的标准短日期格式书写Date数据。当日期或时间部件丢失或为零时,只书写已提供的部件。  如果expressionlist为空,则无内容可写。但是,如果expressionlist值为NULL,则输出NULL。在输出NULL关键字时,要把关键字正确翻译出来。  要把错误数据作为Error code输出。在输出Error关键字时,要把关键字正确翻译出来。  如果在具有默认显示空间的模块外使用此方法,则需要object。例如,如果没有指定对象就在标准模块上调用此方法,则将导致错误发生,但是,如果在窗体模块上调用,则会在窗体上显示。 注意: 因为Print方法是按照字符比例进行打印的,所以字符数与字符所占据的宽度固定的列的数目无关。例如,像W这样的宽字母占据的宽度超过一固定列宽,而像I这样的窄字母占据的宽度则较小。考虑到要使用比平均字符更宽的空间,表列一定要留有足够余地。 【题目1】设计一个应用程序,完成两个文本框内容的转换。例如,在“第1个”文本框中输入“程序”,在“第2个”文本框中输入“设计”,单击“交换”按钮后,结果如图21所示。 图21界面设计 【分析】 该程序考查关于赋值语句的应用以及变量的含义。在程序运行过程中,变量的值可以发生改变。 一个完整的应用程序应包含3个部分,依次是输入数据、处理数据和输出数据。在设计程序的过程中应该遵循这个次序。 要交换两个文本框的内容,与交换两个变量值一样。其基本过程如下: (1) 定义两个字符型变量,分别放置文本框内容。 (2) 使用一个中间变量t,先将第一个变量内容暂存t,再将第二个变量内容存入第一个变量内容,最后将t存入第二个变量。 (3) 将两个变量值放回文本框。 【步骤】 1. 界面设计 创建一个应用程序,在窗体上添加两个标签、两个文本框和一个命令按钮。 2. 属性设置 对用户界面上的对象进行属性设置,其属性如表23所示。 表23属性表 对象名属性名属性值 Form1 Caption文本内容互换 Label1 Caption第1个 Label2Caption第2个 Text1 Text空 Text2 Text空 Command1Caption交换 3. 代码编写 单击命令按钮时,进行交换操作,其事件过程代码如下: Private Sub Command1_Click() Dim first As String ,second As String,t As String first = Text1.Text second = Text2.Text t = first first = second second = t Text1.Text = first Text2.Text = second End Sub 4. 调试运行 将程序中的所有文件保存到同一个文件夹中。运行程序,在文本框中输入内容,单击“交换”按钮,观察程序运行结果。 【题目2】设计一个应用程序,输入圆的半径,计算圆的周长和面积,其运行结果如图22所示。其中,半径的输入使用输入对话框实现。 图22界面设置 【分析】 (1) 常量分析为普通常量和符号常量,符号常量要用Const语句来定义。计算圆的周长和面积都要用到π,可将其定义为符号常量。 (2) 变量具有作用域,在其作用域范围内有效,否则被释放。圆的半径在输入和计算时都用到了,所以要将其定义为窗体级变量,即在本窗体内的任何过程中都是有效的。 (3) 输入数据可以使用控件,也可以使用InputBox函数实现。将字符串转换成数值用Val函数实现。 (4) 应用程序结束使用End语句,如果只有一个窗体也可以使用Unload Me来结束运行。 【步骤】 1. 界面设计 建立应用程序,在窗体上添加3个标签、3个文本框和3个命令按钮。 2. 属性设置 对用户界面上的对象进行属性设置,其属性如表24所示。 表24属性设置 对象名属性名属性值 Form1 Caption圆的周长和面积 Label1 Caption圆的半径 Label2Caption圆的周长 Label3Caption圆的面积 Text1 Text空 Text2Text空