怎样用VB编写简单的计算器程序??

怎样用VB编写简单的计算器程序??,第1张

分类: 电脑/网络 >>程序设计 >>其他编程语言

解析:

其实比较简单啦,用一个窗体就可以实现啦!

我自己写的,你可以看看

Option Explicit

Dim strNumber As String

Dim strPoint As String

Dim dblNum1 As Double

Dim intOperator As Integer

'清除结果绝敏

Private Sub cmdGT_Click()

txtDisplay.Text = "0."

strNumber = ""

strPoint = "."

intOperator = 7

End Sub

'输入数字

Private Sub cmdNumber_Click(Index As Integer)

strNumber = strNumber &cmdNumber(Index).Caption

txtDisplay.Text = strNumber &strPoint

End Sub

Private Sub cmdOnOff_Click()

End

End Sub

'运算过程

Private Sub cmdOperator_Click(Index As Integer)

Dim dblnum2 As Double

'是第一次单击运算符时并告枝,将输入的值先赋给第一个数,否则赋值给第二个数进行运算

If intOperator = 7 Then

dblNum1 = CDbl(txtDisplay.Text)

Else

dblnum2 = CDbl(Val(txtDisplay.Text))

'根据输入的符号进行运算

'求普通运算

Select Case intOperator

Case 0

dblNum1 = dblNum1 + dblnum2

Case 1

dblNum1 = dblNum1 - dblnum2

Case 2

dblNum1 = dblNum1 * dblnum2

Case 3

If dblnum2 <>0 Then

dblNum1 = dblNum1 / dblnum2

Else

MsgBox "除数不能为“0”!请友贺重新输入除数。", vbOKOnly + vbInformation, "除零错误"

Index = intOperator

End If

Case 6

dblNum1 = dblNum1 * dblnum2 / 100

End Select

End If

'取得当前输入的运算符,以做下次运算

intOperator = Index

strNumber = ""

txtDisplay = CStr(dblNum1)

'判断是否为文本框中的数字加点

If Not txtDisplay Like "*.*" Then

txtDisplay.Text = txtDisplay.Text &"."

End If

End Sub

Private Sub cmdOtherOper_Click(Index As Integer)

Dim dblNum As Double

'求平方根,平方,

dblNum = CDbl(Val(txtDisplay.Text))

Select Case Index

Case 0

'验证数据是否有效

If dblNum >= 0 Then

txtDisplay.Text = CStr(Sqr(dblNum))

Else

MsgBox "负数不能开平方根!", _

vbOKOnly + vbCritical, "开平方根错误"

End If

Case 1

txtDisplay.Text = CStr(dblNum ^ 2)

End Select

'判断是否为文本框中的数字加点

If Not txtDisplay Like "*.*" Then

txtDisplay.Text = txtDisplay.Text &"."

End If

End Sub

Private Sub cmdPoint_Click()

strNumber = strNumber &strPoint

strPoint = ""

End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

'使被按下的数字键的对应按钮取得焦点

Select Case KeyCode

Case 48 To 57

cmdNumber(KeyCode - 48).SetFocus

Case 96 To 105

cmdNumber(KeyCode - 96).SetFocus

Case Else

'使按下的符号键对应的按钮取得焦点

If KeyCode = 107 Or (Shift = vbShiftMask And KeyCode = 187) Then

cmdOperator(0).SetFocus

cmdOperator_Click (0)

ElseIf KeyCode = 109 Or KeyCode = 189 Then

cmdOperator(1).SetFocus

cmdOperator_Click (1)

ElseIf KeyCode = 106 Or (Shift = vbShiftMask And KeyCode = 56) Then

cmdOperator(2).SetFocus

cmdOperator_Click (2)

ElseIf KeyCode = 111 Or KeyCode = 191 Then

cmdOperator(3).SetFocus

cmdOperator_Click (3)

ElseIf KeyCode = 13 Then

cmdOperator(7).SetFocus

cmdOperator_Click (7)

ElseIf KeyCode = 8 Then

cmdGT.SetFocus

Call cmdGT_Click

End If

End Select

End Sub

Private Sub Form_KeyPress(KeyAscii As Integer)

'将合法的数据输入到文本框

Select Case KeyAscii

Case 48 To 58

'调用数字键点击处理程序

cmdNumber_Click KeyAscii - 48

KeyAscii = 0

Case 46

'调用小数点输入

cmdPoint_Click

KeyAscii = 0

Case 13

'当敲击回车时,不能触发Form的 KeyUp 事件,因此在这里设置文本框的焦点

txtDisplay.SetFocus

Case Else

KeyAscii = 0

End Select

End Sub

Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)

txtDisplay.SetFocus

End Sub

Private Sub Form_Load()

strNumber = ""

strPoint = "."

intOperator = 7

End Sub

