vb计算器设计.docx
- 文档编号:9100274
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:8
- 大小:16.91KB
vb计算器设计.docx
《vb计算器设计.docx》由会员分享,可在线阅读,更多相关《vb计算器设计.docx(8页珍藏版)》请在冰豆网上搜索。
vb计算器设计
VB课程设计报告
院系电气学院
班级 08自
姓名 许文欢
学号 08020326
一、设计任务
设计一个计算器,包含:
加、减、乘、除、平方根、三角反三角函数以及以e、10为底的对数等简单运算。
二、系统总体设计构思和方案
(1)计算器有两种模式:
普通型与科学型,普通型不包含三角反三角及两种对数运算即在普通型时上述隐藏。
(2)要有一个可以储存一个数值的储存器,储存的数据为上一个显示在文本框中的数,且只在科学型计算器才能调用储存的数据。
(3)计算器可以“连算”即上一次的结果可作为本次计算的第一个数据来使用。
(4)输入的原始数据、运算中间数据及结果数据显示在同一文本框中。
(5)对于三角及反三角函数其输入与输出的数据的单位为:
度。
(6)三角函数与反三角函数及两种对数运算用同一组按钮,按shift实行同步转换。
(7)当输入的数值不符合函数定义时会报错,如:
log函数时,输入负数时则出现"函数的输入无效"。
同理,当除数为零时也会报错:
“零不能作除数”
(8)其他要求。
三、系统的调试
本人在此设计过程中的任务是系统的调试。
调试能够帮助我们发现问题。
在系统调试的过程中,我也发现了一些关于语法和逻辑的错误。
例如写对象的属性忘记写对象了,还有一些就是赋值的错误,使得发生了与预期不同的效果。
四、收获体会
此次的课程设计令我感触颇多。
首先,它有一定的难度,这需要我们全身心的投入其中;其次,像这种课题的制作,也是一种对我个人人文素质的考验,他需要的最重要的素质就是我们的学习能力。
课题设计时VB代码编写复杂、冗长,稍一不慎就会出错,我们调试了好多次,失败了好多次,而自己仔细想想,归根究底还是在于自己心太浮躁,没有耐心。
VB的编程是一项不易的工作,没有一颗平静的心是完成不了的。
我想,将来做许多事,也需要保持这么一种平和的心态,它是一种个人综合素质,是我们制胜的关键。
课题设计时VB代码编写复杂、冗长,稍一不慎就会出错,我们调试了好多次,失败了好多次,而自己仔细想想,归根究底还是在于自己心太浮躁,没有耐心。
VB的编程是一项不易的工作,没有一颗平静的心是完成不了的。
我想,将来做许多事,也需要保持这么一种平和的心态,它是一种个人综合素质,是我们制胜的关键。
在课题设计的过程中,VB代码的填写,根本无法下手,最后还是到书上查阅了相关资料才解决了这一难题。
从中我领悟到,亲自行动才是解决问题最好的方法,实践就是一切。
不管困难有多大,没有切实的行动时不行的。
而这前提必然是自己要有解决问题的决心与坚忍不拔的毅力。
此次项目对我们来说是困难的,但无论怎样,我们还是完成了,这说明一点,其实没有克服不了的困难。
无论身处于怎样的境地,我们都要勇于面对,并想办法解决,因为自己根本无法逃避。
五、源代码
DimchoiceAsString
DimcurrentAsDouble
DimprevAsDouble
DimflagAsBoolean
PrivateConstpi=3.14159265358979
'加载窗体时进行初始化设计
PrivateSubForm_Load()
Form1.Width=4500
Text1.Locked=True
Text1.Text=""
prev=current=0
ComHide
EndSub
'清除
PrivateSubac_Click()
Text1.Text=""
prev=current=0
EndSub
'输入数值
PrivateSubCommand1_Click(IndexAsInteger)
Text1=Text1.Text&Command1(Index).Caption
current=Val(Text1)
EndSub
'更改模式
PrivateSubmode_MouseDown(ButtonAsInteger,shiftAsInteger,XAsSingle,YAsSingle)
'切换为普通型
Ifflag=TrueThen
displaylb.Caption="NormalCalculator"
displaylb.ForeColor=&HFFC0C0
Form1.Width=4500
shiftb.Visible=False
recall.Visible=False
flag=False
ExitSub
'切换为科学型
Else
displaylb.Caption="ScientificCalculator"
displaylb.ForeColor=&HC0&
Form1.Width=5670
shiftb.Visible=True
recall.Visible=True
flag=True
EndIf
EndSub
'输入小数点
PrivateSubpoint_Click()
IfText1.Text=""Then
Text1.Text="0."
Else
Text1=Text1.Text&"."
EndIf
EndSub
'返回
PrivateSubrecall_Click()
Text1.Text=prev
EndSub
'换档
PrivateSubshiftb_Click()
invsine.Visible=True
invcos.Visible=True
invtan.Visible=True
expo.Visible=True
expo10.Visible=True
EndSub
'正负切换
PrivateSubsign_Click()
current=-current
Text1.Text=current
EndSub
'相减
PrivateSubminus_Click()
Text1.Text=""
choice="-"
prev=current
EndSub
'相加
PrivateSubplus_Click()
Text1.Text=""
choice="+"
prev=current
EndSub
'相乘
PrivateSubasterisk_Click()
Text1.Text=""
choice="*"
prev=current
EndSub
'相除
PrivateSubslash_Click()
Text1.Text=""
choice="/"
prev=current
EndSub
'计算结果
PrivateSubequal_Click()
Ifchoice="+"Then
current=prev+current
Text1.Text=current
ElseIfchoice="-"Then
current=prev-current
Text1.Text=current
ElseIfchoice="*"Then
current=prev*current
Text1.Text=current
ElseIfchoice="/"Andcurrent<>0Then
current=prev/current
Text1.Text=current
Else
MsgBox"除数不能为零",,"出错"
EndIf
EndSub
'平方根
PrivateSubsroot_Click()
Ifcurrent<0Then
MsgBox"函数的输入无效",,"出错"
Else
Text1.Text=Sqr(current)
current=Sqr(current)
EndIf
EndSub
'正切值
PrivateSubtangent_Click()
Text1.Text=Tan(current*pi/180)
current=Tan(current*pi/180)
EndSub
'正弦值
PrivateSubsine_Click()
Text1.Text=Sin(current*pi/180)
current=Sin(current*pi/180)
EndSub
'余弦值
PrivateSubcosine_Click()
Text1.Text=Cos(current*pi/180)
current=Cos(current*pi/180)
EndSub
'计算ln值
PrivateSublogn_Click()
Ifcurrent>0Then
Text1.Text=Log(current)
current=Log(current)
Else
MsgBox"函数的输入无效",,"出错"
EndIf
EndSub
'计算以10为底的log值
PrivateSublogten_Click()
Ifcurrent>0Then
Text1.Text=Log(current)/Log(10#)
current=Log(current)/Log(10#)
Else
MsgBox"函数的输入无效",,"出错"
EndIf
EndSub
'隐藏反状态的按钮
PrivateSubComHide()
invsine.Visible=False
invcos.Visible=False
invtan.Visible=False
expo.Visible=False
expo10.Visible=False
EndSub
'反余弦
PrivateSubinvcos_Click()
DimtempAsDouble
Dimtemp1AsDouble
temp=current
If(temp<1Andtemp>-1)Then
temp1=temp/Sqr(1-temp^2)
Text1.Text=90-Atn(temp1)*180/pi
current=90-Atn(temp1)*180/pi
ElseIftemp=-1Then
Text1.Text=180
current=180
ElseIftemp=1Then
Text1.Text=0
current=0
Else
MsgBox"函数的输入无效",,"出错"
EndIf
ComHide
EndSub
'反正弦
PrivateSubinvsine_Click()
DimtempAsDouble
Dimtemp1AsDouble
temp=current
If(temp<1Andtemp>-1)Then
temp1=temp/Sqr(1-temp^2)
Text1.Text=Atn(temp1)*180/pi
current=Atn(temp1)*180/pi
ElseIftemp=-1Then
Text1.Text=-90
current=-90
ElseIftemp=1Then
Text1.Text=90
current=90
Else
MsgBox"函数的输入无效",,"出错"
EndIf
ComHide
EndSub
'反正切
PrivateSubinvtan_Click()
Text1.Text=Atn(current)*180/pi
current=Atn(current)*180/pi
ComHide
EndSub
'计算e的幂
PrivateSubexpo_Click()
Text1.Text=Exp(current)
current=Exp(current)
ComHide
EndSub
'计算10的幂
PrivateSubexpo10_Click()
current=10^current
Text1.Text=current
ComHide
EndSub
'退出程序
PrivateSubexit_Click()
End
EndSub
六、主要参考资料
VB程序设计(第二版)
VisualBasic从入门到精通
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vb 计算器 设计