⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calc.frm

📁 模拟windows计算器功能
💻 FRM
📖 第 1 页 / 共 3 页
字号:
        Number2 = Log(Number2)
        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)))
        Result = s_Number1
    End If
End Sub

Private Sub Command21_Click()
'PI功能
    If Oper = 1 Then
        Number1 = PI
        s_Number1 = Str(Number1)
        Result = s_Number1
    ElseIf Oper = 2 Then
        Number2 = PI
        s_Number2 = Str(Number2)
        Result = s_Number1 + Letter + s_Number2
    ElseIf Oper = 0 Then
        s_Number1 = Str(PI)
        Result = Str(PI)
    End If
End Sub

Private Sub Command22_Click()
'阶乘功能
    Dim i As Integer
    If Oper = 1 Then
        If Number1 < 0 Then '容错处理,判断Number1是否小于零
            Result = "阶乘数不能小于零"
            Exit Sub
        End If
        Number1 = Val(s_Number1)
        For i = 1 To (Number1 - 1)
            Number1 = Number1 * i
        Next i
        s_Number1 = Str(Number1)
        Result = s_Number1
    ElseIf Oper = 2 Then
        If Number2 < 0 Then '容错处理,判断Number2是否小于零
            Result = "阶乘数不能小于零"
            Exit Sub
        End If
        Number2 = Val(s_Number2)
        For i = 1 To (Number1 - 1)
            Number1 = Number1 * i
        Next i
        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
        Number1 = Val(Result)
        For i = 1 To (Number1 - 1)
            Number1 = Number1 * i
        Next i
        Result = Str(Number1)
    End If
End Sub

Private Sub Command23_Click()
'余切功能
    If Oper = 1 Then
        s_Number1 = Str(Atn(Number1 * PI / 180))
        Number1 = Val(s_Number1)
        Result = s_Number1
    ElseIf Oper = 2 Then
        s_Number2 = Str(Atn(Number2 * PI / 180))
        Number2 = Val(s_Number2)
        Result = s_Number1 + Letter + s_Number2
    ElseIf Oper = 0 Then
        s_Number1 = Str(Atn(Val(Result) * PI / 180))
        Result = s_Number1
    End If
End Sub

Private Sub Command3_Click()
'复位功能
    Oper = 1
    s_Number1 = ""
    s_Number2 = ""
    Number1 = 0
    Number2 = 0
    Result = "0"
End Sub

Private Sub Command4_Click()
'相反数功能
    If Oper = 1 Then
        s_Number1 = Str(-1 * Number1)
        Number1 = Val(s_Number1)
        Result = s_Number1
    ElseIf Oper = 2 Then
        s_Number2 = Str(-1 * Number2)
        Number2 = Val(s_Number2)
        Result = s_Number1 + Letter + s_Number2
    ElseIf Oper = 0 Then
        s_Number1 = Str(-1 * Result)
        Result = s_Number1
    End If
End Sub

Private Sub Command5_Click()
'开方功能
    If Oper = 1 Then
        If Number1 < 0 Then '容错处理,判断Number1是否小于零
            Result = "被开平方数不能小于零"
            Exit Sub
        End If
        s_Number1 = Str(Sqr(Number1))
        Number1 = Val(s_Number1)
        Result = s_Number1
    ElseIf Oper = 2 Then
        If Number2 < 0 Then '容错处理,判断Number1是否小于零
            Result = "被开平方数不能小于零"
            Exit Sub
        End If
        s_Number2 = Str(Sqr(Number2))
        Number2 = Val(s_Number2)
        Result = s_Number1 + Letter + s_Number2
    ElseIf Oper = 0 Then
        If Val(Result) < 0 Then '容错处理,判断Number1是否小于零
            Result = "被开平方数不能小于零"
            Exit Sub
        End If
        s_Number1 = Str(Sqr(Val(Result)))
        Result = s_Number1
    End If
End Sub

Private Sub Command6_Click()
'以百分比的形式显示乘积功能
    If Oper < 2 Then
        Number1 = 0
        Result = "0"
    Else
    '进行计算
        Number2 = Number1 * 0.01 * Number2
        s_Number2 = Str(Number2)
        Result = s_Number2
    End If
    '显示运算符
End Sub

Private Sub Command7_Click()
'倒数功能
    If Oper = 1 Then
        If Number1 = 0 Then '容错处理,判断Number1是否为零
            Result = "分母不能为零"
            Exit Sub
        End If
        s_Number1 = Str(1 / Number1)
        Number1 = Val(s_Number1)
        Result = s_Number1
    ElseIf Oper = 2 Then
        If Number2 = 0 Then '容错处理,判断Number1是否为零
            Result = "分母不能为零"
            Exit Sub
        End If
        s_Number2 = Str(1 / Number2)
        Number2 = Val(s_Number2)
        Result = s_Number1 + Letter + s_Number2
    ElseIf Oper = 0 Then
        If Val(Result) = 0 Then '容错处理,判断Number1是否为零
            Result = "分母不能为零"
            Exit Sub
        End If
        s_Number1 = Str(1 / Val(Result))
        Result = s_Number1
    End If
End Sub

Private Sub Command8_Click()
'清除保存的数字功能
    NumberSave = 0
    Label1.Caption = ""
End Sub

