下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、下载可编辑Java 课程设计报告保存计算过程的计算器的设计专业计算科学与技术 (网络技术 )学生姓名班级.专业 .整理 .下载可编辑学号1指导教师完成日期.专业 .整理 .下载可编辑目录1设计要求 .12总体设计 .12.1CalculatorWindow 类设计 .22.2NumberButton类设计 .22.3OperationButton类设计 .22.4HandleDigit类设计 .22.5HandleOperation类设计 .32.6HandleDot 类设计 .32.7HandleEquality类设计 .32.8HandleSin 类设计 .32.9HandleBack 类
2、设计 .32.10 HandleClear类设计 .32.11 HandlePOrN 类设计 .33详细设计 .33.1CalculatorWindow 类 .33.2NumberButton类.103.3OperationButton类 .123.4HandleDigit类 .133.5HandleOperation类 .163.6HandleDot 类.193.7HandlePOrN类.213.8HandleEquality类 .233.9HandleSin 类 .273.10 HandleBack类 .303.11 HandleClear类 .324代码调试问题 .345软件发布 .34
3、6程序运行效果 .347设计心得 .36.专业 .整理 .下载可编辑保存过程的计算器的设计1 设计要求Windows 2000/XP 系统中的 “计算器 ”是一个方便实用的计算机工具 ,但是没有提供显示计算过程的功能 。本计算器所遵循的计算规则与 Windows 2000/XP 系统中的 “计算器 ”相同 ,出了具有普通的计算功能外 ,还具有现实计算过程 ,保存计算过程的功能 。(1)单击“计算器 ”上的数字按钮 (0、1、 2、3、4、5、6、7、8、9)可以设置参与计算的运算数 。(2)单击 “计算器 ”上的运算符按钮 ( + 、-、 *、 / )可以选择运算符号 。(3)单击 “计算器
4、”上的函数按钮可以显示相应的函数值。(4)单击 “计算器 ”上的 “= ”按钮显示计算结果 。(5)在一个文本框中显示当前的计算过程 ,在一个文本区中显示以往的计算过程和发生计算时的系统时间 。(6)单击 “保存 ”按钮可以将文本区中的全部计算过程保存到文件 ;单击 “复制 ”按钮可以将文本区中选中的文本复制到剪贴板 ;单击 “清除 ”按钮可以清楚文本区中的全部内容 。2 总体设计在设计计算器时,可以编写11 个 Java 源文件 : CalculatorWindow.java、NumberButton.java、OperationButton.java、HandleDigit.java、Ha
5、ndleOperation.java、HandleDot.java 、HandleEquality.java 、 HandleSin.java 、HandleBack.java 、 HandleClear.java 、 HandlePOrN.java 。计算器除了上述的11 个 Java 源文件给出的类外 ,还需要 Java 提供的一些重要的类,入 JButton 、JTextField、JTextArea 和 LinkedList 等。CalculatorWindowJButtonJTexrAreaHandleDotHandleSinLinkedListHandleDigitHandleDo
6、tHandlePOrNHandleBackHandleBackJTextFieldNumberButtonOperationButtonHandleOperationHandleEquality.专业 .整理 .下载可编辑图 2.1 类之间的组合关系2.1 CalculatorWindow类设计CalculatorWindow类负责创建计算器的主窗口,该类含有 Main 方法,计算器从 该 类 开 始 执 行 。 CalculatorWindow有 十 四 种 类 型 的 对 象 , 分 别 是LinkedList、 NumberButton、 OperationButton、 JButton
7、 、 JTextField、JTextArea 、 HandleDigit、 HandleOperation、 HandleDot、 HandleEquality 、HandleSin 、 HandleBack 、 HandleClear 、 HandlePOrN对象。 CalcuatorWindow类创建的窗口以及其中的主要成员如图 2.2 所示 。CalculatorWindow 类的主要成员的作用将在后面的详细设计中阐述 。图 2.2 CalculatorWindow窗口及主要的对象成员2.2 NumberButton类设计NumberButton 类创建的对象是主类 Calculato
8、rWindow 窗口中的一个 “数字 ” 按钮 。 NumberButton 类有一个 int 类型的成员 number ,标明所创建的按钮所含有的数字 。NumberButton 所创建的 10 个按钮被添加到 CalcuatorWindow 窗口中。2.3 OperationButton类设计OperationButton类创建的对象是主类CalculatorWindow窗口中的一个 “运算符”按钮 。OperationButton类有一个 String 类型的成员 operateSign ,用于标明所创建的按钮所含有的运算符号。 OperationButton所创建的4 个按钮被添加到C
9、alculatorWindow窗口中。2.4 HandleDigit类设计HandleDigit类创建的对象负责处理ActionEvent 事件 。当用户单击 “数字 ”按钮.专业 .整理 .下载可编辑时,HandleDigit类所创建的对象负责处理和数字有关的计算过程。2.5 HandleOperation类设计HandleOperation 类创建的对象负责处理 ActionEvent 事件,当用户单击 “运算符 ”按钮时 , HandleOperation 类所创建的对象负责处理和运算符有关的计算过程。2.6 HandleDot类设计HandleDot 类创建的对象负责处理 Action
10、Event 事件,当用户单击 “.”按钮 (小数点)时,HandleDot 类所创建的对象负责处理小数点 。2.7 HandleEquality类设计HandleEquality 类创建的对象负责处理 ActionEvent 事件 。 当用户单击 “= ”按钮时,HandleEquality 类所创建的对象计算有关数据 。2.8 HandleSin 类设计HandleSin 类创建的对象负责处理 ActionEvent 事件 。 当用户单击 “sin ”按钮(正弦三角函数 )时,HandleSin 类所创建的对象负责处理正弦三角函数的值 。2.9 HandleBack 类设计HandleBac
11、k 类创建的对象负责处理 ActionEvent 事件 。当用户单击 “退格 ”按钮时,HandleBack 类所创建的对象负责计算正弦三晋函数的值 。2.10 HandleClear类设计HandleClear 所创建的对象负责处理 ActionEvent 事件 。 当用户成功单击 C 按钮(清零)时,HandleClear 类所创建的对象负责清除有关的计算结果 。2.11 HandlePOrN类设计HandlePOrN 类创建的对象负责处理 ActionEvent 事件 。 当用户单击 “+/- ”(正负)按钮时, HandlePOrN 类所创建的对象负责处理数字的正负转换 。3 详细设计
12、3.1CalculatorWindow类1、效果图CalculatorWindow创建的窗口效果如图3.1 所示 。.专业 .整理 .下载可编辑图 3.1 CalculatorWindow创建的窗口2、 UML 图CalculatorWindow类是javax.swing包中JFrame 的一个子类,并实现了ActionListener接口。标明该类的主要成员变量和方法的UML 图如图 3.2 所示 。JFrameActionListenerCalculatorWindownumberButton:NumberButton;handleDigit:HandleDigitoperationBut
13、ton:OperationButton;handleOperation:HandleOperationFlex, zhengfu, Backspace, Equals, Zero, sin:JButtonhandleBack:HandleBackresultShow,showComputerProcess:JTextFieldhandleClear:HandleClearsaveComputerProcess:JTextAreahandleEquality:HandleEqualitylist:LinkedListhandleDot:HandleDothandlePOrN:HandlePOrN
14、handleSin:HandleSinactionPerformed(ActionEvent):voidCalculatorWindow():无类型main(String):void图 3.2 CalculatorWindow类的 UML 图3、类设计模块名称CalculatorWindow功能描述负责创建计算器的主窗口Void actionPerformed()Function: 对saveButton, copyButton, clearButton三 个 按 钮 的ActionEvent事件监听接口与属性InPut:无OutPut:无Return: 空.专业 .整理 .下载可编辑Calc
15、ulatorWindow()Function: 是构造方法 ,负责完成窗口的初始化InPut:无OutPut: 无Return: 空Static void Main()Functon :是计算器程序运行的入口方法InPut :无OutPut :无Return :空数据结构Linkedlist ( String ) list与算法补充说明无4、代码( CalculatorWindow.java )import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.*;import jav
16、a.util.LinkedList;import java.io.*;public class CalculatorWindow extends JFrame implements ActionListener NumberButton numberButton;OperationButton operationButton;JButton Flex, zhengfu, Backspace, Equals, Zero, sin;JTextField resultShow;/ 显示计算结果JTextField showComputerProcess; /显示当前计算过程JTextArea sav
17、eComputerProcess; /显示计算步骤JButton saveButton, copyButton, clearButton;LinkedList list; /链表用来存放第一个运算数、运算符号和第二个运算数HandleDigit handleDigit;/ 负责处理ActionEvent事件HandleOperation handleOperation;HandleBack handleBack;HandleClear handleClear;.专业 .整理 .下载可编辑HandleEquality handleEquality;HandleDot handleDot;Hand
18、lePOrN handlePOrN;HandleSin handleSin;public CalculatorWindow() setTitle( 计算器计算机 112 班 程逸群 );JPanel panelLeft, panelRight;list = new LinkedList();resultShow = new JTextField(10);resultShow.setHorizontalAlignment(JTextField.RIGHT);resultShow.setForeground(Color.blue);resultShow.setFont(new Font(Times
19、Roman, Font.BOLD, 16);resultShow.setBorder(new SoftBevelBorder(BevelBorder.LOWERED);resultShow.setEditable(false);resultShow.setBackground(Color.white); showComputerProcess = new JTextField(); showComputerProcess.setHorizontalAlignment(JTextField.CENTER); showComputerProcess.setFont(new Font(Arial,
20、Font.BOLD, 16); showComputerProcess.setBackground(Color.cyan); showComputerProcess.setEditable(false); saveComputerProcess = new JTextArea();saveComputerProcess.setEditable(false);saveComputerProcess.setFont(new Font(宋体 , Font.PLAIN, 16);numberButton = new NumberButton10;handleDigit = new HandleDigi
21、t(list, resultShow, showComputerProcess); for (int i = 0; i = 9; i+) numberButtoni = new NumberButton(i);numberButtoni.setFont(new Font(Arial, Font.BOLD, 20);numberButtoni.addActionListener(handleDigit);operationButton = new OperationButton4;handleOperation = new HandleOperation(list, resultShow,sho
22、wComputerProcess, saveComputerProcess);.专业 .整理 .下载可编辑String yunsuan = +, -, *, /;for (int i = 0; i 4; i+) operationButtoni = new OperationButton(yunsuani); operationButtoni.setFont(new Font(Arial, Font.BOLD, 20); operationButtoni.addActionListener(handleOperation);Flex = new JButton(.);handleDot = n
23、ew HandleDot(list, resultShow, showComputerProcess); Flex.addActionListener(handleDot); zhengfu = new JButton(+/-);handlePOrN = new HandlePOrN(list, resultShow, showComputerProcess); zhengfu.addActionListener(handlePOrN); Equals = new JButton(=);handleEquality = new HandleEquality(list, resultShow,s
24、howComputerProcess, saveComputerProcess);Equals.addActionListener(handleEquality);sin = new JButton(sin);handleSin = new HandleSin(list, resultShow,showComputerProcess, saveComputerProcess);sin.addActionListener(handleSin);Backspace = new JButton(退格 );handleBack = new HandleBack(list, resultShow, sh
25、owComputerProcess); Backspace.addActionListener(handleBack); Zero = new JButton(C);handleClear = new HandleClear(list, resultShow, showComputerProcess);Zero.addActionListener(handleClear);Zero.setForeground(Color.red);Backspace.setForeground(Color.red);Equals.setForeground(Color.red);sin.setForegrou
26、nd(Color.blue);zhengfu.setForeground(Color.blue);Flex.setForeground(Color.blue);panelLeft = new JPanel();.专业 .整理 .下载可编辑panelRight = new JPanel();panelLeft.setLayout(new BorderLayout();JPanel centerInLeft = new JPanel();panelLeft.add(resultShow, BorderLayout.NORTH);panelLeft.add(centerInLeft, BorderL
27、ayout.CENTER);centerInLeft.setLayout(new GridLayout(4, 5);centerInLeft.add(numberButton1);centerInLeft.add(numberButton2);centerInLeft.add(numberButton3);centerInLeft.add(operationButton0);centerInLeft.add(Zero);centerInLeft.add(numberButton4);centerInLeft.add(numberButton5);centerInLeft.add(numberB
28、utton6);centerInLeft.add(operationButton1);centerInLeft.add(Backspace);centerInLeft.add(numberButton7);centerInLeft.add(numberButton8);centerInLeft.add(numberButton9);centerInLeft.add(operationButton2);centerInLeft.add(sin);centerInLeft.add(numberButton0);centerInLeft.add(zhengfu);centerInLeft.add(F
29、lex);centerInLeft.add(operationButton3);centerInLeft.add(Equals);panelRight.setLayout(new BorderLayout();panelRight.add(showComputerProcess, BorderLayout.NORTH);saveButton = new JButton(保存 );copyButton = new JButton(复制 );clearButton = new JButton(清除 );saveButton.setToolTipText( 保存计算过程到文件);copyButton
30、.setToolTipText( 复制选中的计算过程);.专业 .整理 .下载可编辑clearButton.setT oolTipText( 清除计算过程 );saveButton.addActionListener(this);copyButton.addActionListener(this);clearButton.addActionListener(this);panelRight.add(new JScrollPane(saveComputerProcess), BorderLayout.CENTER);JPanel southInPanelRight = new JPanel();
31、southInPanelRight.add(saveButton);southInPanelRight.add(copyButton);southInPanelRight.add(clearButton);panelRight.add(southInPanelRight, BorderLayout.SOUTH);JSplitPanesplit=newJSplitPane(JSplitPane.HORIZONTAL_SPLIT,panelLeft,panelRight);add(split, BorderLayout.CENTER);setDefaultCloseOperation(JFrame
32、.EXIT_ON_CLOSE);setVisible(true);setBounds(100, 50, 528, 258);validate();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
33、 JFileChooser();int state = chooser.showSaveDialog(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
34、(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();out.close(); catch (IOException e1) public static void main(String args) new CalculatorWindow();3.2NumberButto
35、n类1、效果图NumberButton创建的数字按钮效果如图3.3 所示 。图 3.3 NumberButton创建的数字按钮2、 UML 图NumberButton类是 javax.swing 包中 JButton 的一个子类 ,所创建的对象是CalculatorWindow类中 NumberButton型数组: numberButton中的元素 。标明NumberButton类的主要成员变量 、方法以及 CalculatorWindow类之间组合关系的 UML 图如图 3.4 所示 。JButton.专业 .整理 .下载可编辑NumberButtonCalculatorWindownumb
36、er:intnumberButton:NumberButtonNumberButton(int):无类型getNumber():int图 3.4 NumberButton类的 UML 图3、类设计模块名称NumberButton功能描述负责创建主窗口中的一个“数字 ”按钮StringgetNumber()接口与属性Function :返回数字符号InPut:无OutPut:无Return :数字符号NumberButton()Function: 是构造方法 ,创建 NumberButton对象InPut:无OutPut: 无Return: 空数据结构Linkedlist ( String )
37、list与算法补充说明无4、代码( NumberButton.java)import java.awt.*;import java.awt.event.*;import javax.swing.*;public class NumberButton extends JButton int number;public NumberButton(int number) super( + number);this.number = number;setForeground(Color.blue);public int getNumber() .专业 .整理 .下载可编辑return number;3
38、.3 OperationButton类1、效果图OperationButton创建的运算符按钮的效果如图3.5 所示 。图 3.5 OperationButton创建的数字按钮2、 UML 图OperationButton是 Javax.swing 包中 JButton 组件的子类 。 所创建的对象是CalculatorWindow类中 OperationButton型数组 :operationButton中的元素 。标明OperationButton类的主要成员变量 、方法以及和CalculatorWindow类直接的组合关系的 UML 如图 3.6 所示 。JButtonOperation
39、ButtonCalculatorWindowoperationSign:StringOperationButton:OperationButtonOperationButton(String):无类型getOperation():String图 3.6 OperationButton类的 UML 图3、类设计模块名称OperationButton功能描述创建主窗口中的一个 “运算符 ”按钮StringgetOperationSign()Function :返回操作符号InPut:无OutPut:无接口与属性Return :运算符号OperationButton()Function: 是构造方法
40、 ,创建 OperationButton对象InPut: S.专业 .整理 .下载可编辑OutPut: 无Return: 空数据结构无与算法补充说明无4、代码( OperationButton.java)import java.awt.*;import java.awt.event.*;import javax.swing.*;public class OperationButton extends JButton String operateSign;public OperationButton(String s) super(s);operateSign = s;setForeground(Color.red);public String getOperateSign() return operateSign;3.4 HandleDigit类1、效果图HandleDigit类创建的对象无效果图。2、 UML 图HandleDigit类实现了ActionList
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 餐饮冷链解决方案
- 建设工程管理总结
- 高三化学二轮复习 -《探究性实验微专题》说播课课件
- 防溺水防雷击安全教育
- 开花树课件教学课件
- 3.3.2氮氧化物及含氮废水的处理 课件高一上学期化学鲁科版(2019)必修第一册
- 药物滥用危害健康
- 迈柯维呼吸机培训
- 急性创伤相关知识及护理常规
- 酒店如何做好食品安全
- 环境因素汇总识别及评价表(保卫部 )
- 计算工具发展认识
- 医院品牌建设课件
- JJG 113-2013标准金属洛氏硬度块(A,B,C,D,E,F,G,H,K,N,T标尺)
- GB/T 5169.5-2020电工电子产品着火危险试验第5部分:试验火焰针焰试验方法装置、确认试验方法和导则
- GB/T 1957-2006光滑极限量规技术条件
- GB/T 1423-1996贵金属及其合金密度的测试方法
- GB/T 10002.1-2006给水用硬聚氯乙烯(PVC-U)管材
- 机械设计齿轮传动设计课件
- 杜甫-大学语文课件
- 产城(产业发展基础、城服务功能)融合示范建设总体方案
评论
0/150
提交评论