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