




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目目 录录1.需求分析.12.概要设计.23.详细设计.43.1UML 图 .43.2 类设计图.74.主要程序实现.155.测试与结果.226.心得体会.25参考文献.2511. 需求分析需求分析引子引子.随着计算机技术的飞速发展,人们已经不能满足于采用人工进行大量的计算,计算器快速的计算速度和稳定的准确率很好的满足了用户的需要,保存计算过程的计算器更是能够让用户随时随地的查找以前的计算过程。保存计算过程的计算器正是在这样的市场需求之下研发的,目的旨在帮助用户快速准确的得到计算结果。 目的目的 1.掌握 JAVA 语言编程的基础知识并能熟练运用。 2.熟悉类声明与对象的使用。 3.理解委托时
2、间处理模型。 4.了解 JAVA 语言的图形用户界面 JAVAS WING 的设计知识。 5.运用 Eclipse 编写简单计算器程序,并实现其功能 。 系统目标系统目标一个简单的计算器程序。用户可以利用鼠标点击数值或操作符按键完成计算的输入,计算的结果将被显示在窗口上部的文本框中。主体功能主体功能 1.按下数字键在文本框上会显示数字,这是计算器最基本的功能2.在任何时候按下“+-”键,计算器文本框上的数字置反3.右边一个文本框显示计算过程,上面一个文本框显示输入的数字4.当按下的运算符号时前面已经按下过运算符号时,右边一个文本框显示上一个运算符号以及两个数之间的运算结果。5. 按下清除“C”
3、键,数据被全部清除。开发环境开发环境 JDK,Eclipse22. 概要设计概要设计一、功能图:保存计算过程的计算器单击数字按钮设置计算的运算数单击运算符按钮选择运算符单击函数按钮计算相应函数值单击等号显示计算结果在一个文本区显示以往的计算过程单击保存按钮将计算结果保存到文件单击复制按钮复制文本区的内容到剪贴板单击清除按钮清除文本区中的全部内容3二、系统流程图计算器计算算法计算器矫正架堆栈普通型科学型getButton计算数据getButtonputOperator禁用一般计算trigonom计量43. 详细设计详细设计 3.1 UML 图图类关系总图类关系总图5Calculator Wind
4、ow 类类+actionPeformed() : void+CalculatorWindow()+main() : void-numberButton-operationButton-小数点操作,正负号操作,退格操作,等号操作,清零操作,sin,saveButton,copyButton,clearButton-resultShow,showComputerProcess-saveComputerProcess-list-handleDigit-handleOperation-handleBack-handleClear-handleEquality-handleDot-handlePOrN-
5、handleSinCalculatorWindowJFrameActonListemer 图 3.1Calculator Window 的 UML 图6NumberButton 类类+NumberButton()+getNumber() : int-number : intNumberButtonJButotn-numberButtonCalculatorWindow-结束11-结束2*图 3.2 NumberButton 类的 UML 图OperationButton 类类-operationButtonCalculatorWindow+OperationButon()+getOperati
6、onSign() : string-operationSign : stringOperationButtonJButotn-结束11-结束2*图 3.3 OperationButton 类的 UML 图HandleDigit 类类-HandleDigitCalculatorWindow+HandleDigit()+actionPerformed() : void-list-resultShow-showComputerProcessHandleDigitActionListerner-结束11-结束2*图 3.4 HandleDigit 类的 UML 图7HandleOperation 类类
7、+HandleOperation()+actionPerformed() : void-list-resultShow-showComputerProcess-saveComputerProcessHandleOpetationActionListerner-结束11-结束2*-handleDigit-HandleOperationCalculatorWindow图 3.5 HandleOperation 类的 UML 图HandleDot 类类+HandleDot()+actionPerformed() : void-list-resutlShow-showComputerProcessHa
8、ndleDotActionListerner1*-handleDotCalculatorWindow图 3.6 HandleDot 类的 UML 图HandlePOrN 类类+HandlePOrN()+actionPerformed() : void-list-resutlShow-showComputerProcessHandlePOrNActionListerner1*-handlePOrNCalculatorWindow图 3.7 HandlePOrN 类的 UML 图8HandleEquality 类类+HandleEquality()+actionPerformed() : void
9、-list-resutlShow-showComputerProcess-saveComputerProcessHandleEqualityActionListerner1*-handleEquality-handleEqualityCalculatorWindow图 3.8 HandleEquality 类的 UML 图HandleSin 类类+HandleSin()+actionPerformed() : void-list-resutlShow-showComputerProcessHandleSinActionListerner1*-handleSinCalculatorWindow图
10、 3.9 HandleSin 类的 UML 图HandleBack 类类+HandleBack()+actionPerformed() : void-list-resutlShow-showComputerProcessHandleBackActionListerner1*-handleBackCalculatorWindow图 3.10 HandleBack 类的 UML 图9HandleClear 类类+HandleClear()+actionPerformed() : void-list-resutlShow-showComputerProcessHandleClearActionLis
11、terner1*-handleClearCalculatorWindow图 3.11 HandleClear 类的 UML 图3.2 类设计图类设计图类类 CalculatorWindow模块名称CalculatorWindow功能描述负责创建计算器的主窗口接口与属性Void actionPerformed()Function:对saveButton,copyButton,clearButton三个按钮的ActionEvent事件监听InPut: 无OutPut: 无Return:空CalculatorWindow()Function:是构造方法,负责完成窗口的初始化InPut: 无OutPu
12、t:无Return:空Static void Main()Functon:是计算器程序运行的入口方法InPut:无OutPut:无Return:空数据结构与算法LinkedlistLinkedlist(StringString)list补充说明无10类类 OperationButton模块名称OperationButton功能描述创建主窗口中的一个“运算符”按钮接口与属性String getOperationSign()Function:返回操作符号 InPut: 无OutPut: 无Return:运算符号OperationButton()Function:是构造方法,创建OperationB
13、utton对象InPut: SOutPut:无Return:空数据结构与算法无补充说明无类类 HandleDigit模块名称HandleDigit功能描述用户单击“数字”按钮时,负责处理和运算符有关的计算结果接口与属性Void actionPerformed()Function:处理list链表中存储的第一个操作数和第二个操作数 InPut: 无OutPut: 无Return:空HandleDigit()Function:是构造方法,创建HandleDigit对象InPut: t1,t2OutPut:无Return:空数据结构与算法LinkedlistLinkedlist(StringStri
14、ng)list补充说明无11类类 HandleOperation模块名称HandleOperation功能描述用户单击“运算符”按钮时,负责处理和运算符有关的计算结果接口与属性Void actionPerformed()Function:处理list链表中存储的运算符和必要的计算 InPut: 无OutPut: 无Return:空HandleOperation()Function:是构造方法,创建HandleOperationt对象InPut: t1,t2,t3OutPut:无Return:空数据结构与算法LinkedlistLinkedlist(StringString)list 补充说明无
15、类类 HandleDot模块名称HandleDot功能描述负责处理小数点接口与属性Void actionPerformed()Function:处理list链表中存储的运算数InPut: 无OutPut: 无Return:空HandleDot()Function:是构造方法,创建HandleDot对象InPut: t1,t2OutPut:无Return:空数据结构与算法LinkedlistLinkedlist(StringString)list 补充说明无12类类 HandlePOrN模块名称HandlePOrN功能描述负责处理用户单击“+/-”按钮时,对数字进行正负转换接口与属性Void a
16、ctionPerformed()Function:处理list链表中存储的运算数InPut: 无OutPut: 无Return:空HandlePOrN()Function:是构造方法,创建HandlePOrN对象InPut: t1,t2OutPut:无Return:空数据结构与算法LinkedlistLinkedlist(StringString)list 补充说明无类类 HandleEquality模块名称HandleEquality功能描述负责处理当用户单击“=”按钮时,计算有关的数据接口与属性Void actionPerformed()Function:处理list链表中存储的运算数、运
17、算符和必要的计算InPut: 无OutPut: 无Return:空HandleEquality()Function:是构造方法,创建HandleEquality对象InPut: t1,t2,t3OutPut:无Return:空数据结构与算法LinkedlistLinkedlist(StringString)list 补充说明无13类类 HandleSin模块名称HandleSin功能描述负责处理用户单击sin按钮进行正弦三角函数的计算接口与属性Void actionPerformed()Function:负责计算正弦函数的值InPut: 无OutPut: 无Return:空HandleSin(
18、)Function:是构造方法,创建HandleSin对象InPut: t1,t2,t3OutPut:无Return:空数据结构与算法LinkedlistLinkedlist(StringString)list 补充说明无类类 HandleBack模块名称HandleBack功能描述负责处理用户单击“退格”按钮时进行退格操作接口与属性Void actionPerformed()Function:负责处理list链表中存储的运算数InPut: 无OutPut: 无Return:空HandleBack()Function:是构造方法,创建HandleBack对象InPut: t1,t2OutPut
19、:无Return:空数据结构与算法LinkedlistLinkedlist(StringString)list 补充说明无14类类 HandleClear模块名称HandleClear功能描述负责处理用户单击C按钮(清零操作)时清除有关的计算结果接口与属性Void actionPerformed()Function:清除list链表中存储的运算数和操作数,设置resultShow中显示的数字为0,清除showComputerProcess中显示的计算过程InPut: 无OutPut: 无Return:空HandleClear()Function:是构造方法,创建HandleClear对象InP
20、ut: t1,t2OutPut:无Return:空数据结构与算法LinkedlistLinkedlist(StringString)list 补充说明无类类 NumberButton模块名称NumberButton功能描述负责创建主窗口中的一个“数字”按钮接口与属性String getNumber()Function:返回数字符号 InPut: 无OutPut: 无Return:数字符号NumberButton()Function:是构造方法,创建NumberButton对象InPut: 无OutPut:无Return:空数据结构与算法LinkedlistLinkedlist(StringSt
21、ring)list 补充说明无154.主要程序实现主要程序实现计算结果保存到文件public void actionPerformed(ActionEvent e) if(e.getSource()=copyButton) saveComputerProcess.copy(); if(e.getSource()=clearButton) saveComputerProcess.setText(null); if(e.getSource()=saveButton) JFileChooser chooser = new JFileChooser(); int state =chooser.show
22、SaveDialog(null); File file = chooser.getSelectedFile(); if(file!=null&state=JFileChooser.APPROVE_OPTION) try String content = saveComputerProcess.getText(); StringReader read = new StringReader(content); BufferedReader in = new BufferedReader(read); FileWriter outOne = new FileWriter(file); Buf
23、feredWriter out = new BufferedWriter(outOne); String str = null; while(str= in.readLine()!=null) out.write(str); out.newLine(); in.close(); out.close(); catch(IOException el) 数字处理public void actionPerformed(ActionEvent e) NumberButton b = (NumberButton)e.getSource(); if(list.size()=0) int number = b
24、.getNumber(); list.add(+number); resultShow.setText(+number); showComputerProcess.setText(+list.get(0); 16 else 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);
25、else if(list.size()=2) int number = b.getNumber(); list.add(+number); resultShow.setText(+number); showComputerProcess.setText(+list.get(0)+list.get(1)+list.get(2); else if(list.size()=3) int number = b.getNumber(); String num = list.getLast(); String s = num.concat(+number); list.set(2,s); resultSh
26、ow.setText(s); showComputerProcess.setText(+list.get(0)+list.get(1)+list.get(2); 处理运算符public void actionPerformed(ActionEvent e) OperationButton b = (OperationButton)e.getSource(); if(list.size()=1) String fuhao = b.getOperateSign(); list.add(fuhao); showComputerProcess.setText(+list.get(0)+list.get
27、(1); else if(list.size()=2) String fuhao =b.getOperateSign(); list.set(1,fuhao); showComputerProcess.setText(+list.get(0)+list.get(1); else if(list.size()=3)17 String numOne =list.getFirst(); String numTwo = list.getLast(); String 运算符号=list.get(1); String middleProcess = numOne+运算符号+numTwo; try doub
28、le n1 = Double.parseDouble(numOne); double n2 = Double.parseDouble(numTwo); 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; String fuhao = b.getOperateSign(); list.clear(); list.add(
29、+result); list.add(fuhao); String pro= middleProcess+=+result+list.get(1); showComputerProcess.setText(pro); saveComputerProcess.append(+middleProcess+=+result+n); resultShow.setText(+result); catch(Exception ee) 处理小数点public void actionPerformed(ActionEvent e)String dot = e.getActionCommand();if(lis
30、t.size()=1)String num = list.getFirst();String s = null;if(num.indexOf(dot)=-1)s= num.concat(dot);18list.set(0,s);elses=num;list.set(0,s);resultShow.setText(s);showComputerProcess.setText(+list.get(0);else if(list.size()=3)String num = list.getLast();String s = null;if(num.indexOf(dot)=-1)s=num.conc
31、at(dot);list.set(2,s);else s= num;resultShow.setText(s);showComputerProcess.setText(+list.get(0)+list.get(1)+list.get(2);处理正负号public void actionPerformed(ActionEvent e) if(list.size()=1) String number1 =list.getFirst(); try double d =Double.parseDouble(number1); d=-1*d; String str = String.valueOf(d
32、); list.set(0,str); resultShow.setText(str); showComputerProcess.setText(+list.get(0); catch(Exception ee) else if(list.size()=3) String number2 = list.getLast(); try double d =Double.parseDouble(number2); d= -1*d; String str = String.valueOf(d);19 list.set(2,str); resultShow.setText(str); showCompu
33、terProcess.setText(+list.get(0)+list.get(2); catch(Exception ee) 处理等号public void 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); tr
34、y double n1 = Double.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 process= num+运算符号+num+
35、=+result; showComputerProcess.setText(process); saveComputerProcess.append(+process+n); list.set(0,+result); catch(Exception ee) else if(list.size()=3)20 String numOne =list.getFirst(); String 运算符号= list.get(1); String numTwo = list.getLast(); try double n1 = Double.parseDouble(numOne); double n2 =
36、Double.parseDouble(numTwo); 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 process= numOne+运算符号+numTwo+=+result; showComputerProcess.setText(proc
37、ess); saveComputerProcess.append(+process+n); list.set(0,+result); list.removeLast();/移到第二个运算符; list.removeLast();/移调运算符号; catch(Exception ee) 处理正弦函数public void actionPerformed(ActionEvent e) if(list.size()=1|list.size()=2) String numOne =list.getFirst(); try double x =Double.parseDouble(numOne); do
38、uble result =Math.sin(x); String str = String.valueOf(result); list.set(0,str); resultShow.setText(str); String process = sin(+numOne+)+result; showComputerProcess.setText(process); saveComputerProcess.append(+process+n); if(list.size()=2) list.removeLast(); 21 catch(Exception ee) else if(list.size()=3) String numTwo =list.getLast(); try double x =Double.parseDouble(numTwo); double result = Math.sin(x); String str = String.valueOf(result); list.set(0,str); resultShow.setText(str); String process =sin(+numTwo+)=+res
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 健康险发展空间扩大路径与对策
- 功能性碳纤维材料生产项目可行性研究报告(模板范文)
- 车间焊接安全施工方案
- 幼儿园多吃蔬菜不挑食卫生教育
- 广东省汕头市2023-2024学年高三上学期12月期中考政治含解析
- 广西中医药大学赛恩斯新医药学院《计算机辅助设计》2023-2024学年第二学期期末试卷
- 大连医科大学《数据库原理及应用课程设计》2023-2024学年第二学期期末试卷
- 武汉警官职业学院《艺术哲学与社会批判》2023-2024学年第二学期期末试卷
- 大连交通大学《民俗学》2023-2024学年第二学期期末试卷
- 南京医科大学康达学院《化学反应工程(双语)》2023-2024学年第二学期期末试卷
- 食品配送服务质量管理制度
- 透析器产业规划专项研究报告
- 鼻咽癌放射治疗技术
- 航空发动机部件快速修复技术
- GB/T 44713-2024节地生态安葬服务指南
- 避孕方法课件教学课件
- 2024年大学生求职面试技巧培训课件
- 2025年江苏高中物理学业水平合格性考试试卷试题(含答案解析)
- 工程质量检测监理制度
- 代持房屋合作协议书范本
- 《西厢记》完整版本
评论
0/150
提交评论