算过程的计算器.ppt

上传人:小飞机 文档编号:5810520 上传时间:2023-08-22 格式:PPT 页数:35 大小:282.50KB
返回 下载 相关 举报
算过程的计算器.ppt_第1页
第1页 / 共35页
算过程的计算器.ppt_第2页
第2页 / 共35页
算过程的计算器.ppt_第3页
第3页 / 共35页
算过程的计算器.ppt_第4页
第4页 / 共35页
算过程的计算器.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《算过程的计算器.ppt》由会员分享,可在线阅读,更多相关《算过程的计算器.ppt(35页珍藏版)》请在三一办公上搜索。

1、保存计算过程的计算器,制作人:邝泰鹏 罗强 谢奇,主要内容:,1.设计要求;2.总体要求;3.详细设计;5.代码调试;6.软件发布;7.课程设计题目.,1.设计要求,一:首先这个计算器的定位是一个方便实用的普通计算工具。二:除了具有普通的计算功能外,还具有显示计算过程、保存计算过程之功能。,主页面介绍,1、单击计算器上的数字按钮可以设置参与计算的运算数。2、单击计算器上的运算按键可以选择运算符号。3、单击计算器上的函数按键可以计算出相应的函数值。4、单击计算器上的等于号显示计算结果。5、在一个文本中显示当前的计算过程,在一个文本区中显示以往的计算过程。6、单击保存按钮可以将文本中的全部计算过程

2、保存到文件;单击复制按钮可以将文本区中的文本复制到剪贴板;单击清除按钮可以清除文本区中的全部内容。,总体设计,设计计算器时要编写11个Java源文件。需要Java系统提供的一些重要的类。,11个Java源文件,CalculatorWindow.java,NumberButton.java,OperationButton.java,HandleDigit.java,HandleOperation.java,HandleDot.java,HandlePositiveOrNegative.java,HandleEquality.java,HandleSin.java,HandleBack.java和

3、HandleClear.java.,计算器所用到的一些重要的类以及之间的组合关系,CalculatorWindow.Java(主类),CalculatorWindow类负责创建计算器的主窗口,该类含有main方法,计算器从该类开始执行。CalculatorWindow类创建的窗口以及其中的主要成员如下图所示。,CalculatorWindow创建的窗口效果如下图,CalculatorWindow类的UML图,CalculatorWindow.java的关键代码,NumberButton numberButton;OperationButton operationButton;JButton 小

4、数点操作,正负号操作,退格操作,等号操作,清零操作,sin;JTextField resultShow;/显示计算结果 JTextField showComputerProcess;/显示当前计算过程 JTextArea saveComputerProcess;/显示计算步骤 JButton saveButton,copyButton,clearButton;LinkedList list;/链表用来存放第一个运算数、运算符号和第二个运算数 HandleDigit handleDigit;/负责处理ActionEvent事件 HandleOperation handleOperation;Ha

5、ndleBack handleBack;HandleClear handleClear;HandleEquality handleEquality;HandleDot handleDot;HandlePOrN handlePOrN;HandleSin handleSin;,CalculatorWindow.java的关键代码,handleDigit=new HandleDigit(list,resultShow,showComputerProcess);for(int i=0;i=9;i+)numberButtoni=new NumberButton(i);numberButtoni.setF

