2023年12月6日发(作者:)

郑州大学现代远程教育

《Visual Basic程序设计》课程

学习指导书

柳宏川 编

第一章 Visual Basic程序设计概述

(一)本章学习目标

理解程序设计语言的概念,VB的功能和作用。熟练掌握Visual Basic的启动和退出方法,学会使用IDE集成开发环境中标题栏、菜单栏、工具栏和窗体窗口、属性窗口、资源管理器窗口和代码窗口,了解工具箱窗口的作用。

(二)本章重点、要点

VB的启动和退出、工程的概念、VB集成开发环境的操作:窗口和工具栏的作用。

(三)练习题

1.退出Visual Basic的快捷键是______。

A. Ctrl+Q B. Shift+Q

C. Alt+Q D. Ctrl+Alt+Q

2.窗体设计器是用于设计______。

A.应用程序的界面 B. 对象的属性

C.应用程序的代码 D. 窗体的代码

3.启动Visual Basic后, VB为用户建立的第一个窗体是______。

A.Form1 B. Form

C.窗体1 D. 窗体

4.启动Visual Basic后, VB为用户新建立的工程的名字是______。

A.窗体1 B. 工程1

C.窗体 D. 工程

5.工程资源管理器窗口包含的文件类型有______种。

A.1 B. 2

C.3 D. 4

6.如果VB环境中缺少某个窗口,一般应从主菜单______的下拉菜单中找到相应的激活命令。

A.编辑 B. 文件

C.调试 D. 视图

7.能够通过标准工具栏打开的窗口是______。

A.代码窗口 B. 设计器窗口

C.属性窗口 D. 窗体布局窗口

- 1 - 8.窗体文件的扩展名______。

A..bas B. vbp

C..exe D. frm

9.工程文件的扩展名______。

A..com B. vbp

C.. exe D. bas

10.Visual Basic的编程机制是______。

A.面向过程 B. 面向对象

C.事件驱动 D. 可视化

第二章 VB可视化编程基础

(一)本章学习目标

理解结构化程序设计的思想,面向对象的程序设计。掌握类、对象、属性、方法、事件和控件等概念。熟练掌握创建一个VB应用程序的过程,能运用IDE中的工具使用控件及对控件的事件编程,理解事件驱动的思想。

(二)本章重点、要点

面向对象的有关名词,使用VB创建一个应用程序的全过程,各种窗口的使用,基本控件以及方法、属性的使用。

(三)练习题

1. 使用VB建立一个应用软件的全过程有哪些步骤?。

2. 保存VB文件,至少要保存几个文件?应先保存什么文件?

3. 工程文件,窗体文件,标准模块文件,类模块文件的文件名的扩展名分别是什么?

4. 用代码对窗体中的控件设置属性值,这些代码应该放在什么事件中?

5. 运行程序有几种方法?各是什么?

6. 从代码窗口返回到设计窗体窗口(VB集成开发环境)有几种方法?

7.输入代码忘记属性值时怎么办?

8.在代码窗口输入代码时,输入控件的名称及圆点后,出现下拉列表后,如何输入方法或属性?

9.窗体、标签、命令按钮、文本框的默认属性分别是什么?

10.在输入代码时,如何从属性列表和方法列表中快速输入属性及方法?

- 2 - 第三章 VB语言基础

(一)本章学习目标

本章是VB编程的基本要求,一定要熟练掌握基本数据类型、常量、变量、运算符、表达式等基本概念和规则。学会并能运用一些常用函数。

(二)本章重点、要点

编写VB程序的基本要求,记住并熟练掌握基本数据类型及对应的关键字,常量和变量的定义与使用、各类运算符的写法和使用、VB表达式的规则。一些常用的内部函数要学会使用。

(三)练习题

1. VB定义了哪几种数据类型?变量有哪几种数据类型?常量有哪几种数据类型?

2. 如果希望使用变量x来存放数据765432.123456,应该将变量x声明为何种类型?

3. VB共有几种表达式?根据什么确定表达式的类型?

4. 在VB中,对于没有赋值的变量,系统默认值是什么?

