您好,欢迎来到九壹网。
搜索
您的当前位置:首页计算器

计算器

来源:九壹网


题目一 计算器

1.1 题目简介

用JAVA语言在MyEclipse环境中设计一个GUI简易计算器,用户可以通过鼠标一次输入参加计算的数值,进行加减乘除对数开方三角函数等混合运算。

1.2 设计的内容、要求和目标

 设计内容:

设计一个GUI简易计算器,用户可以通过鼠标一次输入参加计算的数值,进行加减乘除开方三角函数对数等混合运算。

 设计要求和目标:

(1) 单击“计算器”上的函数按钮可以得到相应的函数值; (2) 单击“计算器”上的数字和运算符按钮可以进行数据运算; (3) 单击“计算器”上的函数按钮可以得到相对应的函数值; (4) 单击“计算器”上的“=”可以得到运算结果;

(5) 在文本框中显示当前的运算过程,并在另一个文本区中显示

以往的运算过程和结果;

(6) 单击“保存”按钮可以将文本区中的数据全部存储到一个文

件中,单击“复制”按钮可以将文本区选中的文本复制到剪切板,单击“清楚”按钮可以清除文本区中的全部内容。

1.3 总体设计

计算器设计程序中编写了17个Java源文件:CalculatorWindow.java、

- 1 -

HandleBack.java、NumberButton.java、HandleOperation.java、HandleDigit.java、HandleClear.java、HandleSin.java、HandleCos.java、HandleTan.java、HandleSqrt.java、HandleLog.java、HandleEquality.java、HandlePOrN.java、HandleDot.java、HandleDownNumber.java、HandleHelp.java和OperationButton.java。

程序中除了给出上述17个Java源文件所定义的类外,还需要定义Java系统提供的一些重要的类,如JButton,JTextArea,JTextField,LinkedList等等。计算器中所用的一些重要的功能、类以及之间的组合关系如图1-1、1-2所示。

功能图 保存 清空 复制 帮助 保存存储过程 清空存储过程 复制上一次的计算数据 帮助说明 图1-1 功能图 CalculatorWindow NumberButton OperationButton HandleOperation HandleEquality HandleSin HandleBack HandleDownNumber 用来定义数字用来定义运算符的操作按钮 用来运算符有关的运算过程 用来定义运算过程等号操作 用来运算过程中正弦的计算 用来运算过程中的退格操作 用来定义保存 - 2 -

图1-2 类之间的组合图

 CalculatorWindow.java(主类)

CalculatorWindow类负责创建计算器的主窗口,该类含有main 方法,计算器从该类开始执行。CalculatorWindow类共有20种类型的对象,分别是HandleBack、NumberButton、HandleOperation、HandleDigit、HandleClear、HandleSin、HandleCos、HandleTan、HandleSqrt、HandleLog、HandleEquality、 HandlePOrN、HandleDot、HandleDownNumber、HandleHelp、OperationButton、 JButton、JTextArea、JTextField和LinkedList。

CalculatorWindow类创建的窗口如图1-3所示。

图1-3 窗口效果图

 HandleBack.java

HandleBack类创建的对象负责处理ActionEvent事件。当用户单击“退格”时,HandleBack类所创建的对象进行退格操作。  HandleDigit.java

- 3 -

HandleDigit类创建的对象负责处理ActionEvent事件,当用户单击“数字”按钮时,HandleDigit类所创建的对象进行数字有关的计算。  HandleDot.java

HandleDot类创建的对象负责处理ActionEvent事件,当用户单击小数点“.”按钮时,HandleDigit类所创建的对象进行小数点的处理。  HandlePOrN.Java

HandlePOrN类创建的对象负责处理ActionEvent事件,当用户单击 “+/-”按钮时,HandleDigit类所创建的对象进行正负号转换。  HandleEquality.java

HandleEquality类创建的对象负责处理ActionEvent事件,当用户单击小数点“=”按钮时,HandleDigit类所创建的对象得到计算结果。  OperationButton.java

