Java语言GUI实现计算器以及源代码
一、 设计分析
1.1任务及其目的
设计一个计算器应用程序,完成复杂的科学运算。设计的计算器应用程序可以完成加法、减法、乘法、除法和科学函数运算。且有小数点、正负号、求倒数、退格和清零等功能。用鼠标点击相应的数字键和运算符号键,然后点击=按钮。窗口上方的文本框将会显示计算出来的结果,如果未显示说明输入的表达式有误。要将文本框清零,科单击清零按钮。
1.2设计思路
实现主要分为两部分:
编写能实现简单四则运算的类(BaseCalcucator.class)
将传入的中缀表达式转化为逆波兰表达式,在进行计算。
编写进行科学计算的类(SceneCalculator.class)
将传入的式子进行相应的科学计算,并用计算出来的结果进行替代掉进行科学计算的式子。
二,程序结构
1、程序流程如下图
2、程序界面
控件
1.文本框TextArea:text用于显示当前计算的式子,recordArea用于显示过去计算的式子,mermoryArea用于显示计算器“寄存器”中的值。
2.功能Button:record和mermor用于在历史记录和“寄存器”之间进行切换。
3.数字Button:0-9.小数点
4.运算符Button:+ - * / ( ) =
5.计算器基本Button:←用于退格,c用于清空mathNow、recordArea、mermoryArea
6.科学运算符Button::
e,π,1/x, x2,x3, x!,|x|,
7.切换Button:Deg代表角度制,Rad代表弧度制。通过点击Deg实现角度制与弧度制之间的切换
成员变量
1.private String mathPast=” ”,用于存储上次运算的式子
2.private String mathNow =” ”,用于存储现在运算的式子
3.private String showNow=” ”,用于存储显示在文本框的式子
4.private String m;用于存储使用计算器寄存器的数
5.private String restult=””;用于计算出来的结果
6.pivate String temp=””,用于暂时存储的数字
7.private int TrigCalculMethod=0;(默认设置为0,进行角度制运算)
TrigCalculMethod=0,进行角度制运算,TrigCalculMethod=1,进行弧度制运算
8.private int equal_flag=0;进行等号按钮的标记(及刚刚是否进行了一次运算)
equal_flag=0,及刚刚没有进行运算,equal_flag=1,代表刚刚进行了一次运算
三、 各模块的功能及程序说明
3.1 Calcuator主类模块
3.1.1 初始化特殊函数按钮
由于JButton 按钮上无法显示出x2,x3, , ,所以图片粘贴的办法,将相应的函数图片粘贴到按钮的表面。
//创建x的平方,x的三次方,x的y次方,x开y次方按钮
ImageIcon squareimg = new ImageIcon(“src\Calcuator\x的平方.png”);// 创建图片对象
ImageIcon cubeimg = new ImageIcon(“src\Calcuator\x的三次方.png”);// 创建图片对象
ImageIcon powerimg = new ImageIcon(“src\Calcuator\x的y次方.png”);// 创建图片对象
ImageIcon readicationimg = new ImageIcon(“src\Calcuator\x开y次方.png”);// 创建图片对象
Image squareimage = squareimg.getImage();
Image cubeimage = cubeimg.getImage();
Image powerimage = powerimg.getImage();
Image readicationimage = readicationimg.getImage();
//为把它缩小点,先要取出这个Icon的image ,然后缩放到合适的大小
Image squaresmallImage = squareimage.getScaledInstance(25,25,Image.SCALE_FAST);
Image cubesmallImage = cubeimage.getScaledInstance(25,25,Image.SCALE_FAST);
Image powersmallImage = powerimage.getScaledInstance(25,25,Image.SCALE_FAST);
Image readictionsmallImage = readicationimage.getScaledInstance(30,30,Image.SCALE_FAST);
//再由修改后的Image来生成合适的Icon;
//***Image对象创建ImageIcon对象,可查阅ImageIcon的构造方法***
ImageIcon smallIcon = new ImageIcon(squaresmallImage);
ImageIcon cmallIcon = new ImageIcon(cubesmallImage);
ImageIcon pmallIcon = new ImageIcon(powersmallImage);
ImageIcon rmallIcon = new ImageIcon(readictionsmallImage);
JButton squarebuttion=new JButton(smallIcon);
JButton cubebuttion=new JButton(cmallIcon);
JButton powerbuttion=new JButton(pmallIcon);
JButton readic