VB设计计算器实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VB 设计计算器 实验报告
姓名: 专业: 学号:
二0
一一年十一月七日
设计功能完整的计算器,实现如下图所示按钮(除“ MC,“MR , “MS,“M+ )及菜单功能,如图:
一、解题思路、分析:
对于我来说,设置一个完整的计算器是一个艰巨的任务,一开始想了一小段时间,自己试着编了一些,但就是无法达到一个完整的计算器,于是,就到网上去下载了一些有关计算
器的程序进行参考分析。首先先定义一些量,比如说前后两个操作数opl、op2,小数点是
否真存在的量DecimalFlag ,操作数个数NumOps上一次按键的类型等。接着对窗体进行初始化,同时设置所有变量为其初始。然后对各个键盘的命令进行编写程序,对0---9按键设
置为一个按键命令组,编写一个程序,同时加减乘除设置一个命令组,也编写一个程序,其
他按键都各自设置为一个命令,分别单独进行编写程序。同时在多个命令中都要对显示器中
的小数点进行分析,看它是否是真实存在。同时对于除法分母是否为0,也要加以考虑。
、源程序:
Private Sub Form_Load()
DecimalFlag = False
NumOps = 0
LastI nput = "NONE"
OpFlag =""
Text1.Text = Format(0, "0.")
'Decimal.Captio n = Format(0, ".")
End Sub
Opti on Explicit
Dim Op1, Op2
Dim DecimalFlag As In teger
Dim NumOps As In teger
Dim LastInput
类型
Dim OpFlag
Dim TempReadout
' 窗体的初始化过程
' 设置所有变量为其初始值
前面输入的操作数
小数点仍然存在吗?
操作数个数
指示上一次按键事件的
指示未完成的操作
' 退格键
Private Sub Command1_Click()
If Len(Text1.Text) = 1 Then
Text1.Text = Format(0, "0.")
DecimalFlag = False
LastInput = "NONE"
Else
If Text1.Text = "0." Then
Text1.Text = "0."
DecimalFlag = False
LastInput = "NONE"
Else
Text1.Text = Left(Text1.Text, Len(Text1.Text) - 1)
End If
End If
End Sub
Private Sub Command2_Click()
' CE ( 取消输入) 按钮的Click 事件过程Text1.Text = Format(0, "0.") DecimalFlag = False LastInput = "CE"
End Sub
Private Sub Command3_Click()
' C ( 取消) 按钮的Click 事件过程
' 重新设置显示并初始化变量
Text1.Text = Format(0, "0.")
Op1 = 0
Op2 = 0
Form_Load
End Sub
Private Sub Command8_Click(Index As Integer)
' 数字键(0-9) 的Click 事件过程
' 向显示中的数追加新数
If LastInput <> "NUMS" Then Text1.Text = Format(0, ".") DecimalFlag = False
End If
If DecimalFlag Then
Text1.Text = Text1.Text + Command8(Index).Caption Else
Text1.Text = Left(Text1.Text, Format(0, ".")) - 1) +
InStr(Text1.Text, Command8(Index).Caption + Format(0, ".")
End If
If LastInput = "NEG" Then Text1.Text = "-" & Text1.Text
LastInput = "NUMS"
End Sub
Private Sub Command11_Click(Index As Integer)
' 运算符(+, -, x, /, =) 的Click 事件过程
' 如果接下来的按键是数字键,增加NumOps 。
' 如果有一个操作数,则设置Op1 。
' 如果有两个操作数,则将Op1 设置为Op1 与
' 当前输入字符串的运算结果,并显示结果( CDbl 或CSng 函数强制进行双精度或单精度算术运算)
TempReadout = Text1.Text
If LastInput = "NUMS" Then
NumOps = NumOps + 1
End If
Select Case NumOps
Case 0
If Command11(Index).Caption = "-" And LastInput <> "NEG" Then
Text1.Text = "-" & Text1.Text
LastInput = "NEG"
End If Case 1
Op1 = Text1.Text
If Command11(Index).Caption = "-" And LastInput <> "NUMS" And OpFlag <> "=" Then
Text1.Text = "-"
LastInput = "NEG"
End If ' 3--3=6
Case 2
Op2 = TempReadout
Select Case OpFlag
Case "+"
Op1 = CDbl(Op1) + CDbl(Op2) Case "-"
Op1 = CDbl(Op1) - CDbl(Op2) Case "*"
Op1 = CDbl(Op1) * CDbl(Op2) Case "/"
If Op2 = 0 Then MsgBox " 除数不能为0", 48, " 计算器"
Else
Op1 = CDbl(Op1) / CDbl(Op2) End If
Case "="
Op1 = CDbl(Op2)
Case "%"
Op1 = CDbl(Op1) * CDbl(Op2)
End Select
Text1.Text = Op1
Text1.Text = Format(Text1.Text, "0.########")
NumOps = 1
End Select
If LastInput <> "NEG" Then
LastInput = "OPS"
OpFlag = Command11(Index).Caption
End If
End Sub