当前位置:文档之家› list14

list14

list14
list14

附录B 习题参考答案

习题1

1.1 答:VB的基本特点如下:

·可视化的设计平台。

·面向对象的设计方法。

·事件驱动的编程机制。

·结构化的设计语言。

·充分利用Windows资源。

·开放的数据库功能与网络支持。

1.2 答:VB有如下几个版本:

·VB学习版:VB的学习版可以使程序员方便地创建功能强大的Microsoft Windows和Windows NT的应用程序。这个版本的VB包括所有内部控件以及网

格和数据绑定控件。

·VB专业版:VB专业版提供了功能完整的工具集,软件开发者可以使用这些工具开发各种解决方案。这个版本的VB包括学习版中的所有工具和功能以及附

加的ActiveX控件、Internet信息服务器应用程序设计器、集成的数据工具和数

据环境、活动数据对象,以及动态HTML页面设计器。

·VB企业版:VB的企业版允许开发健壮的分布式应用程序。这个版本的VB包括专业版的所有特征,另外还包括了BackOffice工具,如SQL Server以及其他辅

助工具等。

1.3 答:在安装好VB后,启动“开始”菜单,选择“程序”,选择“Microsoft Visual Basic 6.0中文版”,在出现的下级菜单中选择“Microsoft Visual Basic 6.0中文版”即可启动VB,或者做一个快标,通过双击该快标启动VB。

在VB的集成开发环境中单击“关闭”按钮或者选择“文件”菜单中的“退出”命令时,VB会自动判断用户是否修改了工程的内容,并询问用户是否保存文件或直接退出。

1.4 答:VB系统集成环境包括:

·主窗口:由标题栏、菜单栏和工具栏组成,主要提供了用于开发VB程序的各种命令。

附录B 习题参考答案327

·窗体窗口:用于在窗体中放置各种控件,以建立将要开发的VB应用程序的图形用户界面。

·属性窗口:用于设置所有窗体或控件的属性,如颜色、字体和大小等。

·工程资源管理器窗口:用来显示和保存一个应用程序所有属性以及组成这个应用程序的所有文件。

·工具箱:提供了用于开发VB应用程序的各种控件。

1.5 答:为了定制集成开发环境,选择“工具”菜单下的“选项”菜单项,出现一个“选项”对话框。这个对话框只能在设计时使用,其中包含以下6个选项卡:

·“编辑器”

·“编辑器格式”

·“通用”

·“可连接的”

·“环境”

·“高级”

用户可以修改各选项卡中相应的设置以定制系统集成环境。

习题2

2.1 答:从广义上来说,对象是客观事物中的一个实体。在可视化编程语言中,对象是代码和数据的集合,它可以是窗体和控件,也可以是菜单或数据库等。

对象的事件是预先定义好的、能够被对象识别的动作,如单击(Click事件、双击DblClick)事件、加载(Load)事件、鼠标移动(MouseMove)事件等,不同的对象能够识别不同的事件。

对象的方法是在对象上实施某种操作的效果,即完成某种操作的功能。如打印(Print)方法、显示窗体(Show)方法等,用户可直接调用,不能进行修改。

2.2 答:在VB编程中,完成某种功能可通过触发对象事件和调用对象方法,而响应事件和调用方法都必须基于某个对象。触发某个事件实际上就是执行一个事件过程代码段,在该代码段中又可以随意调用对象方法,而调用对象方法不可能触发某个事件。

例如,在窗体Form1上添加一个命令按钮Command1和一个标签Label1,编写一个响应Command1的单击(Click)事件过程如下:

Private Sub Commmand1_Click()

Label1.Cap tion = “单击命令按钮”

End Sub

单击命令按钮Command1时触发该单击事件,即执行上述代码,在标签上显示相应的信息。

328 Visual Basic程序设计导学

2.3 答:对象的属性是描述对象的一组特征,即描述对象特征的数据。如设置对象的名称、标题、颜色、大小等,有的可直接在设计界面时通过属性窗口进行设置,有的可以在事件过程或通用过程代码中进行设置。对象的方法是在对象上实施某种操作的功能,不能在设计界面时调用对象方法,一般在过程代码中可随意调用,根据需要还可以添加适当的参数。设置对象属性和调用对象方法均可在代码设计中进行,其一般格式为:

对象名.属性名=属性值(设置对象属性)

对象名.方法名(调用对象方法)

例如,设置文本框(Textl)的文本属性(Text)为“计算机世界”:

Text1.Text = "计算机世界"

隐藏窗体Form2的方法:

Form2.Hide

2.4 答:一个工程中应该包含这样几种类型的文件:

·工程文件:用于跟踪所有部件,相当于给出了一份与工程有关的全部文件和对象的清单,其扩展名为.vbp。每个工程都必须对应一个工程文件。

·工程组文件:若程序是由多个工程组成的工程组,则此时会生成一个工程组文件,扩展名为.vbg。

·窗体文件:每个窗体都必须对应一个窗体文件,扩展名为.frm。在一个工程中可以有多个窗体,所以相应存在多个窗体文件。

·模块文件:也叫标准模块文件,一般在大型应用程序中才可能用到,用于合理组织程序结构,扩展名为.bas。主要由代码组成,声明全局变量和一些Public

过程,可被整个程序内的多个窗体调用。该文件可以由用户自己生成,也可以

不存在。

·类模块文件:在Visual Basic中,允许用户自己定义类,每个用户定义的类都必须有一个相应的类模块文件,扩展名为.cls。

·数据文件:为一个二进制文件,用于保存窗体上控件的属性数据。此文件是由系统自动生成的,用户不能对其进行直接编辑。

2.5 设计一个窗体,在其中添加一个标签(名称为Label1)和两个命令按钮(分别为Command1和Command2)。在该窗体上设计如下事件过程:

Private Sub Command1_Click()

'欢迎词命令按钮事件过程

Label1.Caption = "欢迎使用本系统"

End Sub

Private Sub Command2_Click()

'祝贺词命令按钮事件过程

Label1.Caption = "庆祝中华人民共和国成立51周年"

End Sub

附录B 习题参考答案329

2.6 设计一个窗体,按图2.12设计屏幕,三个文本框分别为Text1,Text2和Text3,四个命令按钮从左到右分别为Command1,command2,Command3和Command4。在该窗体上设计如下事件过程:

Private Sub Command1_Click()

Text3.Text = Val(Text1.Text) + Val(Text2.Text)

End Sub

Private Sub Command2_Click()

Text3.Text = Val(Text1.Text) - Val(Text2.Text)

End Sub

Private Sub Command3_Click()

Text3.Text = Val(Text1.Text) * Val(Text2.Text)

End Sub

Private Sub Command4_Click()

If Val(Text2.Text) <> 0 Then

Text3.Text = Val(Text1.Text) + Val(Text2.Text)

End If

End Sub

习题3

3.1 答:False,1ABC,A[7],A-2,A.3和"Comp"不能作为VB的标识符。

3.2 答:变量有name,ff,cj和n。常量有"name",False,"11/16/99","120",#11/16/2000#和12.345。其中:

"name","11/16/99","120"为字符型常量。

False为布尔型常量。

#11/16/2000#为日期型常量。

12.345为数值型常量。

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

3.4 设计一个窗体,在其中放置6个标签(使用Label1控件数组)、6个文本框(使用Text1控件数组)和一个命令按钮Command1。在该命令按钮上设计如下事件过程:

Private Sub Command1_Click()

s = Val(Text1(0).Text) * Val(Text1(1).Text) + _

330 Visual Basic程序设计导学

Val(Text1(2).Text) * Val(Text1(3).Text) + _

Val(Text1(4).Text) * Val(Text1(5).Text)

MsgBox "总金额为:" + Trim(Str(s)), 0, "计算结果"

End Sub

Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)

i = Index + 1

If i >= 6 Then i = 0

If KeyAscii = 13 Then

Text1(i).SetFocus

End If

End Sub

3.5 设计一个窗体,在其中放置2个标签(分别为Label1和Label2)、一个文本框(Text1)和一个命令按钮Command1。在该命令按钮上设计如下事件过程:

Private Sub Command1_Click()

Dim s As Integer

Dim a, b, c, revs As String

s = Val(Text1.Text)

If s < 100 Or s > 999 Then Exit Sub

a = Str(s \ 100): s1 = s - Val(a) * 100

