JAVA计算器课程设计_第1页
JAVA计算器课程设计_第2页
JAVA计算器课程设计_第3页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于JAVA的计算器的设计与实现学院(系):软件学院专 业:软件工程学 生:学 号:班 级:指导教师:完成日期2016 年 10 月基于 JAVA 的计算器的设计与实现摘要该文档是关于对 Java 版计算器的功能进行描述和介绍,该程序是要 个图形界面的简单 Java 计算器,具有良好的界面使用人员能快捷简单的 进行操作。即时准确的获得需要的计算结果,充分降低了数字计算的难度 和节约了时间, 对人们的生活有一定的帮助。 可以进行简单的四则运算 (加、 减、乘、除等) 。界面简单易操作 ,具体程序实现了:(1)实现简单的加、减、乘、除、运算。(2)实 现了除了加、减、乘、除按钮外其他按钮功能,如:

2、 C 表示 清零, del 表示删除。(3)实现了连续运算能力。关键词: Java 语言 四则运算 计算器目录1,绪论 错.误 ! 未定义书签。1.1java 版计算器的意义与结构 错误 ! 未定义书签。版计算器的意义 错误 ! 未定义书签。版计算器的论文结构 错误 ! 未定义书签。2,开发平台简介相关技术简介 错. 误 ! 未定义书签。2.1 开发平台简介 错. 误 ! 未定义书签。平台 错. 误 ! 未定义书签。系统 错. 误 ! 未定义书签。环 境22.2 关键技术简介 错. 误 ! 未定义书签错. 误 ! 未定义书签2.2.2 按钮的创建 错. 误 ! 未定义书签22.3 本章小结 错

3、. 误!未定义书签3,需求分析 错. 误!未定义书签3.1 可行性分析 错. 误 ! 未定义书签3.2 需求描述 错. 误!未定义书签。3.3 面向对象分析(用例图) 错. 误 ! 未定义书签。3.4 功 能 分 析33.5 本 章 小 结34,系统设计 错.误 ! 未定义书签4.1 概要设计 错. 误!未定义书签4.2 详细设计 错. 误!未定义书签5,系统实现 错. 误!未定义书签6,总结与展望 错. 误!未定义书签7,参考文献 错. 误!未定义书签8,致谢 错.误 ! 未定义书签第一章:绪论1, java 版计算器的意义与结构( 1) java 版计算器的意义所谓计算器一般指的是电子计算

4、器。计算器是日常生活中十分便携 有效的工具,能够实现加减乘除等简单的运算功能。本论文采用了 java 编程语言实现计算机的功能。该计算器大大降低了数字计算的难度并且提 高了计算准确度和精确度。使用简单,适合广大工作人员和学生使用。随着信息时代的步伐 ,越来越得多的数字需要我们去处理,然而在我 们日常生活中遇到的一些基本数字运算,以往简单的口算笔算,然而现在 不同了,人们对计算机手机的依赖越来越高,遇到计算机问题不愿意用脑 去思考,而是交由计算机或者手机来完成。为了给自己设计一个能够胜任 自己学习的工作机会的计算器,决定自己通过所学的知识来编写一个简单 的计算机。(2)论文结构本文共分为 8 章

5、,各章的主要内容介绍如下:第一章:首先介绍课题研究的意义, java 版计算器的主要意义以与 本论文的组织结构。第二章:主要介绍系统开发的平台,主要关键技术如下: Frame 创 建,按钮的创建。第三章:主要介绍本系统的可行性分析,性能分析,用户功能需求 分析,需求分析,面向对象分析,主要功能分析。 第四章:主要介绍系统设计,概念设计,包括功能模块图,详细设 计,时序图,流程图以与概述,还有逻辑设计。第五章: 主要介绍系统实现, 主要编码和实现过程。 主要功能界面,界面流程描述,核心代码。第六章:第七章:第八章:主要介绍总结与展望 主要介绍参考文献,在完成代码的过程中参考的书籍都有致谢:感谢老

