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. 写成的数学表达式为abdcef
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
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
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 "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
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
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
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
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
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 -


发布评论