加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

【VB】 写小计算器

发布时间:2020-12-17 08:19:57 所属栏目:百科 来源:网络整理
导读:Dim Num1,Num2 As SingleDim StrNum1,StrNum2 As StringDim FirstNum As Boolean '判断是否是数字开头Dim PointFlag As Boolean '判断是否已有小数点Dim Runsign As Integer '储存运算符号Dim SignFlag As Boolean '判断是否已有运算符号Sub Run() Num1 = Va
Dim Num1,Num2 As Single
Dim StrNum1,StrNum2 As String
Dim FirstNum As Boolean '判断是否是数字开头
Dim PointFlag As Boolean '判断是否已有小数点
Dim Runsign As Integer '储存运算符号
Dim SignFlag As Boolean '判断是否已有运算符号
Sub Run()
    Num1 = Val(StrNum2)
    Num2 = Val(StrNum1)
    Select Case Runsign
        Case 1 '加
            equal = Num1 + Num2
        Case 2 '减
            equal = Num1 - Num2
        Case 3 '乘
            equal = Num1 * Num2
        Case 4 '除
            equal = Num1 / Num2
    End Select
    StrNum2 = Str(equal)
    StrNum1 = StrNum2
    Text1.Text = StrNum2
End Sub

Sub ClearData()
    Num1 = 0
    Num2 = 0
    StrNum1 = ""
    StrNum2 = ""
    FirstNum = True
    PointFlag = False
    Runsign = 0
    SignFlag = False
    Text1.Text = "0."
End Sub


Private Sub Form_Load()  '给变量赋初值
    Num1 = 0
    Num2 = 0
    StrNum1 = ""
    StrNum2 = ""
    FirstNum = True
    PointFlag = False
    Runsign = 0
    SignFlag = False
End Sub

Private Sub Command1_Click(Index As Integer)
        Select Case Index
            Case 0 To 9
                If FirstNum Then    'FirstNum=True 处理第一次数字输入
                    StrNum1 = Str(Index) '实型转字符型
                    FirstNum = False '赋初值为假,输入一个数字后标记是否首字符为假
                Else '非初赋值
                    StrNum1 = StrNum1 + Str(Index)  '从第二次输入开始往后面写字符
                End If
                Text1.Text = StrNum1 '显示
            
            Case 10
                If Not PointFlag Then 'PointFlag=False 处理第一次点击"."
                    If FirstNum Then 'FirstNum=True,还没有输入数字的时候
                        StrNum1 = "0."
                        FirstNum = False   '输入"."后,标记是否首字符为假
                    Else
                        StrNum1 = StrNum1 + "."     '前面已有输入的时候往后一位添加"."
                    End If
               ' Else    'PointFlag=True 已有小数点
               '     Exit Sub '退出单击事件
                End If
                PointFlag = True
                Text1.Text = StrNum1
            
          
            Case 12 To 15
                FirstNum = True      '还原标记值,使下一次可以输入新数据
                PointFlag = False    '使可输入"."
                If SignFlag Then    'SignFlag=True 前面已有运算符未运算
                    Call Run        '调用过程
                Else      '首次输入运算符
                    SignFlag = True
                    StrNum2 = StrNum1   '把字符串1复制给字符串2
                    StrNum1 = ""        '字符串1清空
                End If
                Runsign = Index - 11 '储存键入的运算符
            
            Case 11                     '等号
                If Not SignFlag Then   'SignFlag=False 还没有运算符的时候直接显示StrNum1
                    Text1.Text = StrNum1
                    equal = Val(StrNum1)
                    FirstNum = True
                    PointFlag = False
                Else
                    Call Run
                    SignFlag = False
                End If

            
            Case Else '清除按钮
                Call ClearData
                
        End Select
End Sub

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读