5. VB算术表达式a/(b+c/(d+e/Sqr(f)))的数学表达式是什么?

6. 函数Int(Rnd(0)*10)属于哪个范围内的整数?

7. 顺序结构的特点是什么?

8. Rem和单撇号有什么不同?

9. 试述Tab()和Space()两个函数的区别?

10. 试述Int()和Fix()两个函数的区别?

第四章 VB控制结构

(一)本章学习目标

本章主要讲述VB的三种基本语句结构:顺序结构、选择结构、循环结构。这是VB编程的基本要求,也是本门课程的重点内容。要求熟练掌握这三种基本结构的语法(包括各种变化),能准确写出各种语句结构执行的步骤,能熟练运用该语句进行编程,不出现语法错误。同时,应熟练掌握一些常用的算法。常用算法:累加、连乘 、 - 3 - 求素数、穷举法、递推法和最大、小值的求法等。

(二)本章重点、要点

VB的顺序结构、选择结构、循环结构的语法和常用算法。在VB中,实现循环的语句有三种:For-Next循环(计数循环)、While-Wend循环(当循环)和Do-Loop循环(Do循环)。在这三种循环语句中,进行不同的组合,可以形成多种格式的语句。

(三)练习题

1.通过键盘输入若干数,当输入0时结束输入(0不参加计算),计算并输出这些数的平均值。

2.从1开始计算奇数的平方倒数之和,要求最后一项刚好小于0.0001。

3.输出如图所示的图形。

4.输入30个字符,统计其中字符A,B,C的个数(不分大小写),连续输入三个字符Q,则结束程序。

5.求1!+2!+3!+……+n!

6.求出Fibonacci(斐波那契)数列的前20项。Fibonacci(斐波那契)数列的规律是:前2项为0和1,其余各项为该项前2项之和,即0,1,1,2,3,5,8,13……。

7.打印九九乘法表。

8.输入两个正整数,求其最小公倍数和最大公约数。

9.找出1000以内所有的个位数为3素数,并统计其个数。

10.对于下面所示的分数序列:

1381352,,,,,8351321,……

2求出该序列的前10项的和,并打印出第10项。

- 4 - 第五章 数组和自定义类型

(一)本章学习目标

本章理解VB的数组的概念及数组的作用、熟练掌握数组的声明方法、VB数组的基本操作、能运用数组进行编程,掌握一些常用算法的编程思想,学会选择法和起泡排序法。

(二)本章重点、要点

VB的数组的概念、VB静态数组及声明、VB动态数组及声明、VB数组的基本操作、选择法排序和起泡法排序,利用数组进行编程的一些常用算法。

(三)练习题

1.将一个一维数组a(9)中各元素值按行的顺序放入二维数组b(3×3)。

2.用随机数函数产生10个40内的整数,使用选择排序法从小到大排序

3.生成下列二维数组,且按下列格式输出。

3 4 5 6

7 8 9 10

11 12 13 14

15 16 17 18

4.将一个一维数组反序放置。例如: a=(67,89,76,98,66), 反序放置后,a=(66,98,76,89,67)

5.有一个m×n矩阵,找出最大元素值及其最大元素值所在的行、列位置。

6.将矩阵m(n,n)主对角线和次对角线上的元素置为1,其余元素置为0。

7.将一个二维数组a(m,n)按行顺序将每个元素放入一个一维数组b(m×n)。

8.将用 inputbox()输入的一个数插入到一个按递增排列的有序数列中,插入后该数列仍然有序。

9.有一个无序数组,删去与第一个元素值相同的其他元素值,删除后其他元素的值前移。

第六章 过 程

(一)本章学习目标

本章熟练掌握函数过程的定义与调用,熟练掌握子过程的定义与调用,学会参数传递方式:传值和传址,理解变量、过程的作用域,理解递归定义和思想,能运用递 - 5 - 归进行编程。

(二)本章重点、要点

函数过程和子过程的定义与调用,参数的传递方式:传值和传址,变量、过程的作用域,递归等概念。

(三)练习题

1.函数过程有什么不足?