Private Sub Command9_Click()
'读取保存的数字功能
    Oper = 1
    s_Number1 = Str(NumberSave)
    s_Number2 = ""
    Number1 = NumberSave
    Number2 = 0
    Result = s_Number1 + Letter + s_Number2
End Sub

Private Sub Dot_Click()
'输入小数点程序
'正在输入数字
    If Oper = 0 And OperCode = 9 Then
    '输入数字1
        If s_Number1 = "0" Or s_Number1 = "" Then
            s_Number1 = "0." '加入一个字符
        Else
            s_Number1 = s_Number1 + "." '加入一个字符
        End If
        Oper = 1
        Number1 = Val(s_Number1)
        Result = s_Number1 '显示数字1(字符串形式)
    ElseIf Oper = 0 And OperCode <> 9 Then
    '输入数字2
        If s_Number2 = "0" Or s_Number2 = "" Then
            s_Number2 = "0." '加入一个字符
        Else
            s_Number2 = s_Number2 + "." '加入一个字符
        End If
        Oper = 2
        Number2 = Val(s_Number2)
        Result = s_Number1 + Letter + s_Number2
    ElseIf Oper = 1 Then
    '数字1
        If Not InStr(s_Number1, ".") > 0 Then
        '数字中无小数点
            s_Number1 = s_Number1 + "."
            Result = s_Number1
        ElseIf s_Number1 = "0" Or s_Number1 = "" Then
            s_Number1 = "0."
            Result = s_Number1
        End If
    ElseIf Oper = 2 Then
    '数字2
        If s_Number2 = "0" Or s_Number2 = "" Then
            s_Number2 = "0."
            Result = s_Number1 + Letter + s_Number2
        ElseIf Not InStr(s_Number2, ".") > 0 Then
            s_Number2 = s_Number2 + "."
            Result = s_Number1 + Letter + s_Number2
        End If
    End If
End Sub

Private Sub Form_Load()
'初始化数据
    Oper = 0
    OperCode = 9
    s_Number1 = ""
    s_Number2 = ""
    Number1 = 0
    Number2 = 0
    NumberSave = 0
    Result = "0"
End Sub

Private Sub Number_Click(Index As Integer)
'输入数字程序
    '正在输入数字
    If Oper = 0 And OperCode = 9 Then
    '输入数字1
        s_Number1 = ""
        Oper = 1
        s_Number1 = s_Number1 + Right(Str(Index), 1) '加入一个字符
        Number1 = Val(s_Number1)
        Result = s_Number1 '显示数字1(字符串形式)
    ElseIf Oper = 0 And OperCode <> 9 Then
    '输入数字2
        If s_Number2 = "0" Then
            s_Number2 = ""
        End If
        Oper = 2
        s_Number2 = s_Number2 + Right(Str(Index), 1)
        Number2 = Val(s_Number2)
        Result = s_Number1 + Letter + s_Number2
    ElseIf Oper = 1 Then
    '输入数字1
        If s_Number1 = "0" Then
            s_Number1 = ""
        End If
        s_Number1 = s_Number1 + Right(Str(Index), 1) '加入一个字符
        Number1 = Val(s_Number1) '保存当前数字1的数值
        Result = s_Number1 '显示数字1(字符串形式)
    ElseIf Oper = 2 Then
    '输入数字2
        If s_Number2 = "0" Then
            s_Number2 = ""
        End If
        s_Number2 = s_Number2 + Right(Str(Index), 1)
        Number2 = Val(s_Number2)
        Result = s_Number1 + Letter + s_Number2
    End If
End Sub

Private Sub Operate_Click(Index As Integer)
'点击运算符
    If Oper < 2 Then
        Oper = 2
    Else
    '进行计算
        Call Calc_Click
    End If
    '显示运算符
    Letter = " " + Operate(Index).Caption + " "
    Result = s_Number1 + Letter + s_Number2
    OperCode = Index '保存运算符标志
End Sub

Private Sub Option1_Click()
'十进制功能
    number(8).Enabled = True
    number(9).Enabled = True
    Command12.Enabled = True
    Command13.Enabled = True
    Command14.Enabled = True
    Command21.Enabled = True
    Command23.Enabled = True
    Number1 = Val("&O" + s_Number1)
    Number2 = Val("&O" + s_Number2)
    s_Number1 = Str(Number1)
    s_Number2 = Str(Number2)
    If Oper = 1 Then
        Result = s_Number1
    End If
    If Oper = 2 Then
        Result = s_Number1 + Letter + s_Number2
    End If
    If Oper = 0 Then
        Result = Val("&O" + Result)
    End If
End Sub

Private Sub Option2_Click()
'八进制功能
    Command12.Enabled = False
    Command13.Enabled = False
    Command14.Enabled = False
    Command21.Enabled = False
    Command23.Enabled = False
    number(8).Enabled = False
    number(9).Enabled = False
    Number1 = Oct(Number1)
    Number2 = Oct(Number2)
    s_Number1 = Str(Number1)
    s_Number2 = Str(Number2)
    If Oper = 1 Then
        Result = s_Number1
    End If
    If Oper = 2 Then
        Result = s_Number1 + Letter + s_Number2
    End If
    If Oper = 0 Then
        Result = Oct(Result)
    End If
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -