问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

谁能给个用VB做计算器的思路~~~

发布网友 发布时间:2023-07-17 02:24

我来回答

2个回答

热心网友 时间:2024-12-07 14:18

参考下:
计算器的程序,很简单,只弄了+-法,乘除没弄,只要把代码看懂照着+-法改一下就行了,不过涉及到多级运算只用一个LastClick是不行的
程序的控件就两种
CommandBotton和TextBox都是最基本的
先创建十一个CommandBotton,Caption改为0-9以及一个"."(小数点)
创建三个CommandBotton,Caption改为“-”,“+”“=”
创建五个CommandBotton,Caption改为“CM”(clearmemory) “MR”(memoryrecall) “MS”(memorysave) “C”(clear) “AC”(allclear)
再创建个TextBox
下面的是对应代码,很清楚
不懂来问我`~

Dim Counter As Double ‘这个用来记录结果
Dim Memory As Double ‘用来记录你保存的数,这个我们用的科学计算器里也有
Dim Reg As Double ‘这个也是用来记录结果
Dim CalcNumber As Long ‘这个是判断:1当之前点过一次+或-时再点一次运算结果,2如果前面没点过+或-则不进行运算
Dim DisplayFromNew As Boolean ‘这个用来判断输入框状态:是接着输入还是从新输入新的数
Dim AlreadyDecimalThere As Boolean ‘这个用来判断是否能用小数点
Dim LastClick As String ‘这个用来记录最后一次选择的运算法则

Private Sub Form_Load()
Display.Text = "0"
Reg = 0
CalcNumber = 0
DisplayFromNew = True
AlreadyDecimalThere = False
End Sub

Private Sub AllClear_Click() ‘这个不用说了,是全部清空
DisplayFromNew = True ‘恢复到初始状态
Counter = 0
Display.Text = "0" ‘清空输入框
CalcNumber = 0
Reg = 0
AlreadyDecimalThere = False ‘恢复到初始状态

End Sub

Private Sub Clear_Click() ‘清空,但不清空纪录
DisplayFromNew = True
Display.Text = "0"
End Sub

Private Sub ClearMemory_Click() ‘清空纪录
Memory = 0
End Sub

Private Sub Decimal_Click() ‘关于小数点的
If AlreadyDecimalThere = False Then
AddDisplayDigit "."
AlreadyDecimalThere = True ‘每次输入只能输一次小数点
End If
End Sub

Private Sub Equals_Click() ‘等号时的
If LastClick = "Minus" Then
If CalcNumber = 0 Then
Reg = CDbl(Display.Text) ‘记录
DisplayFromNew = True
CalcNumber = 1
Else ‘这个的意思是,如果只点了法则(+或-)之后没点数,就加上前面输的数,但我觉得这样就等于前面输得数的2倍(+时)或0(-时),所以不用这么麻烦
Counter = Reg - CDbl(Display.Text)
Display.Text = CStr(Counter)
DisplayFromNew = True
AlreadyDecimalThere = False

Reg = CDbl(Display.Text)
End If

ElseIf LastClick = "Addition" Then ‘这是加法,和减法一样
If CalcNumber = 0 Then
Reg = CDbl(Display.Text)
DisplayFromNew = True
CalcNumber = 1
Else
Counter = Reg + CDbl(Display.Text)
Display.Text = CStr(Counter)
DisplayFromNew = True
AlreadyDecimalThere = False

Reg = CDbl(Display.Text)
End If
End If

CalcNumber = 0
End Sub

Sub AddDisplayDigit(Addition As String) ‘这一段十分重要,也是大家要学习的,就是自己创建一个函数,这样应用起来会十分方便
If DisplayFromNew = True Then
Display.Text = Addition ‘当DisplayFromNew = True时(大家注意杂那几种情况下= True)输入栏从新显示刚输入的数
DisplayFromNew = False ‘之后立即变为False,因为要接着这个数继续输入
Else
Display.Text = Display.Text & Addition ‘当DisplayFromNew = False 就是接着输入栏里已有的数字继续输入
End If
End Sub
注:为何要弄两种情况呢,因为当点击-或+时,要求输入栏从新记录
Private Sub MemorySave_Click() ‘这是保存记录
If DisplayFromNew = False Then
Memory = CDbl(Display.Text)
End If
End Sub

Private Sub MemoryRecall_Click() ‘打开纪录
Display = CStr(Memory)
End Sub

Private Sub Minus_Click() ‘点击
If CalcNumber = 0 Then
Reg = CDbl(Display.Text)
DisplayFromNew = True
CalcNumber = 1
Else ‘这个就是如果前面输过一次-号,再点-号就运算结果,这一点是很重要的,如果不加这个就无法进行连续运算 Counter = Reg - CDbl(Display.Text)
Display.Text = CStr(Counter)
DisplayFromNew = True
AlreadyDecimalThere = False

Reg = CDbl(Display.Text)
End If

LastClick = "Minus"
End Sub

Private Sub Plus_Click() ‘和减法一样
If CalcNumber = 0 Then
Reg = CDbl(Display.Text)
DisplayFromNew = True
CalcNumber = 1
Else
Counter = Reg + CDbl(Display.Text)
Display.Text = CStr(Counter)
DisplayFromNew = True
AlreadyDecimalThere = False

Reg = CDbl(Display.Text)
End If

LastClick = "Addition"
End Sub

‘下面的就简单了0-9,不过用到了前面定义的函数AddDisplayDigit,大家看到这个自定义函数的作用了吧
Private Sub Nine_Click()
AddDisplayDigit "9"
End Sub

Private Sub Eight_Click()
AddDisplayDigit "8"
End Sub

Private Sub Seven_Click()
AddDisplayDigit "7"
End Sub

Private Sub Six_Click()
AddDisplayDigit "6"
End Sub

Private Sub Five_Click()
AddDisplayDigit "5"
End Sub

Private Sub Four_Click()
AddDisplayDigit "4"
End Sub

Private Sub Three_Click()
AddDisplayDigit "3"
End Sub

Private Sub Two_Click()
AddDisplayDigit "2"
End Sub

Private Sub One_Click()
AddDisplayDigit "1"
End Sub

Private Sub Zero_Click()
AddDisplayDigit "0"
End Sub

热心网友 时间:2024-12-07 14:18

VB 做计算器, 太简单了, VBScript 有 EVAL 函数
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
农业银行助学贷款还款流程 助学贷款到什么银行还款 农业银行助学贷款还款查询 海藻丸相关方剂 “与医收海藻”的出处是哪里 小狗在外面只尿一点点,回到家尿一大泡,气死人。要怎么解决啊_百度知 ... 狗狗为什么总是尿一点 狗狗到处尿一点点 相机内存卡不小心格式化怎么恢复 佳能相机不小心格式化了照片是否可以恢复_佳能相机不小心格式化了照片还 ... 凤亭路口到月湖大市场怎么走 请问我在开福区月湖大市场要去长沙火车站 ,有直达的公交车吗 成都本科线多少分 单片机程序 两个数的相加 从长沙火车南站到月湖公园怎么坐公交车,最快需要多久 长沙汽车南站坐几路公交车到月湖大市场 月湖大市场到火车南站怎么走 C语言中如何实现,在1到6之间产生随机数并存入数组中,数组一共有12个数 ... 湖南月湖大市场离高铁南站多少路,怎么走啊 狗狗生嵬大小不同怎么回事。只能活两三天‘ LGSU660是否支持FM收音机 pl660收音机短波怎么找台湾频道 做紫砂的有个叫什么强的 贫者小人是什么意思 问德生660收音机在福州市短波好不好用 河南大学:学校里都有哪些银行的ATM机? 南瓜能不能和香瓜一起吃? 嘎咯羊是什么植物? 河南大学:学校附近的银行都在哪里? 南瓜嫁接的甜瓜好不好吃 湘潭西到长沙月湖大市场怎么走 VB中怎么让别的应用程序作为自己的一个子窗口 you,reIate。翻译中文 胳膊被人咬了一口为什么总是麻木 上茬香瓜下茬可以种南瓜吗 被女朋友在左小臂尺骨侧咬了一口,都两个半月了仍然感觉左手拇指和食指... 昨天咬了一口老公的胳膊,他说现在一直是麻的,怎么办 魔兽争霸3切出去后进不去怎么办a 胳膊被女朋友咬一口,手指变得有点麻木了 魔兽争霸一开始可以玩,我就来回切换了下,就出现进不去的情况,重启也不... 被咬手腕的筋,手麻一直不好怎么办? 玩冰封王座为什么我切出来再切不进去。 我的手被老婆咬了一口手发麻了,这到底是为什么? ...不太会用智能手机查询公交信息,如何做到让老人搭公交更方便?_百度... 为什么我开了魔兽争霸切出来就切不进去了 手腕被女友咬了一口,好像咬到血管了,手掌一直发麻,还肿了,是怎么回事啊... 手腕被咬了一口,手背发麻。 为什么我玩魔兽争霸DOTA切出去后 就切不进去了呢 ...总是会无法切换界面 就是最小化后不能进入游戏 求指点~~~ 小龙人的妈妈叫什么名字