Java保存计算过程的计算器_第1页
Java保存计算过程的计算器_第2页
Java保存计算过程的计算器_第3页
Java保存计算过程的计算器_第4页
Java保存计算过程的计算器_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、目录3.2类设计图.7参考文献251. 需求分析引子.随着计算机技术的飞速发展,人们已经不能满足于采用人工进行大量的计算,计算器快速的计算速度和稳定的准确率很好的满足了用户的需要,保存计算过程的计算器更是能够让用户随时随地的查找以前的计算过程。保存计算过程的计算器正是在这样的市场需求之下研发的,目的旨在帮助用户快速准确的得到计算结果。目的 1.掌握JAVA语言编程的基础知识并能熟练运用。 2.熟悉类声明与对象的使用。 3.理解委托时间处理模型。 4.了解JAVA语言的图形用户界面JAVAS WING的设计知识。Eclipse编写简单计算器程序,并实现其功能。 系统目标一个简单的计算器程序。用户

2、可以利用鼠标点击数值或操作符按键完成计算的输入,计算的结果将被显示在窗口上部的文本框中。主体功能 1. 按下数字键在文本框上会显示数字,这是计算器最基本的功能2. 在任何时候按下“+-”键,计算器文本框上的数字置反3. 右边一个文本框显示计算过程,上面一个文本框显示输入的数字4. 当按下的运算符号时前面已经按下过运算符号时,右边一个文本框显示上一个运算符号以及两个数之间的运算结果。5. 按下清除“C”键,数据被全部清除。开发环境 JDK,Eclipse2. 概要设计一、功能图:二、系统流程图计算器计算算法计算器矫正架堆栈普通型科学型getButton计算数据getButtonputOperat

3、or禁用一般计算一般计算一般计算trigonom计量3. 详细设计3.1 UML图类关系总图Calculator Window类图3.1Calculator Window的UML图NumberButton类图3.2 NumberButton类的UML图OperationButton类图3.3 OperationButton类的UML图HandleDigit类图3.4 HandleDigit类的UML图HandleOperation类图3.5 HandleOperation类的UML图HandleDot类图3.6 HandleDot类的UML图HandlePOrN类图3.7 HandlePOrN

4、类的UML图HandleEquality类图3.8 HandleEquality类的UML图HandleSin类图3.9 HandleSin类的UML图HandleBack类图3.10 HandleBack类的UML图HandleClear类图3.11 HandleClear类的UML图3.2 类设计图类CalculatorWindow模块名称CalculatorWindow功能描述负责创建计算器的主窗口接口与属性Void actionPerformed()Function:对saveButton,copyButton,clearButton三个按钮的ActionEvent事件监听InPut:

5、 无OutPut: 无Return:空CalculatorWindow()Function:是构造方法,负责完成窗口的初始化InPut: 无OutPut:无Return:空Static void Main()Functon:是计算器程序运行的入口方法InPut:无OutPut:无Return:空数据结构与算法Linkedlist(String)list补充说明无类OperationButton模块名称OperationButton功能描述创建主窗口中的一个“运算符”按钮接口与属性String getOperationSign()Function:返回操作符号InPut: 无OutPut: 无R

6、eturn:运算符号OperationButton()Function:是构造方法,创建OperationButton对象InPut: SOutPut:无Return:空数据结构与算法无补充说明无类HandleDigit模块名称HandleDigit功能描述用户单击“数字”按钮时,负责处理和运算符有关的计算结果接口与属性Void actionPerformed()Function:处理list链表中存储的第一个操作数和第二个操作数InPut: 无OutPut: 无Return:空HandleDigit()Function:是构造方法,创建HandleDigit对象InPut: t1,t2Out

7、Put:无Return:空数据结构与算法Linkedlist(String)list补充说明无类HandleOperation模块名称HandleOperation功能描述用户单击“运算符”按钮时,负责处理和运算符有关的计算结果接口与属性Void actionPerformed()Function:处理list链表中存储的运算符和必要的计算 InPut: 无OutPut: 无Return:空HandleOperation()Function:是构造方法,创建HandleOperationt对象InPut: t1,t2,t3OutPut:无Return:空数据结构与算法Linkedlist(St

8、ring)list补充说明无类HandleDot模块名称HandleDot功能描述负责处理小数点接口与属性Void actionPerformed()Function:处理list链表中存储的运算数InPut: 无OutPut: 无Return:空HandleDot()Function:是构造方法,创建HandleDot对象InPut: t1,t2OutPut:无Return:空数据结构与算法Linkedlist(String)list补充说明无类HandlePOrN模块名称HandlePOrN功能描述负责处理用户单击“+/-”按钮时,对数字进行正负转换接口与属性Void actionPerf

