补发:VB版简易计算器的技术文档

Posted by zhang on

一.项目名称

简易计算器

二.实现目标

1. 能够完成浮点数的简单四则运算(加,减,乘,除)

2. 能够实现退格和清除功能;

3. 防止小数点出现在首位

4. 小数点不能重复输入;

5. 算式须符合四则运算规则。

三.控件属性列表

点击查看原图

各个属性修改后得到如图所示的界面

点击查看原图

四.功能实现

1. 调用函数

1)Left (a,M) 从左边开始取值,取的位数为M位。

e.g: Text1.Text = Left(Text1.Text, Len(Text1.Text) - 1)’实现退格功能

2)InStr([start, ]string1, string2[, compare]) 指定一字符串在另一字符串中最先出现的位置。

e.g: c = InStr(Text1.Text, ".") ‘instr查找某字符串在另一个字符串中首次出现的位置并将值赋给c,配合If判断实现判断小数点位置,防止小数点出现在首位

3)len(s)字符串s的长度。

e.g: Len(Text1)

2.容错功能

通过IF判断和Command6实现部分容错功能

3.源代码如下

Dim a As Single, b As Single, c As Single, fh As String ’定义变量a,b为单精度变量,用以储存数;定义fh变量为字符型变量,储存运算符号

Private Sub Command1_Click(Index As Integer)

Text1.Text = Text1.Text & Command1(Index).Caption ’输入数字并在text上显示出来

End Sub

Private Sub Command2_Click(Index As Integer) ’输入运算符

a = Text1.Text

fh = Command2(Index).Caption

Text1.Text = ""

End Sub

Private Sub Command3_Click() ’退格实现

Text1.Text = Left(Text1.Text, Len(Text1.Text) - 1)

End Sub

Private Sub Command4_Click() ’小数点

Text1.Text = Text1.Text + "."

c = InStr(Text1.Text, ".") ’instr查找某字符串在另一个字符串中首次出现的位置并将值赋给c

If (c < 2) Then

Text1.Text = "错误,小数点不能在首位,请在在点击CE后重新输入整个算式"

End If ’判断小数点位置,防止小数点出现在首位

Dim w As Integer ’小数点的个数

w = 0

For i = 1 To Len(Text1) ’循环,len函数求出字符串的长度

Select Case Mid(Text1, i, 1) ’texe1中从第i个字符开始取,每次取一个字符

Case "." ’判断所取字符是不是“.”

w = w + 1 ’1则w+1,0继续

End Select ’通过循环计小数点存在个数赋值给w

Next

If (w >= 2) Then

Text1.Text = "错误,出现&w&个小数点,请在在点击CE后重新输入整个算式"

End If ’判断小数点个数,防止出现多个小数点

End Sub

Private Sub Command5_Click() ’运算

b = Text1.Text

Select Case fh

Case "+"

Text1.Text = a + b

Case "-"

Text1.Text = a - b

Case "*"

Text1.Text = a * b

Case "/"

If (b = 0) Then

Text1.Text = "错误,分母不能为0,请在在点击CE后重新输入整个算式"

Else

Text1.Text = a / b

End If

End Select

End Sub

Private Sub Command6_Click() ’CE作用:变量全部清零

Text1.Text = ""

a = 0

b = 0

fh = ""

End Sub

Private Sub Command7_Click() ’正负号转换

Text1.Text = 0 - Text1.Text

End Sub

五.不足之处

1.只支持鼠标点击输入

2.容错能力有待改进

1.)未给a赋值,直接点击等号,运算符,正负号转换,会报错关闭(实时错误:13)

2.)text1.text未赋值前点击退格,会报错关闭(实时错误:5)

3.功能有待加强,MS,MR,M+,M-,%,开平方等功能未实现- 

                                                                                                                                 ??张素博11/20/2011

#About Me

张小璋,野蛮生长成世界500强企业供应链金融产品经理的法语毕业生。微信公众号:张小璋碎碎念(ID: SylvainZhang )。
一直在互联网金融公司从事产品经理工作并负责互联网金融产品线,深耕互联网金融和区块链领域。「PMCAFF」、「人人都是产品经理」专栏作家、「PmTalk」签约作家。