JAVA课程设计之计算器设计报告含源代码|计算机数据库课程设计|精品课程网站设计|课程设计网报告总结心得本计算器可以进行简单的四则运算(加、减、乘、除)但仅限于十进制下,还可以进行(八进制,十进制,十六进制)之间的相互转换,八进制最多可以输入19位数,十进制最多可以输入18位数,十六进制最多可以输入14位数,backspace表示退格, clear表示初始化,在window下直接运行()即可,界面为灰白对称。 题 目: 计算器 目 录 1. 摘 要 2. 概要设计 3. 详细设计 4. 测试分析 5. 参考文献 一、摘 要
本计算器可以进行简单的四则运算(加、减、乘、除)但仅限于十进制下,还可以进行(八进制,十进制,十六进制)之间的相互转换,八进制最多可以输入19位数,十进制最多可以输入18位数,十六进制最多可以输入14位数,backspace表示退格, clear表示初始化,在window下直接运行()即可,界面为灰白对称。 二、概要设计
(1) 自定义类说明
********************************************************** * 类名: This_number_too_big *
* 作用: 自定义的异常类,用来处理计算结果溢出 * * 继承的父类: Exception类 * * 实现的接口: 没有 *
********************************************************** class This_number_too_big extends Exception {
}ength();harAt(0)=='0'&& ().length()==1) ;
import
class This_number_too_big extends Exception {};
static Button btequ=new Button(\ static Button btadd=new Button(\ static Button btsub=new Button(\ static Button btmul=new Button(\ static Button btdev=new Button(\ static Button btA=new Button(\ static Button btB=new Button(\ static Button btC=new Button(\ static Button btD=new Button(\ static Button btE=new Button(\ static Button btF=new Button(\
static Checkbox ckb8=new Checkbox(\八进制\
static Checkbox ckb10=new Checkbox(\十进制\ static Checkbox ckb16=new Checkbox(\十六进制\ static Button btc=new Button(\ static Button btt=new Button(\ public int number=0,length=18; .\ ; ; ;
(new Font(\ (14,33,216,40); (lab);
CheckboxGroup grp=new CheckboxGroup(); (grp); (grp); (grp);
(14,75,55,25); (69,75,55,25); (124,75,65,25); (false); (true); (false); (ckb8); (ckb10); (ckb16);
(14,140,120,150); (144,140,40,150); (14,100,170,36); (190,100,40,190); (bt7); (bt8); (bt9); (bt4); (bt5); (bt6); (bt1); (bt2); (bt3); (bt0); (btdot); (btequ); (btadd); (btsub); (btmul);
(btdev); (btt); (btc); (btA); (btB); (btC); (btD); (btE); (btF); (false); (false); (false); (false); (false); (false); (pnl1); (pnl2); (pnl3); (pnl4); (false); (null); (240,300 ); (\计算器\ (true);
(mainFrame); (mainFrame); (mainFrame); ength(); }
if(length==14) { (goto_10(),16L)); (goto10_8()));
number=().length(); }
ength();}
if(length==14) { (goto_10(),16L)); number=().length();} ength();}
if(length==19) { (goto_10(),8L)); (goto10_16()));
number=().length();} harAt(0); switch (ch)
{ case 'c': {(\number=0; mark='n'; Refresh=false;}break;harAt(0)=='0'&& ().length()==1)
break;
if(number{number++;()+ch);} else break; } break;
case 'A': enter(); break; case 'B': enter(); break; case 'C': enter(); break; case 'D': enter(); break; case 'E': enter(); break; case 'F': enter(); break;
case '.': {if(Refresh==true) {(\ if().indexOf('.')== -1) {number++;()+ch);} else break; }
break;
case 'b': {if(number==0) break; else
{if(--number==0) {(\ else
{if (number!=1) ().substring(0,number)); else
().charAt(0)));} }
}break;
case '+': try { js();}
catch(This_number_too_big e) {(\
Refresh=false; \ != -1));
lg=(str);!= -1)); lg=(str); while (lg>=j) { ch=lg%j; st=(ch)+st; lg=lg/j; }
st=(lg)+st; return st;
}harAt(0)=='0'&& ().length()==1)
ength();ength();
}//end answer() method
//--------------------------- }//end class Jsp2003 4. 测试分析
(1)程序运行情况:
程序正常的响应按钮事件,输入的数值长度受变量length的限定,进行混合四则运算的时候,结果如果不是很大,可以正常显示,但如果结果很大,就可能采用科学记数方式,这样带来了进制转换时的麻烦,需要特殊的处理科学记数里的E ,当结果太大的时候,有可能超出可能表示的最大值,(结果溢出),这个时候就要对结果进行必要的异常处理,我在输出结果的方法内设置if 语句,如果结果大于某一个值就抛出一个This_number_too_big 类型的类,再使用try-catch,捕捉输出结果的方法抛出的异常对象。然后进行,重制归零的处理。
(2)程序异常处理:
当结果超出时,将抛出一个This_number_too_big 类的异常对象,这个是我自定义的一个异常类它继承自Exception 类,然后使用try-catch去捕捉这个异常,异常的处理如下: try
{ js();}
catch(This_number_too_big e) {
(\ number=0; mark='n';
Refresh=false;
\
} //如果出现异常则初始化效果如同clear键