JAVA课程设计报告.docx
《JAVA课程设计报告.docx》由会员分享,可在线阅读,更多相关《JAVA课程设计报告.docx(39页珍藏版)》请在冰豆网上搜索。
JAVA课程设计报告
吉林工程技术师范学院
《面向对象程序设计-JAVA》
课程设计报告书
设计题目:
简易计算器
专业:
计算机科学与技术
班级:
计算机0841
学生姓名:
闫哲学号:
8
指导教师:
孟宇桥
2009年12月
信息工程学院
摘要
简易计算器在Java中的应用
摘要:
本计算器可以进行简单的四则运算(加、减、乘、除)但仅限于十进制下,还可以进行(八进制,十进制,十六进制)之间的相互转换,八进制最多可以输入19位数,十进制最多可以输入18位数,十六进制最多可以输入14位数,backspace表示退格,clear表示初始化,在window下直接运行(Jsp2003.bat)即可,界面为灰白对称。
关键词:
四则运算;计算器
第一章绪论
Java语言现在逐渐成熟起来,它的类已经有近千个,类的功能无所不包,而且还可以通过第三方购买类,为Java语言的发展提供了良好的发展前景.同时它也是跨平台的语言,因此许多软件开发商,硬件开发上也争先恐后地想乘上Java语言的快车,都声称支持Java语言,它对微软发起了有力的挑战,而且Sun公司正努力开发Java芯片。
面对如此语言的发展趋势,我认为本人有必要学好这一门课,所以我小试牛刀的设计了一个简易计算器,而且计算器可以进行简单的四则运算加、减、乘、除,但仅限于十进制下,还可以进行八进制,十进制,十六进制,之间的相互转换。
第二章问题定义(或系统分析)
2.1、需求分析:
2.1.1开发的技术及功能
本课程设计是要做一个屏幕输入运算数的图形界面的计算器。
程序实现的基本功能有:
简单的四则运算加、减、乘、除,但仅限于十进制下,还可以进行八进制,十进制,十六进制,之间的相互转换。
2.1.2设计思路
设计这个计算器主要是参考Windows操作系统中自带的计算器,由于编者水平和时间的限制,不能将计算器设计到科学型及其他更复杂的类型,在设计过程中还参考了一些其他的优秀设计。
NetBeans提供了强大的集成环境,计算器大多数的界面设计都是代码直接生成的,这体现出NetBeans开发工具的特点,所以只要在控件的响应事件中添加相应的方法即可。
加、减、乘、除等基本功能由自己编写的代码实现;。
3.1.3设计效果图
设计时先在设计界面中添加按钮等控件,后在按钮的actionPerformed事件中添加代码完成其功能其中调用了Java类中的Math函数库以及各种字符串操作。
第三章总体设计与详细设计
3.1、总体设计
(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是否要在输入数据的时候刷新,初始为否
3.2、概要设计:
3.2.1、//用来处理按了运算符后的计算-
lab.setText(goto_10(lab.getText(),16L));
lab.setText(goto_10(lab.getText(),8L));
length=18;
length==14
length==19
btA.enable(false);
3.2.2、//checkbox事件的处理
Multi
ckb16.getState()==true
ckb10.getState()==true
ckb8.getState()==true
mark='n';
3.2.3、//输入字符
number++;lab.setText(lab.getText()+ch);
lab.setText(Character.toString(ch));number++;
lab.setText("0");number=0;Refresh=false;
numberlab.getText().charAt(0)=='0'&&lab.getText().length()==1Refresh==true 3.2.4、//用来处理按了运算符后的计算-thrownewThis_number_too_big();lab.setText(Double.toString(data));CASERefresh=false;data>Double.MAX_VALUEmark=='n' 3.2.5、//主函数MultiMultibtA.enable(false);MultiIFckb10.getState()==trueckb8.getState()==truepublicJsp2003(){ 第四章编码实现4.1.1、//用来处理按了运算符后的计算-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();}}}4.1.2、//checkbox事件的处理publicvoiditemStateChanged(ItemEvente){mark='n';Refresh=false;//规定当进制转换时以前输入的运算符失效if(ckb8.getState()==true){btA.enable(false);btB.enable(false);btC.enable(false);btD.enable(false);btE.enable(false);btF.enable(false);bt9.enable(false);bt8.enable(false);btdot.enable(false);btadd.enable(false);btmul.enable(false);btsub.enable(false);btdev.enable(false);btequ.enable(false);//在八进制的情况下对有些按件的管理if(length==18){lab.setText(goto10_8(lab.getText()));number=lab.getText().length();}if(length==14){lab.setText(goto_10(lab.getText(),16L));lab.setText(goto10_8(lab.getText()));number=lab.getText().length();}//将其他进制转换成八进制length=19;//在八进制下允许输入数字个数最多为19位}if(ckb10.getState()==true){btA.enable(false);btB.enable(false);btC.enable(false);btD.enable(false);btE.enable(false);btF.enable(false);bt9.enable(true);bt8.enable(true);btdot.enable(true);btadd.enable(true);btmul.enable(true);btsub.enable(true);btdev.enable(true);btequ.enable(true);//在十进制的情况下对有些按件的管理if(length==19){lab.setText(goto_10(lab.getText(),8L));number=lab.getText().length();}if(length==14){lab.setText(goto_10(lab.getText(),16L));number=lab.getText().length();}//进制转换成十进制length=18;//在十进制下允许输入数字个数最多为18位}if(ckb16.getState()==true){btA.enable(true);btB.enable(true);btC.enable(true);btD.enable(true);btE.enable(true);btF.enable(true);bt9.enable(true);bt8.enable(true);btdot.enable(false);btadd.enable(false);btmul.enable(false);btsub.enable(false);btdev.enable(false);btequ.enable(false);//在十六进制的情况下对有些按件的管理if(length==18){lab.setText(goto10_16(lab.getText()));number=lab.getText().length();}if(length==19){lab.setText(goto_10(lab.getText(),8L));lab.setText(goto10_16(lab.getText()));number=lab.getText().length();}//将其他进制转换成十六进制length=14;//在十六进制下允许输入数字个数最多为14位}}4.1.3、//输入字符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);}}4.1.4、//用来处理按了运算符后的计算-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();}}}4.1.5、//主函数publicstaticvoidmain(Stringargs[]){System.out.println("StartingJsp2003...");lab.setAlignment(Label.RIGHT);lab.setBackground(Color.lightGray);lab.setForeground(Color.BLUE);lab.setFont(newFont("Serief",Font.BOLD,18));lab.setBounds(14,33,216,40);mainFrame.add(lab);CheckboxGroupgrp=newCheckboxGroup();ckb8.setCheckboxGroup(grp);ckb10.setCheckboxGroup(grp);ckb16.setCheckboxGroup(grp);ckb8.setBounds(14,75,55,25);ckb10.setBounds(69,75,55,25);ckb16.setBounds(124,75,65,25);ckb8.setState(false);ckb10.setState(true);ckb16.setState(false);mainFrame.add(ckb8);mainFrame.add(ckb10);mainFrame.add(ckb16);pnl1.setBounds(14,140,120,150);pnl2.setBounds(144,140,40,150);pnl3.setBounds(14,100,170,36);pnl4.setBounds(190,100,40,190);pnl1.add(bt7);pnl1.add(bt8);pnl1.add(bt9);pnl1.add(bt4);pnl1.add(bt5);pnl1.add(bt6);pnl1.add(bt1);pnl1.add(bt2);pnl1.add(bt3);pnl1.add(bt0);pnl1.add(btdot);pnl1.add(btequ);pnl2.add(btadd);pnl2.add(btsub);pnl2.add(btmul);pnl2.add(btdev);pnl3.add(btt);pnl3.add(btc);pnl4.add(btA);pnl4.add(btB);pnl4.add(btC);pnl4.add(btD);pnl4.add(btE);pnl4.add(btF);btA.enable(false);btB.enable(false);btC.enable(false);btD.enable(false);btE.enable(false);btF.enable(false);mainFrame.add(pnl1);mainFrame.add(pnl2);mainFrame.add(pnl3);mainFrame.add(pnl4);mainFrame.setResizable(false);mainFrame.setLayout(null);mainFrame.setSize(240,300);mainFrame.setTitle("计算器");mainFrame.setVisible(true);ckb8.addItemListener(mainFrame);ckb10.addItemListener(mainFrame);ckb16.addItemListener(mainFrame);//把事件聆听者向各个组键注册bt1.addActionListener(mainFrame);bt2.addActionListener(mainFrame);bt3.addActionListener(mainFrame);bt4.addActionListener(mainFrame);bt5.addActionListener(mainFrame);bt6.addActionListener(mainFrame);bt7.addActionListener(mainFrame);bt8.addActionListener(mainFrame);bt9.addActionListener(mainFrame);bt0.addActionListener(mainFrame);btadd.addActionListener(mainFrame);btsub.addActionListener(mainFrame);btmul.addActionListener(mainFrame);btdev.addActionListener(mainFrame);btt.addActionListener(mainFrame);btc.addActionListener(mainFrame);btdot.addActionListener(mainFrame);btequ.addActionListener(mainFrame);btA.addActionListener(mainFrame);btB.addActionListener(mainFrame);btC.addActionListener(mainFrame);btD.addActionListener(mainFrame);btE.addActionListener(mainFrame);btF.addActionListener(mainFrame);} 第五章调试与测试5.1、(1)程序运行情况:程序正常的响应按钮事件,输入的数值长度受变量length的限定,进行混合四则运算的时候,结果如果不是很大,可以正常显示,但如果结果很大,就可能采用科学记数方式,这样带来了进制转换时的麻烦,需要特殊的处理科学记数里的E,当结果太大的时候,有可能超出可能表示的最大值,(结果溢出),这个时候就要对结果进行必要的异常处理,我在输出结果的方法内设置if语句,如果结果大于某一个值就抛出一个This_number_too_big类型的类,再使用try-catch,捕捉输出结果的方法抛出的异常对象。然后进行,重制归零的处理。5.2、(2)程序异常处理:当结果超出Double.MAX_VALUE时,将抛出一个This_number_too_big类的异常对象,这个是我自定义的一个异常类它继承自Exception类,然后使用try-catch去捕捉这个异常,异常的处理如下:try{js();}catch(This_number_too_bige){lab.setText("0");number=0;mark='n';Refresh=false;System.out.println("Thenumberistoobig");}//如果出现异常则初始化效果如同clear键 第六章总结与心得6.1、课程设计总结这次java的课程设计可以说获益非浅,首先最深的感受是:机器是比任何教师都严厉的检查者。我们
lab.getText().charAt(0)=='0'&&lab.getText().length()==1
Refresh==true
3.2.4、//用来处理按了运算符后的计算-
thrownewThis_number_too_big();
lab.setText(Double.toString(data));
CASE
Refresh=false;
data>Double.MAX_VALUE
mark=='n'
3.2.5、//主函数
IF
publicJsp2003(){
第四章编码实现
4.1.1、//用来处理按了运算符后的计算-
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;//设置运算符为刚刚按下的运算符
number=lab.getText().length();//设置输入的字符个数
//System.out.println(lab.getText());//用来调试用的
if(data>Double.MAX_VALUE)
//如果data超过double类型的最大值则抛出自定义的一个异常类
{thrownewThis_number_too_big();}
4.1.2、//checkbox事件的处理
publicvoiditemStateChanged(ItemEvente)
{mark='n';
//规定当进制转换时以前输入的运算符失效
if(ckb8.getState()==true)
{btA.enable(false);
btB.enable(false);
btC.enable(false);
btD.enable(false);
btE.enable(false);
btF.enable(false);
bt9.enable(false);
bt8.enable(false);
btdot.enable(false);
btadd.enable(false);
btmul.enable(false);
btsub.enable(false);
btdev.enable(false);
btequ.enable(false);
//在八进制的情况下对有些按件的管理
if(length==18){lab.setText(goto10_8(lab.getText()));
number=lab.getText().length();
if(length==14){lab.setText(goto_10(lab.getText(),16L));
lab.setText(goto10_8(lab.getText()));
//将其他进制转换成八进制
length=19;
//在八进制下允许输入数字个数最多为19位
if(ckb10.getState()==true)
bt9.enable(true);
bt8.enable(true);
btdot.enable(true);
btadd.enable(true);
btmul.enable(true);
btsub.enable(true);
btdev.enable(true);
btequ.enable(true);
//在十进制的情况下对有些按件的管理
if(length==19){lab.setText(goto_10(lab.getText(),8L));
number=lab.getText().length();}
//进制转换成十进制
//在十进制下允许输入数字个数最多为18位
if(ckb16.getState()==true)
{btA.enable(true);
btB.enable(true);
btC.enable(true);
btD.enable(true);
btE.enable(true);
btF.enable(true);
//在十六进制的情况下对有些按件的管理
if(length==18){lab.setText(goto10_16(lab.getText()));
lab.setText(goto10_16(lab.getText()));
//将其他进制转换成十六进制
length=14;
//在十六进制下允许输入数字个数最多为14位
4.1.3、//输入字符
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);}}4.1.4、//用来处理按了运算符后的计算-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();}}}4.1.5、//主函数publicstaticvoidmain(Stringargs[]){System.out.println("StartingJsp2003...");lab.setAlignment(Label.RIGHT);lab.setBackground(Color.lightGray);lab.setForeground(Color.BLUE);lab.setFont(newFont("Serief",Font.BOLD,18));lab.setBounds(14,33,216,40);mainFrame.add(lab);CheckboxGroupgrp=newCheckboxGroup();ckb8.setCheckboxGroup(grp);ckb10.setCheckboxGroup(grp);ckb16.setCheckboxGroup(grp);ckb8.setBounds(14,75,55,25);ckb10.setBounds(69,75,55,25);ckb16.setBounds(124,75,65,25);ckb8.setState(false);ckb10.setState(true);ckb16.setState(false);mainFrame.add(ckb8);mainFrame.add(ckb10);mainFrame.add(ckb16);pnl1.setBounds(14,140,120,150);pnl2.setBounds(144,140,40,150);pnl3.setBounds(14,100,170,36);pnl4.setBounds(190,100,40,190);pnl1.add(bt7);pnl1.add(bt8);pnl1.add(bt9);pnl1.add(bt4);pnl1.add(bt5);pnl1.add(bt6);pnl1.add(bt1);pnl1.add(bt2);pnl1.add(bt3);pnl1.add(bt0);pnl1.add(btdot);pnl1.add(btequ);pnl2.add(btadd);pnl2.add(btsub);pnl2.add(btmul);pnl2.add(btdev);pnl3.add(btt);pnl3.add(btc);pnl4.add(btA);pnl4.add(btB);pnl4.add(btC);pnl4.add(btD);pnl4.add(btE);pnl4.add(btF);btA.enable(false);btB.enable(false);btC.enable(false);btD.enable(false);btE.enable(false);btF.enable(false);mainFrame.add(pnl1);mainFrame.add(pnl2);mainFrame.add(pnl3);mainFrame.add(pnl4);mainFrame.setResizable(false);mainFrame.setLayout(null);mainFrame.setSize(240,300);mainFrame.setTitle("计算器");mainFrame.setVisible(true);ckb8.addItemListener(mainFrame);ckb10.addItemListener(mainFrame);ckb16.addItemListener(mainFrame);//把事件聆听者向各个组键注册bt1.addActionListener(mainFrame);bt2.addActionListener(mainFrame);bt3.addActionListener(mainFrame);bt4.addActionListener(mainFrame);bt5.addActionListener(mainFrame);bt6.addActionListener(mainFrame);bt7.addActionListener(mainFrame);bt8.addActionListener(mainFrame);bt9.addActionListener(mainFrame);bt0.addActionListener(mainFrame);btadd.addActionListener(mainFrame);btsub.addActionListener(mainFrame);btmul.addActionListener(mainFrame);btdev.addActionListener(mainFrame);btt.addActionListener(mainFrame);btc.addActionListener(mainFrame);btdot.addActionListener(mainFrame);btequ.addActionListener(mainFrame);btA.addActionListener(mainFrame);btB.addActionListener(mainFrame);btC.addActionListener(mainFrame);btD.addActionListener(mainFrame);btE.addActionListener(mainFrame);btF.addActionListener(mainFrame);} 第五章调试与测试5.1、(1)程序运行情况:程序正常的响应按钮事件,输入的数值长度受变量length的限定,进行混合四则运算的时候,结果如果不是很大,可以正常显示,但如果结果很大,就可能采用科学记数方式,这样带来了进制转换时的麻烦,需要特殊的处理科学记数里的E,当结果太大的时候,有可能超出可能表示的最大值,(结果溢出),这个时候就要对结果进行必要的异常处理,我在输出结果的方法内设置if语句,如果结果大于某一个值就抛出一个This_number_too_big类型的类,再使用try-catch,捕捉输出结果的方法抛出的异常对象。然后进行,重制归零的处理。5.2、(2)程序异常处理:当结果超出Double.MAX_VALUE时,将抛出一个This_number_too_big类的异常对象,这个是我自定义的一个异常类它继承自Exception类,然后使用try-catch去捕捉这个异常,异常的处理如下:try{js();}catch(This_number_too_bige){lab.setText("0");number=0;mark='n';Refresh=false;System.out.println("Thenumberistoobig");}//如果出现异常则初始化效果如同clear键 第六章总结与心得6.1、课程设计总结这次java的课程设计可以说获益非浅,首先最深的感受是:机器是比任何教师都严厉的检查者。我们
{number++;lab.setText(lab.getText()+ch);}
4.1.4、//用来处理按了运算符后的计算-
4.1.5、//主函数
publicstaticvoidmain(Stringargs[]){
System.out.println("StartingJsp2003...");
lab.setAlignment(Label.RIGHT);
lab.setBackground(Color.lightGray);
lab.setForeground(Color.BLUE);
lab.setFont(newFont("Serief",Font.BOLD,18));
lab.setBounds(14,33,216,40);
mainFrame.add(lab);
CheckboxGroupgrp=newCheckboxGroup();
ckb8.setCheckboxGroup(grp);
ckb10.setCheckboxGroup(grp);
ckb16.setCheckboxGroup(grp);
ckb8.setBounds(14,75,55,25);
ckb10.setBounds(69,75,55,25);
ckb16.setBounds(124,75,65,25);
ckb8.setState(false);
ckb10.setState(true);
ckb16.setState(false);
mainFrame.add(ckb8);
mainFrame.add(ckb10);
mainFrame.add(ckb16);
pnl1.setBounds(14,140,120,150);
pnl2.setBounds(144,140,40,150);
pnl3.setBounds(14,100,170,36);
pnl4.setBounds(190,100,40,190);
pnl1.add(bt7);
pnl1.add(bt8);
pnl1.add(bt9);
pnl1.add(bt4);
pnl1.add(bt5);
pnl1.add(bt6);
pnl1.add(bt1);
pnl1.add(bt2);
pnl1.add(bt3);
pnl1.add(bt0);
pnl1.add(btdot);
pnl1.add(btequ);
pnl2.add(btadd);
pnl2.add(btsub);
pnl2.add(btmul);
pnl2.add(btdev);
pnl3.add(btt);
pnl3.add(btc);
pnl4.add(btA);
pnl4.add(btB);
pnl4.add(btC);
pnl4.add(btD);
pnl4.add(btE);
pnl4.add(btF);
mainFrame.add(pnl1);
mainFrame.add(pnl2);
mainFrame.add(pnl3);
mainFrame.add(pnl4);
mainFrame.setResizable(false);
mainFrame.setLayout(null);
mainFrame.setSize(240,300);
mainFrame.setTitle("计算器");
mainFrame.setVisible(true);
ckb8.addItemListener(mainFrame);
ckb10.addItemListener(mainFrame);
ckb16.addItemListener(mainFrame);
//把事件聆听者向各个组键注册
bt1.addActionListener(mainFrame);
bt2.addActionListener(mainFrame);
bt3.addActionListener(mainFrame);
bt4.addActionListener(mainFrame);
bt5.addActionListener(mainFrame);
bt6.addActionListener(mainFrame);
bt7.addActionListener(mainFrame);
bt8.addActionListener(mainFrame);
bt9.addActionListener(mainFrame);
bt0.addActionListener(mainFrame);
btadd.addActionListener(mainFrame);
btsub.addActionListener(mainFrame);
btmul.addActionListener(mainFrame);
btdev.addActionListener(mainFrame);
btt.addActionListener(mainFrame);
btc.addActionListener(mainFrame);
btdot.addActionListener(mainFrame);
btequ.addActionListener(mainFrame);
btA.addActionListener(mainFrame);
btB.addActionListener(mainFrame);
btC.addActionListener(mainFrame);
btD.addActionListener(mainFrame);
btE.addActionListener(mainFrame);
btF.addActionListener(mainFrame);
第五章调试与测试
5.1、
(1)程序运行情况:
程序正常的响应按钮事件,输入的数值长度受变量length的限定,进行混合四则运算的时候,结果如果不是很大,可以正常显示,但如果结果很大,就可能采用科学记数方式,这样带来了进制转换时的麻烦,需要特殊的处理科学记数里的E,当结果太大的时候,有可能超出可能表示的最大值,(结果溢出),这个时候就要对结果进行必要的异常处理,我在输出结果的方法内设置if语句,如果结果大于某一个值就抛出一个This_number_too_big类型的类,再使用try-catch,捕捉输出结果的方法抛出的异常对象。
然后进行,重制归零的处理。
5.2、
(2)程序异常处理:
当结果超出Double.MAX_VALUE时,将抛出一个This_number_too_big类的异常对象,这个是我自定义的一个异常类它继承自Exception类,然后使用try-catch去捕捉这个异常,异常的处理如下:
try
{js();}
catch(This_number_too_bige)
lab.setText("0");
number=0;
System.out.println("Thenumberistoobig");
}//如果出现异常则初始化效果如同clear键
第六章总结与心得
6.1、课程设计总结
这次java的课程设计可以说获益非浅,首先最深的感受是:
机器是比任何教师都严厉的检查者。
我们
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1