java课程设计报告完整版.docx
- 文档编号:9905545
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:22
- 大小:33.49KB
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;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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 课程设计 报告 完整版