b = Str(s1 \ 10): s2 = s1 - Val(b) * 10

c = Str(s2)

revs = c + b + a

Label2.Caption = "反向结果:" + revs

End Sub

3.6 设计一个窗体,在其中放置4个标签(前三个使用Label1控件数组,后一个为Label2)、3个文本框(使用Text1控件数组)和一个命令按钮Command1。在该命令按钮上设计如下事件过程:

Private Sub Command1_Click()

Dim a, b, c, m As Integer

a = Val(Text1(0).Text)

b = Val(Text1(1).Text)

c = Val(Text1(2).Text)

If a < b Then

If b < c Then m = c Else m = b

Else

If a < c Then m = c Else m = a

End If

Label2.Caption = "最大数为:" + Str(m)

End Sub

3.7 设计一个窗体,在其中放置4个标签(前三个使用Label1控件数组,后一个为Label2)、3个文本框(使用Text1控件数组)和一个命令按钮Command1。在该命令按钮上

附录B 习题参考答案331 设计如下事件过程:

Private Sub Command1_Click()

Dim a, b, c, d, x1, x2 As Single

a = Val(Text1(0).Text)

b = Val(Text1(1).Text)

c = Val(Text1(2).Text)

d = b * b - 4 * a * c

If d > 0 Then

x1 = (-b + Sqr(d)) / (2 * a)

x2 = (-b - Sqr(d)) / (2 * a)

Label2.Caption = "两个根:x1=" + Trim(Str(x1)) + " x2=" + Trim(Str(x2))

ElseIf d = 0 Then

x1 = -b / (2 * a)

Label2.Caption = "一个根:x=" + Trim(Str(x1))

Else

Label2.Caption = "没有根"

End If

End Sub

3.8 设计一个窗体,在其中放置2个标签(分别为Label1和Label2)、一个文本框(Text1)和一个命令按钮Command1。在该命令按钮上设计如下事件过程:

Private Sub Command1_Click()

Dim a, s As Single

a = Val(Text1.Text)

Select Case a

Case Is < 20000

s = a * 0.05

Case Is < 30000

s = 20000 * 0.05 + (a - 20000) * 0.1

Case Is < 60000

s = 20000 * 0.05 + (30000 - 20000) * 0.1 + (a - 30000) * 0.2

Case Else

s = 20000 * 0.05 + (30000 - 20000) * 0.1 + (60000 - 30000) * 0.2 + _

(a - 60000) * 0.4

End Select

Label2.Caption = "所得税为:" + Trim(Str(s))

End Sub

3.9 设计一个窗体,在其中放置2个标签(分别为Label1和Label2)、一个文本框(Text1)和一个命令按钮Command1。在该命令按钮上设计如下事件过程:

Private Sub Command1_Click()

Dim a, s, x As Single

a = Val(Text1.Text)

s = 15 * Int((a + 14) / 15)

332 Visual Basic程序设计导学

Select Case s

Case 15

x = 5

Case 30

x = 9

Case 45

x = 12

Case 60

x = 14

Case Else

x = 20

End Select

Label2.Caption = "包裹收费:" + Trim(Str(x))

End Sub

3.10 实现本题功能的事件过程如下:

Private Sun Form_Load

Show

Dim A(1 To 20)

For i=1 To 20

A(i)=Int(Rnd*100)

Next

For Each x In A

If x<60 Then Print x

Next

End Sub

3.11 实现本题功能的事件过程如下:

Private Sub Form_Load

Show

Dim m,n As Integer

Dim A(1 To 10)

For i=1 to 10

A[i]=Int(Rnd*90)+10

Next

Print

m=100:n=-100

For i=1 To 10

If A[i]>n Then n=A[i]

If A[i]

Next

Print "最大数";n

Print "最小数";m

End Sub

附录B 习题参考答案333 3.12 实现本题功能的事件过程如下:

Private Sub Form_Load()

Show

Dim n, c, i, j As Integer

n = InputBox("输入一个正整数(小于10)", "数据输入", "5")

For i = 0 To n - 1

c = 1

Print Tab(30 - 2 * i); c;

For j = 1 To i

c = c * (i - j + 1) \ j

Print c; ;

Next

Print

Next

End Sub