代码如下:

Dim t, t1 As Integer

Dim x, y As Double

Public Sub com()

x = Val(l1.Caption)

Select Case t1

Case Is = 1: y = y + x

Case Is = 2: y = y - x

Case Is = 3: y = y * x

Case Is = 4: y = y / x

End Select

t1 = 0

t = 0

l1.Caption = "0"

End Sub

Private Sub Form_Load()

x = 0

y = 0

t = 0

t1 = 1

End Sub

Private Sub c0_Click(Index As Integer)

If l1.Caption = "0" Then

l1.Caption = "0"

Else

l1.Caption = l1.Caption + "0"

End If

End Sub

Private Sub C1_Click(Index As Integer)

If l1.Caption = "0" Then

l1.Caption = "1"

Else

l1.Caption = l1.Caption + "1"

End If

End Sub

Private Sub c10_Click(Index As Integer)

If t = 0 Then

l1.Caption = l1.Caption + "."弊含

t = 1

End If

End Sub

Private Sub C2_Click(Index As Integer)

If l1.Caption = "0" Then

l1.Caption = "2"

Else

l1.Caption = l1.Caption + "租卖笑2"

End If

End Sub

Private Sub C3_Click(Index As Integer)

If l1.Caption = "0" Then

l1.Caption = "3"

Else

l1.Caption = l1.Caption + "3"

End If

End Sub

Private Sub C4_Click(Index As Integer)

If l1.Caption = "0" Then

l1.Caption = "4"

Else

l1.Caption = l1.Caption + "4"

End If

End Sub

Private Sub C5_Click(Index As Integer)

If l1.Caption = "0" Then

l1.Caption = "5"

Else

l1.Caption = l1.Caption + "5"

End If

End Sub

Private Sub C6_Click(Index As Integer)

If l1.Caption = "0" Then

l1.Caption = "配尘6"

Else

l1.Caption = l1.Caption + "6"

End If

End Sub

Private Sub C7_Click(Index As Integer)

If l1.Caption = "0" Then

l1.Caption = "7"

Else

l1.Caption = l1.Caption + "7"

End If

End Sub

Private Sub C8_Click(Index As Integer)

If l1.Caption = "0" Then

l1.Caption = "8"

Else

l1.Caption = l1.Caption + "8"

End If

End Sub

Private Sub C9_Click(Index As Integer)

If l1.Caption = "0" Then

l1.Caption = "9"

Else

l1.Caption = l1.Caption + "9"

End If

End Sub

Private Sub z1_Click(Index As Integer)

com

t1 = 1

End Sub

Private Sub z2_Click(Index As Integer)

com

t1 = 2

End Sub

Private Sub z3_Click(Index As Integer)

com

t1 = 3

End Sub

Private Sub z4_Click(Index As Integer)

com

t1 = 4

End Sub

Private Sub z5_Click(Index As Integer)

tmp = Mid(l1.Caption, Len(l1.Caption), 1)

If tmp = "." Then

t = 0

End If

If Len(l1.Caption) = 1 Then

l1.Caption = "0"

Else

l1.Caption = Left(l1.Caption, Len(l1.Caption) - 1)

End If

End Sub

Private Sub z6_Click(Index As Integer)

l1.Caption = "0"

Form_Load

End Sub

Private Sub z7_Click(Index As Integer)

If (l1.Caption <>"0") Then

l1.Caption = "-" + l1.Caption

End If

End Sub

Private Sub z8_Click(Index As Integer)

com

l1.Caption = Str(y)

End Sub

扩展资料

语言缺点

Visual Basic 语言具有不支持继承、无原生支持多线程、异常处理不完善等三项明显缺点,使其有所局限性(此些缺点皆已在 vb .net 获得改进)。

不支持继承

VB 5.0 和 VB 6.0 都是基于对象的编程语言,但是不包含继承特性。VB 中提供了特殊的类的功能,但是还是不能满足程序员的需求。

无原生支持多线程

Visual Basic 对于多线程无原生支持,只能通过Windows API的调用实现,且极其的不稳定。因为在API创建的线程中,并没有自动初始化运行时库,导致部分的函数无法使用。一般的,在VB6等早期的VB开发环境下,使用API创建线程的目的是完成容易使程序假死的大量数据或者逻辑的计算。

异常处理不完善

Visual Basic 中内置异常处理,即使未写异常处理代码,一旦用户出错也会d出一个明确写出出错原因对话框,接着程序终止。

Visual Basic 中可以使用 Err.Raise抛出异常。对系统及用户抛出的异常的处理常用两种模式:一是使用 On Error Resume Next 处理错误;另一种是使用 On Error Goto 将运行引入错误处理代码。但相对 C++ 等语言而言,这样的异常处理破坏了代码的结构。

参考资料:百度百科-VB


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12451048.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存