6、师的指导,感谢同学的指引,感谢同学们在 学习过程中提供的素材和帮助。还有在论文以与排版的过程中提供的热心帮助。 本章小结:本章主要介绍了 java 版计算器的意义,以与本论文结构。 第二章 :开发平台简介与关键技术1,开发平台简介( 1)Java 平台Java 是一个可以在不同操作系统(例如 windows,unix 等)上运行 的编程语言, Java 平台是指运行在各终端(如 pc ,服务器,移动设备, 嵌入式设备)的系统软件。PC机上的Java程序是javaSE上幵发出来的, 服务器端的 java 程序是 javaEE 开发出来的,移动设备的 java 程序是用 JAVAME 开发出来的。

7、Java 语言在网络编程方面应用得很广泛, 作为一个新的程序设计语言, 它简单多变,面向对象,不依赖操作系统的特点,具有很好的移植性和安 全性,这些特点给网络编程带来了很多便利。 Java 的平台根据用途来区分, 可以分为三个版本。JavaSE Java Standard Edition ,这个是 Java 的标准版,主要用于 桌面级的应用和数据开发。JavaEE-Java Enterprise Edition ,这个是 Java 的企业版本,提供了 企业级开发的各种技术,主要用于企业开发,现在用的最多的也就是这个 平台。JavaME-Java Micro Edition ,这个版本烦人 ja

8、va 平台主要用于嵌入 式和移动式的开发,最常用的就是手机应用软件开发。Java 作为一门优秀的编程语言, 相对于其他类似的语言具有一定的优 越性,这是由 Java 语言的如下特点决定的。Java 语言具有简单,面向对象,分布式,安全,可移植性,多态的特 点。Java 语言是一种面向对象的语言, 通过理解一些重要的概念就能编写 出各种功能的代码。Java 语言主要集中用在类的设计和接口功能方面, 提供了继承与多态 的机制,对类中的成员变量和方法可进行覆盖和重写,实现了代码的重复 使用,使代码编写简单。Java 语言不支持指针, 所有的访问, 必须通过具体的对象变量来实现, 这样既保护了私有变量

9、,同时也避免了一些错误。Java 语言编译产生的文件是字节码文件,字节码文件和平台无关。Java 语言支持多线程技术,将多个程序任务分成几个并行的子任务。 ( 2) windows 系统1980 年,乔布斯介绍了一项新技术,用户图形界面,比尔盖茨也意识到这项技术的潜在的价值,于是带领微软开始了 Winows 工作。 1985 年 又发布了第一代窗口式多任务系统,该操作系统的推出,意味着PC 机开始进入了图形界面,大部分操作对象都用相应的图标来表示,这种操作界 面形象直观,随着不断的改进,它还增加了几个系统工具,用于自动检测 硬盘,文件系统和配置信息,可以自动修复一些一般性的系统错误。内部 还安

10、置了大量的驱动程序,基本上包括了市面上流行的各种品牌,各种型 号硬件的最新驱动程序,而且硬件检测能力也有了很大的提高。同时,还 提供了文件分配系统,可支持 2G 以上的大分区,而对硬盘,无需重新分 区和格式化,直接可以使用转换器转换。把最新的多媒体技术,网络技术 和 Internet 技术结合在了一起,使访问网络更加方便和快捷。技术是在不断进步的,操作系统也在不断更新,没有那个版本的操作 系统是永恒的主流,因此,我们在学习和使用某个操作系统的过程中把握 住它的最基本的方面,并在此基础上进行大胆的尝试和创新,从而跟上它 的发展步伐。( 3) eclipse 环境Eclipse 是一个开放源代码的

11、,基于 Java 可扩展开发平台。就其本身 而言,它只是一个框架和一组服务,用于通过插件组成构建开发环境。幸 运的是, Eclipse 附带了一个标准的插件集,包括 Java 开发工具( Java Develepment Tools,JDK ) .Eclipse 是一个开放源代码的软件项目,专注于为高度集成的工具开发 提供一个全功能的,具有商业品质的工业平台。它主要由 Eclipse 项目, Eclipse 工具项目和 Eclipse 技术项目三个项目三个项目组成, 具体包括四个部分组成Eclipse Platform则是一个幵放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运

