java课程设计报告计算器设计报告.docx
- 文档编号:24962954
- 上传时间:2023-06-03
- 格式:DOCX
- 页数:20
- 大小:23.63KB
java课程设计报告计算器设计报告.docx
《java课程设计报告计算器设计报告.docx》由会员分享,可在线阅读,更多相关《java课程设计报告计算器设计报告.docx(20页珍藏版)》请在冰豆网上搜索。
java课程设计报告计算器设计报告
Java课程设计报告
题目:
计算器
院(系):
xxx学院
年级专业:
xxx班
学生姓名:
xxx
指导老师:
xx老师
开始时间:
200x—xx-xx
完成时间:
200x-xx-xx
目录
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=newButton(”="); staticButtonbtadd=newButton(”+”); staticButtonbtsub=newButton(”-"); staticButtonbtmul=newButton(”*"); staticButtonbtdev=newButton("/”); staticButtonbtA=newButton(”A"); staticButtonbtB=newButton("B"); staticButtonbtC=newButton(”C”); staticButtonbtD=newButton("D”); staticButtonbtE=newButton(”E”); staticButtonbtF=newButton(”F"); staticCheckboxckb8=newCheckbox(”八进制"); staticCheckboxckb10=newCheckbox("十进制”); staticCheckboxckb16=newCheckbox(”十六进制"); staticButtonbtc=newButton("clear”); staticButtonbtt=newButton("backspace”); publicintnumber=0,length=18; //number是用来记录输入的数字个数,length是用来设置在不同进制下允许输入的最多数字位数,默认为十进制 publiccharmark='n';//设置运算符号为没有即为‘n’,它的值是‘+’‘—’‘*’‘/’ publicdoubledata=0;//设置运算数据为零 publiccharch;//用来临时存放所按按钮的第一个字符 publicbooleanRefresh=false;//设置lab是否要在输入数据的时候刷新,初始为否 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); }//endmain()mothed //-—-——-———-—---—-———--——-—-—-—-———--—--———--—— //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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 课程设计 报告 计算器 设计