一. 设计要求
参考Windows操作系统提供的计算器设计一个实用的计算器,要求除了具有普通的计算功能外,还具有保存计算过程的功能。
(1) 单击计算器上的数字按钮(0,1,2,3,4,5,6,7,8,9)可以设置参与计算的运算数。
(2) 单击计算器上的运算符按钮(+、-、*、/)可以选择运算的符号。
(3) 单击计算器上的函数按钮可以计算出相应的函数值。
(4) 单击计算器上的等号(=)按钮显示计算结果。
(5) 在一个文本框中显示当前的计算过程,在一个文本区中显示以往的计算过程。
(6) 单击“保存”按钮可以将文本区中显示的全部计算过程保存到文件:单击“复制”按钮可以将文本区中选中的文本复制到剪贴板;单击“清除”按钮可以清除文本区中的全部内容。
二. 改进要求
(1) 在保存计算过程到文件的同时也把当前时间保存到该文件中。
(2) 可以让用户选择计算器的精度,例如小数点最多保留两位等。
(3) 增加一个计算阶乘的功能,该功能用BigInteger类实现。
(4) 增加音效,用户单击按钮时程序能播放简短的声音,让用户通过声音知道自己单击了怎么样的按钮。
(5) 自定义新功能。
程序运行后的的图片:
//Computer类
//封装计算器的计算模型
import java.util.*;
public class Computer {
public int jd = 2;
public double result; //计算所得结果
public Stack<Character> dataItem; //参与运算的数据项
public Stack<Double> tempResult; //用堆栈存放临时结果
public Stack<Character> operator; //存放运算符号
public Computer(){
init();
}
public void init() {
dataItem = new Stack<Character>();
tempResult = new Stack<Double>();
dataItem.push('0');
operator = new Stack<Character>();
}
public void setDataItem(char c){
if(c!='.')
dataItem.push(c);
else {
if(!dataItem.contains('.'))
dataItem.push(c);