6、ont(newFont(Arial,Font.BOLD,20);numberButtoni.addActionListener(handleDigit);/为数字按钮添加监视器。,CalculatorWindow.java的关键代码,String 运算符号=+,-,*,/;for(int i=0;i4;i+)operationButtoni=new OperationButton(运算符号i);operationButtoni.setFont(new Font(Arial,Font.BOLD,20);operationButtoni.addActionListener(handleOperat

7、ion);/为运算按钮添加监视器。,CalculatorWindow.java的关键代码,NumberButton类,NumberButtonw类创建的是数字按钮。其UML图如下:,NumberButton.java代码,import java.awt.*;import.*;import javax.swing.*;public class NumberButton extends JButton int number;public NumberButton(int number)super(+number);this.number=number;setForeground(Color.blu

8、e);public int getNumber()return number;/数字按钮调用该方法时返回其含有的数字。,OperationButton类,OperationButton创建的是运算符按钮。其UML图如下:,OperationButton.java的代码,import java.awt.*;import.*;import javax.swing.*;public class OperationButton extends JButton String operateSign;public OperationButton(String s)super(s);operateSign=

9、s;setForeground(Color.red);/创建OperationButton对象时需使用该构造方法 public String getOperateSign()return operateSign;/运算符按钮调用方法返回其含有的运算符号。,HandleDigit类,HandleDigit类实现了ActionListener接口,创建的对象handleDigit是CalculatorWindow窗口的成员之一。标明HandleDigit类的主要成员变量、方法以及和CalculatorWindow类之间组合关系的UML图如下所示:,UML图,HandleDigit类的关键代码,pu

10、blic void actionPerformed(ActionEvent e)NumberButton b=(NumberButton)e.getSource();if(list.size()=0)int number=b.getNumber();list.add(+number);resultShow.setText(+number);showComputerProcess.setText(+list.get(0);。else if(list.size()=3)int number=b.getNumber();String num=list.getLast();String s=num.c

11、oncat(+number);list.set(2,s);resultShow.setText(s);showComputerProcess.setText(+list.get(0)+list.get(1)+list.get(2);该对象是数字的按钮监听器,当用户单击数字时,handleDigit对象将调用HandleDigit类实现的ActionListener接口中的actionPerformed(ActionEvent)方法。,HandleOperation类,HandleOperations类创建的handleOperation对象是运算按钮的监视器,当用户单击运算符按钮时,handl

12、eOperation对象将调用HandleOperation类实现的ActionListener接口中的actionPerformed(ActionEvent)方法。,HandleOperations类的UML图,如图,HandleOperation.java的关键代码,try double n1=Double.parseDouble(numOne);double n2=Double.parseDouble(numTwo);double result=0;if(运算符号.equals(+)result=n1+n2;/当运算符号是+时运行此条语句。else if(运算符号.equals(-)re

13、sult=n1-n2;/当运算符号是-时运行此条语句。else if(运算符号.equals(*)result=n1*n2;/当运算符号是*时运行此条语句。else if(运算符号.equals(/)result=n1/n2;/当运算符号是/时运行此条语句。String fuhao=b.getOperateSign();list.clear();list.add(+result);list.add(fuhao);String pro=middleProcess+=+result+list.get(1);showComputerProcess.setText(pro);saveComputerP

14、rocess.append(+middleProcess+=+result+n);resultShow.setText(+result);,HandleDot类,该类中主要工能是对小数点按钮的监视,当用户单击小数点按钮时,HandleDot类实现的ActionListener接口中的actionperformed(ActionEvent)方法,HandleDot类的关键代码,public void actionPerformed(ActionEvent e)String dot=e.getActionCommand();if(list.size()=1)/判断此列表的元素数是否等于1。Stri

15、ng num=list.getFirst();/将此列表的第一个元素赋值给num。String s=null;if(num.indexOf(dot)=-1)s=num.concat(dot);list.set(0,s);/将此列表中第一个元素替换S。else s=num;list.set(0,s);/将此列表中第一个元素替换S。resultShow.setText(s);showComputerProcess.setText(+list.get(0);/返回此列表中0位置处的元素。下面的代码大同小异这里就不多说了。,HandlePOrN类,handlePOrN是HandlePOrN类创建的对象

16、,该对象是正负号按钮监视器,当用户单击正负号按钮时,handlePOrN对象将调用HandlePOrN类实现的接口ActionListener中的actionPerformed(ActionEvent)方法。,HandlePOrn类的关键代码,public void actionPerformed(ActionEvent e)if(list.size()=1)String number1=list.getFirst();try double d=Double.parseDouble(number1);d=-1*d;/当用户单击正负号按钮时这条语句为数值改变符号。String str=Strin

17、g.valueOf(d);list.set(0,str);resultShow.setText(str);showComputerProcess.setText(+list.get(0);catch(Exception ee),HandleEquality类,HandleEquality主要是等号按钮的监视器,当用户单击等号按钮时,handleEquality对象将调用HandleEquality类实现的ActionListener接口中的ActionPerformed(ActionEvent)方法来实现运算,HandleEquality类的关键代码,try double n1=Double.

18、parseDouble(num);double n2=Double.parseDouble(num);double result=0;if(运算符号.equals(“+”)/根据运算符号选择不同的运算方法。result=n1+n2;else if(运算符号.equals(-)result=n1-n2;else if(运算符号.equals(*)result=n1*n2;else if(运算符号.equals(/)result=n1/n2;resultShow.setText(+result);String proccess=num+运算符号+num+=+result;/为proccess赋值为

19、显示运算过程做准备。showComputerProcess.setText(proccess);/显示运算过程 saveComputerProcess.append(“”+proccess+“n”);/保存运算过程 list.set(0,+result);catch(Exception ee),HandleSin类,该类主要是控制sin按钮的监视器,当用户单击sin按钮时,handleSin对象将运行如下主要代码:if(list.size()=1|list.size()=2)String numOne=list.getFirst();try double x=Double.parseDoubl

20、e(numOne);double result=Math.sin(x);/计算答案。String str=String.valueOf(result);list.set(0,str);resultShow.setText(str);String proccess=sin(+numOne+)=+result;/将显示结果赋值给proccess.showComputerProcess.setText(proccess);saveComputerProcess.append(+proccess+n);if(list.size()=2)list.removeLast();/移掉运算符号 catch(E

21、xception ee),HandleBack类,该类中主要包含“退格”按钮的监视器,当用户单击“退格”按钮时将调用HandleBack类实现的ActionListener接口中的actionPerformed(ActionEvent)方法。,HandleBack类中主要的代码,public void actionPerformed(ActionEvent e)if(list.size()=1)/判断列表的元素数是否为1.String num=(String)list.getFirst();/为1时将列表中的第一个元素赋值给num.if(num.length()=1)/判断num的长度是否多于

22、1.num=num.substring(0,num.length()-1);list.set(0,num);resultShow.setText(num);showComputerProcess.setText(+num);/大干或等于1时将删去num中的最后一个元素.else list.removeLast();resultShow.setText(0);showComputerProcess.setText(0);,HandleClear类,该类主要包含清零按钮的监视器。其主要实现的代码是:public void actionPerformed(ActionEvent e)resultShow.setText(0);/列表的结果显示为0.list.clear();/从列表中移除所有元素。showComputerProcess.setText(null);/列表的结果显示为空.,系统测试打包发布清单文件生成JAR文件mymoon.mfManifest-Version:1.0Mani-Class:CalculatorWindowCreated-By:1.2(Sun Microsystem Ins.)jar cfm CalculatorWindow.jar mymoon.mf*.class,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号