java设计计算器的毕业论文

java设计计算器的毕业论文

数学计算机学院 (计算机及应用二学位) 软件工程课程设计报告

题目:基于java语言的计算器设计与实现

准考证号:

姓 名:

指导教师:

报告成绩:

日 期:20xx年12月20日

目 录

第一章:概论 ........................................................................................................ 2

1.1设计目的及思路 ...................................................................................... 2

1.2功能模块设计 .......................................................................................... 2

1.3设计步骤 .................................................................................................. 3

1.4系统功能图 .............................................................................................. 4

第二章 需求分析 .................................................................................................. 4

2.1设计要求: .............................................................................................. 4

2.2系统目标 .................................................................................................. 5

2.3主体功能 .................................................................................................. 5

2.4开发环境 .................................................................................................. 5

第三章 程序设计 .................................................................................................. 7

3.1课程设计目的 .......................................................................................... 7

3.2计算机面板设计 ...................................................................................... 7

3.3.程序设计的基本思路 ........................................................................... 8

第四章 功能的实现 .............................................................................................. 9

4.1界面功能 .................................................................................................. 9

4.2运行调试及讨论分析 ............................................................................ 10

第五章 总结 ........................................................................................................ 16

5.1主要困难问题 ........................................................................................ 16

5.2主要收获 ................................................................................................ 17

参考书籍 .............................................................................................................. 18

第 1 页

第一章:概论

1.1设计目的及思路

(1)复习巩固java语言的基础知识,进一步加深对java语言的理解和掌控。通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。利用Java Applet图形界面首先开始设计一个计算器的界面,定义计算器所需要的按钮并赋给其按钮名称,使得使用计算器时简单明了,清晰可见,操作轻松

(2)课程设计为大家提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机结合起来,锻炼我们的分析解决实际问题的能力。提高我们适应实际,实践编程的能力。给各个按钮进行算法,利用鼠标点击事件,当鼠标点击某个按钮时就开始执行那个按钮所定义的算法,生成数据并显示

(3)培养我们在项目开发中创新意识及能力,通过亲身实践,利用所学编写简单的面向对象程序,提高对面向对象及JAVA语言的理解。

除数字的输入为直接进行输入外,其他运算例如+、-、*、/、开平方等算法要求计算时通过内部较为复杂的运算将结果显示在显示屏上。

至于其中的进制转换功能的实现则是直接调用Java中进制转换的函数,

给各个按钮进行算法,利用鼠标点击事件,当鼠标点击某个按钮时就开始执行那个按钮所定义的算法,生成数据并显示。

1.2功能模块设计

以下为标准计算器的基本功能:

(1)加法

两个数据进行加操作,可以为小数。

(2)减法

两个数据进行减操作,可以为负数相减。

(3)乘法

两个数相乘操作。

(4)除法

第 2 页

两个数相除操作。

(5)开平方

对任意一个数进行开方运算,可以是小数。

(6)求余

对任意一个数进行求余运算。

(7)倒数

正弦、余弦、正切和余切的运算。

(8)转换

将十进制数转换为二进制以及将二进制转换为十进制。

1.3设计步骤

(1)课程设计任务及要求。

(2)需求分析。

(3)设计思路--工作原理、功能规划。

(4)详细设计---数据分析、算法思路、类设计、功能实现(含程序流程图、主要代码及注释)、界面等。

(4)运行调试与分析讨论---给出运行屏幕截图,分析运行结果,有何改进想法等。

(5)设计体会与小结---设计遇到的问题及解决办法,通过设计学到了哪些新知识,巩固了哪些知识,有哪些提高。

(6)参考文献(必须按标准格式列出,可参考教材后面的参考文献格式)

(7) 报告按规定排版打印,要求装订平整。

(8) 课设报告的装订顺序如下:封面------目录----正文---附录(代码)

第 3 页

1.4系统功能图

第二章 需求分析

