java课程设计报告计算器设计报告.docx

上传人:b****6 文档编号:11916953 上传时间:2023-06-03 格式:DOCX 页数:20 大小:23.63KB
下载 相关 举报
java课程设计报告计算器设计报告.docx_第1页
第1页 / 共20页
java课程设计报告计算器设计报告.docx_第2页
第2页 / 共20页
java课程设计报告计算器设计报告.docx_第3页
第3页 / 共20页
java课程设计报告计算器设计报告.docx_第4页
第4页 / 共20页
java课程设计报告计算器设计报告.docx_第5页
第5页 / 共20页
java课程设计报告计算器设计报告.docx_第6页
第6页 / 共20页
java课程设计报告计算器设计报告.docx_第7页
第7页 / 共20页
java课程设计报告计算器设计报告.docx_第8页
第8页 / 共20页
java课程设计报告计算器设计报告.docx_第9页
第9页 / 共20页
java课程设计报告计算器设计报告.docx_第10页
第10页 / 共20页
java课程设计报告计算器设计报告.docx_第11页
第11页 / 共20页
java课程设计报告计算器设计报告.docx_第12页
第12页 / 共20页
java课程设计报告计算器设计报告.docx_第13页
第13页 / 共20页
java课程设计报告计算器设计报告.docx_第14页
第14页 / 共20页
java课程设计报告计算器设计报告.docx_第15页
第15页 / 共20页
java课程设计报告计算器设计报告.docx_第16页
第16页 / 共20页
java课程设计报告计算器设计报告.docx_第17页
第17页 / 共20页
java课程设计报告计算器设计报告.docx_第18页
第18页 / 共20页
java课程设计报告计算器设计报告.docx_第19页
第19页 / 共20页
java课程设计报告计算器设计报告.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

java课程设计报告计算器设计报告.docx

《java课程设计报告计算器设计报告.docx》由会员分享,可在线阅读,更多相关《java课程设计报告计算器设计报告.docx(20页珍藏版)》请在冰点文库上搜索。

java课程设计报告计算器设计报告.docx

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模板 > 图表模板

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2