《VB大作业(计算器).pdf》由会员分享,可在线阅读,更多相关《VB大作业(计算器).pdf(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、一、课题的选材过程鉴于 VB 强大的设计功能,而自己所学的知识有限,思路不够宽广。所以参考老师给的题目决定编一个简单实用的电子计算器。设计思路:1.界面设计计算器主体是一个计算器,需要一个标签Lable(属性 CAPTION)作为显示,然后需要 0 1 2 3 4 5 6 7 8 9.+-*/CE C Sqrt 1/X=共计 20 个 COMMAND控件。2.程序基本思路数字键的事件过程主要是靠调用number(num)过程来实现,一个控件数组和“0”键组成。加、减、乘、除运算键的事件过程主要是靠调用Calculation()过程来实现。开方等特殊运算键的事件过程主要是靠调用VB 工具内相应V
2、BA 函数来实现,例如 sqr()函数。接受键盘输入的运算操作是打开了建立了一个Form_KeyPress(KeyAscii)通用过程,根据 KeyAscii 的值响应相应事件。在 代 码 中 针 对 每 个 过 程 都 有 简 单 注 释;在 代 码 的 开 头 例 如“operand-操作数Calculation-计算”,这些都是帮助说明变量用途而写。二、设计将要达到的目标用一个窗体模块,完成模仿市面简单计算器的功能。例如加减乘除,开方,求倒数,支持键盘输入,可以清零,重置。并可连贯运算这些功能。三、总体设计结构1.总体设计结构介绍,设计结构图2.主要功能模块运行界面的介绍运行结果:四、设
3、计结果生成可执行程序运行结果:五、设计总结经过这学期VB 的学习,使我对VB 有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,虽然学校开的VB 是选修课,但它的实用性和通用性很强大,不比学过的C 语言差,因为是面向对象,所以很直观,学习中也可以发现很多乐趣,也激起了学习VB 的兴趣;因为是初学,对VB 的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对 VB 中经常出现的错误也不了解,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过实践的学习,我认识到学习编程要重视实践操作,不仅仅是学习VB,还
4、是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。六、附录源程序如下:operand-操作数Calculation-计算operation symbols-运算符号decimal-小数点plus-加minus-减multiply-乘divide-除equal to-等于inverse;reciprocal-倒数SquareRoot-平方根Dim LastInput As String 上次输入操作的类别Dim NumOperand As Integer 操作数数量Dim OperationSymbols As String
5、运算符号Dim DecimalFlag 小数点状态Dim Operation_1 操作数 1 的值Dim Operation_2 操作数 2 的值Dim Time As Integer 0 的使用次数*对操作数赋值,满足条件则可以运算Private Sub ChooseOperand()If LastInput=数字 Then NumOperand=NumOperand+1 End If Select Case NumOperand Case 1 Operation_1=LabelOut.Caption Case 2 Operation_2=LabelOut.Caption Calculati
6、on End Select If LastInput 运算符号 Then LastInput=运算符号 End If DecimalFlag=False End Sub*定义简单运算通用过程Calculation()Private Sub Calculation()Select Case OperationSymbols Case+Operation_1=Val(Operation_1)+V al(Operation_2)Case-Operation_1=Val(Operation_1)-V al(Operation_2)Case*Operation_1=Val(Operation_1)*V
7、al(Operation_2)Case/If Val(Operation_2)=0 Then Operation_1=ERROR!除数不能为零!Beep Else Operation_1=Val(Operation_1)/V al(Operation_2)End If Case=Operation_1=Operation_2 Case Else End Select LabelOut.Caption=Operation_1 结果输出NumOperand=1 操作数个数置1 DecimalFlag=False Time=0 End Sub*定义处理数字按钮过程Private Sub Number
8、(num As Integer)If Time 0 And V al(LabelOut.Caption)=0 And DecimalFlag=False Then LabelOut.Caption=End If If LastInput 数字 Then LabelOut.Caption=.End If If DecimalFlag Then If Left(LabelOut.Caption,1)=.And LastInput=运算符号 Then LabelOut.Caption=End If LabelOut.Caption=LabelOut.Caption&num Else Tmp=Labe
9、lOut.Caption If Val(Tmp)=0 Then LabelOut.Caption=num&.Else Tmp=Left(Tmp,Len(Tmp)-1)LabelOut.Caption=Tmp&num&.End If End If Tmp=LastInput=数字 End Sub*接受键盘输入的运算操作Private Sub Form_KeyPress(KeyAscii As Integer)Select Case KeyAscii Case 42*号Call CommandMultiply_Click Case 43+号Call CommandPlus_Click Case 4
10、5-号CommandMinus.Value=True Call CommandMinus_Click 与 CommandMinus.Value=True 作用相同Case 46 小数点Call CommandDecimal_Click Case 47/号Call CommandDivide_Click Case Asc(0)48 为字符零的Ascii 值Call Command0_Click Command0.Value=True 与 Call Command0_Click 作用相同Case Asc(0)To Asc(9)49 To 57 数字键 1 至 9 的 Ascii 值Char=Chr
11、(KeyAscii)Number(Char)Case 61=键Call CommandEqual_Click End Select End Sub*数字键 1 至 9 Private Sub Command_Click(Index As Integer)Call Number(Index)Number(Index)End Sub*数字键 0 Private Sub Command0_Click()If Val(LabelOut.Caption)=0 And DecimalFlag=False Then Time=Time+1 End If If Time=2 Then Else Number(
12、0)End If End Sub*小数点插入,实现小数Private Sub CommandDecimal_Click()If LastInput=无 Or LastInput=运算符号 Then LabelOut.Caption=0.ElseIf LastInput=负值 Then LabelOut.Caption=-0.ElseIf LastInput=数字 Then If DecimalFlag Then End If If Not DecimalFlag Then Tmp=LabelOut.Caption If Right(Tmp,1)=.Then Else Tmp=Tmp&.End
13、If LabelOut.Caption=Tmp Tmp=End If End If DecimalFlag=True LastInput=数字 End Sub*当前显示结果置零Private Sub CommandCE_Click()LabelOut.Caption=0.DecimalFlag=False LastInput=运算符号 End Sub*再次初始化窗体Form Private Sub CommandC_Click()Form_Load End Sub*设定变量、窗体和控件的值Public Sub ClearData()LabelOut.Caption=0.LastInput=无
14、NumOperand=0 OperationSymbols=DecimalFlag=False Time=0 Operation_1=Operation_2=LabelOut.BackColor=vbBlack LabelOut.ForeColor=vbGreen LabelOut.FontSize=12 LabelOut.AutoSize=False Form1.KeyPreview=True End Sub*初始化窗体,设置变量及参数状态(本程序目前未使用菜单项功能,如工具、帮助、编辑;运行时可以用箭头键来调整默认的按钮,进而可用Enter 键来按下它)Private Sub Form_L
15、oad()Call ClearData End Sub*加法Private Sub CommandPlus_Click()Call ChooseOperand OperationSymbols=+End Sub*减法;负号Private Sub CommandMinus_Click()Call ChooseOperand OperationSymbols=-End Sub*乘法Private Sub CommandMultiply_Click()Call ChooseOperand OperationSymbols=*End Sub*除法Private Sub CommandDivide_Cl
16、ick()Call ChooseOperand OperationSymbols=/End Sub*求平方根Private Sub CommandSquareRoot_Click()If Val(LabelOut.Caption)0 Then Operation_1=ERROR!被开方数不能为负值!Beep Else Operation_1=Sqr(Val(LabelOut.Caption)End If LabelOut.Caption=Operation_1 End Sub*求倒数,用除法Private Sub CommandReciprocal_Click()If LastInput=数字
17、 Then NumOperand=NumOperand+1 End If Select Case NumOperand Case 1 Operation_1=LabelOut.Caption Case 2 Operation_2=LabelOut.Caption Calculation End Select If NumOperand=0 And(LastInput=无 Or LastInput=负值 Or OperationSymbols )Then Else Operation_2=Operation_1 Operation_1=1 OperationSymbols=/Calculation NumOperand=0 OperationSymbols=End If End Sub*等于Private Sub CommandEqual_Click()Call ChooseOperand OperationSymbols=End Sub