摘 要
我用VB制作这个程序的简单计算器,它包括一个标准的计算器和一个科学计算器。它可以实现简单的加减乘除四则运算,数字的平方、平方根,正弦、余弦、正切,倒数、指数函数、对数函数,角度、弧度、梯度的转换,以及各进制的相互转换。而且它的功能还有退格,清除当前数据,清除所有数据,复制数据,粘贴数据。
在这个计算器的程序中,我用到了单行选择语句If … Then …Else…,
块语句if…then…end if,If语句的嵌套,多条件选择语句Select Case,而且还用到了按钮、文本框、框架、单选按钮控件,菜单的设计。
在此报告中我重点叙述了计算机的各个功能及用法。特别是进制间的转换和数字与运算符之间的联系。。虽然描述的不太完整,但我会尽力使用系统结构图,划分多个模块,让大家明白我设计的运算器的功能的。
目 录
第一章、程序概述 ......................... - 4 -
、创作目的 .............................................................................. - 4 - 、基本功能 .............................................................................. - 4 -
第二章、总体设计 ......................... - 5 -
、程序轮廓图 .......................................................................... - 5 -
第三章、程序代码 ......................... - 6 -
、计算器界面 .......................................................................... - 6 -
、标准型计算器: .......................................................... - 6 - 、科学型计算器: .......................................................... - 7 - 、标准计算器代码 .................................................................. - 8 -
、变量的定义及初始化 .................................................. - 8 - 、简单的运算 .................................................................. - 8 - 、退格、清除、清空 .................................................... - 10 - 、复制、粘贴 ................................................................ - 11 - 、两窗体的切换 ............................................................ - 12 - 、科学型计算器的代码 ........................................................ - 12 -
、变量的定义及初始化 ................................................ - 12 - 、简单的运算 ................................................................ - 13 - 、正弦、余弦、正切 .................................................... - 15 - 、平方、立方、多次方 ................................................ - 15 - 、指数函数、对数函数 ................................................ - 16 - 、倒数、平方根 ............................................................ - 16 - 、角度、弧度、梯度 .................................................... - 17 -
、各进制转换 ................................................................ - 18 - 、退格、清除、清空 .................................................... - 27 - 、复制、粘贴 ................................................................ - 28 - 、两窗体的切换 ............................................................ - 29 -
第四章、总结 ............................ - 29 -
、对学习者知识的要求: .................................................... - 30 - 、学习程序设计基本要求: ................................................ - 30 - 、程序设计方法概述 ............................................................ - 31 - 、如何学好VB ...................................................................... - 31 - 、不足之处 ............................................................................ - 31 -
参考文献 ................................ - 32 -
第一章、程序概述
、创作目的
本程序的目标是建立一套可以计算数的平方,平方根,倒数,正弦,余弦,正切,指数函数,对数函数,角度、弧度、梯度相互转换和数字的
进制转换的计算器系统,系统可以帮助我们更快的计算,更好的学习,更
好的节省时间。还能避免出现一些不必要的计算错误。 、基本功能
1) 能够完成整型和实型常数的四则运算。
2) 能够进行如下函数的求值运算,包括sin, cos,tan, exp,
log, sqr, 1/x,及和园周率π。 3) 能够实现角度、弧度、梯度的相互转换。 4) 能够实现的进制的相互转换。
5) 输出时的格式:结果为整数时不显示小数点,结果为1以
下小数时要显示前导0。
6) 分门别类采用控件数组,以减少事件处理的复杂程度,使
程序简洁高效。
7) 能够实现退格键、清除、清空功能。
8) 出错处理:操作数如果不符合数学上的定义,应该给出错误
信息。例:0做除数,负数或0做真数等情况
第二章、总体设计
、程序轮廓图
输入数字 平方根 平方 立方 选择转换的进简单四则运算 转换 退 格 清除当前数据 正弦 余弦 正切 倒数 指数函数 对数函数 角度、弧度、梯度的转换 清除说有数据 结 果 图 一
第三章、程序代码
、计算器界面 、标准型计算器:
图 二
、科学型计算器:
图 三
、标准计算器代码 、变量的定义及初始化 Dim dflag As Integer Dim i As Integer Dim opnre As Integer Dim prev As Double Dim oflag As Integer Dim ind As Integer Dim X As Double Dim Y As Double Private Sub Form_Load() prev = 0 oflag = 0 ind = 0 opnre = 0
ang = / 180 End Sub 、简单的运算
Private Sub Command1_Click(Index As Integer) If ind = 4 Then prev = 0 = \" \" ind = 0 End If
opnre = 0 If oflag = 0 Then = \" \" End If oflag = 1
If Command1(Index).Caption <> \".\" Then If <> \" 0\" Then
= & Command1(Index).Caption Else
= \" \" & Command1(Index).Caption End If Else
If dflag = 0 Then = & \".\" dflag = 1 Else
MsgBox (\"Error\") End If End If End Sub
Private Sub Command2_Click(Index As Integer) If opnre = 0 Or Index = 4 Then If ind = 0 Then
prev = prev + Val() ElseIf ind = 1 Then prev = prev - Val() ElseIf ind = 2 Then
If Val() = 0 Then
MsgBox (\"SORRY DIVIDE ZERO\") Exit Sub Else
prev = prev / Val() End If
ElseIf ind = 3 Then prev = prev * Val() End If = Str(prev) oflag = 0 End If opnre = 1 ind = Index dflag = 0 End Sub 、退格、清除、清空
Private Sub Command3_Click() Dim length As Integer length = Len() If length = 1 Then If <> \"0\" Then = \"0\" End If Else
= Left(, length - 1)
End If flag = True End Sub
Private Sub Command4_Click() dflag = 0 prev = 0 oflag = 0 ind = 0 opnre = 0 = \" 0\" End Sub
Private Sub Command5_Click() = \" 0\" End Sub 、复制、粘贴
Private Sub fz_Click() End Sub
Private Sub zt_Click() = \"\" = () End Sub
、两窗体的切换
Private Sub ck_Click() End Sub
Private Sub ckx_Click() End Sub
、科学型计算器的代码 、变量的定义及初始化 Dim dflag As Integer Dim i As Integer Dim opnre As Integer Dim prev As Double Dim oflag As Integer Dim ind As Integer Dim X As Double Dim Y As Double Private Sub Form_Load() prev = 0 oflag = 0 ind = 0 opnre = 0
ang = / 180 End Sub 、简单的运算
Private Sub Command1_Click(Index As Integer) If ind = 4 Then prev = 0 = \" \" ind = 0 End If opnre = 0 If oflag = 0 Then = \" \" End If oflag = 1
If Command1(Index).Caption <> \".\" Then If <> \" 0\" Then
= & Command1(Index).Caption Else
= \" \" & Command1(Index).Caption End If Else
If dflag = 0 Then = & \".\" dflag = 1 Else
MsgBox (\"Error\")
End If End If End Sub
Private Sub Command2_Click(Index As Integer) If opnre = 0 Or Index = 4 Then If ind = 0 Then
prev = prev + Val() ElseIf ind = 1 Then prev = prev - Val() ElseIf ind = 2 Then If Val() = 0 Then
MsgBox (\"SORRY DIVIDE ZERO\") Exit Sub Else
prev = prev / Val() End If
ElseIf ind = 3 Then prev = prev * Val() End If = Str(prev) oflag = 0 End If opnre = 1 ind = Index dflag = 0 End Sub
、正弦、余弦、正切
Private Sub Command5_Click() = Str(Sin(ang * Val())) End Sub
Private Sub Command6_Click() = Str(Cos(ang * Val())) End Sub
Private Sub Command7_Click() If (Cos(Val())) <> 0 Then
= Str(Sin(ang * Val()) / Cos(ang * Val())) Else
MsgBox (\"该数无正切值 \") = \"0\" End If End Sub
、平方、立方、多次方
Private Sub Command8_Click() X = Val() = X ^ 2 End Sub
Private Sub Command9_Click() X = Val() = X ^ 3 End Sub
Private Sub Command10_Click()
If ( = \"\" Or prev = 0) Then MsgBox (\"不合法输入!!!\") = \"0\" Else
prev = power(prev, Fix(Val())) End If End Sub
、指数函数、对数函数
Private Sub Command11_Click() e = Val() = Exp(e) End Sub
Private Sub Command12_Click() L = Val() = Log(L) End Sub 、倒数、平方根
Private Sub Command13_Click() X = Val() If X = 0 Then
MsgBox (\"除数不能为零!\") Else = 1 / X End If End Sub
Private Sub Command14_Click() If < 0 Then
MsgBox (\"负数不能开方\") = \"0\" Else
= Str(Sqr(Val())) End If End Sub
、角度、弧度、梯度
Private Sub Option5_Click(Index As Integer) Dim jd As Double, hu As Double, td As Double ju = Val() Select Case Index Case 0 = ju Case 1
hu = / 180 * ju = hu Case 2 td = / 200 = td End Select ind = Index End Sub
、各进制转换
Private Sub Option1_Click(Index As Integer) Static r
Select Case Index Case 0
Dim w As Integer For w = 2 To 9
Command1(w).Enabled = True Next w For w = 0 To 5
Command3(w).Enabled = True Next w If r = 10 Then
= trandec(Val(), 16) ElseIf r = 2 Then = Two16() ElseIf r = 8 Then = OCT_to_HEX() End If r = 16 Case 1
Dim X As Integer For X = 2 To 9
Command1(X).Enabled = True Next X For X = 0 To 5
Command3(X).Enabled = False
Next X
= Convert(, r)
If r = 8 Then = trandec(Val(), 10) r = 10 Case 2
Dim Y As Integer For Y = 2 To 7
Command1(Y).Enabled = True Next Y
Command1(8).Enabled = False Command1(9).Enabled = False For Y = 0 To 5
Command3(Y).Enabled = False Next Y If r = 10 Then
= trandec(Val(), 8) ElseIf r = 16 Then = HEX_to_OCT() ElseIf r = 2 Then = BIN_to_OCT() End If r = 8 Case 3
Dim z As Integer For z = 2 To 9
Command1(z).Enabled = False Next z
For z = 0 To 5
Command3(z).Enabled = False Next z If r = 10 Then
= trandec(Val(), 2) End If If r = 16 Then = HEX_to_BIN() ElseIf r = 8 Then = OCT_to_BIN() End If r = 2 End Select Y = N End Sub
Function fact(num As Long) As Long If (num < 0 Or num = 0) Then MsgBox (\"Error\") fact = num Else
If (num > 12) Then MsgBox (\"指太大\") fact = num Else re = 1
While (num > 0) re = re * num
num = num - 1 Wend fact = re End If End If End Function
Public Function trandec$(ByVal m%, ByVal r%) Dim strdtor$ Dim iB%, mr% strdtor = \"\" Do While m <> 0 mr = m Mod r m = m \\ r If mr >= 10 Then
strdtor = Chr(mr - 10 + 65) & strdtor Else
strdtor = mr & strdtor End If Loop
trandec = strdtor End Function
Public Function Convert(ByVal S As String, ByVal N As Integer) As Double
Dim r() As String Dim i As Integer Dim j As Integer L
=
\"0|1|2|3|4|5|6|7|8|9|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z\"
r = Split(L, \"|\") For i = 1 To Len(S) For j = 0 To UBound(r)
If UCase(Mid(S, i, 1)) = r(j) Then Convert = Convert * N + j End If Next j Next i End Function
Private Function Two16(ByVal X As String) As String Do While Len(X) Mod 4 <> 0 X = \"0\" + X Loop
Do While Len(X) > 0
Select Case Right(X, 4) Case \"0000\"
Two16 = \"0\" + Two16 Case \"0001\"
Two16 = \"1\" + Two16 Case \"0010\"
Two16 = \"2\" + Two16 Case \"0011\"
Two16 = \"3\" + Two16 Case \"0100\"
Two16 = \"4\" + Two16
Case \"0101\"
Two16 = \"5\" + Two16 Case \"0110\"
Two16 = \"6\" + Two16 Case \"0111\"
Two16 = \"7\" + Two16 Case \"1000\"
Two16 = \"8\" + Two16 Case \"1001\"
Two16 = \"9\" + Two16 Case \"1010\"
Two16 = \"A\" + Two16 Case \"1011\"
Two16 = \"B\" + Two16 Case \"1100\"
Two16 = \"C\" + Two16 Case \"1101\"
Two16 = \"D\" + Two16 Case \"1110\"
Two16 = \"E\" + Two16 Case \"1111\"
Two16 = \"F\" + Two16 End Select
X = Left(X, Len(X) - 4) Loop
End Function
Public Function HEX_to_BIN(ByVal Hex As String) As String
Dim i As Long Dim B As String Hex = UCase(Hex) For i = 1 To Len(Hex)
Select Case Mid(Hex, i, 1) Case \"0\": B = B & \"0000\" Case \"1\": B = B & \"0001\" Case \"2\": B = B & \"0010\" Case \"3\": B = B & \"0011\" Case \"4\": B = B & \"0100\" Case \"5\": B = B & \"0101\" Case \"6\": B = B & \"0110\" Case \"7\": B = B & \"0111\" Case \"8\": B = B & \"1000\" Case \"9\": B = B & \"1001\" Case \"A\": B = B & \"1010\" Case \"B\": B = B & \"1011\" Case \"C\": B = B & \"1100\" Case \"D\": B = B & \"1101\" Case \"E\": B = B & \"1110\" Case \"F\": B = B & \"1111\" End Select Next i
Do While Left(B, 1) = \"0\" B = Right(B, Len(B) - 1) Loop
HEX_to_BIN = B
End Function
Public Function OCT_to_BIN(ByVal Oct As String) As String Dim i As Long Dim B As String For i = 1 To Len(Oct)
Select Case Mid(Oct, i, 1) Case \"0\": B = B & \"000\" Case \"1\": B = B & \"001\" Case \"2\": B = B & \"010\" Case \"3\": B = B & \"011\" Case \"4\": B = B & \"100\" Case \"5\": B = B & \"101\" Case \"6\": B = B & \"110\" Case \"7\": B = B & \"111\" End Select Next i
While Left(B, 1) = \"0\" B = Right(B, Len(B) - 1) Wend
OCT_to_BIN = B End Function
Public Function HEX_to_OCT(ByVal Hex As String) As String Dim bin As String Hex = UCase(Hex) bin = HEX_to_BIN(Hex) HEX_to_OCT = BIN_to_OCT(bin) End Function
Public Function BIN_to_OCT(ByVal bin As String) As String Dim i As Long Dim H As String
If Len(bin) Mod 3 <> 0 Then
bin = String(3 - Len(bin) Mod 3, \"0\") & bin End If
For i = 1 To Len(bin) Step 3 Select Case Mid(bin, i, 3) Case \"000\": H = H & \"0\" Case \"001\": H = H & \"1\" Case \"010\": H = H & \"2\" Case \"011\": H = H & \"3\" Case \"100\": H = H & \"4\" Case \"101\": H = H & \"5\" Case \"110\": H = H & \"6\" Case \"111\": H = H & \"7\" End Select Next i
While Left(H, 1) = \"0\" H = Right(H, Len(H) - 1) Wend
BIN_to_OCT = H End Function
Public Function OCT_to_DEC(ByVal Oct As String) As Long Dim i As Long Dim B As Long
For i = 1 To Len(Oct)
Select Case Mid(Oct, Len(Oct) - i + 1, 1) Case \"0\": B = B + 8 ^ (i - 1) * 0 Case \"1\": B = B + 8 ^ (i - 1) * 1 Case \"2\": B = B + 8 ^ (i - 1) * 2 Case \"3\": B = B + 8 ^ (i - 1) * 3 Case \"4\": B = B + 8 ^ (i - 1) * 4 Case \"5\": B = B + 8 ^ (i - 1) * 5 Case \"6\": B = B + 8 ^ (i - 1) * 6 Case \"7\": B = B + 8 ^ (i - 1) * 7 End Select Next i OCT_to_DEC = B End Function
Public Function OCT_to_HEX(ByVal Oct As String) As String Dim bin As String bin = OCT_to_BIN(Oct) OCT_to_HEX = Two16(bin) End Function 、退格、清除、清空
Private Sub Command15_Click() Dim length As Integer length = Len() If length = 1 Then If <> \"0\" Then = \"0\"
End If Else
= Left(, length - 1) End If flag = True End Sub
Private Sub Command16_Click() dflag = 0 prev = 0 oflag = 0 ind = 0 opnre = 0 = \" 0\" End Sub
Private Sub Command17_Click() = \" 0\" End Sub 、复制、粘贴
Private Sub fz_Click() End Sub
Private Sub zt_Click() = \"\"
= () End Sub
、两窗体的切换
Private Sub ck_Click() End Sub
Private Sub ckx_Click() End Sub
第四章、总结
经过课程设计后我总结了一些学习方法,学到了一些知识,以下是我对此次实习的总结
、对学习者知识的要求:
首先,学习程序设计要有一定的逻辑思维能力,逻辑思维需要长时间的锻炼,如果你觉得
自己在逻辑思维能力上有不足,也没有关系,因为编写程序本身也是对逻辑思维的锻炼,
初学程序设计应具备的逻辑基础可以从高中数学中学到。 其次,学习程序设计要具备一定的数学基础,计算机与数学有很大的联系,综观计算机历
史,计算机的数学模型和体系结构等都是由数学家提出的。因此,要学习好计算机就要有
一定的数学基础,不过对于初学者来说,在数学基础方面的要求并不是很高,从我个人的
角度来看,有高中数学水平就差不多了。
、学习程序设计基本要求:
熟悉Visual Basic操作环境与设计工具,能设计应用程序界面。 掌握,理解面向对象程序设计基本概念。 理解、运用数据库的连接,及调用 。 掌握数据库对数据的管理。
掌握VB语言的基础知识,程序设计的方法。 能阅读一般难的程序; 能应用编写一些简单程序;
具有用Visual Basic开发Windows环境下应用程序的能力和阅读分析一般难度的VB程序的能力。
、程序设计方法概述 1、初期的程序设计
高运行效率,少占用内存为目标 2、结构化程序设计
程序的可读性,可维护性为目标
程序=算法+数据结构+计算机语言+面向过程的程序设计方法 3、面向对象的程序设计
降低程序的复杂性,提高软件的开法效率和改善工作界面为目标
程序=对象+消息+面向对象的程序设计
、如何学好VB
(1)养成良好的学习习惯
(2)学习程序设计要注重理解一些重要的概念。 (3)自己动手编写程序
(4)阅读。借签别人设计的好程序 (5) VB程序设计学习的重点 (6)养成良好的编程习惯 、不足之处
由于水平问题,计算器的许多其他功能没有实现,而且程序还存在许多缺陷。外观特不是可漂亮。
参考文献
1.《东华理工大学长江学院课程设计报告》
2.《基于Visual Basic语言的文本编辑器设计》,石家庄铁道学院课程设计
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务