四则运算计算器设计说明书
一.设计目标
本次计算器的程序设计,通过使用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)重写事件接口ActionListener的方法public void actionPerformed(ActionEvent e)。
(8)为各个组件编写事件代码,完成每个按钮的不同功能。
三.测试过程的截图
1. 程序初始运行界面
2运算测试
3.混合运算测试:
异常处理测试:
1.输入错误的表达式
2、除数为0时:
四.设计结果
此计算器以完成设计,所有功能都以实现,并达到了预想的设计目标。
五.参考文献
1.Java面向对象程序设计教程(第二版)。李发致编著。清华大学出版社,2009.11
2.java开发技术大全 刘新等编著。清华大学出版社 2009年2月第一版
六.总结
本次Java程序设计,成功完成了一个计算器的设计与实现。此计算器可用于基本的算术运算,同时还具有四则混合运算且可以加括号的复杂表达式的计算。
七.附录一:用户使用手册
1.此计算器程序目前只能在安装了JDK(建议安装版本在1.6以上)的计算机上运行使用。
2.此计算器显示区的内容可以使用键盘输入和点击面板上的按钮进行输入。
3.在点击面板上第一次点击乘号键,除号键,右括号,小数点,求余键,等号键,ce键,Backspace键都有对应的错误提示。
4.此计算器能进行四则混合运算(可以加括号)表达式的值,注意在输入表达式时,要严格按照规范输入,否则会出错,会提示表达式错误请重新输入!,并且清除当前以输入的表达式。
5.点击ce键时会清屏,点击Backspace键时会退一格。
八:程序代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.List;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
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 = DefaultToolkit().getScreenSize().width; //获取当前桌面宽度
int height = DefaultToolkit().getScreenSize().height; //获取当前桌面高度
window.setLocation(width / 2 - 200, height / 2 - 150); //把窗口设置在桌面中间
window .setLayout(null); //组件不会随窗口的大小而改变
/*******添加文本框********/
final JTextField text = new JTextField();
text.setHorizontalAlignment(JTextField.RIGHT); //设置文本框右对齐
//text.setEditable(false);
text.setEditable(true); //设置文本框可编辑
text.setBounds(10,40,360,50); //设置文本框位置
window .add(text); //把文本框添加到窗口中
text.setForeground(Color.blue); //设置文本框内文字颜为蓝
text.setBackground(Color.LIGHT_GRAY ); //设置文本框背景为浅灰
text.addActionListener(new ActionListener()
vb计算器代码大全 {
public void actionPerformed(ActionEvent arg0) {
ScriptEngineManager sem1 = new ScriptEngineManager();
ScriptEngine se1 = EngineByName("js");
try{
int leng10 = Text().length();
if(leng10 == 0)
{
JOptionPane.showMessageDialog(null, "对不起,您没有任何输入,请重新输入:");
questFocusInWindow(); //文本框获得焦点
}
else {
String reslut = se1.Text()).toString();
//计算文本框内的表达式并把值传给reslut
text.Text()+"="+reslut);
questFocus(); //文本框获得焦点
}
}catch (ScriptException evt){
JOptionPane.showMessageDialog(null,"表达式错误,请重新输入!");
text.setText(""); //给文本框赋值为空达到清屏作用
questFocus(); //文本框获得焦点
}
}
});
/***********设置0键***************/
final JButton b0 = new JButton("0"); //新建按钮0
b0.setBounds(10,283,72,50); //设置0键的位置
window.add(b0); //把文本框添加到窗口中
b0.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e) //接口定义好的 ActionEvent类型 e是参数名
{
text.Text()+"0"); //把监听的到的数0传进文本框
questFocus(); //文本框获得焦点
}
});
/********设置1键****************/
final JButton b1 = new JButton("1"); //新建按钮1
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论