课程设计(论文)-基于JAVA的计算器的设计与实现_第1页
课程设计(论文)-基于JAVA的计算器的设计与实现_第2页
课程设计(论文)-基于JAVA的计算器的设计与实现_第3页
课程设计(论文)-基于JAVA的计算器的设计与实现_第4页
课程设计(论文)-基于JAVA的计算器的设计与实现_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

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

,具体程序实现了:实现简单的加、减、乘、除、运算。实现了除了加、减、乘、除按钮外其他按钮功能,如:C表示清零,del表示删除。实现了连续运算能力。关键词:Java语言四则运算计算器目录TOC\o"1-3"\h\u1,绪论 21.1java版计算器的意义与结构 21.1.1java版计算器的意义 21.1.2java版计算器的论文结构 22,开发平台简介相关技术简介 22.1开发平台简介 22.1.11JAVA平台 22.1.2windows系统 22.1.3eclipse环境22.2关键技术简介 22.2.1JFrame 22.2.2按钮的创建 22.2.3GUI22.3本章小结 23,需求分析 33.1可行性分析 33.2需求描述 33.3面向对象分析(用例图) 33.4功能分析33.5本章小结34,系统设计 34.1概要设计 34.2详细设计 35,系统实现 36,总结与展望 47,参考文献 48,致谢 4第一章:绪论1,java版计算器的意义与结构java版计算器的意义所谓计算器一般指的是电子计算器。计算器是日常生活中十分便携有效的工具,能够实现加减乘除等简单的运算功能。本论文采用了java编程语言实现计算机的功能。该计算器大大降低了数字计算的难度并且提高了计算准确度和精确度。使用简单,适合广大工作人员和学生使用。随着信息时代的步伐,越来越得多的数字需要我们去处理,然而在我们日常生活中遇到的一些基本数字运算,以往简单的口算笔算,然而现在不同了,人们对计算机手机的依赖越来越高,遇到计算机问题不愿意用脑去思考,而是交由计算机或者手机来完成。为了给自己设计一个能够胜任自己学习的工作机会的计算器,决定自己通过所学的知识来编写一个简单的计算机。(2)论文结构本文共分为8章,各章的主要内容介绍如下:第一章:首先介绍课题研究的意义,java版计算器的主要意义以及本论文的组织结构。第二章:主要介绍系统开发的平台,主要关键技术如下:Frame创建,按钮的创建。第三章:主要介绍本系统的可行性分析,性能分析,用户功能需求分析,需求分析,面向对象分析,主要功能分析。第四章:主要介绍系统设计,概念设计,包括功能模块图,详细设计,时序图,流程图以及概述,还有逻辑设计。第五章:主要介绍系统实现,主要编码和实现过程。主要功能界面,界面流程描述,核心代码。第六章:主要介绍总结与展望第七章:主要介绍参考文献,在完成代码的过程中参考的书籍都有哪些;第八章:致谢:感谢老师的指导,感谢同学的指引,感谢同学们在学习过程中提供的素材和帮助。还有在论文以及排版的过程中提供的热心帮助。本章小结:本章主要介绍了java版计算器的意义,以及本论文结构。:开发平台简介与关键技术1,开发平台简介(1)Java平台Java是一个可以在不同操作系统(例如windows,unix等)上运行的编程语言,Java平台是指运行在各终端(如pc,服务器,移动设备,嵌入式设备)的系统软件。PC机上的Java程序是javaSE上开发出来的,服务器端的java程序是javaEE开发出来的,移动设备的java程序是用JAVAME开发出来的。Java语言在网络编程方面应用得很广泛,作为一个新的程序设计语言,它简单多变,面向对象,不依赖操作系统的特点,具有很好的移植性和安全性,这些特点给网络编程带来了很多便利。Java的平台根据用途来区分,可以分为三个版本。JavaSE—JavaStandardEdition,这个是Java的标准版,主要用于桌面级的应用和数据开发。JavaEE-JavaEnterpriseEdition,这个是Java的企业版本,提供了企业级开发的各种技术,主要用于企业开发,现在用的最多的也就是这个平台。JavaME-JavaMicroEdition,这个版本烦人java平台主要用于嵌入式和移动式的开发,最常用的就是手机应用软件开发。Java作为一门优秀的编程语言,相对于其他类似的语言具有一定的优越性,这是由Java语言的如下特点决定的。Java语言具有简单,面向对象,分布式,安全,可移植性,多态的特点。Java语言是一种面向对象的语言,通过理解一些重要的概念就能编写出各种功能的代码。Java语言主要集中用在类的设计和接口功能方面,提供了继承及多态的机制,对类中的成员变量和方法可进行覆盖和重写,实现了代码的重复使用,使代码编写简单。Java语言不支持指针,所有的访问,必须通过具体的对象变量来实现,这样既保护了私有变量,同时也避免了一些错误。Java语言编译产生的文件是字节码文件,字节码文件和平台无关。Java语言支持多线程技术,将多个程序任务分成几个并行的子任务。windows系统1980年,乔布斯介绍了一项新技术,用户图形界面,比尔盖茨也意识到这项技术的潜在的价值,于是带领微软开始了Winows工作。1985年又发布了第一代窗口式多任务系统,该操作系统的推出,意味着PC机开始进入了图形界面,大部分操作对象都用相应的图标来表示,这种操作界面形象直观,随着不断的改进,它还增加了几个系统工具,用于自动检测硬盘,文件系统和配置信息,可以自动修复一些一般性的系统错误。内部还安置了大量的驱动程序,基本上包括了市面上流行的各种品牌,各种型号硬件的最新驱动程序,而且硬件检测能力也有了很大的提高。同时,还提供了文件分配系统,可支持2G以上的大分区,而对硬盘,无需重新分区和格式化,直接可以使用转换器转换。把最新的多媒体技术,网络技术和Internet技术结合在了一起,使访问网络更加方便和快捷。技术是在不断进步的,操作系统也在不断更新,没有那个版本的操作系统是永恒的主流,因此,我们在学习和使用某个操作系统的过程中把握住它的最基本的方面,并在此基础上进行大胆的尝试和创新,从而跟上它的发展步伐。eclipse环境Eclipse是一个开放源代码的,基于Java可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组成构建开发环境。幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelepmentTools,JDK).Eclipse是一个开放源代码的软件项目,专注于为高度集成的工具开发提供一个全功能的,具有商业品质的工业平台。它主要由Eclipse项目,Eclipse工具项目和Eclipse技术项目三个项目三个项目组成,具体包括四个部分组成EclipsePlatform则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。EclipsePlatform允许工具建造者独立开发与其他工具无缝集成的工具从而无需分辨一个工具功能在哪里结束,而另外一个工具功能在哪里开始。软件开发包是Eclipse是EclipsePlatform,JDT和PDE所生产的组件合并,它们可以一次下载。这些部分在一起提供了一个具有丰富特性的开发环境,允许开发者有效的建造可以无缝集成到EclipsePlatform中的工具。EclipseSDK由ECLIPSE项目生产的工具和来自其它开放源代码的第三方软件组合而成。Eclipse项目的生产的软件以GPL发布,第三方组件各自自身的许可协议。2,关键技术简介JFrameJava的GUI程序的基本思路是以JFrame为基础的,它是屏幕上window的对象,能够最小化和最大化,关闭。它的基本板块是swing,swing的三个基本构造块是标签,按钮,文本字段。并希望用户知道如何处理它们。JFrame类就是解决这个问题它是一个容器,允许程序员把其他组件添加到它里面,把它们组织起来,并把它们呈现给用户。JFrame实际上仅仅让程序员把组件放入其中并呈现给用户。比起它表面的上的简单性,它实际上是Swing包中最复杂的组件。为了最大程度地简化组件,在独立于操作系统的Swing组件与实际运行这些组件系统之间,JFrame起着桥梁作用。JFrame在操作系统中是以窗口的形式注册的,这样就可以得到许多的窗口特性。显示文件在窗体上的类也扩展了JFrame,读取文件的类也扩展了JFrame;按钮的创建:含义:对话框中的一种图形元素。当激活它时,能执行指定功能。用户可以采用以下方法来激活按钮:用鼠标在其上单击,或者当按钮获得聚焦时按下enter键。在button元素内部,您可以放置内容,比如文本或图像。使用:创建按钮在窗体上,用来窗体跳转的连接。点击按钮来实现跳转。关键字:setBounds表示按钮的大小位置setText表示按钮上显示的内容Buttonb=newButton()用来创建对象。initGUIGUI的全称为GraphicalUserInterface,简称GUI,又称图形用户接口,是指采用图形方式显示的计算机操作用户界面。图形用户界面是一种人与计算机通信的界面显示格式,允许用户使用鼠标等输入设备操纵屏幕上的图标或者菜单选项,以命令,调用文件,启动程序或执行其他一些日常任务。与通过键盘输入文本或字符命令来完成例行任务的字符界面相比,图形界面有许多有优点。图形界面由窗口,下拉菜单,对话框以及其相应的控制机制构成,在各种样式应用程序中都是标准化的,既相同的操作总是以同样的方式来完成,在图形用户界面,用户看到和操作的都是图形对象。GUI即人机交互图形化用户界面设计。GUI的广泛应用是当今计算机发展的重大成就之一,它极大地方便了非专业用户的使用。人们从此不再需要死记硬背大量的命令,取而代之的是可以通过窗口,菜单,按键等方式来方便地进行操作。而嵌入式GUI具有下面几个方面的基本要求:轻型,占用资源少,高性能,高可靠性,便于移植,可配置等。3,本章小结本章主要讲述本课程设计用到所用到的关键技术,以及关键的知识点。本系统是在Windows系统Java平台下eclipse环境下完成的,所以窗体的创建,按钮的创建这都是Java典型的程序开发。:需求分析1,可行性分析:(1)实用性分析在我们日常生活中,计算开支收入时,大额数字或者是多倍小数的计算都需要计算器的帮助,而在学习一些科目是,也常常要处理数字。虽然现在的计算器价格比较低廉,但是功能过于简单计算器不能满足个人需求,多功能的价格比较贵,很多功能根本用不到。所以我们想用自己所学知识设计开发一个属于自己的简单计算器来完成学习生活的需求。(2)经济可行性本课程设计的开发过程中,不需要其他额外的经济成本,所以经济是具有良好的可行性的。2,需求描述(1)编写目的a:复习巩固java语言的基础知识,进一步加深对java语言的理解和掌控。通过本课程设计使我们能够全面的掌握面向对象设计的有关概念和开发方法,以便能较全面的理解掌握和综合运用所学的知识,提高自身的编程能力。设计uige计算器的界面,定义计算器所需的按钮并赋予给其他按钮名称,使得使用计算器时简单明了,清晰可见,操作轻松。b:课程设计为大家提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机结合起来,锻炼我们的分析解决实际问题的能力。提高魔门适应实际,实际编程的能力。给各个按钮进行算法,利用鼠标点击事件,当鼠标点击某个按钮时就开始执行那个按钮所定义的算法,生成算法并显示。c:培养我们在项目开发中创新意思及能力,通过亲身实践,利用所学编写简单的面向对象程序,提高对面向对象及java语言的理解。功能模块设计a:加法两个数据进行加法操作,可以为小数b:减法两个数据进行减法操作c:乘法两个数相乘操作d:除法两个数相除操作e:开平方两个非负数进行开方运算,可以是小数3,面向对象分析(1)含义:面向对象分析一种新的系统分析方法。它采用的是面向对象的风格进行系统分析和需求定义的重要方法。面向对象分析的关键在于理解问题控件并将其模型化。面向对象分析采用人们认识客观事物和理解现实世界过程中常用的基本法则:a:认识对象以及其属性;b:认识对象的整体及其组成部分;c:对象的形成及类的区分;d:对问题空间进行理解并抽象成模型;面向对象分析有五个阶段:标识对象,标识结构,标识主题,定义属性,定义服务,即分五个层次建立面向对象分析的模型。面向对象分析的优点是使功能分析与数据分析统一的概念和方法,克服了结构化分析中两者之间的不一致性和协调性。:系统功能图:加法运算开方加法运算开方减法预算减法预算计算器计算器乘法运算乘法运算除法运算除法运算相反数相反数图3.1(3)用例图:计算器输入数据输入数据存储数据存储数据计算计算用户显示结果显示结果图3.25,本章小结:本章主要介绍了系统的可行性分析以及各种需求分析。可行性分析在第一章也有所体现,本系统具有良好的发展前景,并且技术也比较常用,成熟,经济可行性良好,数据可行性也良好。Java环境对开发程序对性能的需求较高。第四章系统设计1,概要设计(1)含义:概要设计是一个设计师根据用户交互过程和用户需求来形成交互框架的过程,其结果往往以反映交互控件布置,界面元素分组以及界面整体版式的页面框架图的形式来呈现。这是一个在用户研究和设计之间架起的桥梁,使用户研究和设计无缝结合,将用户目标与需求转换成具体界面设计解决方案的重要阶段。概要设计的主要任务是把需求分析得到的系统扩展用例图转换成软件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划分,建立模块的层次结构及调用关系,确定模块间的接口及人机界面等。数据结构设计包括数据特征的描述,确定数据的结构特性,以及数据库的设计。显然,概要设计建立的是目标系统的逻辑模型。模块图计算器计算器类的继承创建按钮创建窗体类的继承创建按钮创建窗体图图4.1概述:标准计算器的界面采用“图形界面程序(GUI)”。GUI为用户和应用程序之间的交互提供了直观方便的交流方式。用户使用鼠标键盘操作图像界面上的按钮菜单等单位元素向计算机系统发送命令,系统运行的结果以图形的方式显示给用户。2,详细设计(时序图)(1)时序图如果所示结果显示界面按钮界面结果显示界面按钮界面用户 1,开始2,点击按钮3,接受到数据 4,获取信息,将要显示界面 5,显示 6,用户查看结果图4.2(2)概述:a:用图形界面实现界面;b:通过设置布局,控件等来丰富界面;c:按钮键接收数据,处理后显示结果;:系统实现1:主要功能界面图5.12:界面功能描述(1)加法运算本计算器可以实现多个运算数相加,例如:1+2+3运算结果为6(2)减法运算本计算器可以实现多个运算数相减,例如:4-3-2运算结果为-1(3)乘法运算本计算器可以实现多个运算数相乘,例如:2*3*4运算结果为24(4)除法运算本计算器可以实现多个运算数相除(除数不为0)例如:15/5/3运算结果为1,当除数为0时,计算器无法运算显示结果为0(5)求相反数本计算器可以求任意一个数的相反数,例如:1的相反数所求结果为-1(6)开方运算本计算器可以对非负数进行开方运算,例如:9开方运算结果为33,核心代码:(1)窗口和按钮面板publicCalculator(){//主面板panelSuper=newJPanel();panelSuper.setLayout(null);//设置窗口位置doublewidth=Toolkit.getDefaultToolkit().getScreenSize().width;doubleheight=Toolkit.getDefaultToolkit().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=newMyPanel();this.add(myPanel,BorderLayout.CENTER);}(2)计算器显示屏jTextField=newJTextField(25);jTextField.setHorizontalAlignment(JTextField.RIGHT);jTextField.setEditable(false);jTextField.setBackground(newColor(255,255,255));jTextField.setText("0");this.add(jTextField);(3)配置按钮大小button1.setPreferredSize(newDimension(67,40));button2.setPreferredSize(newDimension(67,40));button3.setPreferredSize(newDimension(67,40));button4.setPreferredSize(newDimension(67,40));button5.setPreferredSize(newDimension(67,40));button6.setPreferredSize(newDimension(67,40));button7.setPreferredSize(newDimension(67,40));button8.setPreferredSize(newDimension(67,40));button9.setPreferredSize(newDimension(67,40));button0.setPreferredSize(newDimension(67,40));buttonJia.setPreferredSize(newDimension(67,40));buttonJian.setPreferredSize(newDimension(67,40));buttonCheng.setPreferredSize(newDimension(67,40));buttonChu.setPreferredSize(newDimension(67,40));buttonDeng.setPreferredSize(newDimension(67,40));buttonDian.setPreferredSize(newDimension(67,40));buttonDel.setPreferredSize(newDimension(67,40));buttonC.setPreferredSize(newDimension(67,40));buttonZF.setPreferredSize(newDimension(67,40));buttonGH.setPreferredSize(newDimension(67,40));(4)计算器初始化publicvoidinit(){d1=newBigDecimal("0");d1=newBigDecimal("0");key="=";oper='=';jTextField.setText("0");irst=true;//用于标记是否进行连续操作(5)计算publicBigDecimaloperate(BigDecimala1,charc,BigDecimala2){MathContextmc=newMathContext(10,RoundingMode.HALF_DOWN);switch(c){case'+':returna1.add(a2);case'-':returna1.subtract(a2);case'*':returna1.multiply(a2);case'/':if(pareTo(newBigDecimal("0"))==0){init();returnnewBigDecimal("0");}returna1.divide(a2,mc);default:returna2;:总结与展望在设计程序过程中,老师和同学给了我很多帮助和支持,老师认真负责的工作态度和严谨的治学风格让我深受启发。和同学们之间的讨论让我受益匪浅。当然,我还需要不断学习,因为在目前看来,我所设计的计算器还存在很多不足,今后还需不断努力完善自己,用知识武装自己,只有使用社会发展的需求适应时代发展的需求,才能在竞争日益激烈的社会中立足。所以,在今后的学习中,我会在今后的学习中严格要求自己,希望在老师的帮助下在,自己的努力下,在生活中找到属于自己的位置,取得更大的进步。:参考文献[1]马世霞,《java程序设计》,机械工业出版社.2010.1[2]杨武,刘贞《java编程及应用》,北京:高等教育出版社.2004[3]丁振凡《java语言使用教程》,北京邮电大学出版社.2006.9:致谢在此我要感谢我的老师在课程设计上给予我们的指导和给予的帮助,这是我们能顺利完成这次课程设计的主要原因,更重要的是老师在课堂上精彩的讲解,让我们在写课程设计时更加完善。在此期间,我不仅学到了许多新知识,而且也开阔了视野,提高了自己的设计能力。其次,我要感谢帮助过我的同学,他们为我解决了很多不太明白的地方,还有一些素材的提供。最后,再次感谢我的老师和同学,诚心说一句:谢谢!附源代码:importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.*;importjava.awt.*;importjava.math.BigDecimal;importjava.math.MathContext;importjava.math.RoundingMode;importjava.awt.Color;/***java版计算器*/publicclassCalculatorextendsJFrame{finalintWIN_W=295,WIN_H=292;JPanelmyPanel,panelSuper;publicCalculator(){//主面板panelSuper=newJPanel();panelSuper.setLayout(null);//设置窗口位置doublewidth=Toolkit.getDefaultToolkit().getScreenSize().width;doubleheight=Toolkit.getDefaultToolkit().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=newMyPanel();this.add(myPanel,BorderLayout.CENTER);}publicstaticvoidmain(String[]args){newCalculator();}/***计算器按钮面板类*/classMyPanelextendsJPanelimplementsActionListener{JButtonbutton1,button2,button3,button4,button5,button6,button7,button8,button9,button0,buttonJia,buttonJian,buttonCheng,buttonChu,buttonDeng,buttonDian,buttonC,buttonDel,buttonZF,buttonGH;JTextFieldjTextField;//计算器显示屏charoper;//操作符Stringkey,allKey="1234567890.±del",jjccKey="+-*/";BigDecimald1,d2;booleanfirst;publicMyPanel(){//设置布局this.setLayout(newFlowLayout(FlowLayout.LEFT,4,5));//计算器显示屏jTextField=newJTextField(25);jTextField.setHorizontalAlignment(JTextField.RIGHT);jTextField.setEditable(false);jTextField.setBackground(newColor(255,255,255));jTextField.setText("0");this.add(jTextField);//计算器按钮button1=newJButton("1");button2=newJButton("2");button3=newJButton("3");button4=newJButton("4");button5=newJButton("5");button6=newJButton("6");button7=newJButton("7");button8=newJButton("8");button9=newJButton("9");button0=newJButton("0");buttonJia=newJButton("+");buttonJian=newJButton("-");buttonCheng=newJButton("*");buttonChu=newJButton("/");buttonDeng=newJButton("=");buttonDian=newJButton(".");buttonDel=newJButton("del");buttonC=newJButton("c");buttonZF=newJButton("±");buttonGH=newJButton("√");button1.setPreferredSize(newDimension(67,40));button2.setPreferredSize(newDimension(67,40));button3.setPreferredSize(newDimension(67,40));button4.setPreferredSize(newDimension(67,40));button5.setPreferredSize(newDimension(67,40));button6.setPreferredSize(newDimension(67,40));button7.setPreferredSize(newDimension(67,40));button8.setPreferredSize(newDimension(67,40));button9.setPreferredSize(newDimension(67,40));button0.setPreferredSize(newDimension(67,40));buttonJia.setPreferredSize(newDimension(67,40));buttonJian.setPreferredSize(newDimension(67,40));buttonCheng.setPreferredSize(newDimension(67,40));buttonChu.setPreferredSize(newDimension(67,40));buttonDeng.setPreferredSize(newDimension(67,40));buttonDian.setPreferredSize(newDimension(67,40));buttonDel.setPreferredSize(newDimension(67,40));buttonC.setPreferredSize(newDimension(67,40));buttonZF.setPreferredSize(newDimension(67,40));buttonGH.setPreferredSize(newDimension(67,40));this.add(buttonDel);this.add(buttonC);this.add(buttonZF);this.add(buttonGH);this.add(button1);this.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.addActionListener(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.addActionListener(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);buttonDeng.addActionListener(this);buttonDian.addActionListener(this);//计算器初始化init();}/***计算器初始化*/publicvoidinit(){d1=newBigDecimal("0");d1=newBigDecimal("0");key="=";oper='=';jTextField.setText("0");first=true;//用于标记是否进行连续操作(例如按键顺序为“9*9====”,第一次等于first由true变为false,如果!first,按等号相当于用上一次的结果与第二个操作数相乘)}/***按钮监听*/publicvoidactionPerformed(ActionEvente){JButtonb=(JButton)e.getSource();if(b==buttonDian){//按下.jTextField.setText(jTextField.getText()+".");if(first){d2=d1=getNum();}else{d2=getNum();}}elseif(b==buttonZF){//按下±BigDecimald=getNum();d=newBigDecimal("0").subtract(d);setFormatNum(d);if(first){d2=d1=getNum();}else{d2=getNum();}}elseif(b==buttonDel){//按下delif(jTextField.getText().length()==1||jTextField.getText().length()==2&&jTextField.getText().startsWith("-")){jTextField.setText("0");}else{Strings=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();}}}elseif(b==buttonC){//按下cinit();}elseif(b==buttonJia){//按下+BigDecimals;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=getNum();//System.out.print("111我执行啦\n");oper='+';}elseif(b==buttonJian){//按下-BigDecimals;if(!first&&allKey.indexOf(key)>=0){s=operate(d1,oper,d2);setFormatNum(s);}//如果不是第一次,且上一次操作是对数字进行操作else{first=false;}d2=d1=getNum();oper='-';}elseif(b==buttonCheng){//按下*BigDecimals;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=getNum();oper='*';}elseif(b==buttonChu){//按下/BigDecimals;if(!first&&allKey.indexOf(key)>=0){s=operate(d1,oper,d2);setFormatNum(s);}//如果不是第一次,且上一次操作是对数字进行操作else{first=false;}d2=d1=getNum();oper='/';}elseif(b==buttonGH){//按下平方根if(jTextField.getText().startsWith("-")){init();return;}BigDecimald=getNum();MathContextmc=newMathContext(10,RoundingMode.HALF_DOWN);d=newBigDecimal(Math.sqrt(d.doubleValue()),mc);setFormatNum(d);if(first){d2=d1=getNum();}else{d2=getNum();}}elseif(b==buttonDeng){//按下=BigDecimals=null;d2=getNum();if(!key.equals("=")){s=operate(d1,oper,d2);}else{s=operate(d2,oper,d1);}if(oper!='='&&!key.equals("=")){//上一次操作为+-*/d1=getNum();}setFormatNum(s);first=true;}else{//按下其他按钮if(this.jTextField.getText().equals("0")||allKey.indexOf(key)==-1){this.jTextField.setText(b.getText());}else{this.jTextField.setText(jTextField.getText()+b.getText());}if(first){d2=d1=getNum();}else{d2=getNum();}//d2作被加数:d2+d1}key=b.getText();}/***获取操作数**@return操作数*/publicBigDecimalgetNum(){BigDecimald=newBigDecimal(jTextField.getText());returnd;}publicvoidsetFormatNum(BigDecimaldd){MathContextmc=newMathContext(18,RoundingMode.HALF_DOWN);BigDecimald=newBigDecimal(dd.toString(),mc);Stringnum=d.toString();if(num.endsWith(".0"))num=num.replaceAll("\\.0","");this.jTextField.setText(num);}/***计算**@parama1*操作数1*@paramc*操作符*@parama2*操作数2*@return*/publicBigDecimaloperate(BigDecimala1,charc,BigDecimala2){MathContextmc=newMathContext(10,RoundingMode.HALF_DOWN);switch(c){case'+':returna1.add(a2);case'-':returna1.subtract(a2);case'*':returna1.multiply(a2);case'/':if(pareTo(newBigDecimal("0"))==0){init();returnnewBigDecimal("0");}returna1.divide(a2,mc);default:returna2;}}}}基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片

温馨提示

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

评论

0/150

提交评论