OperationButton类创建的对象是主类CalculatorWindow所创建的窗口中的一个运算符按钮,OperationButton类有一个String类型的成员OperateSign,用于表明所创建的按钮含有的运算符号。OperationButton所创建的4个按钮被添加到CalculatorWindow窗口中。  HandleOperation.java

HandleOperation类创建的对象负责处理ActionEvent事件,当用户单击小数点“+、-、*、/”按钮时,HandleOperation类所创建的对象负责处理和运算符有关的运算过程。  HandleClear.java

- 4 -

HandleClear类创建的对象负责处理ActionEvent事件,当用户单击小数点“C”按钮时,HandleClear类所创建的对象负责清除有关计算结果。  HandleSin.java

HandleSin创建的对象负责处理ActionEvent事件,当用户单击小数点“sin”按钮时,HandleSin类所创建的对象负责计算正弦三角函数的值。  HandleCos.java

HandleCos创建的对象负责处理ActionEvent事件,当用户单击小数点“cos”按钮时,HandleCos类所创建的对象负责计算余弦三角函数的值。  HandleTan.java

HandleTan创建的对象负责处理ActionEvent事件,当用户单击 “tan”按钮时,HandleTan类所创建的对象负责计算正切三角函数的值。  HandleSqrt.java

HandleSqrt创建的对象负责处理ActionEvent事件,当用户单击小数点“Sqrt”按钮时,HandleSqrt类所创建的对象负责计算数据的开方运算。  HandleLog.java

HandleLog创建的对象负责处理ActionEvent事件,当用户单击小数点“log”按钮时,HandleLog类所创建的对象负责计算数据的对数运算。  HandleHelp.java

HandleHelp创建的对象负责处理ActionEvent事件,当用户单击小数点“帮助”按钮时,HandleHelp类所创建的对象弹出帮助界面。

- 5 -

 NumberButton.java

NumberButton类创建的对象是主类CalculatorWindow窗口中的一个“数字”按钮,NumberButton类有一个int类型的成员number,标明所创建的按钮所含有的数字。NumberButton所创建的10个按钮被添加到CalculatorWindow窗口中。  HandleDownNumber.java

HandleDownNumber类创建的对象负责处理ActionEvent事件,当用户单击小数点“保存”按钮时,HandleDownNumber类所创建的对象保存运算过程和结果

1.4 详细设计及实现

(1)操作界面设计

1.主界面:一个带标题的窗口,窗口左边最上面的蓝色光条显示数字和运算结果,光条下的空白文本区显示运算的存储过程,左边下方有保存、复制、清除、帮助四个按钮;窗口右边上面的白色文本区显示计算结果,右边正中是数字和运算符等24个操作按钮;

2.main()函数首先初始化图形系统,然后调用CalculatorWindow类创建计算器的操作窗口,为使程序美观,使用了多个JPanel和不同的LayoutManager(比如FlowLayout、BorderLayout、GridLayout)进行布局设计,同时限定了窗体的大小用setBounds(120,80,628,458)设置了计算器操作窗口的大小,;同时在主窗口中用一个数组arrays[6][4]限定了主窗口的按钮布局,将主窗口中的数字按钮设置为蓝色,运算符设置为红色,其他部分按钮设置为黑色;窗口的文字一律设置为宋体,字体大小设为30;

3.封装了一个创建数字按钮的方法getNumberButton(int n),可以快速地进行增加数字按钮的操作;

4.通过鼠标操作,对所有按钮注册了;

5.用鼠标点击窗口上的数字以及运算符按钮进行运算,当输入数据错误时可采用

- 6 -

退格操作返回上一步操作,也可以采用清零操作将数据直接清零;窗口左边有对运算的存储过程,若想在下次的运算中调用上次的运行结果,可以点击“保存”将该次的运行过程和结果以文件的形式保存起来;亦可以点击“清除”按钮删除运算的存储过程。

(2)类成员变量及方法设计

 CalculatorWindow类 1)成员变量

* numberButton是NumberButton型数组,每个单元是一个NumberButton类创建的“数字按钮”对象,该数组的长度为10,含有的数字依次为0,1,2„..9.每个数字按钮都注册有ActionEvent事件。