2.子过程与函数过程区别有哪些?

3.函数的参数传递时,什么是传址方式?

4.函数的参数传递时,什么是传值方式

5.什么是变量、过程的作用域?

6.过程的作用域有哪几个级别?其对应的关键字是什么?

7.在VB中,变量有哪些级别?如何定义?

8.什么是递归?请举例说明。

9.设计递归时应遵循哪些原则?

第七章 用户界面设计

(一)本章学习目标

理解控件的作用。能运用常用控件进行编程。

(二)本章重点、要点

VB中可使用的控件分为三类:标准控件、ActiveX控件和可插入对象。

标准控件(也称内部控件),VB启动后出现在工具箱中的控件,共有20个,既不能添加,也不能删除。这些控件由VB的.exe文件提供。

AcitveX控件,在以前的版本中称为OLE控件或定制控件,是AcitveX部件的一部分,AcitveX部件是可以重复使用的编程代码和数据,是由用AcitveX技术创建的一个或多个对象所组成。

AcitveX部件通常分为四种:AcitveX控件、AcitveX DLL、AcitveX EXE和AcitveX文档。AcitveX部件是扩展名为.OCX的独立文件,通常存放在Windows的system文件夹中。使用AcitveX控件之前必须加载。大多数AcitveX控件的属性可以简单地在其属性页中设置。

可插入对象是指Windows应用程序的对象,也可以添加到工具箱中,具有与标准控件- 6 - 类似的属性,可以同标准控件一样使用。

单选按钮和复选框、框架、列表框和组合框、滚动条和Slide控件、时钟、ProgressBar控件、UpDown控件、Animation控件、SSTab控件、鼠标器和键盘

(三)练习题

1. VB中可使用的控件分为哪几类?

2. 框架有什么作用?

3. 列表框的作用是什么?

4. 组合框有哪几种类型?

5. 时钟控件的作用如何?

6. 鼠标事件有哪些?

7. 键盘事件有哪些?各自的作用如何?

8. Animation控件有什么用处?

9. 怎样设置鼠标光标的形状?

10. SSTab控件的Click事件过程有什么特点?

第八章 数据文件

(一)本章学习目标

学会文件的概念,学会文件的作用,学会文件的分类,熟练掌握文件的读写操作方法、了解并能运用常用的文件操作语句和函数。熟练掌握用文件进行数据存储的方法。

(二)本章重点、要点

文件的概念,文件的作用,文件的分类,文件的读写操作方法、常用的文件操作语句和函数。

(三)练习题

1.什么是文件?

2.根据访问模式,文件可分为哪些种类?请说出其特点。

3.若要对文件进行访问,需要经过哪几个步骤?

4.打开一个顺序文件时,有哪几种打开的模式?都有什么作用?

5.读顺序文件时,有哪几种命令可以使用?命令的格式和作用各是什么?

6.LOF()和EOF()都有什么作用?

- 7 - 7.已知有一个数据文件,请编写程序将中的数据复制到文件中去。

8.已知一个学生信息的文本文件为,学生信息包括:

姓名(字符型),专业(字符型),年龄(整型),分数(整型)

编写程序,找出其中分数最高的和分数最低的学生并输出其记录到文件中去。

9.已知一个学生信息的文本文件为,学生信息包括:

姓名(字符型),专业(字符型),年龄(整型),分数(整型)

编写程序,统计出其中不及格的学生人数并输出。

10.已知一个学生信息的文本文件为,学生信息包括:

姓名(字符型),专业(字符型),年龄(整型),分数(整型)

编写程序,查找姓名为“王军”的学生并输出其记录。

- 8 - 参考答案

第一章 Visual Basic程序设计概述

1.C 2. A 3. A 4. B 5. D 6. D 7. C 8. D 9. B 10. C

第二章 VB可视化编程基础

1.具体过程如下

(1)在窗体上建立用户窗口(界面)对象。

(2)分别对对象设置属性。

(3)分别对对象事件的过程编程且完成代码输入。

(4)运行程序和调试程序。

(5)保存程序。

