基于Visual Basic的编程实现一个计算器.docx
《基于Visual Basic的编程实现一个计算器.docx》由会员分享,可在线阅读,更多相关《基于Visual Basic的编程实现一个计算器.docx(15页珍藏版)》请在冰点文库上搜索。
基于VisualBasic的编程实现一个计算器
第1章绪论
1.1课题简介
1.1.1课程设计题目
基于VisualBasic的计算器的制作
1.1.2课题要求
基于VisualBasic的编程实现一个计算器软件,要求计算器能够实现:
加法、减法、乘法、除法、乘方、立方、正弦、余弦、正切、余切、开平方等功能。
而且还要实现计算器界面有一个与系统时间同步的时钟。
要求界面简单美观,操作简单方便,类似于我们一直在用的计算器。
1.1.3课题工作内容
1、掌握一些程序设计算法的分析,学会使用控件数组;
2、掌握VB程序的编写方法,学会VB函数的调用;
3、学会应用软件界面的设计和界面的布局、美化;
4、学会编写与系统时间同步的时钟;
5、撰写课程设计报告。
1.2系统分析
1.2.1开发背景
计算机已经成为我们学习和工作的得力助手:
今天,计算机的价格已经十分低廉,性能却有了长足的进步。
它已经被应用于许多领域,计算机之所以如此流行的原因主要有以下几个方面:
1,计算机可以代替人工进行许多繁杂的劳动;
2,计算机可以节省许多资源;
3,计算机可以大大的提高人们的工作效率;
4,计算机可以使敏感文档更加安全等。
第2章开发环境及实现技术
2.1开发环境
硬件系统:
奔腾166MX以上CPU、32M以上内存、1G以上硬盘、光驱。
软件系统:
Windows98/ME/2000/XP、VisualBasic6.0中文版。
2.2开发工具简介
2.2.1总体介绍
微软公司的VisualBasic6.0是Windows应用程序开发工具,是目前最为广泛的、易学易用的面向对象的开发工具。
VisualBasic提供了大量的控件,这些控件可用于设计界面和实现各种功能,减少了编程人员的工作量,也简化了界面设计过程,从而有效的提高了应用程序的运行效率和可靠性。
故而,实现本系统VB是一个相对较好的选择。
Access2000就是关系数据库开发工具,数据库能汇集各种信息以供查询、存储和检索。
Access的优点在于它能使用数据表示图或自定义窗体收集信息。
数据表示图提供了一种类似于Excel的电子表格,可以使数据库一目了然。
另外,Access允许创建自定义报表用于打印或输出数据库中的信息。
Access也提供了数据存储库,可以使用桌面数据库文件把数据库文件置于网络文件服务器,与其他网络用户共享数据库。
Access是一种关系数据库工具,关系数据库是已开发的最通用的数据库之一。
如上所述,Access作为关系数据库开发具备了许多优点,可以在一个数据包中同时拥有桌面数据库的便利和关系数据库的强大功能。
微软的JET数据库引擎提供了与数据库打交道的途径,我们是通过它以及VisualBasic来访问数据库并对其进行各种操作。
VisualBasic、Access以及其他微软的软件产品都是通过共用JET数据库引擎,从而给用户提供了丰富的数据类型。
DATA控件在数据库中的信息与将信息显示给用户看的VisualBasic程序之间架起了一座桥梁。
我们可以设置DATA控件的各个属性,告诉它要调用那个数据库的哪个部分。
缺省情况下,DATA控件根据数据库中的一个或多个数据表建立一个dynaset-type(动态集合)类型的记录集合。
一个记录集合是动态的也就意味着,当原来的数据表中的容改变了以后,该记录集合中的记录也会随之改变。
DATA控件还提供了用来浏览不同记录的各种跳转按钮。
将DATA控件放置在窗体中之后,我们还必须在该控件与要处理的数据库之间建立联系。
2.2.2详细介绍
1.VisualBasic6.0的语言特性
VB语言是一种以事件驱动作为运行机制的可视化的程序设计语言。
它不仅提供了常规的编程环境,还提供了一套可视化的设计工具,便于程序员进行可视化的程序设计。
它不仅具有传统程序设计语言的基本功能,而且在软件的不断升级中,功能也越来越强。
2.VisualBasic6.0的特点
与传统的程序设计语言相比,VB的主要特点介绍如下。
(1)面向对象的可视化编程
在VB应用程序开发环境下,应用了面向对象的程序设计方法;即把程序和数据封装起来视为一个对象工具,每个对象都是可是的。
程序设计员在设计是只需要根据设计界面的要求利用现有的对象工具,直接在屏幕上设计不同的对象(如:
窗口、菜单、按钮、滚动条等),并为每个对象设置属性。
(2)结构化程序设计语言
VB系统提供了丰富的数据类型、众多的内部函数、子程序、事件子程序和自定义函数,各个子程序模块之间可以彼此独立,也可以相互联系,形成了结构化程序结构,易学通用。
(3)事件驱动的编程机制
事件驱动是增强程序图形界面交互性的主要方法。
用户的每一个动作或操作行为都可以产生一个事件,每个事件都可以驱动一段程序的运行。
程序员只需编写响应用户动作的代码,各个动作之间不一定有联系。
代码短、易编写、易维护。
(4)可以对多种数据库进行访问
利用数据控件或ODBC能够访问Access、Excel、FoxPro、dBASE、Btrieve、Lotus1-2-3、Paradox等类型的数据库和电子表格。
(5)OLE和Active技术的应用
使用OLE(对象链接与嵌入技术)能够开发集声音、图像、动画、字处理、Web等对象于一体的应用程序。
Active技术可以使开发人员摆脱特定语言的束缚,方便的使用标准的Active部件,调用标准的接口,实现特定功能。
2.2.3界面介绍
1.开发环境界面介绍
在集成开发环境中可以进行程序设计、编辑、编译和调试等工作。
集成开发环境的顶部有标题栏、主菜单和工具栏。
下部有几个子窗口:
工具箱、窗体窗口、工程窗口、属性窗口及窗体布局窗口,根据需要,这些子窗口可以被关闭或打开。
具体如图2-1所示:
(1)、工具箱
(2)、控制菜单框(3)、标题栏(4)、工具栏(5)、工程管理器(6)、属性窗口(7)、窗体窗口(8)、窗体布局窗口
2.菜单栏介绍
菜单栏中含了使用VB6.0所需要的命令。
主菜单中共有13个菜单项,每个菜单项都有一个下拉菜单,内含若干个菜单命令,单击某个菜单项,即可打开该菜单,单击某个菜单中的某一条,就执行相应的命令。
具体如图2-1所示:
第3章系统设计
3.1界面设计
界面设计要求遵循简介美观、方便易用的基本原则,具体设计如下。
在VisualBasic集成开发环境中新建一个工程,将其保存到名为“工程1.vbp”的工程文件中,然后进入工程的默认窗体Form1,一步一步进行设计工作。
操作步骤如下:
将其标题属性设置为“计算器”将BorderStyle属性设为1-FixedSingle,MaxButton和MinButton属性设置为False,这样会使设计的计算器窗口大小固定,不允许用户在运行时改变。
具体界面如图3-1所示:
图3-1VB的界面设计
第二步,选择窗体或控件进行属性设置,如图为“窗体”按钮的属性设置界面,如图3-2所示:
图3-2窗体界面的属性值
第三步,显示文本框设计,具体步骤如下:
1.单击控件工具箱中的Label控件,向窗口中添加三个Label标签;
2.单击控件工具箱中的Frame控件,向窗口中添加一个Frame标签;
3.单击控件工具箱中的Text控件,向Frame中添加一个文本框Text;
4.单击控件工具箱中的Command控件,向Frame中添加26个Command;
5.单击控件工具箱中的Timer控件,向窗口中添加一个Timer控件。
这些控件的具体名称和属性值如表3-1。
表3-1控件属性表
控件
属性
作用
Label
Caption
显示名称,计算器
Caption
显示北京时间
Caption
系统时间显示方位
Frame
将所有的按钮做为一个整体
Text
显示输入数据和显示计算结果
Command1
0
单击时输入数据0
1
单击时输入数据1
2
单击时输入数据2
3
单击时输入数据3
4
单击时输入数据4
5
单击时输入数据5
6
单击时输入数据6
7
单击时输入数据7
8
单击时输入数据8
9
单击时输入数据9
·
单击时输入小数点
Command2
+
计算两个数据的和
—
计算两个数据的差
*
计算两个数据的乘积
/
计算两个数据的商
M^2
计算X的平方
M^3
计算X的立方
Sin
计算X的正弦
Cos
计算X的余弦
Tan
计算X的正切
Cot
计算X的余切
Ln
计算X的对数
Sqrt
计算X的开方
=
求的最后结果
Command3
清除
将输入的数据清除为0
Command4
关闭
关闭计算器软件
Timer
设置系统时间的同步显示
第四步计算器界面的设计,将上述控件按照图3-3所示布置到界面上,要求布置合理,界面设置美观大方,位置布置合理、方便,使使用者使用起来觉得舒服和应手。
图3-3计算器界面布置
3.2代码编写
1.通用型代码编写:
此段代码的作用主要是声明pi、布尔型变量V、变量S、X、Y。
具体代码如下:
Constpi=3.1415926'定义pi
DimvAsBoolean'是否第一次单击运算符
DimsAsInteger'存放上次按的运算符
DimXAsDouble'存放第一个操作数
DimYAsDouble'存放第二个操作数
2.Form的代码编写:
此段代码的作用主要是实现系统时间在Label3中的同步显示,具体代码如下:
PrivateSubForm_Load()
Form1.Tag="T"
Timer1.Enabled=True
Timer1.Interval=1000'设定间隔1000=1秒
'一秒显示一次当前时间
EndSub
3.Command1的代码编写:
此段代码的作用主要是实现将Command上的数字在Text中显示,具体代码如下:
PrivateSubCommand1_Click(IndexAsInteger)
IfForm1.Tag="T"Then'向显示中的数追加新数
IfIndex=10Then
Text1.Text="0."
Else
Text1.Text=Command1(Index).Caption
EndIf
Form1.Tag=""
Else
Text1.Text=Text1.Text&Command1(Index).Caption
EndIf
EndSub
4.Command3的代码编写:
此段代码主要是实现对Text中的数据清零,具体代码如下:
PrivateSubCommand3_Click(IndexAsInteger)
Text1.Text="0"
X=0
Y=0
EndSub
5.Command4的代码编写:
此段代码主要是实现将计算器程序关闭。
PrivateSubCommand4_Click(IndexAsInteger)
UnloadMe
EndSub
6.Command2的代码编写:
此段代码是这个计算器软件的主体部分,它能够实现计算器上的各类功能,并且能按照具体情况分别显示我们所想要的结果。
具体代码如下:
PrivateSubCommand2_Click(IndexAsInteger)
Form1.Tag="T"'第一次按运算符
IfvThen
X=Val(Text1.Text)'将键入的数字存入x
f=Notv
Else
Y=Val(Text1.Text)
SelectCases
Case0
Text1.Text=X+Y
Case1
Text1.Text=X-Y
Case2
Text1.Text=X*Y
Case3
IfY<>0Then
Text1.Text=X/Y
Else
MsgBox("不能以0为除数")
Text1.Text=X
v=False
EndIf
Case4
X=Val(Text1.Text)
X=X^2
Text1.Text=X
Case5
X=Val(Text1.Text)
X=X^3
Text1.Text=X
Case6
X=Val(Text1.Text)
X=Sin(X*pi/180)
Text1.Text=X
Case7
X=Val(Text1.Text)
X=Cos(X*pi/180)
Text1.Text=X
Case8
X=Val(Text1.Text)
X=Tan(X*pi/180)
Text1.Text=X
Case9
X=Val(Text1.Text)
X=Atn(X*pi/180)
Text1.Text=X
Case10
X=Val(Text1.Text)
X=Sqr(X)
Text1.Text=X
Case11
X=Val(Text1.Text)
X=Log(X)
Text1.Text=X
Case12
Y=0
v=False
EndSelect
X=Val(Text1.Text)
EndIf
s=Index
EndSub
7.Timer的代码编写:
此段程序主要是实现将系统时间显示在Label3中。
具体代码如下:
PrivateSubTimer1_Timer()
Label3.Enabled=True
Label3.Caption=Format(Time,"tttttAM/PM")
EndSub
3.3代码编写中用到的函数
计算器软件中用到的函数如表3-2所示:
表3-2编程中所用的函数
函数名称
函数作用
正弦函数Sin
求的输入数据的正弦值
余弦函数Cos
求的输入数据的余弦值
正切函数Tan
求的输入数据的正切值
余切函数Cot
求的输入数据的余切值
对数函数Ln
求的输入数据的对数值
开方函数Sqrt
求的输入数据的开方值
系统时间函数Time
输出系统的当前时间值
第4章结论(设计心得)
经过一段时间的设计和编写,计算器软件基本设计完毕。
本软件能够实现计算器的很多功能,譬如:
加法、减法、乘法、除法、乘方、立方、正弦、余弦、正切、余切、开平方等。
而且该计算器的界面上还有一个与系统时间同步的时钟。
该计算器界面简单美观,操作简单方便,类似于我们平时使用的计算器。
但是由于课程设计的时间较短,所以该计算器还有许多不尽如人意的地方,比如不能实现反正弦、反余弦、反正切、反余切、求阶乘,不能实现进制间的转换运算,没有考虑连算时的优先级和计算中有括号等的输入。
这些功能还都有待进一步改善。
参考文献:
[1]刘瑞新,汪远征.VisualBasic程序设计教程.机械工业出版社,2008
[2]郭志青,高旺.VisualBasic课程设计.中国电力出版社,2005
[3]王栋.VisualBasic课程设计.清华大学出版社,2004
[4]李子川.VisualBasic程序设计.浙江大学出版社,2003
[5]王宇熙,夏其表.VisualBasic程序设计实用教程.科学出版社,2006
[6]周爱武,汪海威.VisualBasic程序设计实训.清华大学出版社,2003
致谢
经过诸多的努力,实物最终做出来了,并且实现了所要求的功能。
本系统虽是一个小系统,却也运用了许多VisualBasic中涉及的知识点。
通过本次的课程设计,我对VisualBasic程序设计有了更深刻的了解,从中也学习到了很多编程时的宝贵经验。
在整个设计的过程中,我们也碰到了不少的困难,但最终都得以解决。
从挫折中我们体会到,良好的分工协作可以大大的提高工作效率;严谨的科学态度和良好的耐性是多么的重要!
本课题在选题及研究过程中得到张士晶老师的悉心指导。
在此,首先要感谢张老师,感谢她在百忙之中还抽出时间来指导我、帮助我顺利地完成课程设计。
本次课程设计,使我对VisualBasic的学习有了很大的提高,这对于我以后的工作和学习都是巨大的帮助。