9、ormed()Function:处理list链表中存储的运算数InPut: 无OutPut: 无Return:空HandlePOrN()Function:是构造方法,创建HandlePOrN对象InPut: t1,t2OutPut:无Return:空数据结构与算法Linkedlist(String)list补充说明无类HandleEquality模块名称HandleEquality功能描述负责处理当用户单击“=”按钮时,计算有关的数据接口与属性Void actionPerformed()Function:处理list链表中存储的运算数、运算符和必要的计算InPut: 无OutPut: 无Ret

10、urn:空HandleEquality()Function:是构造方法,创建HandleEquality对象InPut: t1,t2,t3OutPut:无Return:空数据结构与算法Linkedlist(String)list补充说明无类HandleSin模块名称HandleSin功能描述负责处理用户单击sin按钮进行正弦三角函数的计算接口与属性Void actionPerformed()Function:负责计算正弦函数的值InPut: 无OutPut: 无Return:空HandleSin()Function:是构造方法,创建HandleSin对象InPut: t1,t2,t3OutPu

11、t:无Return:空数据结构与算法Linkedlist(String)list补充说明无类HandleBack模块名称HandleBack功能描述负责处理用户单击“退格”按钮时进行退格操作接口与属性Void actionPerformed()Function:负责处理list链表中存储的运算数InPut: 无OutPut: 无Return:空HandleBack()Function:是构造方法,创建HandleBack对象InPut: t1,t2OutPut:无Return:空数据结构与算法Linkedlist(String)list补充说明无类HandleClear模块名称HandleCl

12、ear功能描述负责处理用户单击C按钮(清零操作)时清除有关的计算结果接口与属性Void actionPerformed()Function:清除list链表中存储的运算数和操作数,设置resultShow中显示的数字为0,清除showComputerProcess中显示的计算过程InPut: 无OutPut: 无Return:空HandleClear()Function:是构造方法,创建HandleClear对象InPut: t1,t2OutPut:无Return:空数据结构与算法Linkedlist(String)list补充说明无类NumberButton模块名称NumberButton功

13、能描述负责创建主窗口中的一个“数字”按钮接口与属性String getNumber()Function:返回数字符号 InPut: 无OutPut: 无Return:数字符号NumberButton()Function:是构造方法,创建NumberButton对象InPut: 无OutPut:无Return:空数据结构与算法Linkedlist(String)list补充说明无4.主要程序实现计算结果保存到文件publicvoid actionPerformed(ActionEvent e)if(e.getSource()=copyButton)saveComputerProcess.copy

14、();if(e.getSource()=clearButton)saveComputerProcess.setText(null);if(e.getSource()=saveButton) JFileChooser chooser = new JFileChooser();int state =chooser.showSaveDialog(null); File file = chooser.getSelectedFile();if(file!=null&&state=JFileChooser.APPROVE_OPTION)try String content = saveCo

15、mputerProcess.getText(); StringReader read = new StringReader(content); BufferedReader in = new BufferedReader(read); FileWriter outOne = new FileWriter(file); BufferedWriter out = new BufferedWriter(outOne); String str = null;while(str= in.readLine()!=null) out.write(str); out.newLine(); in.close()

16、; out.close(); catch(IOException el) 数字处理publicvoid 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

