java课程设计报告完整版.docx

上传人:b****7 文档编号:9905545 上传时间:2023-02-07 格式:DOCX 页数:22 大小:33.49KB
下载 相关 举报
java课程设计报告完整版.docx_第1页
第1页 / 共22页
java课程设计报告完整版.docx_第2页
第2页 / 共22页
java课程设计报告完整版.docx_第3页
第3页 / 共22页
java课程设计报告完整版.docx_第4页
第4页 / 共22页
java课程设计报告完整版.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

java课程设计报告完整版.docx

《java课程设计报告完整版.docx》由会员分享,可在线阅读,更多相关《java课程设计报告完整版.docx(22页珍藏版)》请在冰豆网上搜索。

java课程设计报告完整版.docx

java课程设计报告完整版

1、摘要

2、概要设计

3、详细设计

4、测试分析

5、总结

6、参考文献

【前言】

Java不依赖平台的特点使得它受到广泛的关注,Java已成为网络时代最重要的语言之一。

Java 语言不仅是一门正在被广泛使用的编程语言,而且已成为软件设计开发者应当掌握的一门基础语言。

目前,很多新的技术领域都涉及Java语言,国内外许多大学已将Java语言列入了本科教学计划,掌握Java已经成为共识。

本次课程设计就是利用java语言来编写简单的计算器,能进行加、减、乘、除四则运算,下面给出了该设计的理论分析和具体步骤。

一、摘要

本计算器可以进行简单的四则运算(加、减、乘、除),但仅限于十进制下。

“Backspace”按钮表示退格,“CE”按钮表示清除当前文本框内的数据,“C”按钮表示清除文本框内数据,同时var、answer清零。

该程序可在JCreator环境下直接运行。

二、概要设计

1、自定义说明

(1)类名:

Calculator

作用:

主类

继承的父类:

JFrame类

实现的接口:

ActionListener类

publicclassCalculatorextendsJFrameimplementsActionListener

{

privatestaticString[]btnTexts={"0","1","2","3","4","5","6","7","8","9","+","-","*","/",".","+/-"};

//定义数组bstTexts来存放计算器上的各个按钮

Buttonbutton[]=newButton[16];

ButtonBkButton,CeButton,CButton,EqButton;

booleanclickable;//控制当前能否按键

doublevard,answerd;//用来保存double型数据的中间值(vard)和最后结果(answerd)

shortkey=-1,prekey=-1;//key用来保存当前进行何种运算,prekey用来保存前次进行何种运算

DecimalFormatdf;//设置数据输出精度

privateJTextFielddisplayField=newJTextField("");//计算结果显示区

publicCalculator()

{

………

}

publicvoidactionPerformed(ActionEventevent)

{

………

}

}

(2)方法名:

Calculator

作用:

设置窗体布局

publicCalculator()

{

//Frameframe=newFrame("Calculator");

super("Calculator");//显示主窗口标题“Calculator”

df=newDecimalFormat("0.00000000");//设置数据输出精度(对于double型值)

BkButton=newButton("Backspace");

BkButton.setForeground(Color.red);

CeButton=newButton("CE");

tForeground(Color.red);

CButton=newButton("C");

CButton.setForeground(Color.red);

EqButton=newButton("=");

EqButton.setForeground(Color.red);//将“Backspace”、“CE”、”C”、“=”显示为红色

BkButton.addActionListener(this);

nListener(this);

CButton.addActionListener(this);

EqButton.addActionListener(this);

displayField.setHorizontalAlignment(JTextField.RIGHT);//将计算结果显示在displayField的右面

JPanelp1=newJPanel(newFlowLayout());//以FlowLayout布局p1

p1.add(BkButton);

p1.add(CeButton);

p1.add(CButton);

p1.add(EqButton);//设置四个按钮:

"Backspace","CE","C","="

JPanelp2=newJPanel(newGridLayout(2,1));//以GridLayout布局p2

p2.add(displayField);

p2.add(p1);//加入显示结果的JTextField和p1

JPanelp3=newJPanel(newGridLayout(4,4));//以GridLayout布局p3

for(inti=0;i

{

button[i]=newButton(btnTexts[i]);//将数组btnTexts[]的值赋给数组button[]

button[i].setForeground(Color.blue);//组件button的前景色显示蓝色

p3.add(button[i]);

button[i].addActionListener(this);

}

Containercp=this.getContentPane();//采用默认的BorderLayout布局cp

cp.add(p2,BorderLayout.NORTH);

R);

}

