《Java计算器实验设计报告》项目一第七组Word格式.docx
《《Java计算器实验设计报告》项目一第七组Word格式.docx》由会员分享,可在线阅读,更多相关《《Java计算器实验设计报告》项目一第七组Word格式.docx(47页珍藏版)》请在冰豆网上搜索。
在该系统中不仅可以进行整数的加、减、乘、除等简单运算,也可以进行浮点数的加、减、乘、除等运算。
除此之外还可以进行三角函数、指数、对数、平方等运算。
人们应用它可以解决日常生活中的一些运算问题,比如做买卖时进行交易的过程中就可以利用该计算器进行数量、价格以及金额的统计计算。
学生也可以利用该计算器进行数学运算,解决简单的三角函数运算。
该计算器围绕Java编程语言在编程方面的具体应用,论述了使用面向对象方法,对计算器程序进行需求分析、概要设计、详细设计,最后使用Java编程实现的全过程。
在编程使用Java语言,是目前比较流行的编程语言。
在当今这个网络的时代,java语言在网络编程方面的优势使得网络编程有了更好的选择。
Java语言最大的特点是具有跨平台性,使其不受平台不同的影响,得到了广泛的应用。
1.2项目说明
Windows2000/XP系统中的“计算器”是一个方便实用的计算工具,但没有提供显示计算过程和保存过程的功能。
而我们所实现的计算器所遵循的计算规则与Windows2000、XP系统中的“计算器”相同,除了具有普通的计算功能外,还具有显示计算过程、保存计算过程之功能。
(1)单击“计算器”上的数字按钮(0,1,2,3,4,5,6,7,8,9)可以设置参与计算的运算数。
(2)单击“计算器”上的运算符按钮(+,-,*,/)可以选择运算符号。
(3)单击“计算器”上的函数按钮可以计算出相应的函数值。
(4)单击“计算器”上的“=”按钮显示计算结果。
(5)在一个文本框中显示当前的计算过程,在一个文本区中显示以往的计算过程。
(6)单击“保存”按钮可以将文本区中的全部计算过程保存到文件;
单击“复制”按钮可以将文本区中选中的文本复制到剪贴板;
单击“清除”按钮可以清除文本区中的全部内容。
1.3关键技术
在设计过程中,最重要的就是代码的套用、图形界面的设计、按钮与面板的布局、以及代码的输写。
计算器能不能做出来,做的完不完美就集中在这几个方面了。
在这次设计中,遇到的重点有以下两点:
(1)Java计算器在支行时会出现IOException异常。
处理方法是在遇到异常时用try,catch方法对异常进行捕获。
(2)java计算器中还用到了继承
继承是面向对象方法中一个十分重要的的概念,并且是提高软件开发效率的重要原因之一。
继承实际上是存在于面向对象程序中的两个类之间的一种关系。
继承的实现主要有以下几个步骤。
(1)确定父类。
根据将创建的子类需要选择一个相应的类作为继承父类。
新定义的子类可以从父类那里自动继承所有非私有的属性和方法作为自己的成员。
选择一个恰当的父类可以达到事半功倍的效果。
(2)定义子类。
Java中的继承是通过extends关键字来实现的,在定义类时使用extends关键字指明新定义类的父类,就在两个类之间建立了继承关系。
(3)实现子类的功能。
子类具体要实现的功能由类体中相应的域和方法来实现,其编写和一般的类是完全相同的。
通过继承,子类拥有父类的所有非私有成员。
使用继承具有以下的好处:
降低了代码编写中的冗余度,更好地实现了代码复用的功能,从而提高了程序编写的效率;
由于降低了代码的冗余度,使得程序在维护时就变得非常的方便。
2总体设计
在设计计算器时,可以编写17个java源文件:
CalculatorWindow.java,NumberButton.java,Operation.java,HandleDigit.java,HandleOperation.java,HandleDot.java,HandlePositiveOrNegative.java,HandleEquality.java,HandleSin.java,HandleBack.java和HandleClear.java等。
计算器除了上述17个java源文件所给出的类外,还需要Java系统提供的一些重要的类,如JButton,JTextField,JTextArea,LinkedList等。
计算器所用到的一些重要的类以及之间的组合关系如图2.1所示。
图2.1类之间的组合关系
2.1(Win.java)CalculatorWindow.java(主类)
Win类负责创建计算器的主窗口,该类含有main方法,计算器从该类开始执行。
Win类有20种类型的对象:
JButton,JTextField,JTextArea,LinkedList<
String>
CalculatorWindow.java,NumberButton.java,Operation.java,HandleDigit.java,HandleOperation.java,HandleDot.java,HandlePositiveOrNegative.java,HandleEquality.java,HandleSin.java,HandleBack.java和HandleClear.java等对象。
Win类创建的窗口以及其中的主要成员如图2.2所示。
图2.2Win窗口及主要成员
2.2功能类
*<
代码见附录>
1)NumberButton类
该类创建的对象是主类CalculatorWindow窗口中的一个“数字”按钮。
NumberButton类有一个int类型的成员number,标明所创建的按钮所含有的数字。
该类所创建的10个按钮被添加到CalculatorWindow窗口中。
2)OperationButton类
该类创建的对象是主类CalculatorWindow窗口中的一个“运算符”按钮。
OperationButton类有一个String类的成员operateSign,用于标明所创建的按钮所含有的运算符号。
该类所创建的4个按钮被添加到CalculatorWindow窗口中。
3)HandleDigit类
该类创建的对象负责处理ActionEvent事件。
当用户单击“数字”按钮时,该类所创建的对象负责处理和数字有关的计算过程。
4)HandleOperation类
当用户单击“运算符”按钮时,该类所创建的对象负责处理和运算符有关的计算过程。
5)HandleDot类
当用户单击“.”按钮时,该类所创建的对象负责处理小数点。
6)HandlePOrN类
当用户单击“+/-”按钮时,该类所创建的对象负责处理数字的正负转换。
7)HandleEquality类
当用户单击“=”按钮时,该类所创建的对象计算有关数据。
8)HandleSin类
当用户单击Sin按钮时,该类所创建的对象负责计算正弦三角函数的值。
9)HandleCos类
当用户单击Cos按钮时,该类所创建的对象负责计算余弦三角函数的值。
10)HandleTan类
当用户单击Tan按钮时,该类所创建的对象负责计算正切三角函数的值。
11)HandleLog类
当用户单击Log按钮时,该类所创建的对象负责计算对数的值。
12)HandleSqrt类
当用户单击Sqrt按钮时,该类所创建的对象负责计算开方的值。
13)HandleBack类
当用户单击“退格”按钮时,该类所创建的对象负责进行退格操作。
14)HandleClear类
当用户成功单击C按钮时,该类所创建的对象负责清除有关的计算结果。
3详细设计与实现
3.1设计使用软件介绍
本次设计使用的软件是Myeclipse8.0。
Eclipse最初是由IBM公司开发的替代商业软件VisualAgeforJava的下一代IDE开发环境,2001年11月贡献给开源社区,现在它由非营利软件供应商联盟Eclipse基金会(EclipseFoundation)管理。
2003年,Eclipse3.0选择OSGi服务平台规范为运行时架构。
2007年6月,稳定版3.3发布。
2008年6月发布代号为Ganymede的3.4版。
2009年7月发布代号为GALILEO的3.5版。
Eclipse是著名的跨平台的自由集成开发环境(IDE)。
最初主要用来Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C++和Python的开发工具。
Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。
许多软件开发商以Eclipse为框架开发自己的IDE。
Eclipse最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。
IBM提供了最初的Eclipse代码基础,包括Platform、JDT和PDE。
目前由IBM牵头,围绕着Eclipse项目已经发展成为了一个庞大的Eclipse联盟,有150多家软件公司参与到Eclipse项目中,其中包括Borland、RationalSoftware、RedHat及Sybase等。
Eclipse是一个开发源码项目,它其实是VisualAgeforJava的替代品,其界面跟先前的VisualAgeforJava差不多,但由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。
近期还有包括Oracle在内的许多大公司也纷纷加入了该项目,并宣称Eclipse将来能成为可进行任何语言开发的IDE集大成者,使用者只需下载各种语言的插件即可。
虽然大多数用户很乐于将Eclipse当作JavaIDE来使用,但Eclipse的目标不仅限于此。
Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。
由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。
基于Eclipse的应用程序的突出例子是IBM的WebSphereStudioWorkbench,它构成了IBMJava开发工具系列的基础。
例如,WebSphereStudioApplicationDeveloper添加了对JSP、servlet、EJB、XML、Web服务和数据库访问的支持。
Eclipse的主要组成:
Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。
它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成——EclipsePlatform、JDT、CDT和PDE.JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,EclipsePlatform则是一个开放的可扩展IDE,提供了一个通用的开发平台。
它提供建造块和构造并运行集成软件开发工具的基础。
EclipsePlatform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。
EclipseSDK(软件开发者包)是EclipsePlatform、JDT和PDE所生产的组件合并,它们可以一次下载。
这些部分在一起提供了一个具有丰富特性的开发环境,允许开发者有效地建造可以无缝集成到EclipsePlatform中的工具。
EclipseSDK由Eclipse项目生产的工具和来自其它开放源代码的第三方软件组合而成。
Eclipse项目生产的软件以CPL发布,第三方组件有各自自身的许可协议。
3.2设计效果图
Win创建的窗口如图3.1所示
图3.1系统主界面效果图
3.3UML图
Win类是javax.swing包中JFrame的一个子类,并实现了ActionListener接口。
表明该类的主要成员变量方法的UML图如图3.2所示。
图3.2Win类的UML图
以下是UML途中有关数据和方法的详细说明。
1)成员变量
●numberButton是NumberButton型数组,每个单元是一个NumberButton类创建的“数字按钮”对象,该数组的长度为10.numberButton数组中的“数字按钮”含有的数字依次为0,1,2,3,4,5,6,7,8,9.每个“数字按钮”都注册有ActionEvent事件监控器。
●operationButton是OperationButton型数组,每个单元是一个OperationButton类创建的运算符按钮对象,该数组的长度为4.operationButton数组中的运算符按钮中含有字符串为“+”,“-”,“*”,“/”,“Sqrt”,“sin”,“cos”,“tan”,“log”。
每个运算符按钮都注册有ActionEvent事件监控器。
●小数点操作,正负号操作,退格操作,等号操作,清零操作,sin,cos,tan,log,sqrt,savaButton,copyButton和clearButton等是Jbutton创建的按钮对象,其上的名字依次为:
“.”,“+/-”,“退格”,“=”,“C”,“sin”,“cos”,“tan”,“log”,“sqrt”,“保存”,“复制”和“清除”。
这些按钮都注册了ActionEvent事件监控器。
●resultShow,showComputerProcess是javax.swing包中JTextField创建的文本框,分别用来显示当前的计算结果和计算过程。
其中resultShow的文本对齐方式是“右对齐”,showComputerProcess的文本对齐方式是“居中对齐”。
●savaComputerProcess是javax.swing包中JTextArea创建的文本区,用来显示以往的计算结果和计算过程。
●list是java.util包中Linkedlist<
string>
创建的链表对象,盖帘表中的节点依次用来存放第一个运算数,运算符号和第二个运算数的字符串表示。
●handleDigit是HandleDigit类创建的对象,该对象是数字按钮的监视器,当用户单击数字按钮时,handleDigit对象将调用HandleDigit类实现的ActionListener接口中actionPerformed(ActionEvent)方法。
●handleOperation是HandleOperationt类创建的对象,该对象是数字按钮的监视器,当用户单击数字按钮时,handleOperationt对象将调用HandleOperationt类实现的ActionListener接口中actionPerformed(ActionEvent)方法。
●handleBack是HandleBack类创建的对象,该对象是“退格”按钮的监视器,当用户单击“退格”按钮时,handleBack对象将调用HandleBack类实现的ActionListener接口中actionPerformed(ActionEvent)方法。
●handleClear是HandleClear类创建的对象,该对象是“清除”按钮的监视器,当用户单击“清除”按钮时,handleClear对象将调用HandleClear类实现的ActionListener接口中actionPerformed(ActionEvent)方法。
●handleEquality是HandleEquality类创建的对象,该对象是“等号”按钮的监视器,当用户单击“等号”按钮时,handleEquality对象将调用HandleEquality类实现的ActionListener接口中actionPerformed(ActionEvent)方法。
●handleDot是HandleDot类创建的对象,该对象是“小数点”按钮的监视器,当用户单击“小数点”按钮时,handleDot对象将调用HandleDot类实现的ActionListener接口中actionPerformed(ActionEvent)方法。
●handlePOrN是HandlePOrN类创建的对象,该对象是“正负”按钮的监视器,当用户单击“正负”按钮时,handlePOrN对象将调用HandlePOrN类实现的ActionListener接口中actionPerformed(ActionEvent)方法。
●handleSin是HandleSin类创建的对象,该对象是“sin”按钮的监视器,当用户单击数字按钮时,handleSin对象将调用HandleSin类实现的ActionListener接口中actionPerformed(ActionEvent)方法。
●handleCos是HandleCos类创建的对象,该对象是“Cos”按钮的监视器,当用户单击数字按钮时,handleCos对象将调用HandleCos类实现的ActionListener接口中actionPerformed(ActionEvent)方法。
●handleTan是HandleSin类创建的对象,该对象是“Tan”按钮的监视器,当用户单击数字按钮时,handleTan对象将调用HandleTan类实现的ActionListener接口中方法。
●handleLog是HandleSin类创建的对象,该对象是“Log”按钮的监视器,当用户单击数字按钮时,handleLog对象将调用HandleLog类实现的ActionListener接口中actionPerformed(ActionEvent)方法。
2)方法
●Win创建的窗口是saveButton,copyButton和clearButton三个按钮的ActionEvent事件监控器,当用户单击这些按钮时,窗口将执行actionPerformed(ActionEvent)方法进行相应的操作。
如果用户单击“savaButton”按钮,actionPerformed(ActionEvent)方法所执行的操作是弹出保存文件的对话框,将savaComputerProcess文本区显示的以往计算过程保存到文件;
如果用户单击按钮,actionPerformed(ActionEvent)所执行的的操作是将copyComputerProcess文本区中选中的文本复制到剪切板;
如果用户单击clearButton按钮,actionPerformed(ActionEvent)方法所执行的操作是清除savaComputerProcess文本区中的全部文本。
●Win()是构造方法,负责完成窗口的初始化。
●main(String)方法是计算其程序运行的入口方法。
3.4程序流程图
根据系统功能的执行过程可以得到如图3.3所示的流程图:
Yes
Yes
NO
Yes
NO
加减乘sin
NO
yes
图2程序流程图
3.5代码的实现(Win.java)
见附录win.java代码
4项目使用说明
4.1代码调试
把前面17个源文件:
CalculatorWindow.java,NumberButton.java,Operation.java,HandleDigit.java,HandleOperation.java,HandleDot.java,HandlePositiveOrNegative.java,HandleEquality.java,HandleSin.java,HandleBack.java和HandleClear.java保存到同一目录中(如D:
\ch2)。
分别编译这17个Java源文件,或运行“javac*.java”命令,便已全部用的源文件,然后运行主类,即运行Win类。
4.2编译的运行
软件计算功能的演示如图4.1
图4.1软件功能的演示
软件保存功能的演示如图4.2
图4.2软件保存功能的演示
4.3软件发布
可以使用jar.exe命令制作JAR文件来发布编写的软件。
1)首先用文本编辑器,如Windows下的“记事本”,编写一个清单文件:
mymoon.mf
Manifest-Version:
1.0
Main-Class:
CalculatorWindow
Created-By:
1.2(SunMicrosystemsInc.)
将mymoon.mf保存到D:
\ch2中,即和应用程序所用的字节码文件保存在相同的目录中。
注意:
清单文件中的“Manifest-Version:
”和1.0之间,“Main-Class:
”和主类Win之间以及“Created-By:
”和1.2之间必须有且只有一个空格。
2)生成JAR文件
D:
\ch2\jarcfmWin.jarmymoon.mf*.class
其中,参数c表示要生成一个新的JAR文件,f表示要生成的JAR文件的名字,m表示清单的名字。
现在就可以将Win.jar复制到
5结论
设计,给人以创作的冲动,但也要为这次冲动承担一定的痛苦,但事后发现,这一切都是值得的,本次的JAVA课程设计让我对JAVA的理论知识又有了更深一步的了解,温故而知新,开始设计之时完全没头绪,对与理论学习不够扎实的我深感“书到用时方恨少”只好再把书上介绍的相关知识重新阅读一遍,对知识进行了全面而系统的梳理,遇到难处首先是苦思冥想寻求方法,再向同学请教,终于熟练掌握了基本理论知识,而且领悟了诸多平时学习难以理解掌握的的较难的知识,学会了如何思考的方式,找到了设计的灵感。
这次课程设计使我感到收获不小,使我对JAVA的设计过程有了更深的了解,促进了对理论知识的消化与吸收,也巩固和完善了本门课程的知识体系结构。
设计过程中遇到了不少的麻烦,在调试过程中也出现一些平时学习过