回 帖 发 新 帖 刷新版面

主题:跪求VB科学计算器

能+ - * /
能开方,平方,求正弦,求余弦,正切,余切
要求源代码和界面画面,或者可直接运行的exe
急啊~!!!! 
谢谢哪位高人啊!!!!!!!!

回复列表 (共7个回复)

沙发

windows不是有个吗,做得很好呀.

板凳

好吧,我来发一个。不过部分控件属性不是代码设置的,自己设;还有控件数组的配置,也自己配。
有开方。没有平方,考虑自乘就可以代替。
代码如下:
Option Explicit
Const PI = 3.14159265
Dim 弧度制 As Boolean
Dim 新数据 As Boolean
Dim 被运算数 As Double '第一个操作数
Dim 运算数 As Double '第二个操作数
Dim 当前运算符 As Integer '仅四则运算记录,函数不记录

Private Sub Command1_Click(Index As Integer) '数字键
    If 新数据 Then
        If Index <> 0 Then
            Text1 = CStr(Index)
            新数据 = False
        End If
    ElseIf Len(Text1) > 16 Then
        Beep '报警二声
        Beep
        Exit Sub
    Else
        Text1 = Text1 & CStr(Index)  '追加数据
    End If
End Sub

Private Sub Command2_Click() '小数点
    If Len(Text1.Text) > 16 Or InStr(Text1, ".") > 0 Then
        Beep '报警二声
        Beep
        Exit Sub
    End If
    If 新数据 Then '以小数点开始前头补零
        Text1 = "0."
        新数据 = False
    Else
        Text1 = Text1 & "."
    End If
End Sub

Private Sub Command3_Click() '清除
    初始化
End Sub

Private Sub Command4_Click() '关机
    End
End Sub

Private Sub Command5_Click(Index As Integer) '四则运算按钮
    被运算数 = Val(Text1)
    当前运算符 = Index
    新数据 = True
End Sub

Private Sub Command6_Click() '执行计算
    On Error GoTo 溢出了
    运算数 = Val(Text1)
    新数据 = True
    Select Case 当前运算符
    Case 0 '加法
        Text1 = 被运算数 + 运算数
    Case 1 '减法
        Text1 = 被运算数 - 运算数
    Case 2 '乘法
        Text1 = 被运算数 * 运算数
    Case 3 '除法
        If 运算数 = 0 Then '除数为零的处理
            Text1.Text = "除数为零!"
            Beep
            Beep
        Else
            Text1 = 被运算数 / 运算数
        End If
    End Select
    Exit Sub
溢出了:
    Beep
    Beep
    Text1 = "溢出了!"
End Sub

待续…………

3 楼

续…………

Private Sub Command7_Click(Index As Integer) '立即对当前显示数据进行函数运算
    运算数 = Val(Text1)
    新数据 = True
    Select Case Index
    Case 0 '指数运算
        On Error GoTo 溢出了
        Text1 = Exp(运算数)
    Case 1 '自然对数
        On Error GoTo 真数非正
        Text1 = Log(运算数)
    Case 2 '常用对数
        On Error GoTo 真数非正
        Text1 = Log(运算数) / Log(10)
    Case 3 '平方根
        On Error GoTo 底数为负
        Text1 = Sqr(运算数)
    Case 4 '倒数
        On Error GoTo 除数为零
        Text1 = 1 / 运算数
    Case 5 '阶乘
        If 运算数 < 1 Then
            Text1 = "阶乘的自变量不可以小于1!"
        Else
            On Error GoTo 溢出了
            Dim 结果 As Long
            Dim i As Integer
            结果 = 1
            For i = 1 To 运算数
                结果 = 结果 * i
            Next i
            Text1 = 结果
        End If
    End Select
    Exit Sub
    
溢出了:
    Beep
    Beep
    Text1 = "溢出了!"
    Exit Sub
真数非正:
    Beep
    Beep
    Text1 = "真数不应该为小雨或等于0!"
    Exit Sub
除数为零:
    Beep
    Beep
    Text1 = "零不能做分母!"
    Exit Sub
底数为负:
    Beep
    Beep
    Text1 = "平方根的底数不能为负!"
End Sub

Private Sub Command8_Click(Index As Integer)
    运算数 = Val(Text1)
    新数据 = True
    If Not 弧度制 Then 运算数 = 运算数 / 180 * PI
    Select Case Index
    Case 0 '正弦函数
        Text1 = Sin(运算数)
    Case 1 '余弦函数
        Text1 = Cos(运算数)
    Case 2 '正切函数
        On Error GoTo 溢出了
        Text1 = Tan(运算数)
    End Select
    Exit Sub
溢出了:
    Beep
    Beep
    Text1 = "溢出了!"
End Sub

Private Sub Command9_Click(Index As Integer)
    运算数 = Val(Text1)
    新数据 = True
    Select Case Index
    Case 0 '反正弦函数
        If Abs(运算数) > 1 Then
            GoTo 定义域
        ElseIf 运算数 = 1 Then
            Text1 = PI / 2
        ElseIf 运算数 = -1 Then
            Text1 = -PI / 2
        Else
            Text1 = Atn(运算数 / Sqr(-运算数 * 运算数 + 1))
        End If
    Case 1 '反余弦函数
        If Abs(运算数) > 1 Then
            GoTo 定义域
        ElseIf 运算数 = 1 Then
            Text1 = 0
        ElseIf 运算数 = -1 Then
            Text1 = PI
        Else
            Text1 = Atn(-运算数 / Sqr(-运算数 * 运算数 + 1)) + 2 * Atn(1)
        End If
    Case 2 '反正切函数
        Text1 = Atn(被运算数)
    End Select
    If Not 弧度制 Then Text1 = Val(Text1) / PI * 180
    Exit Sub
定义域:
    Beep
    Beep
    Text1 = "超出了定义域!"
End Sub

Private Sub Form_Load()
    初始化
End Sub

Private Sub Option1_Click()
    弧度制 = False
    Option1.Enabled = False
    Option2.Enabled = True
    Text1 = Val(Text1) / PI * 180
End Sub

Private Sub Option2_Click()
    弧度制 = True
    Option1.Enabled = True
    Option2.Enabled = False
    Text1 = Val(Text1) * PI / 180
End Sub

Private Sub 初始化()
    被运算数 = 0 '第一个操作数初值为0
    运算数 = 0 '第地个操作数初值为0
    当前运算符 = -1
    Text1.Text = "0"
    新数据 = True
    弧度制 = False
    Option1.Enabled = False
    Option2.Enabled = True
end sub

4 楼

老大 切换输入法辛苦了。

5 楼

谢谢!那怎么对键盘?我试了好久没法了

6 楼

年复一年,各位大佬们仍在这里诲人不倦
吾等小辈实属汗颜

7 楼

[quote]老大 切换输入法辛苦了。[/quote]
嘿嘿,我编程时候标识符基本都是汉语,怕英语吧自己搞糊涂了【因为英语水平在86年的高考中只有19分,基本都是选择题蒙来,别的题可能就没有得分】。
实际上切换输入法也就是一个上档键(我用的是搜狗)。

我来回复

您尚未登录,请登录后再回复。点此登录或注册