2.至少保存2个文件,先保存窗体文件,后保存工程文件。

3..vbp, .frm, ..bas, .

4.应该放在窗体装入(Form_Load)事件中

5. 三种:方法一是执行工具栏中的启动按钮;方法二是选取菜单中的“运行/启动”命令;方法三是直接按F5键。

6.至少5种方法:点击窗体窗口;选择菜单栏的viewobject; shift+F7; 点击资源管理器中的窗体按钮;单击工程资源管理器中的窗体名称(如:form1)。

7.在代码窗口输入代码时,控件的名称及圆点输入后,系统自动出现属性及方法的下拉列表,可以帮助使用者快速输入。

8.输入方法或者属性关键字的首字母进行初选,再用鼠标或者光标键细选,然后双击鼠标左键或者单击空格键。

9.标签、命令按钮、文本框、图形图像框的默认属性分别为:caption、caption、text和picture。

10.可以先输入属性或方法的首字母,然后找到需要的属性及方法并选择,用鼠标双击或击空格键即可完成输入。

- 9 - 第三章 VB语言基础

1. VB6.0定义了13种数据类型,分别是整数、长整数、单精度浮点型、双精度浮点型、货币型、字节型、变长字符串、定长字符串、布尔型、日期型、对象型、可变类型(数值)、可变类型(字符)。

变量的数据类型有:数值型(整型、长整型、单精度浮点型、双精度浮点型、货币型和字节型)、字符串(变长字符串和定长字符串)、布尔型、日期型、对象型、可变数据类型(数值和字符)。

常量的数据类型有:字符串常量、数值常量(整型、长整型、单精度浮点型、双精度浮点型、货币型和字节型)、布尔常量、日期常量。

2. 应该使用双精度数Double类型。

3. VB有5种类型的表达式,分别是:算术表达式、字符串表达式、关系表达式、布尔表达式和日期表达式,VB根据表达式的运算符来确定表达式的类型。

4. 在VB中,当使用声明语句建立一个变量后,系统自动将数值类型的变量赋初值0,变长的字符串被初始化为一个零长度的字符串(""),而定长的字符串则用空格填充。Variant变量被初始化为Empty。将布尔型的变量初始化为False。

5. 写成的数学表达式为abdcef

6. (0,10)

7. 顺序结构是一种线性结构,在这种结构中,各操作块按照各自某种顺序依次执行。

8. Rem命令及命令后的说明文字要求独占一行,Rem和注释文字间一定要加一个空格,如果非要使用Rem命令将注释语句写在某条语句后,则需在Rem前使用英文“:”号;而单撇号没有上述限制。

9. Tab()函数是绝对定位函数,总是从左边界开始;Space()函数能从当前输出位置起输出若干空格(形成一段空距)。

Fix(x)函数无论对正数或负数都是去掉小数部分,取整数部分(符号不变),如:Fix(9.1)=Fix(9.9)=9,Fix(-9.1)=Fix(-9.9)=-9;而Int(x)函数返回的是不超过x的最大整数,如:Int(9.1)=Int(9.9)=9,Int(-9.1)=Int(-9.9)=-10。

第四章 VB控制结构

1.

Private Sub Command2_Click()

Dim Sum As Single, Count As Integer, Val As Single

Sum = 0

Count = -1

- 10 - Val = 1

While Val <> 0

Val = InputBox("请输入一个数:" & Chr(13) & Chr(10) & "输入0结束程序!")

Sum = Sum + Val

Count = Count + 1

Wend

If Count <> 0 Then

Print "While-Wend 循环:","共输入了"; Count; "个数","平均值为:"; Sum /

Count

End If

End Sub

2.

Private Sub Form_Click()

Dim N as Integer,Sum as Single,Term as Single

N = 1

Sum = 0

Do

Term = 1 / (N * N)

Sum = Sum + Term

N = N + 2

Loop Until Term < 0.0001

Print "运算结果为:"; Sum

Print "最后一项的值为:"; Term

End Sub

3.

Private Sub Command1_Click()

Print Tab(18); "双循环的结果"

For i = 1 To 10