3.13 在工程中添加一个窗体,该窗体不包含任何控件,在其上设计如下事件过程:

Private Sub Form_Load()

Show

Dim studname(5)As String * 8

Dim measure(5, 2) As Single

studname(1)= "王华": studname(2)= "刘南": studname(3)= "程功"

studname(4)= "尚结": studname(5)= "张胜"

measure(1, 1) = 180.6: measure(1, 2) = 75.8

measure(2, 1) = 180.4: measure(2, 2) = 68.7

measure(3, 1) = 179.6: measure(3, 2) = 72.5

measure(4, 1) = 170.9: measure(4, 2) = 69.9

measure(5, 1) = 168.2: measure(5, 2) = 65.8

FontName = "楷体_GB2312": FontSize = 16: FontUnderline = True

Print Tab(7); "学生身高体重表"

Print

FontName = "宋体": FontSize = 10

Print "姓名";

Print Tab(15); "身高";

Print Tab(30); "体重"

Print

FontUnderline = False

For i = 1 To 5

Print studname(i);

Print Tab(15); Format$(measure(i, 1), "000.0");

Print Tab(30); Format$(measure(i, 2), "00.0")

high = high + measure(i, 1)

Weight = Weight + measure(i, 2)

Next

Print

334 Visual Basic程序设计导学

Print

FontItalic = True

Print "平均";

Print Tab(15); Format$(high / 5, "000.0");

Print Tab(30); Format$(Weight / 5, "00.0")

End Sub

3.14 实现本题功能的程序如下:

Private Function sum(ByVal m)

Dim s,i as Integer

For i=1 To m

s=s+i

Next

sum=s

End Function

Private Sub Form_Load()

Dim n,s,i As Integer

n=InputBox("输入一个正整数","数据输入","10")

For i=1 To n

s=s+sum(i)

Next

MsgBox("总和为: "+Trim(Str(s)),0, "数据输出")

End Sub

3.15 实现本题功能的程序如下:

Private Sub Form_Load

Dim n,s As Integer

n=1:s=1

Do While s<=40000

n=n+1:s=s*n

Loop

MsgBox("最大的n为: "+Trim(Str(n)),0, "数据输出")

End Sub

习题4

4.1 添加一个窗体,在其中放置一个标签Label1,将其字体改为“楷体”,字体大小为“二号”,前景颜色为“黑色”。然后单击鼠标右键,复制该标签,然后粘贴,建立控件数组Label1产生另一个标签Lable1(1),将它的前景颜色改为红色,将其使用Ctrl+光标键移动到Label1(0)标签的左上方(为了移动方便,进入“工具”菜单,选择“选项”,选择“通用”选项卡,将显示网格的宽度与高度均改为30,这样移动方便些),这样操作就产生了

附录B 习题参考答案335 本题要求的阴影效果。

4.2 添加一个窗体,在其中放置一个文本框Text1。该文本框的属性如下:

FontName "宋体"

FontSize 10.5

ForeColor &H00FF0000&

MultiLine -1 'True

ScrollBars 3 'Both

4.3 添加一个窗体,在其中放置一个命令按钮Command1。该命令按钮的属性如下:

Caption "命令按钮"

FontName "楷体_GB2312"

FontSize 12

ToolTipText "显示命令按钮的提示信息"

4.4 添加一个窗体,在其中放置两个标签和四个复选框(使用Check1控件数组)。在该窗体上设计如下事件过程:

Private Sub Command1_Click()

If Check1(1)And Check1(3)Then

Label2.Caption = "你答对了,真了不起!"

Else

Label2.Caption = "你答错了,再来一次!"

End If

End Sub

4.5 添加一个窗体,在其中放置两个标签和四个选项钮(使用Label1控件数组)。在该窗体上设计如下事件过程:

Private Sub Option1_Click(Index As Integer)

If Index = 1 Then

Label2.Caption = "你答对了,真了不起!"

Else

Label2.Caption = "你答错了,再来一次!"

End If

End Sub

4.6 添加一个窗体,在其中放置一个文本框Text1和两个框架(分别为Frame1和Frame2)。每个框架中添加两个选项钮(分别为Option1和Option2控件数组)。在该窗体上设计如下事件过程:

