ImageVerifierCode 换一换
格式:DOCX , 页数:44 ,大小:161.88KB ,
资源ID:12734591      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12734591.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(如何制作一个VB计算器.docx)为本站会员(b****0)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

如何制作一个VB计算器.docx

1、如何制作一个VB计算器如何制作一个VB计算器功能说明:支持加、减、乘、除、取反、阶乘、x的y次方、括号按键重新分配、提高了工作效率窗口过渡动画实时输入纠错,计算纠错其它经典实用的小功能期待发现与添加界面预览:前期准备:有Microsoft Visual Basic 开发平台,懂基本的VB语法(有明白时查资料就行了)计算顺序为 ()、!、*/、取反、加减算法为:首先扫描出()内需要优先计算的部分,将这部分用来计算依照计算顺序进行计算用计算结果替换原()联同()内表达式循环直至只剩下一个数据结果的处理主要内容:怎样扫描出各个计算符号和需要运算的数据,怎样纠错,后面会详细介绍开始动手之窗体设计:(1

2、)新建工程标准exeForm属性:BordStyle=1,Caption=计算器,FillStyle=1,Height=4455,Width=7995,(近似的黄金分割)Picture自己找一张图片(2)菜单工程部件控件勾选Microsoft Forms 2.0 Object Library确定(3)在新出现的控件中添加一个Textbox名称=tb,Backstyle=0,Boardstyle=1,Height=3615,Left=0,Top=0,Width=7995,Font适当(4)一个Image名称=img,Height=3615,Left=0,Top=0,Width=7995(尺寸位置

3、与Textbox相同),visibal=false,stretch=true,Picture自己找一张图片(5)在新出现的控件中添加一个Label将长度调整为与窗体同长,高度刚好可以填补视界中两张图片的差,放过去填补这个差,这样应该懂了用意了吧,Backstyle=0,Boardstyle=0,Caption随意,Font适当用鼠标点选这个标签,ctrl+c,ctrl+v创建数组,放到适当位置,重复总共放置5个,包含原来的那个。把 它们依次排开吧,赋上不同的Caption作为区分,怕麻烦就12345吧,不怕麻烦就,哎呀,自己想显示啥就写啥(6)在新出现的控件中添加再两个Label所有Label

4、的形状相同(为的是节约空间,简洁好看麻),visable=false,名称分别为Label2和lb3(7)5个Timer按下F5欣赏到效果如下:写程序啦本程序由标签循环显示动画、弹出按键分配动画、错误提示动画和计算部分四个部分组成,下面分别介绍如何实现上述部分。标签循环显示动画:首先是Label()数组及时间控件的初始化,双击窗体,添加以下程序Private Sub Form_Load() For i = 0 To 4/把这个标签数组重叠,初始化显示的位置 Label1(i).Visible = False Label1(i).Top = 3600 Label1(i).Left = 0 Nex

5、t i Label1(0).Visible = True Timer1.Interval = 2000/显示2秒钟后显示下一条提示 Timer2.Interval = 50/移动时间间隔 Timer1.Enabled = True Timer2.Enabled = FalseEnd Sub 要达到的效果就是。*按键循环滚动动画*再添加以下程序Private Sub Timer1_Timer() If i = 5 Then Label1(0).Visible = True Label1(1).Visible = False Label1(2).Visible = False Label1(3).

6、Visible = False Label1(4).Visible = False Label1(0).Top = 3600 Label1(1).Top = 3600 Label1(2).Top = 3600 Label1(3).Top = 3600 Label1(4).Top = 3600 i = 0 End If Timer2.Enabled = True i = i + 1End SubPrivate Sub Timer2_Timer() Label1(i - 1).Top = Label1(i - 1).Top + 50 If i = 5 Then Label1(0).Visible

7、= True Label1(0).Top = 3600 Exit Sub End If Label1(i).Visible = TrueEnd Sub在代码窗口的顶端选通用声明加上Dim i As Integer/就定义了一个i的全局变量接下来就可以按下F5看看这个动画了。*错误提示动画添加以下程序Private Sub Timer5_Timer() If lb3.Top tb.Height Then lb3.Top = lb3.Top - 150 Else lb3.Top = tb.Height If c 0 Then Timer3.Enabled = False img.Top = 0 E

8、nd IfEnd SubPrivate Sub Timer4_Timer() img.Top = img.Top - 100 If img.Top 0 Then For i = 1 To n ans = ans * i Next i fac = ans Else fac = 1 End IfEnd Function完整的KeyDown程序为Private Sub tb_KeyDown(KeyCode As MSForms.ReturnInteger, Shift As Integer)Dim i, j, p, q, m, flag, flag1, flag2, flag3 As Integer

