《VB设计计算器实验报告.docx》由会员分享,可在线阅读,更多相关《VB设计计算器实验报告.docx(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、VB设计计算器实验报告 VB 设计计算器 实验报告 姓名: 专业: 学号: 二0 一一年十一月七日 设计功能完整的计算器,实现如下图所示按钮(除“ MC,“MR , “MS,“M+ )及菜单功能,如图: 一、解题思路、分析: 对于我来说,设置一个完整的计算器是一个艰巨的任务,一开始想了一小段时间,自己试着编了一些,但就是无法达到一个完整的计算器,于是,就到网上去下载了一些有关计算 器的程序进行参考分析。首先先定义一些量,比如说前后两个操作数opl、op2,小数点是 否真存在的量DecimalFlag ,操作数个数NumOps上一次按键的类型等。接着对窗体进行初始化,同时设置所有变量为其初始。然
2、后对各个键盘的命令进行编写程序,对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
3、 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
4、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
5、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 Te
6、xt1.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) 运算符(+, -,
7、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
8、.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) Cas
9、e * 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
10、 OpFlag = Command11(Index).Caption End If End Sub Private Sub Command9_Click() Text1.Text = -Text1.Text Text1.Text = Format(Text1.Text, 0.#) End Sub Private Sub Command10_Click() 小数点(.) 按钮的Click 事件过程 如果上一次按键为运算符,初始化Text1.Text 为0. 否则显示时追加一个小数点 If LastInput = NEG Then Text1.Text = Format(0, -0.) ElseI
11、f LastInput NUMS Then Text1.Text = Format(0, 0.) End If DecimalFlag = True LastInput = NUMS End Sub Private Sub Command12_Click() Text1.Text = Sqr(Val(Text1.Text) Text1.Text = Format(Text1.Text, 0.#) End Sub Private Sub Command13_Click() 百分比键(%) 的Click 事件过程 计算并显示第一个操作数的百分数 Text1.Text = Text1.Text /
12、100 Text1.Text = Format(Text1.Text, 0.#) LastInput = Ops OpFlag = % NumOps = NumOps + 1 DecimalFlag = True End Sub Private Sub Command14_Click() If Val(Text1.Text) = 0 Then MsgBox ( 分母不能为零) Else Text1.Text = 1 / Val(Text1.Text) Text1.Text = Format(Text1.Text, 0.#) End If End Sub 三、实验心得:通过这次实验将书本上的知识掌握的更加透彻,不仅仅是简单的记忆,更是将知识融会贯通,学以致用!看着自己将一个完整的计算器编译出来,心中很是激动,感觉计算机的神奇,而在这之前是未曾想过的,所以更加强了我学习VB程序设计这门课程的爱好。在未来学习的日子里我依然会继续努力学习这门课程,因为它的实用、“神奇”深深的吸引了我!