Print Tab(25 - i);

For j = 1 To 2 * i - 1

Print "*";

Next j

Print

Next i

End Sub

思考:

① 代码段中倒数第三行的语句Print的作用是什么?

② 语句Print Tab(25 - i);的作用是什么?特别体会其中的25的含义。Private Sub Command2_Click()

Print Tab(18); "单循环的结果"

For i = 1 To 10

Print Tab(25 - i); String(2 * i - 1, "*")

- 11 -

Next i

End Sub

双循环方式中的内循环被字符串函数String(2 * i - 1, "*")所替代。对于字符串函数,如果能熟练掌握,对程序设计具有很大的帮助。

4.

Private Sub Command1_Click()

Dim ACount As Integer, BCount As Integer,

Dim CCount As Integer, QCount As Integer

Dim CH As String * 1

ACount = 0

BCount = 0

CCount = 0

QCount = 0

For I = 1 To 30

CH = InputBox("请输入一个字符!" & Chr(13) & Chr(10) + "连续输入三个字符Q,可结束程序", "字符统计")

CH = UCase(CH)

If CH = "Q" Then QCount = QCount + 1 Else QCount = 0

If QCount = 3 Then

MsgBox "连续输入了三个字符Q,结束输入", , "注意"

Exit For

End If

Select Case CH

Case "A"

ACount = ACount + 1

Case "B"

BCount = BCount + 1

Case "C"

CCount = CCount + 1

End Select

Next I

= ACount: = BCount: = CCount

End Sub

5.

Private Sub Form_Click()

Dim N As Integer, I As Integer

N = InputBox("请输入一个数正整数N:")

factorial = 1

Sum = 0

For I = 1 To N

factorial = factorial * I

- 12 -

Sum = Sum + factorial

Next I

Print "小于自然数"; N; "的自然数阶乘之和为:", Sum

End Sub

6.

Private Sub Form_Click()

a = 0

b = 1

Print a, b,

For i = 1 To 9

a = a + b

b = a + b

Print a, b,

If i Mod 2 = 1 Then Print

Next i

End Sub

运行结果见图:

7.

Private Sub Form_Click()

For i = 1 To 9

For j = 1 To i

Print Tab(11 * (j - 1)); j; "*"; i; "="; Str(i * j);

Next j

Print

Next i

End Sub

运行结果如下图所示:

- 13 - 8.

编写了两个按扭的事件程序。

“求最大公约数”按扭的过程为:

Dim A As Integer, B As Integer, N As Integer, M As Integer, R As Integer

Private Sub Command1_Click()

M = Val()

N = Val()

A = M

B = N

If N = 0 Then Exit Sub

R = M Mod N

Do While R <> 0

M = N

N = R

R = M Mod N

Loop

n = N

End Sub

“求最小公倍数”按扭的过程为:

Private Sub Command2_Click()

If N <> 0 Then n = A * B / N

End Sub

运行界面可参阅图。

说明:该设计运行时,如果要求最小公倍数,需要先按“求最大公约数”的按扭,- 14 - 求出最大公约数后方可按“求最小公倍数”的按扭。

9.

窗体的Click事件过程为:

Private Sub Form_Click()

n = 0

For i = 3 To 1000 Step 2

prime = 1

x = 2

m = Int(Sqr(i))

While x <= m And prime = 1

If i Mod x = 0 Then

prime = 0

Else

x = x + 1

End If

Wend

If prime = 1 And i Mod 10 = 3 Then

n = n + 1

If n Mod 5 = 0 Then

Print i

Else

Print i,

End If

End If

Next i

Print

Print "1000以内个位数为3的素数共有"; n; "个"

End Sub

运行结果见图

10.

窗体的Click事件过程为:

- 15 - Private Sub Form_Click()

Sum = 1 / 2

x = 1

y = 2

For i = 2 To 10

temp = x

x = y

y = x + temp

Sum = Sum + x / y

Next i

Print "数列的前10项的和为:", Sum

Print "该数列的第10项为:", x; "/"; y

End Sub

说明:该数列的规律是:数列项的分子为其前一项的分母,分母为其前一项的分子与分母之和。在程序中注意生成新的分子和分母时需要利用中间变量temp,并且关注计算的顺序。

第五章 数组和自定义类型

1.

程序如下:

Option Base 1

Private Sub Form_Load()

Dim a(), b(3, 3)

n = 1

a = Array(2, 3, 5, 7, 9, 15, 17, 19, 22)

For k = 1 To 3

For j = 1 To 3

b(k, j) = a(n)

Print b(k, j),

n = n + 1

Next j

Print

Next k

End Sub

2.

Option Base 1

Private Sub Form_Load()

Dim a%(10), k%, j%, i%

Randomize

For k = 1 To 10

a(k) = Int(Rnd * 40 + 1)

Next

For k = 1 To 9

- 16 - i = k

For j = k + 1 To 10

If a(i) > a(j) Then i = j ‘保存位置,先不交换数据

Next j

d = a(k): a(k) = a(i): a(i) = d ‘j 循环结束根据记下的位置交换数据

Print a(k);

Next k

Print a(10)

End Sub

3.

方法一:

Option Base 1

Private Sub Form_Load()

Dim m&(4, 4), i%,j%

For i = 1 To 4

For j = 1 To 4

m(i, j) =(i - 1) * 4 + j + 2

Print Spc(5 - Len(Str(m(i, j)))); m(i, j);

Next j

Print

Next i

End Sub

方法二:

Option Base 1

Private Sub Form_Load()

Dim m&(4, 4), i%,j%,n%

n = 3

For i = 1 To 4

For j = 1 To 4

m(i, j) = n

Print Spc(5 - Len(Str(m(i, j)))); m(i, j);

n = n+1

Next j

Print

Next i

End Sub

4.

程序如下:

Option Base 1

Private Sub Form_Load()

Dim a(), b

a = Array(2, 3, 5, 7, 9, 15, 17, 19, 22)

n = UBound(a)

For k = 1 To n / 2

b = a(k)

a(k) = a(n + 1 – k)

a(n - k + 1) = b

- 17 - Next k

For k = 1 To n

Print a(k);

Next k

End Sub

5.

程序如下:

Option Base 1

Private Sub Form_Load()

Dim a(), m%, n%, i%, j%

m = InputBox("input m")

n = InputBox("input n")

ReDim a(m, n)

Randomize

For i = 1 To m

For j = 1 To n

a(i, j) = Int(Rnd * 100)

Print a(i, j);

Next j

Print

Next i

Max = a(1, 1)

h = 1: l = 1

For i = 1 To m

For j = 1 To n

If Max < a(i, j) Then

H = i: l = j

End If

Next j

Next i

Print a(h, l); h, l

End Sub

6.

程序如下:

Option Base 1

Private Sub Form_Load()

Dim a%(), m%, i%, j%

m = InputBox("input m")

ReDim a(m, m)

For i = 1 To m

a(i, i) = 1

a(i, m - i + 1) = 1

Next i

For i = 1 To m

For j = 1 To m

Print a(i, j);

- 18 -

Next j

Print

Next i

End Sub

7.

程序如下:

Option Base 1

Private Sub Form_Load()

Dim a%(2, 4), b%(8), i%, j%, n%

n = 1

For i = 1 To 2

For j = 1 To 4

a(i, j) = InputBox("input number")

b(n) = a(i, j)

n = n+1

Next j

Next i

For i = 1 To 8

Print b(i);

Next i

End Sub

8.

程序如下:

ption Base 1

Private Sub Form_Load()

Dim a(), i%, j%, k%, n%

a = Array(53, 59, 67, 89, 90, 95)

n = (UBound(a) + 1)

ReDim Preserve a(n)

k = InputBox("iuput x")

For i = 1 To n - 1

If k < a(i) Then Exit For

Next i

For j = n To i + 1 Step -1

a(j) = a(j - 1)

Next j

a(i) = k

For i = 1 To n

Print a(i);

Next i

End Sub

9.

程序如下:

Option Base 1

Private Sub Form_Load()

