java计算器程序设计报告含源代码.docx
- 文档编号:766215
- 上传时间:2022-10-12
- 格式:DOCX
- 页数:21
- 大小:20.68KB
java计算器程序设计报告含源代码.docx
《java计算器程序设计报告含源代码.docx》由会员分享,可在线阅读,更多相关《java计算器程序设计报告含源代码.docx(21页珍藏版)》请在冰豆网上搜索。
java计算器程序设计报告含源代码
JAVA课程设计之计算器设计报告含源代码|计算机数据库课程设计|精品课程网站设计|课程设计网报告总结心得本计算器可以进行简单的四则运算(加、减、乘、除)但仅限于十进制下,还可以进行(八进制,十进制,十六进制)之间的相互转换,八进制最多可以输入19位数,十进制最多可以输入18位数,十六进制最多可以输入14位数,backspace表示退格,clear表示初始化,在window下直接运行(Jsp2003.bat)即可,界面为灰白对称。
题目:
计算器
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;//则设置下一次输入的时候要刷新lab
number=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++;}
else
if(number{number++;lab.setText(lab.getText()+ch);}
}//endenter()method
--------------------------------------------------------------------------------------------------------
//八进制或十六进制转换成十进制I
publicStringgoto_10(Strings,longl)
//参数s:
是要转换的字符串,由于输入的控制,保证了字符串的合法性;
//参数l:
使用来设置是将8进制还是16进制转换成10进制,它的有效值为8或16;
{Stringstr=s;//用来转换的字符串
longj=l;//表示进制
longlg=0,jing=1;//lg用来记录权乘和,jing用来记录位权
charcha;//临时记录要转换的字符
for(inti=1;i<=str.length();i++)
{cha=str.charAt(str.length()-i);
switch(cha)
{case'1':
lg=lg+1*jing;break;
case'2':
lg=lg+2*jing;break;
case'3':
lg=lg+3*jing;break;
case'4':
lg=lg+4*jing;break;
case'5':
lg=lg+5*jing;break;
case'6':
lg=lg+6*jing;break;
case'7':
lg=lg+7*jing;break;
case'8':
lg=lg+8*jing;break;
case'9':
lg=lg+9*jing;break;
case'A':
lg=lg+10*jing;break;
case'B':
lg=lg+11*jing;break;
case'C':
lg=lg+12*jing;break;
case'D':
lg=lg+13*jing;break;
case'E':
lg=lg+14*jing;break;
case'F':
lg=lg+15*jing;break;}
jing*=j;//位权升一级,为下次使用做好准备
}
returnLong.toString(lg);
}//endStringgoto_10()method
}
(2)程序流程图
三、详细设计
importjava.awt.*;
importjava.awt.event.*;
classThis_number_too_bigextendsException
{}//自定义的一个结果溢出异常类
classJsp2003extendsFrameimplementsItemListener,ActionListener{
publicJsp2003(){
addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
dispose();
System.exit(0);
}
});
}
staticJsp2003mainFrame=newJsp2003();
staticLabellab=newLabel("0");
staticPanelpnl1=newPanel(newGridLayout(4,3,3,3));
staticPanelpnl2=newPanel(newGridLayout(4,1,3,3));
staticPanelpnl3=newPanel(newGridLayout(1,2,3,3));
staticPanelpnl4=newPanel(newGridLayout(6,1,3,3));
staticButtonbt9=newButton("9");
staticButtonbt8=newButton("8");
staticButtonbt7=newButton("7");
staticButtonbt6=newButton("6");
staticButtonbt5=newButton("5");
staticButtonbt4=newButton("4");
staticButtonbt3=newButton("3");
staticButtonbt2=newButton("2");
staticButtonbt1=newButton("1");
staticButtonbt0=newButton("0");
staticButtonbtdot=newButton(".");
staticButtonbtequ=new
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 计算器 程序设计 报告 源代码