用VB制作计算器.docx
- 文档编号:24985758
- 上传时间:2023-06-03
- 格式:DOCX
- 页数:13
- 大小:40.10KB
用VB制作计算器.docx
《用VB制作计算器.docx》由会员分享,可在线阅读,更多相关《用VB制作计算器.docx(13页珍藏版)》请在冰豆网上搜索。
用VB制作计算器
化工原理大作业
程序设计报告
所选课题:
化工计算程序设计
指导老师:
马四朋
作者姓名:
严程相
作者学号:
0887
学科班级:
化学工程与工艺3班
所在学院:
化学与化工学院
摘要2
目录3
第一章任务概述4
1.1、目标4
1.2、需求概述4
4
4
第二章总体设计5
2.1、系统结构功能图5
第三章功能分配6
3.1、打开计算器界面6
3.2、平方根,平方,倒数,正弦,余弦的实现8
3.3、退格9
3.4、清除9
9
9
3.5、鼠标的输入10
3.6、进制间的转换12
小结14
摘要
这个程序是我用VB制作的,它可以实现简单的四则运算,数字的平方,平方根,正弦,余弦,倒数,以及进制的相互转换。
而且它的功能还有退格,清除当前数据,清除所有数据,复制数据,粘贴数据,退出程序。
在这个计算器的程序中,我用到了单行选择语句If…Then…Else…,If语句的嵌套,多条件选择语句SelectCase,而且还用到了组合框,框架,菜单的设计,以及键盘事件,可以通过键盘来用于计算。
在此报告中我重点叙述了计算机的各个功能及用法。
特别是进制间的转换和数字与运算符之间的联系。
还有说明了键盘怎样用于操作计算。
虽然表达能力不太行,但我会尽力使用系统结构图,程序流程图,划分多个模块,让大家明白我设计的运算器的功能的。
第一章任务概述
1.1、目标
本系统的目标是建立一套可以计算数的平方,平方根,倒数,正弦,余弦,数字的进制转换的计算器系统,系统可以帮助我们更好的学习,更好的节省时间。
还能避免出现一些不必要的计算错误。
1.2、需求概述
根据本系统的需求分析,系统的需求可以分为以下的几个方面:
你可以利用鼠标点击界面上的各个按钮来实现计算器的运算。
当不方便使用鼠标时可以利用键盘来实现运算,数字的复制和粘贴
。
第二章总体设计
2.1、系统结构功能图
图2-1系统结构功能图
第三章功能分配
3.1、打开计算器界面
图3-1计算器界面
DimdflagAsInteger‘小数点仍然存在吗?
DimiAsInteger
DimopnreAsInteger‘初始值
DimprevAsDouble‘前面输入的操作数
DimoflagAsInteger‘等号前后对数字的标记
DimindAsInteger‘cmdoperator控件数组的数
DimxAsDouble
DimyAsDouble
'运算符(+,-,x,/,=)的Click事件过程
'如果接下来的按键是数字键,增加val(text1.Caption)。
'如果有一个操作数,则设置prev。
'如果有两个操作数,则将prev设置为prev与val(text1.Caption)
'当前输入字符串的运算结果,并显示结果。
PrivateSubcmdnumber_Click(IndexAsInteger)
Ifind=4Then
prev=0
text1.Caption=""
ind=0
EndIf
opnre=0
Ifoflag=0Then
text1.Caption=""
EndIf
oflag=1
小数点(.)按钮的Click事件过程
'如果上一次按键为运算符,初始化opnre为"0.";
'否则显示时追加一个小数点。
Ifcmdnumber(Index).Caption<>"."Then
Iftext1.Caption<>"0"Then
text1.Caption=text1.Caption&cmdnumber(Index).Caption
Else
text1.Caption=""&cmdnumber(Index).Caption
EndIf
Else
Ifdflag=0Then
text1.Caption=text1.Caption&"."
dflag=1
Else
MsgBox("ILLEGALSAIRAM")
EndIf
EndIf
'窗体的初始化过程
'设置所有变量为其初始值。
PrivateSubForm_Load()
计算器.Height=5460
计算器.Width=4680
prev=0
oflag=0
ind=0
opnre=0
Clipboard.Clear
EndSub
3.2、平方根,平方,倒数,正弦,余弦的实现
“平方根(sqrt)”按钮的click事件
PrivateSubcmdsqrt_Click()
y=Val(text1.Caption)
text1.Caption=Sqr(y)
EndSub
“平方(sqmt)”按钮的click事件
PrivateSubCmdsqmt_Click()
EndSub
x=Val(text1.Caption)
text1.Caption=x^2
EndSub
“倒数(reciprocal)”按钮的click事件
PrivateSubcmdreciprocal_Click()
x=Val(text1.Caption)
Ifx=0Then
MsgBox("除数不能为零!
")
Else
text1.Caption=1/x
EndIf
EndSub
“正弦(sine)”按钮的click事件
PrivateSubCmdsine_Click()
text1.Caption=Sin(x)
EndSub
“余弦(cosine)”按钮的click事件
PrivateSubcmdcosine_Click()
DimaAsInteger
a=Val(text1.Caption)
text1.Caption=Cos(a)
EndSub
3.3、退格
“退格”按钮的click事件
PrivateSubcmdback_Click()
DimlengthAsInteger
length=Len(text1.Caption)‘数字的长度
Iflength=1Then
Iftext1.Caption<>"0"Then‘除非结果为零,否则长度都要减一
text1.Caption="0"
EndIf
Else
text1.Caption=Left(text1.Caption,length-1)
EndIf
flag=True
EndSub
3.4、清除
C(取消)按钮的Click事件过程
PrivateSubCmdclear_Click()
text1.Caption="0"
CE(取消输入)按钮的Click事件过程
'重新设置显示并初始化变量。
PrivateSubCancelEntry_Click()
dflag=0
prev=0
oflag=0
ind=0
opnre=0
text1.Caption="0"
EndSub
3.5、鼠标的输入
利用keypress事件,当用户按下和松开一个ASCII字符键时发生。
PrivateSubForm_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=Asc(".")Then
i=10
cmdnumber_Click(i)
Beep‘当按下这个ASCII字符键时会发出响声
ElseIfKeyAscii=Asc("0")Then
i=0
cmdnumber_Click(i)
Beep
ElseIfKeyAscii=Asc("1")Then
i=1
cmdnumber_Click(i)
Beep
ElseIfKeyAscii=Asc("2")Then
i=2
cmdnumber_Click(i)
Beep
ElseIfKeyAscii=Asc("3")Then
i=3
cmdnumber_Click(i)
Beep
ElseIfKeyAscii=Asc("4")Then
i=4
cmdnumber_Click(i)
Beep
ElseIfKeyAscii=Asc("5")Then
i=5
cmdnumber_Click(i)
Beep
ElseIfKeyAscii=Asc("6")Then
i=6
cmdnumber_Click(i)
Beep
ElseIfKeyAscii=Asc("7")Then
i=7
cmdnumber_Click(i)
Beep
ElseIfKeyAscii=Asc("8")Then
i=8
cmdnumber_Click(i)
Beep
ElseIfKeyAscii=Asc("9")Then
i=9
cmdnumber_Click(i)
Beep
ElseIfKeyAscii=Asc("0")Then
i=0
cmdnumber_Click(i)
Beep
ElseIfKeyAscii=Asc("+")Then
i=0
cmdoperator_Click(i)
Beep
ElseIfKeyAscii=Asc("+")Then
i=0
cmdoperator_Click(i)
Beep
ElseIfKeyAscii=Asc("-")Then
i=1
cmdoperator_Click(i)
Beep
ElseIfKeyAscii=Asc("/")Then
i=2
cmdoperator_Click(i)
Beep
ElseIfKeyAscii=Asc("*")Then
i=3
cmdoperator_Click(i)
Beep
ElseIfKeyAscii=Asc("=")Then
i=4
cmdoperator_Click(i)
Beep
ElseIfKeyAscii=Asc("d")OrKeyAscii=Asc("D")Then
dflag=0
prev=0
oflag=0
ind=0
opnre=0
text1.Caption="0"
Beep
Beep
ElseIfKeyAscii=Asc("c")OrKeyAscii=Asc("C")Then
text1.Caption="0"
Beep
EndIf
EndSub
3.6、进制间的转换
进制转换按钮的click事件
PrivateSubCommand1_Click()
DimxAsLong,yAsString,sAsInteger‘定义
DimchAsString,nAsInteger
ch="09ABCDEF"‘把所有数字归纳
IfCombo1.Text="二进制"Then
n=2
Else
IfCombo1.Text="八进制"Then
n=8
Else
n=16
EndIf
EndIf
y=""
x=Val(text1.Caption)
Ifx=0Then
Text2.Text=""
MsgBox"请输入要转换的十进制数"
text1.Caption=""
ExitSub
EndIf
DoWhilex>0
s=xModn‘取x/n的最大整数
x=Int(x/n)‘取小于或等于x/n的最大整数
y=Mid(ch,s+1,1)+y
Loop
Text2.Text=y
EndSub
图3-6-1十进制转换成二进制
图3-6-2十进制转换成八进制
图3-6-3十进制转换成十六进制
小结
通过这次的课程设计,虽然很辛苦,但同时也让我弄懂了许多以前感觉很模糊的概念,也更加巩固了自己所学的知识,使得自己所学的知识更加系统化了,这次的程序设计,做的很疯狂,有时还会熬夜,但心里挺开心的。
因为自己可以做出点东西出来,不会觉得自己这半年什么也没学到。
这是其他的实验中海没有的事经过这几天的变成训练,。
总之,通过这次的程序设计,让我明白了很多,不管是所学的知识还是所领悟的道理。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB 制作 计算器