Java课程设计模板Word文档下载推荐.docx

上传人:b****7 文档编号:22164868 上传时间:2023-02-02 格式:DOCX 页数:37 大小:182.04KB
下载 相关 举报
Java课程设计模板Word文档下载推荐.docx_第1页
第1页 / 共37页
Java课程设计模板Word文档下载推荐.docx_第2页
第2页 / 共37页
Java课程设计模板Word文档下载推荐.docx_第3页
第3页 / 共37页
Java课程设计模板Word文档下载推荐.docx_第4页
第4页 / 共37页
Java课程设计模板Word文档下载推荐.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

Java课程设计模板Word文档下载推荐.docx

《Java课程设计模板Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Java课程设计模板Word文档下载推荐.docx(37页珍藏版)》请在冰豆网上搜索。

Java课程设计模板Word文档下载推荐.docx

b、界面设计

图1计算器面板

c、类UML图

ArrayStackCharUML图如图2.3A所示:

ArrayStackDoubleUML图如图2.3B所示

图2图3

三、

类分析及实现

a、类层次分析及构建

类名:

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是否要在输入数据的时候刷新,初始为否

程序的设计参考了SunJava网站里的大量实例,比如Layout的使用、Event的处理、Components的添加与应用等等。

其中:

publicclassNewCalcextendsJFrameimplementsActionListener

语句实现了ActionListener接口,因此可以调用addActionListener(this)方法对按钮进行点击监听,在下面的publicvoidactionPerformed(ActionEvente)方法里面对各个点击事件进行处理。

b、处理按了运算符后的计算:

publicvoidjs()throwsThis_number_too_big

{if(mark=='

{mark=ch;

/

data=Double.parseDouble(lab.getText());

Refresh=true;

}

else

{switch(mark)

{case'

+'

:

data+=Double.parseDouble(lab.getText());

break;

case'

-'

data-=Double.parseDouble(lab.getText());

*'

data*=Double.parseDouble(lab.getText());

/'

data/=Double.parseDouble(lab.getText());

lab.setText(Double.toString(data));

mark=ch;

number=lab.getText().length();

//System.out.println(lab.getText());

if(data>

Double.MAX_VALUE)

{thrownewThis_number_too_big();

}

}

处理输入字符:

{if(Refresh==true)

{lab.setText("

0"

);

number=0;

Refresh=false;

if(lab.getText().charAt(0)=='

0'

&

lab.getText().length()==1)

{lab.setText(Character.toString(ch));

number++;

if(number<

length)

{number++;

lab.setText(lab.getText()+ch);

八进制或十六进制转换成十进制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)

1'

lg=lg+1*jing;

break;

2'

lg=lg+2*jing;

3'

lg=lg+3*jing;

4'

lg=lg+4*jing;

5'

lg=lg+5*jing;

6'

lg=lg+6*jing;

7'

lg=lg+7*jing;

8'

lg=lg+8*jing;

9'

lg=lg+9*jing;

A'

lg=lg+10*jing;

B'

lg=lg+11*jing;

C'

lg=lg+12*jing;

D'

lg=lg+13*jing;

E'

lg=lg+14*jing;

F'

lg=lg+15*jing;

jing*=j;

//位权升一级,为下次使用做好准备

returnLong.toString(lg);

}//endStringgoto_10()method

c、程序流程图

图3绘制计算器方法PAD图

d、运行结果

图4计算结果显示

四、程序具体实现

a、主要程序代码及必要的代码解释

importjava.awt.*;

importjava.awt.event.*;

classThis_number_too_bigextendsException{

}//自定义的一个结果溢出异常类

//ActionLintsner是所有监听器的父类,其它监听器可以监听的事件都可以被它捕获

//ItemListener用于捕获带有item的组件产生的事件,如ComboBox,CheckBox,RadioButton,ToggleButton

classhejiangextendsFrameimplementsItemListener,ActionListener{

publichejiang(){

addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

dispose();

System.exit(0);

}//给窗口注册一个事件监听器,当你点了窗口右上方的叉号时,此方法被调用

});

}

statichejiangmainFrame=newhejiang();

//创建一个mainFrame

staticLabellab1=newLabel("

staticLabellab=newLabel("

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("

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’,它的值是‘+’‘-’‘*’‘/’

publicdoubledata=0;

//设置运算数据为零

publiccharch;

//用来临时存放所按按钮的第一个字符

publicbooleanRefresh=false;

//设置lab是否要在输入数据的时候刷新,初始为否

publicstaticvoidmain(Stringargs[]){

System.out.println("

Startinghejiang..."

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);

lab1.setAlignment(Label.RIGHT);

lab1.setBackground(Color.lightGray);

lab1.setForeground(Color.BLUE);

lab1.setFont(newFont("

lab1.setBounds(14,75,216,40);

mainFrame.add(lab);

mainFrame.add(lab1);

CheckboxGroupgrp=newCheckboxGroup();

ckb8.setCheckboxGroup(grp);

ckb10.setCheckboxGroup(grp);

ckb16.setCheckboxGroup(grp);

ckb8.setBounds(14,115,55,25);

//setBounds()方法是可以设定控件的大小和位置

ckb10.setBounds(69,115,55,25);

ckb16.setBounds(124,115,65,25);

ckb8.setState(false);

ckb10.setState(true);

ckb16.setState(false);

mainFrame.add(ckb8);

mainFrame.add(ckb10);

mainFrame.add(ckb16);

pnl1.setBounds(18,180,120,150);

pnl2.setBounds(144,180,40,150);

pnl3.setBounds(14,140,170,36);

pnl4.setBounds(190,140,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,350);

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='

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));

//将其他进制转换成八进制

length=19;

//在八进制下允许输

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1