* 小数点操作、正负号操作、退格操作、等号操作、清零操作、sin、SaveButton 、copyButton、clearButton和helpButton是JButton创建的按钮对象,其上的名字依次为:“.”、“+/-”、“退格操作”、=、sin、“保存”、“复制”、“清空”、“帮助”, 每个数字按钮都注册有ActionEvent事件。

* resultShow,showComputerProcess是javax.swing包中JTextField创建的文本框,分别用来显示当前计算结果和计算过程。

* handleEquality是HandleEquality类创建的对象,该对象是等号按钮的监

视器,当用户单击等号按钮时,handleEquality对象将调用HandleEquality类实现的ActionListener接口中的actionPerformed(ActionEvent)方法。 * handleSin是HandleSin类创建的对象,该对象是sin按钮的监视器,当用

户单击sin按钮时,handleSin对象将调用HandleSin类实现的ActionListener接口中的actionPerformed(ActionEvent)方法。 2)方法

* CalculatorWindow()是构造方法,负责完成窗口的初始化。 * main(String)方法是计算器程序运行的入口方法

* CalculatorWindow创建的窗口是SaveButton 、copyButton、clearButton

和helpButton四个按钮的ActionEvent事件,当用户单击这些按钮时,窗口将执行actionPerformed(ActionEvent)方法进行相应的操作。如果用户单击SaveButton按钮,actionPerformed(ActionEvent)方法所执行的操作是弹出保存文件对话框,将saveComputerProcess文本区中显示的以往计算过程保存到文件。如果用户单击

copyButton按钮,

- 7 -

actionPerformed(ActionEvent)方法所执行的操作是将saveComputerProcess文本区中选中的文本复制到剪切板上;如果用户单击clearButton按钮,actionPerformed(ActionEvent)方法所执行的操作是清除saveComputerProcess文本区中的全部文本;如果用户单击helpButto按钮,actionPerformed(ActionEvent)方法所执行的操作是弹出一个帮助说明的对话框。

 NumberButton类

NumberButton是javax.swing包中JButton组件的子类。所创建的对象是CalculatorWIindow类中NumberButton型数组:numberButton中的元素。标明NumberButton类的主要成员变量、方法以及和CalculatorWIindow类之 间组合关系如下所示: 1)成员变量

* number的值确定所创建的数字按钮所含有的数字。 2)方法

* NumberButton(int)是构造方法。创建NumberButton对象时需使用该构造方

法。

* getNumber()方法。数字按钮调用该方法返回其含有的数字。  OperationButton类

OperationButton是javax.swing包中JButton组件的子类。所创建的对象是CalculatorWIindow类中OperationButton型数组:operationButton中的元素。标明OperationButton类的主要成员变量、方法以及和CalculatorWIindow类之间组合关系如下所示 1)成员变量

* operateSign字符串确定所创建的运算符按钮所含有的运算符。 2)方法

* OperationButton(String)构造方法。创建OperationButton对象时需要使

用该构造方法。

* getOperateSign()方法。运算符按钮调用该方法返回其含有的运算符号。  主程序操作流程图如图1-9所示:

- 8 -

增加一位 开始 清零鼠标点击 按钮输入C键

执行运算 退格操数字或小数点 作 前一位是运算符 还是数字或小数 数字 清零C 结束 调用log等 数学函数 显示结果

图1-4 操作流程图

(3)源代码分析

1).以下这段代码是对数字按钮的定义,由代码可得,其将数字定义为整型,并将前景颜色设置为蓝色,并在获得数字按钮的方法中返回数字按钮。 public class NumberButton extends JButton{ int number;

public NumberButton(int number){

- 9 -

super(\"\"+number); this.number=number;

setForeground(Color.blue); }

public int getNumber(){ return number; } }

2).下面这段代码是对运算符按钮的操作定义,由代码可知,其将运算符按钮定义成了字符串类型,并将其前景颜色设置为红色,然后在获得运算符按钮的方法中返回。

public class OperationButton extends JButton{ String operateSign;

public OperationButton(String s){ super(s);

operateSign=s;

setForeground(Color.red); }

public String getOperateSign(){ return operateSign; } }

