VB简单计算器编程代码(附图)
课程设计说明书正文
一、题目:计算器的创作和相应程序的编写
二、本题的主要功能:通过计算器的创作熟悉各控件的属性和练习程序的编写。 三、程序截图:
四、源程序清单:
Begin VB.Form Form1
Caption = "计算器"
ClientHeight = 3765
ClientLeft = 165
ClientTop = 855
ClientWidth = 5355
Icon = "Form1.frx":0000
LinkTopic = "Form1"
LockControls = -1 'True
ScaleHeight = 3765
ScaleWidth = 5355
StartUpPosition = 3 '窗口缺省
Begin VB.CommandButton Command4
Caption = "="
Height = 495
Left = 4470
TabIndex = 28
Top = 3060
Width = 735
End
Begin VB.CommandButton Command3
Caption = "1/x"
Height = 495
Left = 4470
TabIndex = 27
Top = 2520
Width = 735
End
Begin VB.CommandButton Command2
Caption = "%"
Height = 495
Left = 4470
TabIndex = 26
Top = 1980
Width = 735
End
Begin VB.CommandButton Command1
Caption = "sqrt"
Height = 495
Left = 4470
TabIndex = 25
Top = 1440
Width = 735
End
Begin VB.CommandButton cmbDOT
Caption = "."
Height = 495
Left = 2910
TabIndex = 24
Top = 3060
Width = 735
End
1
Begin VB.CommandButton cmbZF
Caption = "+/-"
Height = 495
Left = 2130
TabIndex = 23
Top = 3060
Width = 735
End
Begin VB.CommandButton cmbSign
Caption = "+"
Height = 495
Index = 3
Left = 3690
TabIndex = 22
Top = 3060
Width = 735
End
Begin VB.CommandButton cmbSign
Caption = "-"
Height = 495
Index = 2
Left = 3690
TabIndex = 21
Top = 2520
Width = 735
End
Begin VB.CommandButton cmbSign
Caption = "*"
Height = 495
Index = 1
Left = 3690
TabIndex = 20
Top = 1980
Width = 735
2
End
Begin VB.CommandButton cmbSign
Caption = "/"
Height = 495
Index = 0
Left = 3690
TabIndex = 19
Top = 1440
Width = 735
End
Begin VB.CommandButton cmbNUM
Caption = "9"
Height = 495
Index = 9
Left = 2910
TabIndex = 18
Top = 1440
Width = 735
End
Begin VB.CommandButton cmbNUM
Caption = "8"
Height = 495
Index = 8
Left = 2130
TabIndex = 17
Top = 1440
Width = 735
End
Begin VB.CommandButton cmbNUM
Caption = "7"
Height = 495
Index = 7
Left = 1350
TabIndex = 16
3
Top = 1440
Width = 735
End
Begin VB.CommandButton cmbNUM
Caption = "6"
Height = 495
Index = 6
Left = 2910
TabIndex = 15
Top = 1980
Width = 735
End
Begin VB.CommandButton cmbNUM
Caption = "5"
Height = 495
Index = 5
Left = 2130
TabIndex = 14
Top = 1980
Width = 735
End
Begin VB.CommandButton cmbNUM
Caption = "4"
Height = 495
Index = 4
Left = 1350
TabIndex = 13
Top = 1980
Width = 735
End
Begin VB.CommandButton cmbNUM
Caption = "3"
Height = 495
Index = 3
4
Left = 2910
TabIndex = 12
Top = 2520
Width = 735
End
Begin VB.CommandButton cmbNUM
Caption = "2"
Height = 495
Index = 2
Left = 2130
TabIndex = 11
Top = 2520
Width = 735
End
Begin VB.CommandButton cmbNUM
Caption = "1"
Height = 495
Index = 1
Left = 1350
TabIndex = 10
Top = 2520
Width = 735
End
Begin VB.CommandButton cmbNUM
Caption = "0"
Height = 495
Index = 0
Left = 1350
TabIndex = 9
Top = 3060
Width = 735
End
Begin VB.CommandButton cmbMa
Caption = "M+"
5
Height = 495
Left = 150
TabIndex = 8
Top = 3060
Width = 975
End
Begin VB.CommandButton cmbMS
Caption = "MS"
Height = 495
Left = 150
TabIndex = 7
Top = 2520
Width = 975
End
Begin VB.CommandButton cmbMR
Caption = "MR"
Height = 495
Left = 150
TabIndex = 6
Top = 1980
Width = 975
End
Begin VB.CommandButton cmbMC
Caption = "MC"
Height = 495
Left = 150
TabIndex = 5
Top = 1440
Width = 975
End
Begin VB.CommandButton cmbC
Caption = "C"
Height = 495
Left = 4020
6
TabIndex = 4
Top = 690
Width = 1155
End
Begin VB.CommandButton cmbCE
Caption = "CE"
Height = 495
Left = 2670
TabIndex = 3
Top = 690
Width = 1155
End
Begin VB.CommandButton cmbbackspace
Caption = "Backspace"
Height = 495
Left = 1380
TabIndex = 2
Top = 690
Width = 1155
End
Begin VB.TextBox Text1
Alignment = 1 'Right Justify
Height = 375
Left = 210
TabIndex = 0
Text = "0."
Top = 120
Width = 4935
End
Begin VB.Label Label2
Alignment = 2 'Center
Height = 255
Left = 360
TabIndex = 29
7
Top = 840
Width = 375
End
Begin VB.Label Label1
Alignment = 2 'Center
BorderStyle = 1 'Fixed Single
BeginProperty Font
Name = "宋体"
Size = 14.25
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Left = 240
TabIndex = 1
Top = 690
Width = 615
End
Begin VB.Menu edit
Caption = "编辑(&E)"
End
Begin VB.Menu look
Caption = "查看(&V)"
End
Begin VB.Menu help
Caption = "帮助(&H)"
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False
8
Attribute VB_PredeclaredId = True Attribute VB_Exposed = False
Option Explicit
Private Declare Function ShowCursor Lib "user32" (ByVal bShow As Long) As Long
Dim dotflag As Boolean
Dim fuhao As String
Dim first As Double
Dim second As Double
Dim isEqual As Boolean
Dim memory As Double '保存显示的数据
Dim lianyong As Double '当连续按等号时使用该变量
Private Declare Function ShowCursor Lib "user32" (ByVal bShow As Long) As Long
Dim dotflag As Boolean
Dim fuhao As String
Dim first As Double
Dim second As Double
Dim isEqual As Boolean
Dim memory As Double '保存显示的数据
Dim lianyong As Double '当连续按等号时使用该变量
Private Sub cmbDesign_Click(Index As Integer) End Sub
Private Sub cmbbackspace_Click() If Right(Trim(Text1.Text), 1) = "." Then
Text1.Text = Mid(Text1.Text, 1, Len(Text1.Text) - 2) & "."
Else
Text1.Text = Mid(Text1.Text, 1, Len(Text1.Text) - 1)
End If
If Right(Text1.Text, 1) = "." Then
dotflag = False
End If
If Len(Text1.Text) = 1 Then
Text1.Text = "0."
End If
End Sub 单击Backspace时删除文本框内最后一个字符
9
Private Sub cmbC_Click() dotflag = False
Text1.Text = "0."
first = 0
second = 0
End Sub 使文本框变成初始状态“0.” Private Sub cmbCE_Click() Text1.Text = "0."
End Sub 删除文本框内的所有内容,使文本框变成初始状态“0.”
Private Sub cmbDOT_Click() '标示点击了点“。”
dotflag = True
End Sub 点的点击,
Private Sub cmbMa_Click() Text1.Text = Str(Val(Text1.Text) + memory)
formatText
End Sub 记忆运算数值
Private Sub cmbMC_Click() memory = 0
Label2.Caption = ""
End Sub 清除存储器内容.
Private Sub cmbMR_Click()
Text1.Text = Str(memory)
formatText
End Sub 调用存储器内容
Private Sub cmbMS_Click()
memory = Val(Text1.Text) '保存到内存中
Label2.Caption = "M" End Sub 保存到内存中
Private Sub cmbNUM_Click(Index As Integer)
'判断是否按过等号键“="
If isEqual = True Then
Text1.Text = "0."
isEqual = False
10
End If
'判断是否点击过“点”按扭,如果未点击过在点前添加,否则在点后添加
If dotflag = False Then
Text1.Text = Left(Text1.Text, Len(Text1.Text) - 1) & Index & "."
Else
Text1.Text = Text1.Text & Index
End If
formatText
End Sub
Private Sub cmbSign_Click(Index As Integer) '恢复未点击点“。”的状态
dotflag = False
isEqual = False '恢复等号在本次运算中未单击过状态
first = Text1.Text
fuhao = cmbSign(Index).Caption
Text1.Text = "0."
End Sub
Private Sub cmbZF_Click()
If Left(Trim(Text1.Text), 1) = "-" Then
Text1.Text = Mid(Text1.Text, 2) Else
Text1.Text = "-" & Trim(Text1.Text) End If
End Sub 对文本框进行取负运算
Private Sub Command1_Click()
Dim isDot As Boolean
Dim i As Integer
For i = 1 To Len(Trim(Text1.Text))
If Mid(Trim(Str(Sqr(Val(Text1.Text)))), i, 1) = "." Then
isDot = True
Exit For
End If
Next i
If isDot = False Then
11
Text1.Text = Str(Sqr(Val(Text1.Text))) & "."
Else
Text1.Text = Str(Sqr(Val(Text1.Text)))
End If
End Sub 对文本框的内容进行开方运算 Private Sub Command4_Click() second = Val(Text1.Text) If isEqual = False Then
lianyong = Val(Text1.Text) Else
first = second
End If
Text1.Text = Str(compute(first, lianyong, fuhao))
formatText
isEqual = True
End Sub 等号的运算,并结束此次运算 Private Sub Form_Load()
dotflag = False
isEqual = False
lianyong = 0
End Sub 判断等号是否连用
Public Function compute(f As Double, s As Double, fuhao As String) As Double
Select Case fuhao
Case "+"
compute = f + s
Case "-"
compute = f - s
Case "*"
compute = f * s
Case "/"
compute = f / s
Case Else
MsgBox "不明白"
End Select
12
End Function 对文本框的内容进行加、减、乘、除的运算 Public Sub formatText()
Dim i As Integer
Dim isDot As Boolean
isDot = False
For i = 1 To Len(Text1.Text)
If Mid(Trim(Text1.Text), i, 1) = "." Then
isDot = True
Exit For
End If
Next i
If isDot = False Then
Text1.Text = Text1.Text + "."
End If
If Left(Text1.Text, 1) = "0" Then
Text1.Text = Mid(Text1.Text, 2) End If
If Left(Trim(Text1.Text), 1) = "." Then
Text1.Text = "0" & Trim(Text1.Text) End If
If Left(Trim(Text1.Text), 2) = "-." Then
Text1.Text = "-0" & Mid(Trim(Text1.Text), 2)
End If
End Sub
五、程序调试结果及程序改进意见
1)如何判断小数点是否按下,
当小数点没有按下是,文本框的内容最后一个字符是:“.”,当小数点按下时,文本框内容最后一个字符是输入的内容。
2)如何对按钮添加彩色图形,
在画图板上做出所需要彩色图形的图片,再把图片应用到控件按钮上。
3)如何判断除数不能为0,当除数为0时如何操作,
当除数为0时,单击等于运算时会显示除数不能为0,当除数为0时改变文本框的内容使除数不为0.
13