admin管理员组

文章数量:1530871

2024年3月31日发(作者:)

四则运算计算器设计说明书

一.设计目标

本次计算器的程序设计,通过使用JAVA中的AWT包和Swing包的类库设计图形界

面的计算器。此计算器能够完成加减乘除的四则混合运算。利用面向对象程序设计的思想,

将各个组件的事件响应分别用不同的方式表达出来,并且使用了图形界面中的事件委托机

制来处理事件响应。

二.设计流程

1. 分析该计算器需要完成的功能。

用户能够完成添加括号和负号的四则混合运算,并且计算器能够自动识别运算符的优

先级,根据用户输入的运算表达式,自动计算出相应的结果。同时还完成了计算器中C按

钮清屏功能和Backspace退格键。

2. 考虑异常处理。

(1)当输入的表达式中出现除零的操作,显示框将显示“Infinity(无穷大)”。

(2)当输入的表达式错误时,将弹出提示框显示“表达式错误请重新输入”

(3)当计算器的显示文本框里为没有输入内容时直接点击等号按钮,将弹出提示框显

示“对不起,您没有任何输入,请重新输入:”。

(4)当第一次输入乘号键,除号键,右括号,小数点,求余键,等号键,ce键,Backspace

键时提示错误。

4. 考虑数据的处理

目标计算表达式通过点击计算器界面上的按钮进行输入,当按下等号之后,计算器通

过调用JAVA中script这个包中的相关类和方法来实现数据的处理。

5. 编码实现计算器的功能。

(1)新建相关的文件。

(2)引入JAVA中相关的包。

(3)新建类Jsq,并继承了类Frame,而且实现了接口ActionListener

(4)定义相关的变量,创建相关组件,并对组件的属性进行设置。

(5)对所创建的组件进行布局,完成界面的实现。

(6)为各个组件添加事件监听器。

(7)重写事件接口

actionPerformed(ActionEvent e)。

ActionListener的方法public void

(8)为各个组件编写事件代码,完成每个按钮的不同功能。

三.测试过程的截图

1. 程序初始运行界面

2运算测试

3.混合运算测试:

异常处理测试:

1. 输入错误的表达式

2、除数为0时:

四.设计结果

此计算器以完成设计,所有功能都以实现,并达到了预想的设计目标。

五.参考文献

面向对象程序设计教程(第二版)。李发致编著。清华大学出版社,2009.11

开发技术大全 刘新等编著。清华大学出版社 2009年2月第一版

六.总结

本次Java程序设计,成功完成了一个计算器的设计与实现。此计算器可用于基本的

算术运算,同时还具有四则混合运算且可以加括号的复杂表达式的计算。

七.附录一:用户使用手册

1.此计算器程序目前只能在安装了JDK(建议安装版本在1.6以上)的计算机上运行使

用。

2.此计算器显示区的内容可以使用键盘输入和点击面板上的按钮进行输入。

3.在点击面板上第一次点击乘号键,除号键,右括号,小数点,求余键,等号键,ce键,

Backspace键都有对应的错误提示。

4.此计算器能进行四则混合运算(可以加括号)表达式的值,注意在输入表达式时,要

严格按照规范输入,否则会出错,会提示表达式错误请重新输入!,并且清除当前以输入的

表达式。

5.点击ce键时会清屏,点击Backspace键时会退一格。

八:程序代码

import .*;

import .*;

import .*;

import .*;

import ;

import Engine;

import EngineManager;

import Exception;

public class Calculator extends Frame

