当前位置:文档之家› VB设计计算器实验报告

VB设计计算器实验报告

VB 设计计算器 实验报告姓名: 专业: 学号:二0一一年十一月七日设计功能完整的计算器,实现如下图所示按钮(除“ MC,“MR , “MS,“M+ )及菜单功能,如图:一、解题思路、分析:对于我来说,设置一个完整的计算器是一个艰巨的任务,一开始想了一小段时间,自己试着编了一些,但就是无法达到一个完整的计算器,于是,就到网上去下载了一些有关计算器的程序进行参考分析。

首先先定义一些量,比如说前后两个操作数opl、op2,小数点是否真存在的量DecimalFlag ,操作数个数NumOps上一次按键的类型等。

接着对窗体进行初始化,同时设置所有变量为其初始。

然后对各个键盘的命令进行编写程序,对0---9按键设置为一个按键命令组,编写一个程序,同时加减乘除设置一个命令组,也编写一个程序,其他按键都各自设置为一个命令,分别单独进行编写程序。

同时在多个命令中都要对显示器中的小数点进行分析,看它是否是真实存在。

同时对于除法分母是否为0,也要加以考虑。

、源程序:Private Sub Form_Load()DecimalFlag = FalseNumOps = 0LastI nput = "NONE"OpFlag =""Text1.Text = Format(0, "0.")'Decimal.Captio n = Format(0, ".")End SubOpti on ExplicitDim Op1, Op2Dim DecimalFlag As In tegerDim NumOps As In tegerDim LastInput类型Dim OpFlagDim TempReadout' 窗体的初始化过程' 设置所有变量为其初始值前面输入的操作数小数点仍然存在吗?操作数个数指示上一次按键事件的指示未完成的操作' 退格键Private Sub Command1_Click()If Len(Text1.Text) = 1 ThenText1.Text = Format(0, "0.")DecimalFlag = FalseLastInput = "NONE"ElseIf Text1.Text = "0." ThenText1.Text = "0."DecimalFlag = FalseLastInput = "NONE"ElseText1.Text = Left(Text1.Text, Len(Text1.Text) - 1)End IfEnd IfEnd SubPrivate Sub Command2_Click()' CE ( 取消输入) 按钮的Click 事件过程Text1.Text = Format(0, "0.") DecimalFlag = False LastInput = "CE"End SubPrivate Sub Command3_Click()' C ( 取消) 按钮的Click 事件过程' 重新设置显示并初始化变量Text1.Text = Format(0, "0.")Op1 = 0Op2 = 0Form_LoadEnd SubPrivate Sub Command8_Click(Index As Integer)' 数字键(0-9) 的Click 事件过程' 向显示中的数追加新数If LastInput <> "NUMS" Then Text1.Text = Format(0, ".") DecimalFlag = FalseEnd IfIf DecimalFlag ThenText1.Text = Text1.Text + Command8(Index).Caption ElseText1.Text = Left(Text1.Text, Format(0, ".")) - 1) +InStr(Text1.Text, Command8(Index).Caption + Format(0, ".")End IfIf LastInput = "NEG" Then Text1.Text = "-" & Text1.TextLastInput = "NUMS"End SubPrivate Sub Command11_Click(Index As Integer)' 运算符(+, -, x, /, =) 的Click 事件过程' 如果接下来的按键是数字键,增加NumOps 。

' 如果有一个操作数,则设置Op1 。

' 如果有两个操作数,则将Op1 设置为Op1 与' 当前输入字符串的运算结果,并显示结果( CDbl 或CSng 函数强制进行双精度或单精度算术运算)TempReadout = Text1.TextIf LastInput = "NUMS" ThenNumOps = NumOps + 1End IfSelect Case NumOpsCase 0If Command11(Index).Caption = "-" And LastInput <> "NEG" ThenText1.Text = "-" & Text1.TextLastInput = "NEG"End If Case 1Op1 = Text1.TextIf Command11(Index).Caption = "-" And LastInput <> "NUMS" And OpFlag <> "=" ThenText1.Text = "-"LastInput = "NEG"End If ' 3--3=6Case 2Op2 = TempReadoutSelect Case OpFlagCase "+"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, " 计算器"ElseOp1 = CDbl(Op1) / CDbl(Op2) End IfCase "="Op1 = CDbl(Op2)Case "%"Op1 = CDbl(Op1) * CDbl(Op2)End SelectText1.Text = Op1Text1.Text = Format(Text1.Text, "0.########")NumOps = 1End SelectIf LastInput <> "NEG" ThenLastInput = "OPS"OpFlag = Command11(Index).CaptionEnd IfEnd SubPrivate Sub Command9_Click()Text1.Text = -Text1.TextText1.Text = Format(Text1.Text, "0.########")End SubPrivate Sub Command10_Click()' 小数点(.) 按钮的Click 事件过程' 如果上一次按键为运算符,初始化Text1.Text为"0."' 否则显示时追加一个小数点If LastInput = "NEG" ThenText1.Text = Format(0, "-0.")ElseIf LastInput <> "NUMS" ThenText1.Text = Format(0, "0.")End IfDecimalFlag = TrueLastInput = "NUMS"End SubPrivate Sub Command12_Click()Text1.Text = Sqr(Val(Text1.Text))Text1.Text = Format(Text1.Text, "0.########")End SubPrivate Sub Command13_Click()' 百分比键(%) 的Click 事件过程' 计算并显示第一个操作数的百分数Text1.Text = Text1.Text / 100Text1.Text = Format(Text1.Text, "0.########")LastInput = "Ops"OpFlag = "%"NumOps = NumOps + 1DecimalFlag = TrueEnd SubPrivate Sub Command14_Click()If Val(Text1.Text) = 0 ThenMsgBox (" 分母不能为零")ElseText1.Text = 1 / Val(Text1.Text)Text1.Text = Format(Text1.Text, "0.########")End IfEnd Sub三、实验心得:通过这次实验将书本上的知识掌握的更加透彻,不仅仅是简单的记忆,更是将知识融会贯通,学以致用!看着自己将一个完整的计算器编译出来,心中很是激动,感觉计算机的神奇,而在这之前是未曾想过的,所以更加强了我学习VB程序设计这门课程的爱好。

在未来学习的日子里我依然会继续努力学习这门课程,因为它的实用、“神奇”深深的吸引了我!。

相关主题