您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页毕业设计论文:基于vb的计算器的设计与实现[管理资料]

毕业设计论文:基于vb的计算器的设计与实现[管理资料]

来源:化拓教育网


摘 要

我用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

本站由北京市万商天勤律师事务所王兴未律师提供法律服务