17、if(list.size()=1)int number = b.getNumber(); String num = list.getFirst(); String s = num.concat(""+number);list.set(0,s);resultShow.setText(s);showComputerProcess.setText(""+list.get(0); elseif(list.size()=2)int number = b.getNumber();list.add(""+number);resultShow.set

18、Text(""+number);showComputerProcess.setText(""+list.get(0)+""+list.get(1)+""+list.get(2); elseif(list.size()=3)int number = b.getNumber(); String num = list.getLast(); String s = num.concat(""+number);list.set(2,s);resultShow.setText(s);showComputerP

19、rocess.setText(""+list.get(0)+""+list.get(1)+""+list.get(2); 处理运算符publicvoid actionPerformed(ActionEvent e) OperationButton b = (OperationButton)e.getSource();if(list.size()=1) String fuhao = b.getOperateSign();list.add(fuhao);showComputerProcess.setText(""+li

20、st.get(0)+""+list.get(1); elseif(list.size()=2) String fuhao =b.getOperateSign();list.set(1,fuhao);showComputerProcess.setText(""+list.get(0)+""+list.get(1); elseif(list.size()=3) String numOne =list.getFirst(); String numTwo = list.getLast(); String 运算符号=list.get(1); S

21、tring middleProcess = numOne+""+运算符号+numTwo;trydouble n1 = Double.parseDouble(numOne);double n2 = Double.parseDouble(numTwo);double result = 0;if(运算符号.equals("+") result= n1+n2; elseif(运算符号.equals("-") result=n1-n2; elseif(运算符号.equals("*") result= n1*n2; elsei

22、f(运算符号.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);saveComputerProcess.append(""+middleProcess+&q

23、uot;="+result+"n");resultShow.setText(""+result); catch(Exception ee) 处理小数点publicvoid actionPerformed(ActionEvent e)String dot = e.getActionCommand();if(list.size()=1)String num = list.getFirst();String s = null;if(num.indexOf(dot)=-1)s= num.concat(dot);list.set(0,s);elses=n

24、um;list.set(0,s);resultShow.setText(s);showComputerProcess.setText(""+list.get(0);elseif(list.size()=3)String num = list.getLast();String s = null;if(num.indexOf(dot)=-1)s=num.concat(dot);list.set(2,s);elses= num;resultShow.setText(s);showComputerProcess.setText(""+list.get(0)+&q

25、uot;"+list.get(1)+""+list.get(2);处理正负号publicvoid actionPerformed(ActionEvent e)if(list.size()=1) String number1 =list.getFirst();trydouble d =Double.parseDouble(number1); d=-1*d; String str = String.valueOf(d);list.set(0,str);resultShow.setText(str);showComputerProcess.setText("&

26、quot;+list.get(0); catch(Exception ee) elseif(list.size()=3) String number2 = list.getLast();trydouble d =Double.parseDouble(number2); d= -1*d; String str = String.valueOf(d);list.set(2,str);resultShow.setText(str);showComputerProcess.setText(""+list.get(0)+""+list.get(2); catch(

27、Exception ee) 处理等号publicvoid actionPerformed(ActionEvent e)if(list.size()=1) String num =list.getFirst();resultShow.setText(""+num);showComputerProcess.setText(list.get(0); if(list.size()=2) String num=list.getFirst(); String 运算符号 =list.get(1);trydouble n1 = Double.parseDouble(num);double

28、n2 = Double.parseDouble(num);double result = 0;if(运算符号.equals("+") result= n1+n2;elseif(运算符号.equals("-") result= n1-n2;elseif(运算符号.equals("*") result= n1*n2;elseif(运算符号.equals("/") result= n1/n2;resultShow.setText(""+result); String process= num+&quo

29、t;"+运算符号+""+num+"="+result;showComputerProcess.setText(process);saveComputerProcess.append(""+process+"n");list.set(0,""+result); catch(Exception ee) elseif(list.size()=3) String numOne =list.getFirst(); String 运算符号= list.get(1); String numTwo =

30、 list.getLast();trydouble n1 = Double.parseDouble(numOne);double n2 = Double.parseDouble(numTwo);double result = 0;if(运算符号.equals("+") result= n1+n2;elseif(运算符号.equals("-") result= n1-n2;elseif(运算符号.equals("*") result= n1*n2;elseif(运算符号.equals("/") result= n1/

31、n2;resultShow.setText(""+result); String process= numOne+""+运算符号+""+numTwo+"="+result;showComputerProcess.setText(process);saveComputerProcess.append(""+process+"n");list.set(0,""+result);list.removeLast();/移到第二个运算符;list.removeLas

32、t();/移调运算符号; catch(Exception ee) 处理正弦函数publicvoid actionPerformed(ActionEvent e)if(list.size()=1|list.size()=2) String numOne =list.getFirst();trydouble x =Double.parseDouble(numOne);double result =Math.sin(x); String str = String.valueOf(result);list.set(0,str);resultShow.setText(str); String proce

33、ss = "sin("+numOne+")"+result;showComputerProcess.setText(process);saveComputerProcess.append(""+process+"n");if(list.size()=2)list.removeLast(); catch(Exception ee) elseif(list.size()=3) String numTwo =list.getLast();try double x =Double.parseDouble(numTwo);d

34、ouble result = Math.sin(x); String str = String.valueOf(result);list.set(0,str);resultShow.setText(str); String process ="sin("+numTwo+")="+result;showComputerProcess.setText(process);saveComputerProcess.append(""+process+"n");list.removeLast();/移掉第二个运算数;list.removeLast();/移掉运算符号 catch(Exception ee) 处理退格操作publ

温馨提示

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

评论

0/150

提交评论