Dim a(), i%, j%, k%, n%, kk%

a = Array(66, 66, 67, 90, 87, 66, 90, 67, 66)

- 19 - n = UBound(a)

i = 2

Do While i < n

For k = i To n

If a(1) = a(k) Then

n = n - 1 '遇到相同的数,总数则要减少一个

Exit For

End If

Next k

For j = k To n '遇到相同的数则删除

a(j) = a(j + 1)

Next j

i = i + 1

Loop

ReDim Preserve a(n) '重新定义数组

For i = 1 To n '输出结果

Print a(i);

Next i

End Sub

第六章 过 程

1.当有以下二点时,用函数不方便:

(1)不是为了获得某个函数值,而是为了某种功能的处理。

(2)要获得多个结果。

2.

(1)函数过程名有值,有类型,在函数体内至少赋值一次;子过程名无值,无类型,在子过程体内不能对子过程名赋值;

(2)调用时,子过程调用是一句独立的语句。函数过程不能作为单独的语句加以调用,必须参与表达式运算。

(3)一般当过程有一个函数值,使用函数过程较直观;反之若过程无返回值,或有多个返回值,使用子过程较直观。

3.

传址:形参得到的是实参的地址,当形参值的改变同时也改变实参的值。

4.

传值: 形参得到的是实参的值,形参值的改变不会影响实参的值。

5.

作用域:变量、过程随所处的位置不同,可以被访问的范围。

6.

窗体/模块级:加Private关键字的过程,只能被定义的窗体或模块中的过程调用。

- 20 - 全局级:加Public关键字(缺省)的过程,可供该应用程序的所有窗体和所有标准模块中的过程调用。

7.

局部变量:在过程内声明的变量,只能在本过程中使用。

窗体/模块级变量:在“通用声明”段中用Dim语句或用Private语句 声明的变量,可被本窗体/模块的任何过程访问。

全局变量:在“通用声明”段中用Public语句声明的变量,可被本应用程序的任何过程或函数访问。

8.用自身的结构来描述自身就称为“递归”。例如对阶乘的定义:

n!=n*(n-1)!(n-1)!=(n-1)*(n-2)!……,0!=1

9.递归过程中有终止的条件和终止时的值或某种操作;每递归调用一次,其中的参数要向终止方向收敛。

第七章 用户界面设计

1. VB中可使用的控件分为三类:标准控件、ActiveX控件和可插入对象。

2. 每个窗体中可能会存在许多控件,为了将控件适当地按功能分组,可以使用框架将某些控件组合在一起,对一个窗体中的各种功能进行分类,以便于用户识别。当用框架将同一个窗体上的单选按钮分组后,每一组单选按钮都是独立的。

3. 列表框以列表形式显示一系列项目,用户可以从中选择一个或者多个列表项。

4. 组合框的类型有:下拉式组合框(Style属性值为0)、简单组合框(Style属性值为1)和下拉式列表框(Style属性值为2)。

5. 时钟控件是一种可按一定时间间隔触发事件的控件,通常用于检查系统时钟,确定是否执行某项任务。运行时,时钟控件不可见。

6. 鼠标事件有Click、Dblclick、MouseDown、MouseUp和MouseMove。

7. 键盘事件有KeyPress、KeyUp和KeyDown。其中KeyUp和KeyDown所接收到的信息与KeyPress接收到的不完全相同。KeyUp和KeyDown能检测到KeyPress不能检测到的功能键、编辑键和箭头键。KeyPress接收到的是用户通过键盘输入的ASCII码字符。

8. Animation控件只能播放无声的AVI文件,不能播放含有声音数据的AVI文件。

9. 鼠标光标的形状通过MousePointer属性来设置,该属性可以在属性窗口中设置,也可以在程序代码中设置。MousePointer的属性是一个整数,可以取0~15。

10. SSTab控件用来制作含有选项卡的对话框。SSTab控件具有特殊的Click事件过程,其参数previoustab标识先前为活动的选项卡。另外,在当前活动的选项卡上单击不会触发Click事件,只有当单击其他的选项卡时才发生该事件。