3)下面这段代码是对计算器程序部分响应事件的分析,从中可知,当点击复制按钮时,计算器会复制上一次的数据到下一次的计算当中,当点击清空按钮时,计算器会清空上一次计算的数据,当点击帮助按钮时,会弹出一个帮助的对话框:

public void actionPerformed(ActionEvent e){ if(e.getSource()==copyButton) saveComputerProcess.copy(); if(e.getSource()==clearButton) saveComputerProcess.setText(null); if(e.getSource()==helpButton) {

new HandleHelp(); }

catch(IOException e1){} }

- 10 -

}

}

1.5 系统运行及使用说明

本次设计的计算器是JAVA语言在MyEclipse5.0的运行环境下实现的。 Eclipse是一个开放的基于JAVA的可扩展的通用开发平台,其设计思想是:一切皆为插件,MyEclipse5.0是Eclipse的插件。 MyEclipse5.0

JDK6.

http://www.myeclipseeide.com下载myeclipse-7.5.0-win32.exe文件并安装,其中可选择Myeclipse安装路径,其他选项保持默认。在安装过程中,Myeclipse会自动寻找JDK。第一次启动时,Myeclipse会弹出一个对话框,询问工作区路径,工作区workspace是指存放源程序文件及配置文件的文件夹。

Myeclipse集成开发环境包括菜单栏、工具栏、视图、编辑器、状态栏等。Myeclipse主菜单有File、Edit、Source、Refactor、Navigate、Search、Project、Myeclipse、Run、Window、Help。视图是Myeclipse的功能子窗口,可更改各视图的大小,移动位置。执行“Window→Show View”菜单命令,可打开所需视图。 在Myeclipse中创建一个新的Java项目并运行需经一下几步: 1)新建Java项目。

执行“FILE→New→Java Project”菜单命令,打开New Java Project对话框,在Project Name编辑框中输入项目名,其它选项取默认值,然后单击Finish按钮,将在当前工作区中创建一个新项目,并创建一个与项目同名的文件夹。

2)新建Java类。

执行“FILE→New→Class”菜单命令,打开New Java Class对话框,在Name编辑框中输入类名,可选择父类、接口、类中包含方法等;单击Finish按钮,在Source folder 指定的文件夹中创建文件。

3)编辑、编译和运行。

在编辑器中输入Java程序,执行主菜单Edit下的Undo、Redo、Cut、Copy、

- 11 -

Paste、Delete、Select All、Find/Replace等菜单命令,实现撤销、恢复、剪切、复制、粘贴、删除、全部选中、查找/替换等功能。执行File下的Open File、Save、Save As、Save All等菜单命令,可打开或保存文件。Myeclipse默认即时编译,“Project→Build Automatically”菜单默认选中,Problems将同步显示编译错误;执行Run下的Run或Run As Application菜单命令,可运行当前源程序。

4)重构。

使用Myeclipse的重构功能,可实现项目类或类的重命名。选中当前项目或源程序文件,执行其快捷菜单命令“Refactor→Rename”,可更改当前项目名或类名,与项目对应的文件夹名将被同步更改,类名、对应源程序文件名以及该类名的所有引用也被同步更改。

5)切换工作区。

执行“File→Switch Workspace”菜单命令,选择另一个文件夹作为工作区。

6)访问其他项目中的类和添加JAR包。

若当前项目需要访问其他项目中的类,需要配置编译路径,选中当前项目,执行其快捷菜单命令“Build Path→Configure Selection”,在项目属性对话框中,选择Projects页,单击“Add”

按钮,在Required Project Selection对话框中,选择所需项目;返回项目属性对话框,在项目属性对话框的Libraries页上,单击“Add External JARs”按钮,在弹出的JAR Selecton对话框中,选择“.jar”压缩文件。

7)选择运行的类和设置命令行参数。

执行“Run→Open Run Dialog”菜单命令,打开Run对话框,在Main页上,单击Search按钮来选择带有main()的可执行的类文件;在Arguments页的Projram Arguments编辑框中输入命令行参数。

- 12 -

- 13 -

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务