java课程设计报告完整版.docx
《java课程设计报告完整版.docx》由会员分享,可在线阅读,更多相关《java课程设计报告完整版.docx(22页珍藏版)》请在冰豆网上搜索。
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;iif('.'==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