第八章 数据文件

1.

文件是存储在外部介质上数据的集合。

- 21 - 2.

文件是记录的集合。可分为下列三种:

顺序访问模式:顺序文件,记录可长可短;按顺序依次把记录写入文件;按顺序依次把记录读出来。

随机访问模式:随机文件,记录的长度相同;随机文件可以直接访问文件中的任意一个记录,根据记录号访问。

二进制访问模式:二进制文件(可认为记录长度为1)。直接把二进制码存放在文件中。

3.

需要进行三个步骤:打开文件、对文件进行操作和关闭文件。

4.

有三种打开的模式可以选择:

OUTPUT:对文件进行写操作;

INPUT:对文件进行读操作;

APPEND:把数据追加到文件末尾。

5.

有三种命令语句可以使用:

INPUT #文件号,变量列表

把读出的每个数据项分别存放到所对应的变量。

LINE INPUT #文件号,字符串变量

读一行到变量中,主要用来读取文本文件。

INPUT$(读取字符数,#文件号)

随意读取字符

6.

LOF(文件号):返回文件的长度(总字节数)。

EOF(文件号):返回读写位置。 指针在文件尾时,EOF函数为True,否则为False。

7.

Private Sub Form_Load()

Dim char As Byte

Dim FileNum1,FileNum2 as Integer

FileNum1 = FreeFile '打开源文件

Open "C:" For Binary As # FileNum1

FileNum2 = FreeFile ' 打开目标文件

Open "C:" For Binary As # FileNum2

Do While Not EOF(FileNum1)

Get # FileNum1, , char ' 从源文件读出一个字节

Put # FileNum2, , char ' 将一个字节写入目标文件

Loop

Close #FileNum1

Close #FileNum2

End Sub

8.

Private Sub Form_Click()

Dim name$, spe$, age%,score%

- 22 -

Dim hname$, hspe$, hage%

,hscore%

Dim lname$, lspe$, lage%,lscore%

Open "c:" For Input As #1

Open "c:" For Output As #2

Hscore=-1

Lscore=-1

Do While Not EOF(1)

Input #1, name,spe,age,score

If score>hscore then

Hname=Name

Hspe=Spe

Hage=Age

Hscore=Score

End If

If score

Lname=Name

Lspe=Spe

Lage=Age

Lscore=Score

End If

Loop

Write #2, Hname, Hspe, Hage, Hscore

Write #2, Lname, Lspe, Lage, Lscore

Close #1, #2

End Sub

9.

Private Sub Form_Click()

Dim name$, spe$, age%,score%,Count%

Open "c:" For Input As #1

Count=0

Do While Not EOF(1)

Input #1, name,spe,age,score

If score<60 then Count=Count+1

Loop

Print “不及格的人数为:”,Count

Close #1

End Sub

10.

Private Sub Form_Click()

Dim name$, spe$, age%,score%

Open "c:" For Input As #1

Do While Not EOF(1)

- 23 - Input #1, name,spe,age,score

If name=“王军” then

Print name, spe, age, score

Exit Do

End If

Loop

Close #1

End Sub

- 24 - 《Visual Basic》课程考试模拟试卷

一、单项选择题(每题1分,共70分,请将正确答案写入表格中)

1.退出Visual Basic的快捷键是______。

A. Ctrl+Q B. Shift+Q

C. Alt+Q D. Ctrl+Alt+Q

2.窗体设计器是用于设计______。

A.应用程序的界面 B. 对象的属性

C.应用程序的代码 D. 窗体的代码

3.启动Visual Basic后, VB为用户建立的第一个窗体是______。

A.Form1 B. Form

C.窗体1 D. 窗体

二、简答题(每题5分,共10分)

1.若要对文件进行访问,需要经过哪几个步骤?

2.打开一个顺序文件时,有哪几种打开的模式?都有什么作用?

三、编程题(每题10分,共20分)

1.写程序计算一个正整数的所有因子的和。

2. 编写程序,用双循环结构输出下列三角形:

*

* * *

* * * * *

* * * * * * *

- 25 -