Private Sub Option1_Click(Index As Integer)

If Index = 0 Then

Text1.FontName = "宋体"

336 Visual Basic程序设计导学

Else

Text1.FontName = "楷体_GB2312"

End If

End Sub

Private Sub Option2_Click(Index As Integer)

If Index = 0 Then

Text1.FontSize = 10

Else

Text1.FontSize = 16

End If

End Sub

4.7 添加一个窗体,在其中放置三个列表框,从左到右分别为List1、List2和List3,再放置两个标签。在该窗体上设计如下事件过程:

Dim a As Integer

Private Sub Form_Load()

List1.AddItem ("12")

List1.AddItem ("10")

List1.AddItem ("5")

List1.AddItem ("8")

List1.AddItem ("22")

List1.AddItem ("25")

List1.AddItem ("9")

List2.AddItem ("9")

List2.AddItem ("15")

List2.AddItem ("20")

List2.AddItem ("32")

List2.AddItem ("18")

List2.AddItem ("5")

List2.AddItem ("7")

List2.AddItem ("32")

End Sub

Private Sub List1_Click()

a = Val(List1.Text)

End Sub

Private Sub List2_Click()

b = Val(List2.Text)

List3.AddItem Trim(Str(a)) + "*" + Trim(Str(b)) + "=" + Trim(Str(a * b))

End Sub

Private Sub List3_Click()

List3.RemoveItem List3.ListIndex

End Sub

4.8 添加一个窗体,在其中放置2个标签和一个组合框Combo1。在该窗体上设计如下事件过程:

附录B 习题参考答案337

Private Sub Form_Load()

Combo1.AddItem ("北京")

Combo1.AddItem ("上海")

Combo1.AddItem ("天津")

Combo1.AddItem ("广州")

Combo1.AddItem ("武汉")

Combo1.AddItem ("沈阳")

Combo1.AddItem ("合肥")

Combo1.AddItem ("长沙")

Combo1.AddItem ("重庆")

End Sub

Private Sub Combo1_KeyPress(KeyAscii As Integer)

If KeyAscii = 13 Then '按Enter键后判断

For i = 1 To Combo1.ListCount

If Combo1.Text = Combo1.List(i) Then

Label2.Caption = "你的输入已在组合框!"

Exit Sub

End If

Next

Label2.Caption = "将你的输入新项添加到组合框中!"

Combo1.AddItem (Combo1.Text)

End If

End Sub

4.9 添加一个窗体,在其中放置一个图片框Picture1和一个计时器Timer1。在该图片框中放置一个标签Label1,其标题为“学生管理系统”,字体为楷体、粗斜体,字体大小为“小三”,前景颜色为红色。将计时器的Interval设置为100。在该窗体上设计如下事件过程:

Private Sub Timer1_Timer()

If Label1.Left - 30 >= Picture1.Left Then

Label1.Left = Label1.Left - 30

Else

Label1.Left = Picture1.Left + Picture1.Width - 30

End If

End Sub

4.10 添加一个窗体,在其中放置3个标签(前两个使用Label1控件数组,后一个为Label2)、两个文本框(使用Text1控件数组)和一个计时器Timer1。在该窗体上设计如下事件过程:

Private Sub Form_Load()

'设置响铃的时间,并在文本框中显示

Text1(1).Text = InputBox$("设置响铃时间(时间格式:时:分:秒):", _

"时间设置", "00:01:01")

End Sub

338 Visual Basic程序设计导学

Private Sub Timer1_Timer()

Text1(0).Text = Time

If Text1(1).Text = "" Then Exit Sub

t = DateDiff("s", Text1(1).Text, Time$)

If Abs(t) < 5 Then '5秒钟以内响铃并提示信息

Label2.Caption = "时间到了!"

Beep '响铃

Beep

Else

Label2.Caption = ""

End If

End Sub

4.11 添加一个窗体,在其中放置一个图像框Img和一个文本框txt。图像框img的基本属性如下:

Name img

Height555

Stretch -1 'True

Width 675

文本框txt的基本属性如下:

Name txt

Text ""

Height270

Width 675

按住Shift键,单击选中这两个控件,然后复制并粘贴在窗体上,使得窗体上有26个这样的图像框和文本框对。