2.1设计要求:

由于现代用户更倾向于由鼠标方便操作的图形用户界面,所以我们采用GUI 来实现计算器,并采用Swing组件,AWT事件处理等实现具体功能。

需求分析:在我们日常生活中,计算开支、收入时,大额数字或是多倍小数的计算都需要计算器的帮助,而在学习一些科目时,也常常要处理数字。虽然现在的计算器价格比较低廉,但是功能过于简单的不能满足个人需求,功能多的价格较贵,不仅操作不便,很多功能也根本用不到。所以我们想用自己所学设计开发一个属于自己的简单计算器来完成日常学习生活的需求

java设计计算器的毕业论文

第 4 页

2.2系统目标

一个简单的计算器程序。用户可以利用鼠标点击数值或操作符按键完成计算的输入,计算的结果将被显示在窗口上部的文本框中。

2.3主体功能

(1)使用图形用户界面:一个文本框;0-9数字按钮;加、减、乘、除运算符;“等于”符号;复位按钮。

(2)完成整数、实数的四则运算(加、减、乘、除)

(3)通过按钮点击实现数据的复位(清零);

(4)正弦余弦的计算

2.4开发环境

本次设计使用的软件是eclipse SDK。

eclipse SDK 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。

Eclipse最初是由IBM公司开发的替代商业软件Visual Age for Java的下一代IDE开发环境,20xx年11月贡献给开源社区,现在它由非营利软件供应商联盟Eclipse基金会(Eclipse Foundation)管理。 20xx年,Eclipse 3.0选择OSGi服务平台规范为运行时架构。 20xx年6月,稳定版3.3发布。20xx年6月发布代号为Ganymede的3.4版。20xx年7月发布代号为GALILEO的3.5版。

Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用来Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C++和Python的开发工具。Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。许多软件开发商以Eclipse为框架开发自己的IDE。

Eclipse 最初由OTI和IBM两家公司的IDE产品开发组创建,起始

第 5 页

于19xx年4月。IBM提供了最初的Eclipse代码基础,包括Platform、JDT 和PDE。目前由IBM牵头,围绕着Eclipse项目已经发展成为了一个庞大的Eclipse联盟,有150多家软件公司参与到Eclipse项目中,其中包括Borland、Rational Software、Red Hat及Sybase等。Eclipse是一个开发源码项目,它其实是 Visual Age for Java的替代品,其界面跟先前的Visual Age for Java差不多,但由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。近期还有包括Oracle在内的许多大公司也纷纷加入了该项目,并宣称Eclipse将来能成为可进行任何语言开发的IDE集大成者,使用者只需下载各种语言的插件即可。

虽然大多数用户很乐于将 Eclipse 当作 Java IDE 来使用,但 Eclipse 的目标不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。

基于 Eclipse 的应用程序的突出例子是 IBM 的 WebSphere Studio Workbench,它构成了 IBM Java 开发工具系列的基础。例如,WebSphere Studio Application Developer 添加了对 JSP、servlet、EJB、XML、Web 服务和数据库访问的支持。

Eclipse的主要组成:

Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成——Eclipse Platform、JDT、CDT和PDE.JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,Eclipse Platform则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。Eclipse Platform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。

第 6 页

Eclipse SDK(软件开发者包)是Eclipse Platform、JDT和PDE所生产的组件合并,它们可以一次下载。这些部分在一起提供了一个具有丰富特性的开发环境,允许开发者有效地建造可以无缝集成到Eclipse Platform中的工具。Eclipse SDK由Eclipse项目生产的工具和来自其它开放源代码的第三方软件组合而成。Eclipse项目生产的软件以 CPL发布,第三方组件有各自自身的许可协议。

第三章 程序设计

3.1课程设计目的

(1)复习巩固java语言的基础知识,进一步加深对java语言的理解和掌控

(2)课程设计为大家提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机结合起来,锻炼我们的分析解决实际问题的能力。提高我们适应实际,实践编程的能力。