12、行集成软件开发工具的 基础。 Eclipse Platform 允许工具建造者独立开发与其他工具无缝集成的 工具从而无需分辨一个工具功能在哪里结束,而另外一个工具功能在哪里 开始。软件开发包是 Eclipse 是 Eclipse Platform , JDT 和 PDE 所生产的组 件合并,它们可以一次下载。这些部分在一起提供了一个具有丰富特性的 开发环境, 允许开发者有效的建造可以无缝集成到 Eclipse Platform 中的 工具。Eclipse SDK由ECLIPSE项目生产的工具和来自其它幵放源代码的 第三方软件组合而成。 Eclipse 项目的生产的软件以 GPL 发布,第三方组

13、 件各自自身的许可协议。2,关键技术简介(1)JFrameJava 的 GUI 程序的基本思路是以 JFrame 为基础的,它是屏幕上 window 的对象,能够最小化和最大化,关闭。它的基本板块是 swing , swing 的三个基本构造块是标签,按钮,文本字段。并希望用户知道如何 处理它们。 JFrame 类就是解决这个问题 它是一个容器, 允许程序员把其他组件添加到它里面,把它们组织起来,并把它们呈现给用户。JFrame 实际上仅仅让程序员把组件放入其中并呈现给用户。 比起它表 面的上的简单性, 它实际上是 Swing 包中最复杂的组件。 为了最大程度地 简化组件,在独立于操作系统的

14、Swing 组件与实际运行这些组件系统之间, JFrame 起着桥梁作用。 JFrame 在操作系统中是以窗口的形式注册的, 这 样就可以得到许多的窗口特性。显示文件在窗体上的类也扩展了 JFrame ,读取文件的类也扩展了 JFrame ;(2)按钮的创建: 含义:对话框中的一种图形元素。当激活它时,能执行指定功能。用 户可以采用以下方法来激活按钮:用鼠标在其上单击,或者当按钮获得聚 焦时按下 enter 键。在 button 元素内部,您可以放置内容,比如文本或 图像。使用:创建按钮在窗体上,用来窗体跳转的连接。点击按钮来实现跳 转。关键字:setBounds 表示按钮的大小位置setTe

15、xt 表示按钮上显示的内容Button b=new Button ()用来创建对象。(3)initGUIGUI 的全称为 Graphical User Interface ,简称 GUI, 又称图形用户接 口 ,是指采用图形方式显示的计算机操作用户界面。 图形用户界面是一种人 与计算机通信的界面显示格式,允许用户使用鼠标等输入设备操纵屏幕上 的图标或者菜单选项,以命令,调用文件,启动程序或执行其他一些日常 任务。与通过键盘输入文本或字符命令来完成例行任务的字符界面相比, 图形界面有许多有优点。图形界面由窗口,下拉菜单,对话框以与其相应 的控制机制构成,在各种样式应用程序中都是标准化的,既相同的

16、操作总 是以同样的方式来完成,在图形用户界面,用户看到和操作的都是图形对 象。GUI 即人机交互图形化用户界面设计。 GUI 的广泛应用是当今计算机 发展的重大成就之一,它极大地方便了非专业用户的使用。人们从此不再 需要死记硬背大量的命令,取而代之的是可以通过窗口,菜单,按键等方 式来方便地进行操作。 而嵌入式 GUI 具有下面几个方面的基本要求: 轻型, 占用资源少,高性能,高可靠性,便于移植,可配置等。3,本章小结本章主要讲述本课程设计用到所用到的关键技术, 以与关键的知识点。 本系统是在 Windows 系统 Java 平台下 eclipse 环境下完成的, 所以窗体 的创建,按钮的创建

17、这都是 Java 典型的程序开发。第三章 :需求分析1,可行性分析:(1)实用性分析 在我们日常生活中,计算开支收入时,大额数字或者是多倍小数的 计算都需要计算器的帮助,而在学习一些科目是,也常常要处理数字。虽 然现在的计算器价格比较低廉,但是功能过于简单计算器不能满足个人需 求,多功能的价格比较贵,很多功能根本用不到。所以我们想用自己所学 知识设计开发一个属于自己的简单计算器来完成学习生活的需求。(2)经济可行性 本课程设计的开发过程中,不需要其他额外的经济成本,所以经济是具有良好的可行性的。2,需求描述(1)编写目的a :复习巩固 java 语言的基础知识,进一步加深对 java 语言的理

18、解 和掌控。通过本课程设计使我们能够全面的掌握面向对象设计的有关概念 和开发方法,以便能较全面的理解掌握和综合运用所学的知识,提高自身 的编程能力。设计 uige 计算器的界面,定义计算器所需的按钮并赋予给 其他按钮名称,使得使用计算器时简单明了,清晰可见,操作轻松。b :课程设计为大家提供了一个既动手又动脑,独立实践的机会,将 课本上的理论知识和实际有机结合起来,锻炼我们的分析解决实际问题的 能力。提高魔门适应实际,实际编程的能力。给各个按钮进行算法,利用 鼠标点击事件,当鼠标点击某个按钮时就开始执行那个按钮所定义的算法, 生成算法并显示。c :培养我们在项目幵发中创新意思与能力,通过亲身实

19、践,利用所 学编写简单的面向对象程序,提高对面向对象与 java 语言的理解。(2)功能模块设计a :加法两个数据进行加法操作,可以为小数b :减法两个数据进行减法操作c :乘法 两个数相乘操作d :除法两个数相除操作e:幵平方两个非负数进行幵方运算,可以是小数3,面向对象分析(1)含义:面向对象分析一种新的系统分析方法。它采用的是面向对象的风格进 行系统分析和需求定义的重要方法。面向对象分析的关键在于理解问题控 件并将其模型化。面向对象分析采用人们认识客观事物和理解现实世界过程中常用的 基本法则:a :认识对象以与其属性;b :认识对象的整体与其组成部分;c:对象的形成与类的区分;d :对问

20、题空间进行理解并抽象成模型;面向对象分析有五个阶段:标识对象,标识结构,标识主题,定义属性,定义服务,即分五个层次建立面向对象分析的模型。面向对象分析的 优点是使功能分析与数据分析统一的概念和方法,克服了结构化分析中两 者之间的不一致性和协调性。(2):系统功能图:开万>减法预算> 除法运算图3.1(3 )用例图:计算器显示结果图3.25,本章小结:本章主要介绍了系统的可行性分析以与各种需求分析。可行性分析在 第一章也有所体现,本系统具有良好的发展前景,并且技术也比较常用, 成熟,经济可行性良好,数据可行性也良好。Java环境对幵发程序对性能的需求较高。第四章系统设计1,概要设计(

21、1)含义:概要设计是一个设计师根据用户交互过程和用户需求来形成 交互框架的过程,其结果往往以反映交互控件布置,界面元素分组以与界 面整体版式的页面框架图的形式来呈现。这是一个在用户研究和设计之间 架起的桥梁,使用户研究和设计无缝结合,将用户目标与需求转换成具体 界面设计解决方案的重要阶段。概要设计的主要任务是把需求分析得到的系统扩展用例图转换成软件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进 行模块划分,建立模块的层次结构与调用关系,确定模块间的接口与人机 界面等。数据结构设计包括数据特征的描述,确定数据的结构特性,以与 数据库的设计。显然,概要设计建立的是目标系统的逻辑模

22、型。(2)模块图计算器Lk丿图4.1(3)概述:标准计算器的界面采用“图形界面程序( GUI )”。GUI为用户 和应用程序之间的交互提供了直观方便的交流方式。用户使用鼠标键盘操 作图像界面上的按钮菜单等单位元素向计算机系统发送命令,系统运行的 结果以图形的方式显示给用户。2,详细设计(时序图)(1 )时序图如果所示o用户按钮界面结果显示界面1,开始>r2,点击按钮3,接受到数据4,获取信息,将要显示界面5,显示6,用户查看结>果图4.2(2) 概述:a :用图形界面实现界面;b :通过设置布局,控件等来丰富界面;c :按钮键接收数据,处理后显示结果;第五章:系统实现1 :主要功能

23、界面图5.12 :界面功能描述(1 )加法运算本计算器可以实现多个运算数相加,例如:1+2+3运算结果为6(2 )减法运算本计算器可以实现多个运算数相减,例如:4-3-2运算结果为-1(3 )乘法运算本计算器可以实现多个运算数相乘,例如:2*3*4运算结果为24(4 )除法运算15/5/30本计算器可以实现多个运算数相除(除数不为0)例如:运算结果为1,当除数为0时,计算器无法运算显示结果为1 的相反数9 开方(5)求相反数 本计算器可以求任意一个数的相反数,例如: 所求结果为 -1(6)开方运算 本计算器可以对非负数进行开方运算,例如: 运算结果为 33,核心代码:( 1 )窗口和按钮面板p

24、ublic Calculator。/主面板pan elSuper = new JPa nel();pan elSuper.setLayout (n ull);/设置窗口位置double width =Toolkit.getDefaultToolkit().getScree nSize().width;double height =Toolkit.getDefaultToolkit().getScree nSize().height;this.setBounds(int) (width - WIN_W) / 2, (int) (height -WIN_H) / 2,WIN_W, WIN_H);/

25、窗口配置this.setTitle("java 版计算器");this.validate();this.setResizable(false);this.setVisible(true);this.setDefaultCloseOperati on (DISPOSE_ON_CLOSE);/添加计算器按钮面板myPa nel = new MyPa nel();this.add(myPa nel, BorderLayout.CENTER);(2)计算器显示屏 jTextField = new JTextField(25); jTextField.setHorizo ntalAl

26、ig nmen t(JTextField.RIGHT); jTextField.setEditable(false);jTextField.setBackgrou nd(n ew Color(255, 255, 255); jTextField.setText("0");this.add(jTextField);(3) 配置按钮大小button1.setPreferredSize(new Dimension(67, 40); button2.setPreferredSize(new Dimension(67, 40); butt on 3.setPreferredSize(

27、 new Dime nsio n(67, 40); butt on 4.setPreferredSize( new Dime nsio n(67, 40); butt on 5.setPreferredSize( new Dime nsio n(67, 40); butt on 6.setPreferredSize( new Dime nsio n(67, 40); butt on 7.setPreferredSize( new Dime nsio n(67, 40); butt on 8.setPreferredSize( new Dime nsio n(67, 40); butt on 9

28、.setPreferredSize( new Dime nsio n(67, 40); butt on 0.setPreferredSize( new Dime nsio n(67, 40); butt on Jia.setPreferredSize( new Dime nsio n(67, 40); butt on Jia n.setPreferredSize( new Dime nsio n(67, 40); butt on Che ng.setPreferredSize( new Dime nsio n(67, 40); butto nChu.setPreferredSize( new

29、Dime nsio n(67, 40); butt onDen g.setPreferredSize( new Dime nsio n(67, 40); butt on Dia n.setPreferredSize( new Dime nsio n(67, 40); buttonDel.setPreferredSize(new Dimension(67, 40); buttonC.setPreferredSize(new Dimension(67, 40);butt on ZF.setPreferredSize( new Dime nsio n(67, 40); butto nGH.setPr

30、eferredSize( new Dime nsio n(67, 40);(4) 计算器初始化 public void in it() di = new BigDecimal("O");di = new BigDecimal("O");key ="="oper ='='jTextField.setText("O");irst = true; /用于标记是否进行连续操作(5) 计算public BigDecimal operate(BigDecimal a1, char c, BigDecimal a

31、2) MathC on text mc = new MathCo ntext(10,Rou ndi ngMode.HALF_DOWN);switch (c) case '+':retur n a1.add(a2);case '-':return a1.subtract(a2);case '*':retur n a1.multiply(a2);case '/':if (pareTo(new BigDecimal("O") = 0) ini t();return new BigDecimal("0&quo

32、t;);retur n a1.divide(a2, me);default:return a2;第六章:总结与展望在设计程序过程中,老师和同学给了我很多帮助和支持,老师认真负 责的工作态度和严谨的治学风格让我深受启发。和同学们之间的讨论让我 受益匪浅。当然,我还需要不断学习,因为在目前看来,我所设计的计算 器还存在很多不足,今后还需不断努力完善自己,用知识武装自己,只有 使用社会发展的需求适应时代发展的需求,才能在竞争日益激烈的社会中 立足。所以,在今后的学习中,我会在今后的学习中严格要求自己,希望 在老师的帮助下在,自己的努力下,在生活中找到属于自己的位置,取得 更大的进步。第七章:参考文献

33、1 马世霞,java程序设计,机械工业出版社.2010.12 杨武,刘贞java编程与应用,北京:高等教育出版社.20043 丁振凡java语言使用教程,北京邮电大学出版社.2006.9第八章:致谢在此我要感谢我的老师在课程设计上给予我们的指导和给予的帮助,这是我们能顺利完成这次课程设计的主要原因,更重要的是老师在课堂上 精彩的讲解,让我们在写课程设计时更加完善。在此期间,我不仅学到了 许多新知识,而且也开阔了视野,提高了自己的设计能力。其次,我要感 谢帮助过我的同学,他们为我解决了很多不太明白的地方,还有一些素材 的提供。最后,再次感谢我的老师和同学,诚心说一句:谢谢! 附源代码:* jav

34、a 版计算器*/public class Calculator extends JFrame final int WIN_W = 295, WIN_H = 292; JPanel myPanel, panelSuper;public Calculator() / 主面板panelSuper = new JPanel();panelSuper.setLayout(null);/ 设置窗口位置double width =Toolkit.getDefaultToolkit().getScreenSize().width;double height =Toolkit.getDefaultToolkit

35、().getScreenSize().height;this.setBounds(int) (width - WIN_W) / 2, (int) (height -WIN_H) / 2,WIN_W, WIN_H);/ 窗口配置this.setTitle("java 版计算器 ");this.validate();this.setResizable(false);this.setVisible(true);this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);/ 添加计算器按钮面板myPanel = new MyPanel();thi

36、s.add(myPanel, BorderLayout.CENTER);public static void main(String args) new Calculator();/* 计算器按钮面板类*/class MyPanel extends JPanel implements ActionListener JButton button1, button2, button3, button4, button5,button6, button7,button8, button9, button0, buttonJia, buttonJian,buttonCheng,buttonChu, b

37、uttonDeng, buttonDian, buttonC,buttonDel,buttonZF, buttonGH;JTextField jTextField; /计算器显示屏char oper; / 操作符String key, allKey = "1234567890.±del", jjccKey = "+-*/"BigDecimal d1, d2;boolean first;public MyPanel() / 设置布局this.setLayout(new FlowLayout(FlowLayout.LEFT, 4, 5);/ 计算器

38、显示屏jTextField = new JTextField(25); jTextField.setHorizontalAlignment(JTextField.RIGHT); jTextField.setEditable(false);jTextField.setBackground(new Color(255, 255, 255); jTextField.setText("0");this.add(jTextField);/ 计算器按钮button1 = new JButton("1");button2 = new JButton("2&q

39、uot;);button3 = new JButton("3"); button4 = new JButton("4"); button5 = new JButton("5"); button6 = new JButton("6"); button7 = new JButton("7"); button8 = new JButton("8"); button9 = new JButton("9"); button0 = new JButton("

40、0"); buttonJia = new JButton("+"); buttonJian = new JButton("-"); buttonCheng = new JButton("*"); buttonChu = new JButton("/"); buttonDeng = new JButton("="); buttonDian = new JButton("."); buttonDel = new JButton("del"); but

41、tonC = new JButton("c"); buttonZF = new JButton("±");butt onGH = new JButt on (”v"');button1.setPreferredSize(new Dimension(67, 40); button2.setPreferredSize(new Dimension(67, 40); button3.setPreferredSize(new Dimension(67, 40); button4.setPreferredSize(new Dimensio

42、n(67, 40);40);button5.setPreferredSize(new Dimension(67, 40); button6.setPreferredSize(new Dimension(67, 40); button7.setPreferredSize(new Dimension(67, 40); button8.setPreferredSize(new Dimension(67, 40); button9.setPreferredSize(new Dimension(67, 40); button0.setPreferredSize(new Dimension(67, 40)

43、; buttonJia.setPreferredSize(new Dimension(67, 40); buttonJian.setPreferredSize(new Dimension(67, 40); buttonCheng.setPreferredSize(new Dimension(67, buttonChu.setPreferredSize(new Dimension(67, 40); buttonDeng.setPreferredSize(new Dimension(67, 40); buttonDian.setPreferredSize(new Dimension(67, 40)

44、; buttonDel.setPreferredSize(new Dimension(67, 40); buttonC.setPreferredSize(new Dimension(67, 40); buttonZF.setPreferredSize(new Dimension(67, 40); buttonGH.setPreferredSize(new Dimension(67, 40); this.add(buttonDel);this.add(buttonC); this.add(buttonZF); this.add(buttonGH);this.add(button1); this.

45、add(button2);this.add(button3); this.add(buttonJia);this.add(button4);this.add(button5);this.add(button6); this.add(buttonJian);this.add(button7);this.add(button8);this.add(button9); this.add(buttonCheng);this.add(button0); this.add(buttonDian); this.add(buttonDeng); this.add(buttonChu); buttonDel.a

46、ddActionListener(this); buttonC.addActionListener(this); buttonZF.addActionListener(this); buttonGH.addActionListener(this); button1.addActionListener(this); button2.addActionListener(this); button3.addActionListener(this);button4.addActionListener(this); button5.addActionListener(this); button6.add

47、ActionListener(this); button7.addActionListener(this); button8.addActionListener(this); button9.addActionListener(this); button0.addActionListener(this); buttonJia.addActionListener(this); buttonJian.addActionListener(this); buttonCheng.addActionListener(this); buttonChu.addActionListener(this); but

48、tonDeng.addActionListener(this); buttonDian.addActionListener(this);/ 计算器初始化init();/* 计算器初始化*/public void init() d1 = new BigDecimal("0");d1 = new BigDecimal("0");key = "="oper = '='jTextField.setText("0");first = true; / 用于标记是否进行连续操作(例如按键顺序 为“ 9*9= ”,

49、第一次等于 first 由 true 变为 false ,如果 !first ,按等 号相当于用上一次的结果与第二个操作数相乘)* 按钮监听*/public void actionPerformed(ActionEvent e) JButton b = (JButton) e.getSource(); if (b = buttonDian) / 按下 .jTextField.setText(jTextField.getText() + "."); if (first) d2 = d1 = getNum(); else d2 = getNum(); else if (b =

50、buttonZF) /按下±BigDecimal d = getNum();d = new BigDecimal("0").subtract(d); setFormatNum(d);if (first) d2 = d1 = getNum(); else d2 = getNum(); else if (b = buttonDel) /按下 delif ( jTextField.getText().length() = 1| jTextField.getText().length() = 2&& jTextField.getText().startsW

51、ith("-") jTextField.setText("0"); else String s = jTextField.getText();s = s.substring(0, s.length() - 1);if (s.endsWith("E+") | s.endsWith("E-")s = s.substring(0, s.length() - 2); jTextField.setText(s);if (first) d2 = d1 = getNum(); else d2 = getNum(); else i

52、f (b = buttonC) / 按下 c init(); else if (b = buttonJia) / 按下 +BigDecimal s;if (!first && allKey.indexOf(key) >= 0) if (oper = '-' | oper = '/') s = operate(d1, oper, d2); else s = operate(d2, oper, d1);setFormatNum(s);/ 如果不是第一次,且上一次操作是对数字进行操作 else first = false;d2 = d1 = ge

53、tNum();/ 我执行啦 n"); oper = '+' else if (b = buttonJian) /按下 -35 / 42BigDecimal s;if (!first && allKey.indexOf(key) >= 0) s = operate(d1, oper, d2); setFormatNum(s);/ 如果不是第一次,且上一次操作是对数字进行操作 else first = false;d2 = d1 = getNum();oper = '-' else if (b = buttonCheng) /按下 *BigDecimal s;if (!first && allKey.indexOf(key) >= 0) if (oper = '-' | oper = '/') s = operate(d1, oper, d2); else s = operate(d2, oper, d1);setFormatNum(s);/ 如果不是第一次,且上一次操作是对数字进行操作 else first = false;d2 = d1 = ge

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论