然后在窗体上放置一个驱动器列表框drive1、目录列表框dir1和文件列表框file1。在该窗体上设计如下事件过程:

Private Sub Form_Load()

Dir1.Path = Drive1.Drive

File1.Path = Dir1.Path

File1.Pattern = "*.bmp"

File1.Visible = False '使文件列表框不可见

End Sub

Private Sub Dir1_Change()

File1.Path = Dir1.Path

If File1.ListCount = 0 Then Exit Sub

m = IIf(File1.ListCount > 26, 26, File1.ListCount)

For i = 0 To m – 1

'txt文本框中显示文件名(不含扩展名)

txt(i).Text = Left(File1.List(i), Len(File1.List(i)) - 4)

附录B 习题参考答案339

img(i).Picture = LoadPicture(Dir1.Path & "\" & File1.List(i))

Next

End Sub

Private Sub Drive1_Change()

Dir1.Path = Drive1.Drive

End Sub

4.12 添加一个窗体,在其中放置一个标签Label2、一个组合框Combo1和一个框架Frame1。在该框架中放置5个标签(使用Label1控件数组)和5个文本框(使用Text1控件数组)。在该窗体上设置如下事件过程:

Private Type student '自定义类型

no As Integer

name As String * 8

sex As String * 2

rq As Date

class As String * 5

End Type

Dim stud(1 To 10) As student '定义student类型的数组

Private Sub Form_Load()

'给定义的数组赋初值

stud(1).no = 1: stud(1).name = "王华": stud(1).sex = "男"

stud(1).rq = #10/2/1980#: stud(1).class = "99091"

stud(2).no = 2: stud(2).name = "李强": stud(2).sex = "男"

stud(2).rq = #10/4/1981#: stud(2).class = "99101"

stud(3).no = 3: stud(3).name = "张丽": stud(3).sex = "女"

stud(3).rq = #3/2/1980#: stud(3).class = "99091"

stud(4).no = 4: stud(4).name = "汪洋": stud(4).sex = "男"

stud(4).rq = #1/5/1980#: stud(4).class = "99101"

stud(5).no = 5: stud(5).name = "江华": stud(5).sex = "男"

stud(5).rq = #3/10/1980#: stud(5).class = "99091"

stud(6).no = 6: stud(6).name = "李英": stud(6).sex = "女"

stud(6).rq = #6/2/1980#: stud(6).class = "99101"

stud(7).no = 7: stud(7).name = "胡军": stud(7).sex = "男"

stud(7).rq = #10/9/1981#: stud(7).class = "99091"

stud(8).no = 8: stud(8).name = "刘驰": stud(8).sex = "女"

stud(8).rq = #5/2/1982#: stud(8).class = "99101"

stud(9).no = 9: stud(9).name = "宋仁": stud(9).sex = "男"

stud(9).rq = #8/3/1980#: stud(9).class = "99101"

stud(10).no = 10: stud(10).name = "许兵": stud(10).sex = "男"

stud(10).rq = #11/8/1980#: stud(10).class = "99091"

'将学号都添加到组合框中

For i = 1 To 10

Combo1.AddItem stud(i).no

Next

340 Visual Basic程序设计导学

End Sub

Private Sub Combo1_Click()

i = 1 '查找指定学号的学生记录

Do While Val(Combo1.Text) <> stud(i).no

i = i + 1

Loop

If i > 10 Then MsgBox "没有该学号的记录", 0, "信息提示"

Text1(0).Text = stud(i).no '显示找到的学生记录

Text1(1).Text = stud(i).name

Text1(2).Text = stud(i).sex

Text1(3).Text = stud(i).rq

Text1(4).Text = stud(i).class

End Sub

习题5

5.1 设计一个窗体,将其MaxButton和MinButton属性均设置为False。在该窗体上设计如下事件过程:

Private Sub Form_Load()

Show

Caption = ""

Appearance = 0

BackColor = vbGreen

ForeColor = vbRed: FontUnderline = True

FontBold = True: FontSize = 16: FontItalic = True

Print Tab(6); "VB程序设计参考书"

Print

ForeColor = vbBlue: FontUnderline = False

FontBold = False: FontSize = 11: FontItalic = False

Print "1.龚沛曾等:Visual Basic 程序设计教程"

Print "2.李春葆等:Visual Basic 6.0程序设计教程"

Print "3.段银由等:Visual Basic 程序设计基础"

Print "4.洪国胜:Visual Basic 程序设计"

End Sub

5.2 设计一个窗体,在其中添加一个标签,其标题为“中华人民共和国”,再启动菜单编辑器编辑一个菜单,其结构如下:

"字体"(Font)

"字体"(Font)

...."楷体"(Font1)

...."黑体"(Font2)

附录B 习题参考答案341

...."仿宋"(Font3)

...."幼圆"(Font4)

"大小"(Size)

...."10"(Size1)

...."12"(Size2)

...."16"(Size3)

...."26"(Size4)

在该窗体上设计如下事件过程:

Private Sub font1_Click()

Label1.FontName = "楷体_GB2312"

End Sub

Private Sub font2_Click()

Label1.FontName = "黑体"

End Sub

Private Sub font3_Click()

Label1.FontName = "仿宋_GB2312"

End Sub

Private Sub font4_Click()

Label1.FontName = "幼圆"

End Sub

Private Sub size1_Click()

Label1.FontSize = 10

End Sub

Private Sub size2_Click()

Label1.FontSize = 14

End Sub

Private Sub size3_Click()

Label1.FontSize = 20

End Sub

Private Sub size4_Click()

Label1.FontSize = 26

End Sub

5.3 其界面设计与例5.4的表单相同,运算菜单项名为op数组,即op(1)对应的菜单项标题为“加法”,op(2)对应的菜单项标题为“减法”,op(3)对应的菜单项标题为“乘法”,标题为“加法”菜单项在操作中添加或删除。将窗体上的事件过程修改如下:

'Div为1时表示“除法”菜单可见,其初值默认为0

Dim Div As Integer

Private Sub op_Click(Index As Integer)

If Val(Text2.Text) <> 0 Then

If Div = 0 Then

Load op(4)

op(4).Caption = "除法"

op(4).Visible = True

342 Visual Basic程序设计导学

Div = 1

End If

Else

If Div = 1 Then

Unload op(4)

Div = 0

If Index = 4 Then

Exit Sub

End If

End If

End If

Select Case Index

Case 1

Text3.Text = Val(Text1.Text) + Val(Text2.Text)

Case 2

Text3.Text = Val(Text1.Text) - Val(Text2.Text)

Case 3

Text3.Text = Val(Text1.Text) * Val(Text2.Text)

Case 4

Text3.Text = Val(Text1.Text) / Val(Text2.Text)

End Select

End Sub

Private Sub Exit_Click()

End

End Sub

5.4 设计一个窗体,在其中放置一个文本框Text1,将其属性Multiline设置为True。启动菜单编辑器编辑一个菜单,其结构如下:

oper(oper)<-设置为不可见的

....复制(oper1)

....粘贴(oper2)

在该窗体上设计如下事件过程:

Dim str As String

Private Sub oper1_Click()

str = Text1.SelText

End Sub

Private Sub oper2_Click()

Str1 = Mid(Text1.Text, 1, Text1.SelStart)

Str3 = Mid(Text1.Text, Text1.SelStart + 1, Len(Text1.Text))

Text1.Text = Str1 + str + Str3

End Sub

Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Button = 2 Then

附录B 习题参考答案343

PopupMenu oper, 2

End If

End Sub

习题6

6.1 建立一个窗体,使用Shape控件先在窗体上绘制一个矩形,其属性为:

BackStyle=0

BorderStyle=0

FillStyle=0

FillColor=&H000000FF& (白色)

然后建立一个椭圆,正好套在矩形上,其属性为:

FillStyle=0

FillColor=&H00FFFFFF& (红色)

复制和粘贴该椭圆一次,将粘贴的椭圆正好套在矩形的下方,其属性为:

BackStyle=0

BorderStyle=0

FillStyle=0

FillColor=&H00FFFFFF& (红色)

这样就绘制了本题要求的图形。

6.2 建立一个窗体,在该窗体上设计以下事件过程:

Private Sub Form_Paint()

For i = 1000 To 1 Step –1

Circle (1900, 700 + i), 1000, vbRed, , , 3 / 7

Next

Me.FillStyle = 0

Me.FillColor = RGB(255, 255, 255)

Circle (1900, 700), 1000, , , , 3 / 7

End Sub

6.3 建立一个窗体,在该窗体上设计以下事件过程:

Private Sub Form_Load()

Show

x0 = 1500: y0 = 500

X1 = 2500: Y1 = 2000

X2 = 4000: Y2 = 3000

344 Visual Basic程序设计导学

x3 = 600: y3 = 3000

x4 = 400: y4 = 2000

DrawStyle = 0

DrawWidth = 2

Line (x0, y0)-(X2, Y2)

Line -(x3, y3)

Line -(x4, y4)

Line -(x0, y0)

Line -(x3, y3)

DrawStyle = 2

DrawWidth = 1

Line (x0, y0)-(X1, Y1)

Line -(X2, Y2)

Line (X1, Y1)-(x4, y4)

DrawStyle = 3

DrawWidth = 1

Line (x0, y0)-(x0, (Y1 + Y2) / 2)

End Sub

6.4 建立一个窗体,在该窗体上设计以下事件过程:

Const pi = 3.14159

Private Sub Form_Paint()

For i = 300 To 1 Step –1

Circle (1900, 1000 + i), 1000, vbRed, -pi / 3, -pi / 6, 3 / 5

Next

Me.FillStyle = 0

Me.FillColor = RGB(255, 255, 255) '设置白色

Circle (1900, 1000), 1000, , -pi / 3, -pi / 6, 3 / 5

End Sub

利用循环从上到下绘制一系列有缺口的以红色填充的椭圆,最上面的画成实心的、以白色填充的椭圆。

6.5 建立一个窗体,在该窗体上添加一个图片框Picture1和一个命令按钮Command1。Picture1的Appearance属性设置为0。在该窗体上设计以下事件过程:

Const pi = 3.14159

Private Sub Command1_Click()

Dim i As Single

Picture1.ForeColor = vbRed

Picture1.Scale (-2 * pi, 1)-(2 * pi, -1) '建立坐标系

Picture1.CurrentX = -2 * pi '设置当前坐标位置

Picture1.CurrentY = 0

For i = -2 * pi To 2 * pi Step 0.01

Picture1.Line -(i, Cos(3 * i) * Sin(5 * i)) '绘制曲线

Next

End Sub

附录B 习题参考答案345

6.6 建立一个窗体,在该窗体上设计以下事件过程:

Const pi = 3.14159

Private Sub Command1_Click()

degree = InputBox("旋转的角度", "")

If degree < 0 Or degree > 360 Then Exit Sub

m = Pic1.ScaleWidth

d = degre

e * pi / 180

Pic1.Scale (-m / 2, m / 2)-(m / 2, -m / 2)

Pic2.Scale (-m / 2, m / 2)-(m / 2, -m / 2)

Pic1.CurrentX = 0

Pic1.CurrentY = 0

For i = -m / 2 To m / 2

For j = -m / 2 To m / 2

If Pic1.Point(i, j) = 0 Then

x = i * Cos(d) - j * Sin(d)

y = i * Sin(d) + j * Cos(d)

Pic2.PSet (x, y)

End If

Next j

Next i

End Sub

习题7

7.1 随机文件和顺序文件读写过程的区别如下:

(1)打开时的区别

顺序文件在打开时必须指定对文件的操作方式(Input、Output、Append),打开后只能对文件按指定的方式进行操作。每打开一次文件,只能进行单一的一种操作。

随机文件在打开时不必指定操作方式,打开后既可以进行读操作,又可以进行写操作。

(2)读文件的区别

顺序文件在以Input方式打开后,总是从文件的开头读文件,即使需要的是最后一行内容也必须如此。

随机文件只需指定记录号,即可直接读取该记录的内容。

(3)写文件的区别

顺序文件在以Output方式打开后,总是从文件的开头写。所以若是一个已经存在的文件,其中的原有内容将被覆盖而丢失。顺序文件在以Append方式打开后,则总是从文件的末尾开始写,无论前面的内容是否需要修改。

随机文件在写文件时,只对指定的某个记录进行操作,由此只是重写某个记录而不破坏其他内容。

相关主题
相关文档 最新文档