VB设计“加减乘除计算器”谢谢大家,计算器最好是带负数和小数的。。。。

四、主要技术问题的描述:
① 连续输入新操作数的若干个数字时,应采用
txtDisplay.Text =txtDisplay.Text & Format$(Index)
txtDisplay.Text = txtDisplay.Text & cmdNumber(Index).Caption
txtDisplay.Text = txtDisplay.Text & Index
② 对于正整数运算单击操作符会结束本操作数的输入,需设置一个逻辑变量,使其逻辑值为true ,准备新操作数的输入。
③ 当一个对象(本题指文本框)具有焦点时,在键盘上按键操作触发下面事件过程:
Private Sub Form_KeyPress(KeyAscii As Integer),在该过程中调用
txtDisplay_KeyPress KeyAscii
根据KeyAscii对应的字符,调用相应过程。
④ 当用户在拥有焦点的对象上释放键时触发下面事件过程:
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)在该过程中调用txtDisplay_KeyUp KeyCode, Shift
KeyUp 事件可应用于大多数键,但最经常地还是应用于功能键、组合键、区别数字小键盘和常规数字键等。
根据KeyCode代码对应的常数调用对应过程。 KeyCode代码常数可以在vb帮助系统或vb对象浏览器中的对象库中查到。
① 在窗体上分别创建用于0-9个操作数字和+、-、*、/运算符号的控件数组,并创建用于显示操作数、运算结果的文本框及其它控件。
② 单击数字控件数组元素时,先判断参加运算的数是否是新的操作数,用以确定单击数字键后数字在文本框中的显示方式,如果是新的操作数如234,那么连续单击2,3,4数字键,在文本框中会显示234 。
③ 单击操作符,结束第一个操作数的输入,同时把第一个操作数存储到一个全局变量中(如:StoredValue),记下操作符的index值,并做好开始输入下一个操作数的准备。
④ 单击等号(=),结束第二个操作数的输入并存储,根据上面记下的index值选择操作符计算。
⑤ 如果用键盘操作运算,应根据所按键对应的KeyAscii值转换成对应的字符来判断执行什么操作,确定调用哪个事件过程。最后完成运算。
基本要求达到后,进行创新设计:实现小数、负数的①要求用Visual Basic对象的思想来完成程序的设计。
②在设计程序的过程中,要求会使用Command 命令按钮、命令按钮控件数组、TextBox文本框等基本控件。
③要求在程序中能够运用结构化程序的基本结构,如if-elseif、Select Case- End Select、for– next、do -loop等)。
④要求在程序中即能用鼠标单击相应的控件数组元素进行正整数的加、减、乘、除运算,又可以在键盘上输入相应数字和运算符号实现运算。
⑤程序界面布局合理、美观。
计算。
三、设计方法和基本原理:
1. 问题描述:
① 在窗体上单击标有数字、运算符号、等号的控件元素会在文本框显示出计算结果。
② 输入键盘上的数字、运算符号、等号同样也会计算出运算结果。

设置按键
Command1
Index 0――16

Index 0――9 Caption=“0”-“9”

Index 10 Caption=“.”

Index 11Caption=“=”

Index 12 Caption=“+”

Index 13 Caption=“-”

Index 14 Caption=“×”

Index 15 Caption=“÷”

Index 16 Caption=“清除”

先在General里声明窗体级全局变量:

Dim Num1, Num2 As Single
Dim StrNum1, StrNum2 As String
Dim FirstNum As Boolean '判断是否是数字开头

在Form_Load事件里给变量初赋值:

Num1 = 0
Num2 = 0
StrNum1 = ""
StrNum2 = ""
FirstNum = True

因为17个按钮使用的是同一事件,所以我们用一个Select Case语句区分各个按钮,双击任意按钮输入代码:

Private Sub Command1_Click(Index As Integer)

Select Case Index

Case 0 To 9

If FirstNum Then

StrNum1 = Str(Index)’实型转字符型
FirstNum = False’初赋值为假

Else’非初赋值

StrNum1 = StrNum1 + Str(Index)

End If

Text1.Text = StrNum1’显示

<还有其他语句,等待插入>

End Select

End Sub

在General里声明新的变量:

Dim PointFlag As Boolean '判断是否已有小数点

我们知道小数点只能输入一次,一个数据中不能有多个小数点存在,所以需要一个布尔变量做判断。

在Form_Load里进行初赋值:

PointFlag = False

在Command的单击事件里接着上面输入新的代码:

Case 10

If Not PointFlag Then’如果没有小数点

If FirstNum Then’如果是第一个字符

StrNum1 = "0."
FirstNum = False

Else

StrNum1 = StrNum1 + "."

End If

Else’已有小数点

Exit Sub’则退出单击事件

End If

PointFlag = True
Text1.Text = StrNum1

第四章 按钮(二)
下面会复杂一些,我们先跳过等号,而来处理四则运算:

先在General里声明新变量:

Dim Runsign As Integer '储存运算符号

Dim SignFlag As Boolean '判断是否已有运算符号

然后在Form_Load中进行初赋值:

Runsign = 0

SignFlag = False

在接下的Command1_Click中继续输入代码:

Case 12 To 15

FirstNum = True’使下一次可以输入新数据
PointFlag = False
'还原标记值

If SignFlag Then’前面已有运算符未运算

Call Run

Else

SignFlag = True
StrNum2 = StrNum1’把字符串1复制给字符串2
StrNum1 = ""’字符串1清空

End If

Runsign = Index - 11 ‘储存键入的运算符

里面运算的部分我用了一个过程,是因为在按下等号时还会调用到运算过程,这样可以减少代码的输入,也使程序便于浏览。建立过程(Procedure),可以在General部分直接输入,也可以通过菜单里的“Add Procedure”添加。Run的代码如下:

Sub Run()

Num1 = Val(StrNum2)
Num2 = Val(StrNum1)

Select Case Runsign

Case 1’加

equal = Num1 + Num2

Case 2’减

equal = Num1 - Num2

Case 3’乘

equal = Num1 * Num2

Case 4’除

equal = Num1 / Num2

End Select

StrNum2 = Str(equal)
StrNum1 = StrNum2
Text1.Text = StrNum2

End Sub

下面是其余的代码:(在Command1_Click事件里,接着写)

Case 11

If Not SignFlag Then

Text1.Text = StrNum1
equal = Val(StrNum1)
FirstNum = True
PointFlag = False

Else

Call Run
SignFlag = False

End If

Case Else’清除按钮

Call ClearData

里面又用到了一个ClearData过程,实际上就是Form_Load里的变量初赋值,代码如下:

Sub ClearData()

Num1 = 0
Num2 = 0
StrNum1 = ""
StrNum2 = ""
FirstNum = True
PointFlag = False
Runsign = 0
SignFlag = False
Text1.Text = "0."

End Sub
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网