java
课程设计报告计算器设计报告课程设计报告_计算器设计报告
1.摘要2.概要设计3.详细设计4.测试分析5.参考文献一、摘要本计算器可以进行简单的四则运算(加、减、乘、除)但仅限于十进制下,还可以进行(八进制,十进制,十六进制)之间的相互转换,八进制最多可以输入19位数,十进制最多可以输入18位数,十六进制最多可以输入14位数,backspace表示退格,clear表示初始化,在window下直接运行(Jsp2003.bat)即可,界面为灰白对称。二、概要设计(1)自定义类说明***********************************************************类名:This_number_too_big**作用:自定义的异常类,用来处理计算结果溢出**继承的父类:Exception类**实现的接口:没有***********************************************************classThis_number_too_bigextendsException{}//自定义的一个结果溢出异常类***********************************************************类名:Jsp2003**作用:主类。**继承的父类:Frame类**实现的接口:ItemListener类,ActionListener类***********************************************************classJsp2003extendsFrameimplementsItemListener,ActionListener{publicintnumber=0,length=18;//number是用来记录输入的数字个数,//length是用来设置在不同进制下允许输入的最多数字位数,默认为十进制publiccharmark='n';//设置运算符号为没有即为‘n’,它的值是‘+’‘-’‘*’‘/’publicdoubledata=0;//设置运算数据为零publiccharch;//用来临时存放所按按钮的第一个字符publicbooleanRefresh=false;//设置lab是否要在输入数据的时候刷新,初始为否主要方法说明:------------------------------------------------------------------------------------------------
//用来处理按了运算符后的计算publicvoidjs()throwsThis_number_too_big//指定由method抛出异常{if(mark=='n')//没有运算符{mark=ch;//,则设置运算符为刚刚输入的字符,data=Double.parseDouble(lab.getText());//则设置运算数据为lab的值Refresh=true;//则设置下一次输入的时候要刷新lab}else//如果采用的是连续运算(即没有使用‘=’号)则运行下面的语句{switch(mark)//根据运算符计算结果,并把结果保存到data{case'+':data+=Double.parseDouble(lab.getText());break;case'-':data-=Double.parseDouble(lab.getText());break;case'*':data*=Double.parseDouble(lab.getText());break;case'/':data/=Double.parseDouble(lab.getText());break;}lab.setText(Double.toString(data));//显示运算结果mark=ch;//设置运算符为刚刚按下的运算符Refresh=true;//则设置下一次输入的时候要刷新labnumber=lab.getText().length();//设置输入的字符个数//System.out.println(lab.getText());//用来调试用的if(data>Double.MAX_VALUE)//如果data超过double类型的最大值则抛出自定义的一个异常类{thrownewThis_number_too_big();}}}//endjs()method---------------------------------------------------------------------------------------------------publicvoidenter()//处理输入字符{if(Refresh==true)//如果已经设置了运算符则在下一次输入数据的时候要把以前lab的内容清除掉{lab.setText("0");number=0;Refresh=false;}if(lab.getText().charAt(0)=='0'&;&;lab.getText().length()==1)//如果lab的内容为0则,lab的内容将被所输入的字符代替,//否则直接在lab的内容后面加上所输入的字符{lab.setText(Character.toString(ch));number++;}elseif(number{number++;lab.setText(lab.getText()+ch);}}//endenter()method-------------------------------------------------------------------------------------------------------//八进制或十六进制转换成十进制IpublicStringgoto_10(Strings,longl)//参数s:是要转换的字符串,由于输入的控制,保证了字符串的合法性;//参数l:使用来设置是将8进制还是16进制转换成10进制,它的有效值为8或16;{Stringstr=s;//用来转换的字符串longj=l;//表示进制longlg=0,jing=1;//lg用来记录权乘和,jing用来记录位权