9、Dim b As DoubleDim s, inexp, expression, temp, s1, msg As String禁止修改已计算过的内容If tb.SelStart + cur_l store_s ThenIf 光标位置+补偿(光标前一个字符位置)历史记录长度(即光标处在历史记录位置中)Select case判断是按下的什么键有效的按键为上下左右、end、homeDel则清空tb.text,历史记录长度,光标补偿Esc结束程序其它则keycode=93,此code不打印,形成忽略的效果End selectElse开始整个为输入、纠错和计算过程 Select Case KeyCod

10、e Case 33 To 40 Case vbKeyDelete tb.Text = store_s = 0 cur_l = 0 Case vbKeyEscape End Case Else KeyCode = 93 End SelectElse数据纠错* expression = Right(tb.Text, Len(tb.Text) - store_s)/每按下一次键就刷新表达式dot_s = /dot_s是存储操作数的变量flag=0 If tb.SelStart 0 Then For i = tb.SelStart + cur_l To 1 Step -1 Select Case Mi

11、d(tb.Text, i, 1) Case 0 To 9, . dot_s = Mid(tb.Text, i, 1) & dot_s Case Else flag = i i = 0 End Select Next i For i = tb.SelStart + cur_l + 1 To Len(tb.Text) Select Case Mid(tb.Text, i, 1) Case 0 To 9, . dot_s = dot_s & Mid(tb.Text, i, 1) Case Else i = Len(tb.Text) End Select Next i End If按键分配与纠错If

12、tb.SelStart = 0 Then flag1 = 1 Else flag1 = 0 End If Select Case KeyCode Case vbKeyA如果09前面的字符是!或)则表明缺少运算符 Select Case Mid(tb.Text, tb.SelStart + cur_l + flag1, 1) Case !, ) KeyCode=noti (1前缺少运算符) Case Else KeyCode = vbKey1 End Select Case vbKeyS Select Case Mid(tb.Text, tb.SelStart + cur_l + flag1,

13、1) Case !, ) KeyCode = noti (2前缺少运算符) Case Else KeyCode = vbKey2 End Select Case vbKeyD Select Case Mid(tb.Text, tb.SelStart + cur_l + flag1, 1) Case !, ) KeyCode = noti (3前缺少运算符) Case Else KeyCode = vbKey3 End Select Case vbKeyF Select Case Mid(tb.Text, tb.SelStart + cur_l + flag1, 1) Case !, ) Key

14、Code = noti (4前缺少运算符) Case Else KeyCode = vbKey4 End Select Case vbKeyG Select Case Mid(tb.Text, tb.SelStart + cur_l + flag1, 1) Case !, ) KeyCode =noti (5前缺少运算符) Case Else KeyCode = vbKey5 End Select Case vbKeyH Select Case Mid(tb.Text, tb.SelStart + cur_l + flag1, 1) Case !, ) KeyCode =noti (6前缺少运

15、算符) Case Else KeyCode = vbKey6 End Select Case vbKeyJ Select Case Mid(tb.Text, tb.SelStart + cur_l + flag1, 1) Case !, ) KeyCode =noti (7前缺少运算符) Case Else KeyCode = vbKey7 End Select Case vbKeyK Select Case Mid(tb.Text, tb.SelStart + cur_l + flag1, 1) Case !, ) KeyCode = noti (8前缺少运算符) Case Else Key

16、Code = vbKey8 End Select Case vbKeyL Select Case Mid(tb.Text, tb.SelStart + cur_l + flag1, 1) Case !, ) KeyCode = noti (9前缺少运算符) Case Else KeyCode = vbKey9 End Select Case 186 Select Case Mid(tb.Text, tb.SelStart + cur_l + flag1, 1) Case !, ) keycode=noti (0前缺少运算符) Case Else KeyCode = vbKey0 End Sel

17、ect Case vbKey8 If Shift = 1 Then If tb.SelStart = 0 Then keycode=noti( *前缺少操作数) Else Select Case Mid(tb.Text, tb.SelStart + cur_l, 1) Case 0 To 9, !, ) Case Else keycode=noti( *前缺少操作数) End Select End If End If Case vbKey9 If Shift = 1 Then If tb.SelStart = 0 Then Else Select Case Mid(tb.Text, tb.SelStart + cur_l, 1) Case 0 To 9, !, ) keycode=noti((前缺少运算符) Case Else End Select End If End If Case vbKey0 If Shift = 1 Then If tb.SelStart = 0 Or InStr(1, expression, () + store_s tb.SelStart + cur_l Or InStr(1, expression, () = 0 Then keycode=noti( )前无匹配的() Else Select Case Mid(tb.Te

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1