{

public static void main(String[] args)

{

/*******添加窗口********/

final Frame window = new Frame("Calculator");

window .setSize(380, 337);

window .setResizable(false);

//设置窗

//设置窗体

口长宽

大小不可更改

int width = aultToolkit().getScreenSize().width; //获取当前桌

面宽度

int height = aultToolkit().getScreenSize().height; //获取当前

桌面高度

ation(width / 2 - 200, height / 2 - 150);

设置在桌面中间

window .setLayout(null);

件不会随窗口的大小而改变

/*******添加文本框********/

final JTextField text = new JTextField();

izontalAlignment();

本框右对齐

//table(false);

table(true);

本框可编辑

//把窗口

//组

//设置文

//设置文

nds(10,40,360,50); //设置文

本框位置

window .add(text); //把文本

框添加到窗口中

eground();

本框内文字颜色为蓝色

kground(_GRAY );

本框背景色为浅灰色

ionListener(new ActionListener()

{

public void actionPerformed(ActionEvent arg0) {

ScriptEngineManager sem1 = new ScriptEngineManager();

ScriptEngine se1 = ineByName("js");

try{

int leng10 = t().length();

//设置文

//设置文

if(leng10 == 0)

{

ssageDialog(null, "对不起,您没有任何输入,请重新输入:

");

tFocusInWindow(); //文本框获得焦点

}

else {

String reslut = (t()).toString();

//计算文本框内的表达式并把值传给reslut

t(t()+"="+reslut);

tFocus(); //文本框获得焦点

}

}catch (ScriptException evt){

ssageDialog(null,"表达式错误,请重新输入!");

t(""); //给文本框赋值为空达到清屏

作用

tFocus(); //文本框获得焦点

}

}

});

/***********设置0键***************/

final JButton b0 = new JButton("0"); //新建按钮0

nds(10,283,72,50); //设置0键的位置

(b0); //把文本框添加到窗口

ionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e) //监听器接口定义好

的 ActionEvent类型 e是参数名

{

t(t()+"0"); //把监听的到的数0传进文本框

tFocus(); //文本框获得焦点

}

});

/********设置1键****************/

final JButton b1 = new JButton("1"); //新建按钮1

(b1); //把1键添加到窗口中

nds(10,233,72,50); //设置1键的位置

ionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e) //监听器接口定义好

的 ActionEvent类型 e是参数名

{

t(t()+"1"); //把监听的到的数1传进文本框

tFocus(); //文本框获得焦点

}

});

/***********设置2键*****************/

final JButton b2 = new JButton("2");

nds(82,233,72,50); //设置2键的位置

(b2); //把2键添加到窗口中

ionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e) //监听器接口

{

t(t()+"2");

tFocus(); //文本框获得焦点

}

});

/********设置3键****************/

final JButton b3 = new JButton("3");

nds(154,233,72,50); //设置3键的位置

(b3); //把3键添加到窗口中

ionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e) //监听器接口

{

t(t()+"3");

tFocus();

}

});

/*********设置4键***************/

final JButton b4 = new JButton("4");

nds(10,183,72,50); //设置4键的位置

(b4); //把4键添加到窗口中

ionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e) //监听器接口

{

t(t()+"4");

tFocus();

}

});

/*********设置5键*************/

final JButton b5 = new JButton("5");

nds(82,183,72,50); //设置5键的位置

(b5); //把5键添加到窗口中

ionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e) //监听器接口

{

t(t()+"5");

tFocus(); //文本框获得焦点

}

});

/********设置6键***************/

final JButton b6 = new JButton("6");

nds(154,183,72,50); //设置6键的位置

(b6); //把6键添加到窗口中

ionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e) //监听器接口

{

t(t()+"6");

tFocus();

}

});

/*********设置7键**************/

final JButton b7 = new JButton("7");

nds(10,135,72,50); //设置7键的位置

(b7); //把7键添加到窗口中

ionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e) //监听器接口

{

t(t()+"7");

tFocus();

}

});

/**********设置8键***************/

final JButton b8 = new JButton("8");

nds(82,135,72,50); //设置8键的位置

(b8); //把8键添加到窗口中

ionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

t(t()+"8");

tFocus(); //文本框获得焦点

}

});

/***********设置9键**************/

final JButton b9 = new JButton("9");

//监听器接口

nds(154,135,72,50); //设置9键的位置

(b9); //把9键添加到窗口中

ionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e) //监听器接口

{

t(t()+"9");

tFocus(); //文本框获得焦点

}

});

/***********设置加法键**************/

final JButton Add = new JButton("+");

nds(154,283,72,50); //设置加法键的位置

(Add); //把加号键添加到窗口中

Add .addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e) //监听器接口

{

t(t()+"+");

tFocus(); //文本框获得焦点

}

});

/***********设置减法键**************/

final JButton Sub = new JButton("-");

nds(298,183,80,50); //设置减法键的位置

(Sub); //把减号键添加到窗口中

ionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e) //监听器接口

{

t(t()+"-");

tFocus(); //文本框获得焦点

}

});

/***********设置乘法键**************/

final JButton Multi = new JButton("*");

nds(226,183,72,50); //设置乘法键的位置

(Multi); //把乘号键添加到窗口中

ionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e) //监听器接口

{

int leng3 = t().length(); //把当前文本框的长度赋

值给整形变量leng

if(leng3 >= 1 )

{

文本框

t(t()+"*"); //把监听得到的数*好传进

tFocus();

}

else {

ssageDialog(null,"您输入的第一个字符为

乘号,不符合要求请重新输入:");

tFocus(); //文本框获得焦点

}

}

});

