📄 calc.frm
字号:
TabIndex = 2
Top = 2520
Width = 495
End
Begin VB.CommandButton number
Caption = "1"
Height = 375
Index = 1
Left = 3240
TabIndex = 1
Top = 2520
Width = 495
End
Begin VB.CommandButton number
Caption = "0"
Height = 375
Index = 0
Left = 3240
TabIndex = 0
Top = 3000
Width = 495
End
Begin VB.Line Line4
X1 = 3120
X2 = 3120
Y1 = 960
Y2 = 1320
End
Begin VB.Line Line3
X1 = 3120
X2 = 2640
Y1 = 1320
Y2 = 1320
End
Begin VB.Line Line2
X1 = 2640
X2 = 2640
Y1 = 1320
Y2 = 960
End
Begin VB.Line Line1
X1 = 2640
X2 = 3120
Y1 = 960
Y2 = 960
End
Begin VB.Label Label1
Alignment = 2 'Center
Height = 255
Left = 2640
TabIndex = 41
Top = 1080
Width = 495
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit '强制变量声明
Private Const PI As Double = 3.14159265358979
Public NumberSave As Single '操作数3,用于保存数字
Dim s_Number1 As String '字符串1
Dim s_Number2 As String '字符串2,文本显示由s_Number1和s_Number2共同组成
Dim Letter As String '字符串3,显示运算符
Dim Number1 As Single '操作数1
Dim Number2 As Single '操作数2,用于保存参加计算的数字
Dim Oper As Integer '操作数指示,含义如下:
'0:正完成一次计算
'1:正在输入第一操作数
'2:正在输入第二操作数
Dim OperCode As Integer '运算符代码,含义如下:
'0:除法
'1:乘法
'2:减法
'3:加法
'4:乘方
'9:运算符清空
Private Sub Calc_Click()
'按等号后进行计算
If Oper < 2 Then
'操作数少于两个
Exit Sub
End If
'根据OperCode来判断运算方式
Select Case OperCode
Case 0
If Option1.Value = True Then
If Number2 = 0 Then '容错处理,判断Number2是否为零
Result = "除数不能为零"
Exit Sub
End If
Number1 = Number1 / Number2
ElseIf Option2.Value = True Then
Number1 = Val("&O" + s_Number1)
Number2 = Val("&O" + s_Number2)
If Number2 = 0 Then '容错处理,判断Number2是否为零
Result = "除数不能为零"
Exit Sub
End If
Number1 = Number1 / Number2
Number1 = Oct(Number1)
End If
Case 1
If Option1.Value = True Then
Number1 = Number1 * Number2
ElseIf Option2.Value = True Then
Number1 = Val("&O" + s_Number1)
Number2 = Val("&O" + s_Number2)
Number1 = Number1 * Number2
Number1 = Oct(Number1)
End If
Case 2
If Option1.Value = True Then
Number1 = Number1 - Number2
ElseIf Option2.Value = True Then
Number1 = Val("&O" + s_Number1)
Number2 = Val("&O" + s_Number2)
Number1 = Number1 - Number2
Number1 = Oct(Number1)
End If
Case 3
If Option1.Value = True Then
Number1 = Number1 + Number2
ElseIf Option2.Value = True Then
Number1 = Val("&O" + s_Number1)
Number2 = Val("&O" + s_Number2)
Number1 = Number1 + Number2
Number1 = Oct(Number1)
End If
Case 4
If Option1.Value = True Then
Number1 = Number1 ^ Number2
ElseIf Option2.Value = True Then
Number1 = Val("&O" + s_Number1)
Number2 = Val("&O" + s_Number2)
Number1 = Number1 ^ Number2
Number1 = Oct(Number1)
End If
End Select
Oper = 0
OperCode = 9
s_Number2 = ""
s_Number1 = Str(Number1)
Result = s_Number1
End Sub
Private Sub Command1_Click()
'退格键,删除数字最后一位
If Oper = 1 And Len(s_Number1) > 0 Then
'正在输入数字1,且数字1长度大于0
s_Number1 = Left(s_Number1, Len(s_Number1) - 1) '截去数字1的字符串最后一位
Number1 = Val(s_Number1) '重新保存数字1
Result = s_Number1 '显示结果
ElseIf Oper = 2 And Len(s_Number2) > 0 Then
'正在输入数字2,且数字1长度大于0
s_Number2 = Left(s_Number2, Len(s_Number2) - 1) '截去数字2的字符串最后一位
Number2 = Val(s_Number2)
Result = s_Number1 + Letter + s_Number2
End If
End Sub
Private Sub Command10_Click()
'保存数字
If Oper < 2 Then
'保存数字1
NumberSave = Number1
If NumberSave <> 0 Then
Label1.Caption = "M"
End If
Else
NumberSave = Number2
If NumberSave <> 0 Then
Label1.Caption = "M"
End If
End If
End Sub
Private Sub Command11_Click()
'贮存数字,把数字和原有的保存数字相加得到的结果保存起来
If Oper < 2 Then
'保存数字1
NumberSave = Number1 + NumberSave
If NumberSave <> 0 Then
Label1.Caption = "M"
End If
Else
'保存数字2
NumberSave = Number2 + NumberSave
If NumberSave <> 0 Then
Label1.Caption = "M"
End If
End If
End Sub
Private Sub Command12_Click()
'正弦运算功能
If Oper = 1 Then
s_Number1 = Str(Sin(Number1 * PI / 180))
Number1 = Val(s_Number1)
Result = s_Number1
ElseIf Oper = 2 Then
s_Number2 = Str(Sin(Number2 * PI / 180))
Number2 = Val(s_Number2)
Result = s_Number1 + Letter + s_Number2
ElseIf Oper = 0 Then
s_Number1 = Str(Sin(Val(Result) * PI / 180))
Result = s_Number1
End If
End Sub
Private Sub Command13_Click()
'余弦运算功能
If Oper = 1 Then
s_Number1 = Str(Cos(Number1 * PI / 180))
Number1 = Val(s_Number1)
Result = s_Number1
ElseIf Oper = 2 Then
s_Number2 = Str(Cos(Number2 * PI / 180))
Number2 = Val(s_Number2)
Result = s_Number1 + Letter + s_Number2
ElseIf Oper = 0 Then
s_Number1 = Str(Cos(Val(Result) * PI / 180))
Result = s_Number1
End If
End Sub
Private Sub Command14_Click()
'正切运算功能
If Oper = 1 Then
s_Number1 = Str(Tan(Number1 * PI / 180))
Number1 = Val(s_Number1)
Result = s_Number1
ElseIf Oper = 2 Then
s_Number2 = Str(Tan(Number2 * PI / 180))
Number2 = Val(s_Number2)
Result = s_Number1 + Letter + s_Number2
ElseIf Oper = 0 Then
s_Number1 = Str(Tan(Val(Result) * PI / 180))
Result = s_Number1
End If
End Sub
Private Sub Command16_Click()
'立方功能
If Oper = 1 Then
s_Number1 = Str(Number1 ^ 3)
Number1 = Val(s_Number1)
Result = s_Number1
ElseIf Oper = 2 Then
s_Number2 = Str(Number2 ^ 3)
Number2 = Val(s_Number2)
Result = s_Number1 + Letter + s_Number2
ElseIf Oper = 0 Then
s_Number1 = Str(Val(Result) ^ 3)
Result = s_Number1
End If
End Sub
Private Sub Command17_Click()
'平方功能
If Oper = 1 Then
s_Number1 = Str(Number1 ^ 2)
Number1 = Val(s_Number1)
Result = s_Number1
ElseIf Oper = 2 Then
s_Number2 = Str(Number2 ^ 2)
Number2 = Val(s_Number2)
Result = s_Number1 + Letter + s_Number2
ElseIf Oper = 0 Then
s_Number1 = Str(Val(Result) ^ 2)
Result = s_Number1
End If
End Sub
Private Sub Command18_Click()
'e的n次方功能
If Oper = 1 Then
Number1 = Exp(Number1)
s_Number1 = Str(Number1)
Result = s_Number1
ElseIf Oper = 2 Then
Number2 = Exp(Number2)
s_Number2 = Str(Number2)
Result = s_Number1 + Letter + s_Number2
ElseIf Oper = 0 Then
s_Number1 = Str(Exp(Val(Result)))
Result = s_Number1
End If
End Sub
Private Sub Command19_Click()
'ln功能
If Oper = 1 Then
If Number1 < 0 Then '容错处理,判断Number1是否小于零
Result = "真数不能小于零"
Exit Sub
End If
Number1 = Log(Number1) / Log(Exp(1))
s_Number1 = Str(Number1)
Result = s_Number1
ElseIf Oper = 2 Then
If Number2 < 0 Then '容错处理,判断Number2是否小于零
Result = "真数不能小于零"
Exit Sub
End If
Number2 = Log(Number2) / Log(Exp(1))
s_Number2 = Str(Number2)
Result = s_Number1 + Letter + s_Number2
ElseIf Oper = 0 Then
If Val(Result) < 0 Then '容错处理,判断result是否小于零
Result = "真数不能小于零"
Exit Sub
End If
s_Number1 = Str(Log(Val(Result)) / Log(Exp(1)))
Result = s_Number1
End If
End Sub
Private Sub Command2_Click()
'清除功能
If Oper = 1 Then
'输入数字1
s_Number1 = "0"
Number1 = 0
Result = s_Number1
ElseIf Oper = 2 Then
'输入数字2
s_Number2 = ""
Number2 = 0
Result = s_Number1 + Letter + s_Number2
ElseIf Oper = 0 Then
s_Number1 = "0"
Result = s_Number1
End If
End Sub
Private Sub Command20_Click()
'log功能
If Oper = 1 Then
If Number1 < 0 Then '容错处理,判断Number1是否小于零
Result = "真数不能小于零"
Exit Sub
End If
Number1 = Log(Number1)
s_Number1 = Str(Number1)
Result = s_Number1
ElseIf Oper = 2 Then
If Number2 < 0 Then '容错处理,判断Number2是否小于零
Result = "真数不能小于零"
Exit Sub
End If
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -