《VB》实验指导书讲解 下载本文

Dim s As Integer ’存放上次按的运算符 Dim x As Double ’存放第1个操作数 Dim y As Double ’存放第2个操作数

编写数字类命令按钮组Command1 ( )的Click事件代码: Private Sub Command1 Click(Index As Integer)

If Form1.Tag =\ ’向显示中的数追加新数 If Index =10 Then Text1 .Text=”0” Else

Textl.Text = Command1 (Index).Caption End If

Form1.Tag=” ” Else

Textl.Text=Textl.Text &Command 1 (Index).Caption End If End Sub

编写运算符类命令按钮组Command2( )的Click事件代码: Private Sub Command2 Click(Index As Integer) Form1.Tag=\

If v Then ’第1次按运算符 x =Val(Text1.Text) ’将键入的数存入、 v=Not v Else

y=Val(Text1.Text) Select Case s Case 0

Textl.Text=x+y Case 1

Text1.Text=x一y Case 2

Textl.Text=x * y Case 3

If y<>0 Then Textl.Text =x/y Else

MsgBox (\不能以0为除数”:) Textl.Text=x v=False End If Case 4

11

Y=0 v=False End Select x=Val(Text1.Text) End If s=Index End Sub

2.3.3编程计算sum=1!+2!+3!+… … +10!

代码提示:

Dim t As Single

Sub nf(ByVal n As Integer) t = 1

For i = 1 To n t = t * i Next i End Sub

Private Sub Form_Click()

Dim nSum As Single nSum = 1

For i = 2 To 10 Call nf(i)

nSum = nSum + t Next i

Print nSum End Sub

2.3.4使用递归过程编写程序

在窗体上添加一个标签Label1和command1,将其caption属性设置成如下图所示。

Private Sub Command1_Click() Dim x!, n%

x = InputBox(\ n = InputBox(\ Print Print Print Print Print

Print Tab(5); \End Sub

Private Function s(ByVal x!, ByVal n%) If n = 1 Then

12

s = x Else

s = x * (1 - s(x, n - 1)) End If End Function

2.4 思考题

1.如何声明固定大小的数组,有几种方法? 2.应如何使用动态数组?

3.向过程传递参数有几种方法?区别是什么?

实验3 文件管理

3.1 实验目的

掌握数据文件的概念与使用(访问顺序文件、访问随机文件、访问二进制文件);熟悉并运用文件系统控件(驱动器列表框、目录列表框、文件列表框)。

3.2 相关知识

3.2.1 随机文件与顺序文件读写过程的区别:

1.打开时的区别:顺序文件在打开时必须指定对文件的操作方式(Input, Output,Append),打开后只能对文件按指定的方式进行操作。每打开一次文件,只能进行单一的一种操作。随机文件在打开时不必指定操作方式,打开后既可以进行读操作,又可以进行写操作。

2.读文件的区别:顺序文件在以Input方式打开后,总是从文件的开头读文件,即使需要的是最后一行内容也必须如此。随机文件只需指定记录号,即可直接读取该记录的内容。

3.写文件的区别:顺序文件在以Output方式打开后,总是从文件的开头写。所以若是个已经存在的文件,其中的原有内容将被覆盖而丢失。顺序文件在以Append方式打开后,则总是从文件的末尾开始写,无论前面的内容是否需要修改。随机文件在写文件时,只对指定的某个记录进行操作,由此只是重写某个记录而不破坏其他内容。

3.2.2 使用Output选项打开一个已存在的文件会发生的情况

使用Output选项打开一个己存在的文件,将会创建一个新的顺序文件。磁盘上的原有同名文件将被覆盖,其中数据将会丢失。

3.2.3 使用Append选项写文件会发生的情况

使用Append选项写文件则是向文件的尾部追加式写入数据,原有的同名文件中的数据仍然保留,若磁盘上没有该文件,则创建一个新文件。

3.3 实验项目

3.3.1 顺序文件的使用

设计程序设计界面与设计对象属性。选择“新建”工程,在窗体上添加一个文本框Text1和三个命令按钮Command1~Command3,Text1的Multiline属性为True,将Command1~Command3的名称属性分别改为C1~C3,Caption属性分别改为“输入”、“转换”、“存盘”

13

Private Sub C1_Click()

Open App.Path & \ a = \

Do Until EOF(1) Line Input #1, b

a = a & b & Chr(13) & Chr(10) Loop Close #1

Text1.Text = a End Sub

Private Sub C2_Click()

Text1.Text = UCase(Text1.Text) End Sub

Private Sub C3_Click()

Open App.Path & \ Print #1, Text1.Text Close #1 End Sub

3.3.2随机文件的使用

设计程序设计界面与设计对象属性。在窗体上添加7个标签Label1~Label7、6个文本框Text1~Text6和两个命令按钮Command1~Command2,命令按钮的名称属性分别改为“cmdPrev”、“cmdNext”,caption属性分别为“上一条”、“下一条” 参考代码:

Private Type gongzi

department As String * 4 id As String * 5 name As String * 6

basicSalary As String * 6 additionalSalary As String * 6 bonus As String * 6 End Type

Dim gz As gongzi

Dim RecoNumber As Integer

Private Sub GetRecord()

14

Get #1, RecoNumber, gz With gz

Text1.Text = .department Text2.Text = .id Text3.Text = .name

Text4.Text = .basicSalary Text5.Text = .additionalSalary Text6.Text = .bonus End With End Sub

Private Sub Form_Load()

Open App.Path & \ RecoNumber = 0

cmdPrev.Enabled = False Call cmdNext_Click End Sub

Private Sub cmdPrev_Click()

RecoNumber = RecoNumber - 1

If RecoNumber <= 1 Then cmdPrev.Enabled = False

If RecoNumber < LOF(1) / Len(gz) Then cmdNext.Enabled = True Call GetRecord End Sub

Private Sub cmdNext_Click()

RecoNumber = RecoNumber + 1

If RecoNumber > 1 Then cmdPrev.Enabled = True If RecoNumber >= LOF(1) / Len(gz) Then cmdNext.Enabled = False Else

Call GetRecord End If End Sub

3.3.3使用文件系统控件

设计程序设计界面与设计对象属性。

在窗体上添加4个框架Frame1~Frame4、一个文本框Text1和一个命令按钮数组Command1(0)~Command1(1)

15