/***********设置除法键**************/

final JButton Div= new JButton("/");

nds(226,135,72,50); //设置除法键的位置

(Div); //把除号键添加到窗口中

ionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e) //监听器接口

{

int leng4 = t().length();

if(leng4 >= 1 )

{

t(t()+"/");

tFocus(); //文本框获得焦点

}

else {

ssageDialog(null,"您输入的第一个字符为

除号,不符合要求请重新输入:");

tFocus(); //文本框获得焦点

}

}

});

/***********设置等号键**************/

final JButton equal = new JButton("=");

nds(226,283,153,50); //设置等号键的位置

(equal); //把等号键添加到窗口中

equal .addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e) //监听器接口

{

ScriptEngineManager sem = new ScriptEngineManager();

ScriptEngine se = ineByName("js");

try{

int leng5 = t().length();

if(leng5==0)

{

ssageDialog(null, "对不起,您没有任何输入,请重新输入:

");

tFocus(); //文本框获得焦点

}

else {

String reslut = (t()).toString();

t(t()+"="+reslut);

tFocus(); //文本框获得焦点

}

}catch (ScriptException evt){

ssageDialog(null,"表达式错误,请重新输入!");

t(""); //给文本框赋值为空达到清屏

作用

tFocus(); //文本框获得焦点

}

}

});

/***********设置小数点键**************/

final JButton point = new JButton(".");

nds(82,283,72,50); //设置小数点键的位置

(point); //把小数点键添加到窗口中

ionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e) //监听器接口

{

int leng6 = t().length();

if(leng6 > 0)

{

t(t()+".");

tFocus(); //文本框获得焦点

}

else {

ssageDialog(null,"您输入的第一个字符为

小数点,不符合要求请重新输入:");

tFocus(); //文本框获得焦点

}

}

});

/***********设置左括号键**************/

final JButton left = new JButton("(");

left .setBounds(226,233,72,50); //设置左括号键的位置

(left); //把左括号键添加到窗口中

ionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e) //监听器接口

{

t(t()+"(");

tFocus(); //文本框获得焦点

}

});

/***********设置右括号键**************/

final JButton right = new JButton(")");

nds(298,233,80,50); //设置右括号键的位置

(right); //把右括号键添加到窗口中

ionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e) //监听器接口

{

int leng7 = t().length();

if(leng7 > 0)

{

t(t()+")");

tFocus(); //文本框获得焦点

}

else

{

ssageDialog(null,"您输入的第一个字符为

右括号,不符合要求请重新输入:");

tFocus(); //文本框获得焦点

}

}

});

/***********设置清屏键**************/

final JButton ce = new JButton("CE");

nds(190,90,186,45); //设置清屏键的位置

(ce); //把清零键添加到窗口

ionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e) //监听器接口

{

int leng8 = t().length();

if(leng8 > 0 )

{

t(""); //给文本框赋值为空达到清

屏作用

tFocus(); //文本框获得焦点

}

else

{

屏!");

ssageDialog(null,"当前以经为空,无需清

tFocus(); //文本框获得焦点

}

}

});

/***********设置退格键**************/

final JButton back = new JButton("Backspace");

nds(10,90,180,45); //设置退格键的位置

(back); //把退格键添加到窗口中

ionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e) //监听器接口

{

String message;

int leng = t().length(); //把当前文本框的长度赋值给整形变量

leng

message=t();

if(leng==0)

{

ssageDialog(null, "对不起,您没有任何输入无法退格:"); //

当退格到没有输入是弹出消息框提示

tFocus(); //文本框获得焦点

}

else

{

t(ing(0,leng-1)); //设置文本框的内容没点一次退格减一

个数

tFocus(); //文本框获得焦点

}

}

});

final JButton Air = new JButton("%");

nds(298,135,80,50); //设置求余键的位置

(Air);

ionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e) //监听器接口

{

int leng9 = t().length();

{

if(leng9 > 0)

{

t(t()+"%");

tFocus(); //文本框获得焦点

}

else

{

ssageDialog(null,"您输入的第一个字符为求余数,不符合要

求请重新输入:");

tFocus(); //文本框获得焦点

}

}

}

});

/*********关闭按钮***********/

window .addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

(0);

}

});

window .show();

//监听器接口

}

}

本文标签: 输入计算器设置