(3)培养我们在项目开发中创新意识及能力,通过亲身实践,利用所学编写简单的面向对象程序,提高对面向对象及JAVA语言的理解。

3.2计算机面板设计

首先,设计对输入数字的进行转换,不进行转换操作则默认为十进制,然后进行符号转换操作以及正弦函数等,接着可以进行加减乘除等运算,添加“退格”、“C”按钮进行退格和清空操作,清空操作显示“0” ,最后在帮助中显示开发人信息。

计算器面板设计

第 7 页

3.3.程序设计的基本思路

计算结果显示区设计

private JTextField displayField 保存+,-,*,/,=命令

private String lastCommand 保存计算结果

private double result 判断是否为数字的开始 private boolean start

设置布局、为按钮注册事件监听器 public Calculator() 调用成员方法添加菜单 this.addmyMenu()

java设计计算器的毕业论文

第 8 页

按钮的单击事件处理方法

public void actionPerformed(ActionEvent e)

退格键的实现方法

if(input.equals("C"))

if(str.length()>0)

displayField.setText(str.substring(0,str.length()-1)); //

清零键的实现方法

input.equals("CE")

displayField.setText("0");

start=true; {

第四章 功能的实现

4.1界面功能

功能及界面设计:

功能1:按下数字键在液晶平上会显示数字,这时计算器最基本的功能。

功能2:输入数字后,点击进制转换,可转换成二、八进制;按“exp”“log”键,则进行e次幂运算和自然对数运算;按“tan”“cos”“sin”则进行三角函数运算。

功能3:按“+”“-”“*”“/”分别进行四则运算

功能4:在任何时候按下“+/-”键,计算器文本框上的数字置反号。 功能5:第一次按下“运算”键,再按下数字键,将重新输入第二个数字。再次按下“运算”键,将算出前两个数字运算的结果,然后按下数字,将又重新输入新的数字。

功能6:按下“C”键向前退格,按下“CE”键,数据被全部清除 功能7:按下“帮助”键查看制作人信息

功能8:按下“选项”键,点“退出”键退出

第 9 页

4.2运行调试及讨论分析

(1)刚开始界面

java设计计算器的毕业论文

(2)启动计算器:按键"选项",也可以退出界面。

java设计计算器的毕业论文

第 10 页

(3)进制转换:二进制与八进制之间的相互转换

java设计计算器的毕业论文

(4)帮助:用法sqrt和exp是先输运算符再输数字

java设计计算器的毕业论文

(5)7的开方运算:先按sqrt再按7,然后按“=”号。

第 11 页

(6)e的3平方的运算:先按exp再按3,最后按“=”

java设计计算器的毕业论文

(7)两数相乘45*73=3285.0

第 12 页

java设计计算器的毕业论文

(8)退格键

java设计计算器的毕业论文

第 13 页

java设计计算器的毕业论文

(9)正负号按钮实现

java设计计算器的毕业论文

(10)正弦的运算:45度的正弦值

第 14 页

java设计计算器的毕业论文

还可实现加法,减法,除法,余弦、正切、余切和对数等功能。

将代码写好之后检查代码的正确性,检查代码无误后将代码进行调试和运行将会出现一个JavaApplet计算器界面。在调试过程中可能会出现有界面但是不能运行小程序,那是因为没有初始化小程序,那时我们应该在主函数中将小程序进行初始化,这样小程序才能运行!

在调试和运行完全正确后,我们就可以按照自己的医院将小程序进行简单测试,例如输入一些简单数据分别运行各个按钮结果正确后可以初步确定程序师正确的。有时候我们还要输入不同范围的值进行测试,可能会发现更多的错误,因为有时候我们定义数据的范围可能会过小或输入数据会越界,到时我们就可以改正以适应更多更大的运算。

有时候我们会不自觉的选择一种最优函数方法尽量将自己的代码简单规范而又不缺少题目所要求的功能,那就要求我们翻阅很多参考书和查阅很多资料。其实javaApplet图形界面的布局也是我们要讨论的范围,如何使得界面更加美观是我们要探讨的!

有时候我们可能会到书上或网上找到一些满足我们要求的程序代码,在此我们应该取其优秀的简单易理解代码作为我们设计程序的代码,作为初学者参考和借用部分外部程序是不可避免,但是我认为前提我们应该看懂那些程序代码,要知其所以然,那样才达到我们学程序的目的,但不主张完全照搬,否则就会没意义了!

第 15 页

java设计计算器的毕业论文

第五章 总结

5.1主要困难问题

5.1.1设计难点1:布局

计算器的界面虽然是按照系统中的计算器为模型的,但是由于按钮太多,使得计算器的布局就相对的难一点了。

5.1.2设计难点2:代码

代码的运用是计算器设计成功的关键所在,每一个按钮上的代码都不一样,不一样的按钮实现的功能也不一样,尤其是小数点和等号的代码,因为这两个按钮关系着整个计算器的运算,计算器能否设计成功就在这两个按钮上了。而这两个按钮代码的编写既是重点也是难点,稍稍有一点的错误就有能够运算出正确结果。

在编写java计算器时有异常出现。异常是这次设计中的重点也是一个难点。

任何计算机语言的程序都难免有漏洞,捕获错误最理想的是在编译期间,最好在试图运行程序以前。Java支持的异常处理功能比其他语言提供的更灵活。当java程序执行中发生错误时,错误事件对象可能导致的程序运行错误称为异常,异常会输出错误消息,使其知道该如何正确地处理遇到的问题。

当java运行系统在得到一个异常对象时,它将会寻找处理这一异常的代码,找到能够处理这种类型异常的方法后,运行时系统把当前异常对象交给这个方法进行处理,这一过程称为捕获(catch)异常。如果java运行时系统找不到可以捕获异常的方法,则运行时系统将会终止,相应的java程序也将退出。这次在java记事本程序用到的就是try,catch来捕获的异常。

5.1.3设计难点3:运行结果

运行结果也是难点之一,你的代码编写再正确运行不出结果也是徒劳的,所以代码正确了那也不算是全正确,只有代码和运行结果全都正确那才是真起码的正确呢。

第 16 页

5.2主要收获

这次的程序设计,从一个简单的计算器就可以看出JAVA的程序设计不是那么简单,仅仅是一个小小的计算器,就已经有很多需要注意的问题,一不小心就会出错,还会有很多地方没怎么明白,而计算器的设计是最简单的几个设计其中之一,可见,平时的知识积累是很重要的。没有知识的积累,再简单的东西也不可能设计出来。课程设计还让我们练习了动手能力,使我们平时学习的知识得以在实际中应用,不会学死书,活学活用,很大程度上提高了我们的能力,对以后的学习、工作、生活也会有一定的帮助。通过此次的程序设计,让我了解了JAVA的更多知识,使平时的知识可以运用,更好的理解了JAVA这门课程。

JAVA是一门优秀的编程语言,具有面向对象、与平台无关,安全、稳定和多线程等特点,是目前软件设计中极为健壮的语言。通过此次的课程设计实践,我们不但进一步理解掌握了课上老师教授的知识,而且通过查找资料学会了课上没有的东西,进一步理解了面向对象的含义,发现了很多它比面向过程突出的地方,第一次接触了图形界面,初步了解了GUI方面的知识。在实践中我们遇到了很多问题,但我们都努力克服了。在完成课题的过程中也不断充实了自己,学习到了很多以前没有学习到的知识,收获很大。最大的收获是在弯完成过程中培养的解决问题的能力,在做项目时必然会遇到困难,会有不会的东西,重要的不是现在会不会,而是遇到问题知道如何找到解决的途径。还使我对所学知识能够融会贯通,又不断丰富了新知识。Java计算器设计使得我们对所学的专业课有了更为深刻的认识,使得知识得到了巩固和提高。

5.3 本章总结

通过此次课程设计,将我本学期所学的JAVA知识得到巩固和应用,在设计的过程中我遇到了很到问题,不过在老师和同学们的帮助和自己的思考下还是很好的完成了。这此课程设计还让我懂得了写程序不能闭门造车,要努力拓宽知识面,开阔视野,拓展思维。它还让我学会了在网上查阅那些无限的资料。我深刻地体会到自己所学知识得浅薄,当课程结束以后感觉自己已经掌握了Java的真谛,但是在课程设计中我才发现自己仅仅握了一点皮毛而已,存在的一些问题全暴露出来了。

获得了知识当然是最重要的,另外,通过这次学习,我还结识了很多来自不同学院的朋友,课下与他们沟通、交流、切磋经验,了解更广泛的专业知识与各学院之间的文化以及介绍不同学科之间的差别、共性。在交流中,我们青年人的人生观及理想抱负都洋溢在青春魅力的脸上,对未来充满了信心与渴望。

第 17 页

这次计算器的设计与程序的实现,让我收到很大的启发。也遇到了很多的困难,但是更加得到了同学们的帮助,让我很好的完成了设计与实现。也是我认识到自己编写程序的缺点,特别是在监听器的实现上,总不能顺利的编写,经过了很多很多的调试,看来实践出真理啊。这让我明白了要多加练习,也坚定了要上下而求索的决心。

参考书籍

[1]张海藩.软件工程导论[M].第四版.北京:清华大学出版社,2003. 23-25

[2]王少锋.面向对象技术UML教程[M].北京:清华大学出版社,2004. 18-20

[1]耿祥义,张跃平.Java2实用教程(第三版)[M].北京:清华大学出版社,2006

[2]耿祥义.Java课程设计(第三版)[M].北京:清华大学出版社,2004

[3]张跃平.Java2实用教程实验指导与习题解答(第三版)[M].北京:清华大学出版社,2004

程序源代码:

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class Calculator extends Frame implements ActionListener, WindowListener

{

private Container container; private GridBagLayout layout; private GridBagConstraints constraints; private JTextField displayField; //计算结果显示区 private String lastCommand; //保存+,-,*,/,=命令0 private double result; //保存计算结果

第 18 页

private boolean start; //判断是否为数字的开始 private JMenuBar menubar; private JMenuItem m_exit,m2_ejz,m2_bjz; private Dialog dialog;

private Label label_dialog;

private JButton

button_sqrt,button_plusminus,button_CE,button_cancel,button_1,button_2,

button_3,button_4,button_5,button_6,button_7,button_8,button_9,button_0, button_plus,button_minus,button_multiply,button_divide,button_point, button_equal,button_log,button_tan,button_cos,button_sin,button_exp;

JPanel panel0=new JPanel();

panel0.setLayout(new GridLayout(1,4,4,4)); start=true; result=0; lastCommand = "="; public Calculator() //构造方法设置布局、为按钮注册事件监听器 { super("Calculator"); this.setLocation(240,200); this.setSize(350,300); this.setResizable(true); this.setLayout(new GridLayout(7,1)); this.addmyMenu(); //调用成员方法添加菜单 displayField=new JTextField(30); this.add(displayField); displayField.setEditable(true);

第 19 页

JPanel panel1=new JPanel(); panel1.setLayout(new GridLayout(1,5,4,4)); this.add(panel1);

button_sqrt=new JButton("sqrt");

JPanel panel3=new JPanel();

JPanel panel4=new JPanel();

panel4.setLayout(new GridLayout(1,5,4,4)); this.add(panel4);

第 20 页 button_plusminus=new JButton("+/-"); button_exp=new JButton("exp"); button_CE=new JButton("退格"); button_cancel=new JButton("C"); JPanel panel2=new JPanel(); panel2.setLayout(new GridLayout(1,5,4,4)); this.add(panel2); button_7=new JButton("7"); button_8=new JButton("8"); button_9=new JButton("9"); button_log=new JButton("log"); button_divide=new JButton("/"); panel3.setLayout(new GridLayout(1,5,4,4)); this.add(panel3); button_4=new JButton("4"); button_5=new JButton("5"); button_6=new JButton("6"); button_tan=new JButton("tan"); button_multiply=new JButton("*");

button_1=new JButton("1"); button_2=new JButton("2"); button_3=new JButton("3"); button_cos=new JButton("cos"); button_minus=new JButton("-");

JPanel panel5=new JPanel();

panel1.add(button_sqrt); panel1.add(button_plusminus); panel1.add(button_exp); panel1.add(button_CE); panel1.add(button_cancel); panel5.setLayout(new GridLayout(1,5,4,4)); this.add(panel5); button_0=new JButton("0"); button_point=new JButton("."); button_equal=new JButton("="); button_sin=new JButton("sin"); button_plus=new JButton("+"); panel2.add(button_7);

panel2.add(button_8); panel2.add(button_9); panel2.add(button_log); panel2.add(button_divide);

panel3.add(button_4); panel3.add(button_5); panel3.add(button_6); panel3.add(button_tan); panel3.add(button_multiply); panel4.add(button_1);

第 21 页

panel4.add(button_2);

panel4.add(button_3);

panel4.add(button_cos); panel4.add(button_minus); panel5.add(button_0);

panel5.add(button_point); panel5.add(button_equal); panel5.add(button_sin); panel5.add(button_plus);

button_sqrt.addActionListener(this); button_plusminus.addActionListener(this); button_exp.addActionListener(this); button_CE.addActionListener(this); button_cancel.addActionListener(this); button_7.addActionListener(this); button_8.addActionListener(this); button_9.addActionListener(this); button_log.addActionListener(this); button_divide.addActionListener(this); button_4.addActionListener(this); button_5.addActionListener(this); button_6.addActionListener(this); button_tan.addActionListener(this); button_multiply.addActionListener(this); button_1.addActionListener(this); button_2.addActionListener(this); button_3.addActionListener(this); button_cos.addActionListener(this); button_minus.addActionListener(this); button_0.addActionListener(this);

第 22 页

} button_point.addActionListener(this); button_equal.addActionListener(this); button_sin.addActionListener(this); button_plus.addActionListener(this); this.addWindowListener(new WinClose()); //注册窗口监听器 this.setVisible(true); private void addmyMenu() { //菜单的添加 JMenuBar menubar=new JMenuBar(); this.add(menubar); JMenu m1=new JMenu("选项"); JMenu m2=new JMenu("进制转换"); JMenuItem m1_exit=new JMenuItem("退出"); m1_exit.addActionListener(this); JMenuItem m2_ejz=new JMenuItem("二进制"); m2_ejz.addActionListener(this); JMenuItem m2_bjz=new JMenuItem("八进制"); m2_bjz.addActionListener(this); JMenu m3 = new JMenu(" 帮助");

JMenuItem m3_Help = new JMenuItem("用法");

m3_Help.addActionListener(this);

dialog = new Dialog(this,"提示",true); //模式窗口

dialog.setSize(240,80);

label_dialog = new Label("",Label.CENTER); //标签的字符串为空,居中对齐

dialog.add(label_dialog);

dialog.addWindowListener(this); //为对话框注册窗口事件监

第 23 页

听器

if(e.getSource().equals(button_1)||e.getSource().equals(button_2)|| { public void actionPerformed(ActionEvent e) //按钮的单击事件处理方 m1.add(m1_exit); menubar.add(m1); m2.add(m2_ejz); m2.add(m2_bjz); menubar.add(m2); m3.add(m3_Help); menubar.add(m3); } e.getSource().equals(button_3)||e.getSource().equals(button_4)|| e.getSource().equals(button_5)|| e.getSource().equals(button_6)|| e.getSource().equals(button_7)|| e.getSource().equals(button_8)|| e.getSource().equals(button_9) ||e.getSource().equals(button_0)||

e.getSource().equals(button_point)||e.getSource().equals(button_plusminus)||

e.getSource().equals(button_cancel)||e.getSource().equals(button_CE)) { //非运算符的处理方法

String input=e.getActionCommand(); if (start) { displayField.setText(""); start=false; if(input.equals("+/-")) displayField.setText(displayField.getText()+"-");

第 24 页

} if(!input.equals("+/-")) { String str=displayField.getText(); if(input.equals("退格")) //退格键的实现方法 { if(str.length()>0) displayField.setText(str.substring(0,str.length()-1)); } else if (e.getActionCommand()=="二进制") //二进制的转换 { } int n=Integer.parseInt(displayField.getText()); displayField.setText(Integer.toBinaryString(n)); } } else if(input.equals("C")) //清零键的实现方法 { displayField.setText("0"); start=true; } else displayField.setText(displayField.getText()+input);

else if (e.getActionCommand()=="八进制") //八进制的转换

{ } else if (e.getActionCommand()=="退出") //选项中退出的处理方法 {

第 25 页 int n=Integer.parseInt(displayField.getText()); displayField.setText(Integer.toOctalString(n));

} System.exit(0); else if (e.getActionCommand()=="用法") //按下'帮助'菜单栏中用法的处理方法

{ label_dialog.setText("sqrt,exp等键是先输运算符再输数字\n"); dialog.setLocation(400,250);

dialog.setVisible(true);

} public void calculate(double x) //各运算符的具体运算方法 } else //各运算符的识别 { } String command=e.getActionCommand(); if(start) { } else { } calculate(Double.parseDouble(displayField.getText())); lastCommand=command; start=true; lastCommand=command; {

double d=0; if (lastCommand.equals("+")) result+= x; else if (lastCommand.equals("-"))

第 26 页

result-=x; else if (lastCommand.equals("*")) result*=x; else if (lastCommand.equals("/")) result/=x; else if (lastCommand.equals("=")) result=x;

else if (lastCommand.equals("sqrt"))

{ } else if (lastCommand.equals("exp")) { } else if (lastCommand.equals("log")) { } else if (lastCommand.equals("tan")) { } else if (lastCommand.equals("cos")) { d=Math.cos(x); result=d;

第 27 页 d=Math.sqrt(x); result=d; d=Math.exp(x); result=d; d=Math.log(x); result=d; d=Math.tan(x); result=d;

} else if (lastCommand.equals("sin")) { } displayField.setText(""+ result); d=Math.sin(x); result=d;

}

public void windowClosing(WindowEvent e)

{

if(e.getSource()==dialog)

dialog.setVisible(false); //隐藏对话框 else

System.exit(0);

}

public void windowOpened(WindowEvent e) { } public void windowActivated(WindowEvent e) { } public void windowDeactivated(WindowEvent e) { } public void windowClosed(WindowEvent e) { } public void windowIconified(WindowEvent e) { } public void windowDeiconified(WindowEvent e) { }

}

class WinClose implements WindowListener

第 28 页 public static void main(String args[]) { } Calculator calculator=new Calculator();

{

public void windowClosing(WindowEvent e) //单击窗口关闭按钮时触发并执行实现窗口监听器接口中的方法

}

{ } public void windowOpened(WindowEvent e){} public void windowActivated(WindowEvent e){} public void windowDeactivated(WindowEvent e){} public void windowClosed(WindowEvent e){} public void windowIconified(WindowEvent e){} public void windowDeiconified(WindowEvent e){} System.exit(0); //结束程序运行

第 29 页

相关推荐