(3)方法名:

actionPerformed

作用:

设置各个按钮的行为

publicvoidactionPerformed(ActionEventevent)

{

booleansign=false;//判断是否是double型数参与运算,是为true,不是为false

Objecttemp=event.getSource();

try

{

for(inti=0;i<=9;i++)//如果按下数据按钮,将按下的按钮代表的数据插入的当前文本框字符串之后

if(temp==button[i]&&clickable==true)

displayField.setText(displayField.getText()+Integer.toString(i));

//按下'.'按钮时,判断当前文本框内字符串中含不含'.',如果已含,则不允许再插入'.'

if(temp==button[14]&&clickable==true)

{

……….

}

if((temp==button[10]||temp==button[11]||temp==button[12]||temp==button[13])&&clickable==true)

{

//'+'操作

if(temp==button[10])

{

…………

}

//'-'操作

if(temp==button[11])

{

…………

}

//'*'操作

if(temp==button[12])

{

…………

}

//'/'操作

if(temp==button[13])

{

…………

}

//'='操作

if(temp==EqButton&&clickable==true)

{

…………

}

//按下'+/-'按钮时处理

if(temp==button[15]&&clickable==true)

{

…………

}

//按下'Backspace'键,利用循环将当前字符串中的最后一个字母删除

if(temp==BkButton&&clickable==true)

{

…………

}

//按下'CE'按钮,将当前文本框内数据清除

if(temp==CeButton)

{

………

}

//按下'C'按钮,文本框内数据清除,同时var,answer清0

if(temp==CButton)

{

………

}

}

//输入中如果有操作非法,比如按下两次'+',捕获异常

catch(Exceptione)

{

displayField.setText("操作非法");

clickable=false;

}

2、界面设计

下图为该程序运行时的界面截图:

三、详细设计

以下为该程序的主要代码:

importjavax.swing.*;

importjava.awt.*;

importjavax.swing.event.*;

importjava.awt.event.*;

imalFormat;

publicclassCalculatorextendsJFrameimplementsActionListener

{

privatestaticString[]btnTexts={"0","1","2","3","4","5","6","7","8","9","+","-","*","/",".","+/-"};

Buttonbutton[]=newButton[16];

ButtonBkButton,CeButton,CButton,EqButton;

booleanclickable;//控制当前能否按键

doublevard,answerd;//用来保存double型数据的中间值(vard)和最后结果(answerd)

shortkey=-1,prekey=-1;//key用来保存当前进行何种运算,prekey用来保存前次进行何种运算

DecimalFormatdf;//设置数据输出精度

privateJTextFielddisplayField=newJTextField("");//计算结果显示区

publicCalculator()

{

super("Calculator");//显示主窗口标题“Calculator”

df=newDecimalFormat("0.00000000");//设置数据输出精度(对于double型值)

BkButton=newButton("Backspace");

BkButton.setForeground(Color.red);

CeButton=newButton("CE");

CeButton.setForeground(Color.red);

CButton=newButton("C");

CButton.setForeground(Color.red);

EqButton=newButton("=");

EqButton.setForeground(Color.red);//将“Backspace”、“CE”、”C”、“=”显示为红色

BkButton.addActionListener(this);

CeButton.addActionListener(this);

CButton.addActionListener(this);

EqButton.addActionListener(this);

displayField.setHorizontalAlignment(JTextField.RIGHT);//将计算结果显示在displayField的右面

JPanelp1=newJPanel(newFlowLayout());//以FlowLayout布局p1

p1.add(BkButton);

p1.add(CeButton);

p1.add(CButton);

p1.add(EqButton);//设置三个按钮:

"Backspace","CE","C","="

JPanelp2=newJPanel(newGridLayout(2,1));//以GridLayout布局p2

p2.add(displayField);

p2.add(p1);//加入显示结果的JTextField和p1

JPanelp3=newJPanel(newGridLayout(4,4));//以GridLayout布局p3

for(inti=0;i

{

button[i]=newButton(btnTexts[i]);//将数组btnTexts[]的值赋给数组button[]

button[i].setForeground(Color.blue);//组件button的前景色示蓝色

p3.add(button[i]);

button[i].addActionListener(this);

}

Containercp=this.getContentPane();//采用默认的BorderLayout布局cp

cp.add(p2,BorderLayout.NORTH);

cp.add(p3,BorderLayout.CENTER);

}

//设置各个按钮行为

publicvoidactionPerformed(ActionEventevent)

{

booleansign=false;//判断是否是double型数参与运算,是为true,不是为false

Objecttemp=event.getSource();

try

{

for(inti=0;i<=9;i++)//如果按下数据按钮,将按下的按钮代表的数据插入的当前文本框字符串之后

if(temp==button[i]&&clickable==true)

displayField.setText(displayField.getText()+Integer.toString(i));

//按下'.'按钮时,判断当前文本框内字符串中含不含'.',如果已含,则不允许再插入'.'

if(temp==button[14]&&clickable==true)

{

booleanisDot=false;

if(displayField.getText().length()==0)

isDot=true;

for(inti=0;i

if('.'==displayField.getText().charAt(i))

{

isDot=true;

break;

}

if(isDot==false)

displayField.setText(displayField.getText()+".");

}

if((temp==button[10]||temp==button[11]||temp==button[12]||temp==button[13])&&clickable==true)

{

//'+'操作

if(temp==button[10])

{

switch(prekey)

{

case0:

answerd+=Double.parseDouble(displayField.getText());

break;

case1:

answerd-=Double.parseDouble(displayField.getText());

break;

case2:

answerd*=Double.parseDouble(displayField.getText());

break;

case3:

if(Double.parseDouble(displayField.getText())==0)

{

displayField.setText("除数不能为零");

clickable=false;

}

else

answerd/=Double.parseDouble(displayField.getText());

break;

default:

le(displayField.getText());

}

displayField.setText("");

prekey=key=0;

}

//'-'操作

if(temp==button[11])

{

switch(prekey)

{

case0:

answerd+=Double.parseDouble(displayField.getText());

break;

case1:

answerd-=Double.parseDouble(displayField.getText());

break;

case2:

answerd*=Double.parseDouble(displayField.getText());

break;

case3:

if(Double.parseDouble(displayField.getText())==0)

{

displayField.setText("除数不能为零");

clickable=false;

}

else

answerd/=Double.parseDouble(displayField.getText());

break;

default:

answerd=Double.parseDouble(displayField.getText());

}

displayField.setText("");

prekey=key=1;

}

//'*'操作

if(temp==button[12])

{

switch(prekey)

{

case0:

answerd+=Double.parseDouble(displayField.getText());

break;

case1:

answerd-=Double.parseDouble(displayField.getText());

break;

case2:

answerd*=Double.parseDouble(displayField.getText());

break;

case3:

if(Double.parseDouble(displayField.getText())==0)

{

displayField.setText("除数不能为零");

clickable=false;

}

else

answerd/=Double.parseDouble(displayField.getText());

break;

default:

answerd=Double.parseDouble(displayField.getText());

}

displayField.setText("");

prekey=key=2;

}

//'/'操作

if(temp==button[13])

{

switch(prekey)

{

case0:

answerd+=Double.parseDouble(displayField.getText());

break;

case1:

answerd-=Double.parseDouble(displayField.getText());

break;

case2:

answerd*=Double.parseDouble(displayField.getText());

break;

case3:

if(Double.parseDouble(displayField.getText())==0)

{

displayField.setText("除数不能为零");

clickable=false;

}

else

answerd/=Double.parseDouble(displayField.getText());

break;

default:

answerd=Double.parseDouble(displayField.getText());

}

displayField.setText("");

prekey=key=3;

}

}

//'='操作

if(temp==EqButton&&clickable==true)

{

//如果连续按'=',则进行连续运算

if(prekey==5)

{

if(key==0)

{

answerd+=vard;

displayField.setText(df.format(answerd));

}

if(key==1)

{

answerd-=vard;

displayField.setText(df.format(answerd));

}

if(key==2)

{

answerd*=vard;

displayField.setText(df.format(answerd));

}

if(key==3)

{

if(Double.parseDouble(displayField.getText())==0)

{

displayField.setText("除数不能为零");

clickable=false;

}

else

{

answerd/=vard;

displayField.setText(df.format(answerd));

}

}

}

else

{

vard=Double.pars

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

当前位置:首页 > 工程科技 > 纺织轻工业

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

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