java课程设计报告(完整版)_第1页
java课程设计报告(完整版)_第2页
java课程设计报告(完整版)_第3页
java课程设计报告(完整版)_第4页
java课程设计报告(完整版)_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 目录1、摘要2、概要设计3、详细设计4、测试分析5、总结6、参考文献前言】Java不依赖平台的特点使得它受到广泛的关注,Java已成为网络时代最重要的语言之一。Java语言不仅是一门正在被广泛使用的编程语言,而且已成为软件设计开发者应当掌握的一门基础语言。目前,很多新的技术领域都涉及Java语言,国内外许多大学已将Java语言列入了本科教学计划,掌握Java已经成为共识。本次课程设计就是利用java语言来编写简单的计算器,能进行加、减、乘、除四则运算,下面给出了该设计的理论分析和具体步骤。一、摘要本计算器可以进行简单的四则运算(加、减、乘、除),但仅限于十进制下。“Backspace”按钮表

2、示退格“CE”按钮表示清除当前文本框内的数据按钮表示清除文本框内数据,同时var、answer清零。该程序可在JCreator环境下直接运行。二、概要设计1、自定义说明(1)类名:Calculator作用:主类继承的父类:JFrame类实现的接口:ActionListener类publicclassCalculatorextendsJFrameimplementsActionListenerprivatestaticStringbtnTexts=0,1,2,3,4,5,6,7,8,9,+,-,*,/,.,+/-;/定义数组bstTexts来存放计算器上的各个按钮Buttonbutton=new

3、Button16;ButtonBkButton,CeButton,CButton,EqButton;booleanclickable;/控制当前能否按键doublevard,answerd;用来保存double型数据的中间值(vard)和最后结果(answerd)shortkey=-1,prekey=-1;/key用来保存当前进行何种运算,prekey用来保存前次进行何种运算DecimalFormatdf;/设置数据输出精度privateJTextFielddisplayField=newJTextField();/计算结果显示区publicCalculator()publicvoidacti

4、onPerformed(ActionEventevent)方法名:Calculator作用:设置窗体布局publicCalculator()/Frameframe=newFrame(Calculator);super(Calculator);显示主窗口标题“Calculator”设置数据输出精度(对于doubledf=newDecimalFormat(0.00000000);型值)BkButton=newButton(Backspace);BkButton.setForeground(Color.red);CeButton=newButton(CE);tForeground(Color.red

5、);CButton=newButton(C);CButton.setForeground(Color.red);将“Backspace”、“CE”、”C”、EqButton=newButton(=);EqButton.setForeground(Color.red);“=”显示为红色BkButton.addActionListener(this);nListener(this);CButton.addActionListener(this);EqButton.addActionListener(this);displayField.setHorizontalAlignment(JTextFie

6、ld.RIGHT);/将计算结果显示在displayField的右面JPanelp1=newJPanel(newFlowLayoutO);以FlowLayout布局p1p1.add(BkButton);p1.add(CeButton);p1.add(CButton);pl.add(EqButton);设置四个按钮:Backspace,CE,C,=JPanelp2=newJPanel(newGridLayout(2,l);以GridLayout布局p2p2.add(displayField);p2.add(p1);加入显示结果的JTextField和plJPanelp3=newJPanel(ne

7、wGridLayout(4,4);以GridLayout布局p3for(inti=0;ibtnTexts.length;i+)buttoni=newButton(btnTextsi);/将数组btnTexts的值赋给数组buttonbuttoni.setForeground(Color.blue);/组件button的前景色显示蓝色p3.add(buttoni);buttoni.addActionListener(this);Containercp=this.getContentPaneO;采用默认的BorderLayout布局cpcp.add(p2,BorderLayout.NORTH);R

8、);(3)方法名:actionPerformed作用:设置各个按钮的行为publicvoidactionPerformed(ActionEventevent)booleansign=false;判断是否是double型数参与运算,是为true,不是为falseObjecttemp=event.getSource();tryfor(inti=0;i=9;i+)/如果按下数据按钮,将按下的按钮代表的数据插入的当前文本框字符串之后if(temp=buttoni&clickable=true)displayField.setText(displayField.getText()+Integer.toS

9、tring(i);/按下.按钮时,判断当前文本框内字符串中含不含.,如果已含,则不允许再插入.if(temp=button14&clickable=true)if(temp=button10|temp=button11|temp=button12|temp=button13)&clickable=true)/+操作if(temp=button10)/-操作if(temp=button11)/*操作if(temp=button12)/操作if(temp=button13)/=操作if(temp=EqButton&clickable=true)/按下+/-按钮时处理if(temp=button15

10、&clickable=true)按下Backspace键,利用循环将当前字符串中的最后一个字母删除if(temp=BkButton&clickable=true)按下CE按钮,将当前文本框内数据清除if(temp=CeButton)按下C按钮,文本框内数据清除,同时var,answer清0if(temp=CButton)/输入中如果有操作非法,比如按下两次+,捕获异常catch(Exceptione)displayField.setText(操作非法);clickable=false;2、界面设计下图为该程序运行时的界面截图:三、详细设计以下为该程序的主要代码:importjavax.swin

11、g.*;importjava.awt.*;importjavax.swing.event.*;importjava.awt.event.*;imalFormat;publicclassCalculatorextendsJFrameimplementsActionListenerprivatestaticStringbtnTexts=0123456789+_*/+/_;Buttonbutton=newButton16;ButtonBkButton,CeButton,CButton,EqButton;booleanclickable;控制当前能否按键doublevard,answerd;用来保存d

12、ouble型数据的中间值(vard)和最后结果(answerd)shortkey=_1,prekey=_1;/key用来保存当前进行何种运算,prekey用来保存前次进行何种运算DecimalFormatdf;设置数据输出精度privateJTextFielddisplayField=newJTextField();/计算结果显示区publicCalculator()super(Calculator);显示主窗口标题“Calculator”df=newDecimalFormat(0.00000000);/设置数据输出精度(对于double型值)BkButton=newButton(Backsp

13、ace);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);CButto

14、n.addActionListener(this);EqButton.addActionListener(this);displayField.setHorizontalAlignment(JTextField.RIGHT);/将计算结果显示在displayField的右面JPanelp1=newJPanel(newFlowLayoutO);以FlowLayout布局p1p1.add(BkButton);p1.add(CeButton);p1.add(CButton);pl.add(EqButton);设置三个按钮:Backspace,CE,C,=JPanelp2=newJPanel(newG

15、ridLayout(2,l);以GridLayout布局p2p2.add(displayField);p2.add(p1);加入显示结果的JTextField和p1JPanelp3=newJPanel(newGridLayout(4,4);以GridLayout布局p3for(inti=0;ibtnTexts.length;i+)将数组btnTexts的值赋buttoni=newButton(btnTextsi);给数组button组件button的前景色示蓝buttoni.setForeground(Color.blue);色p3.add(buttoni);buttoni.addAction

16、Listener(this);Containercp=this.getContentPaneO;采用默认的BorderLayout布局cpcp.add(p2,BorderLayout.NORTH);cp.add(p3,BorderLayout.CENTER);/设置各个按钮行为publicvoidactionPerformed(ActionEventevent)booleansign=false;判断是否是double型数参与运算,是为true,不是为falseObjecttemp=event.getSource();tryfor(inti=0;i=9;i+)/如果按下数据按钮,将按下的按钮代

17、表的数据插入的当前文本框字符串之后if(temp=buttoni&clickable=true)displayField.setText(displayField.getText()+Integer.toString(i);/按下.按钮时,判断当前文本框内字符串中含不含.,如果已含,则不允许再插入.if(temp=button14&clickable=true)booleanisDot=false;if(displayField.getText().length()=0)isDot=true;for(inti=0;idisplayField.getText().length();i+)if(.

18、=displayField.getText().charAt(i)isDot=true;break;if(isDot=false)displayField.setText(displayField.getText()+.);if(temp=button10|temp=button11|temp=button12|temp=button13)&clickable=true)/+操作if(temp=button10)switch(prekey)case0:answerd+=Double.parseDouble(displayField.getText();break;case1:answerd-=

19、Double.parseDouble(displayField.getText();break;case2:answerd*=Double.parseDouble(displayField.getText();break;case3:if(Double.parseDouble(displayField.getText()=0)displayField.setText(除数不能为零);clickable=false;elseanswerd/=Double.parseDouble(displayField.getText();break;default:le(displayField.getTex

20、t();displayField.setText();prekey=key=0;/-操作if(temp=button11)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(displayF

21、ield.getText()=0)displayField.setText(除数不能为零);clickable=false;elseanswerd/=Double.parseDouble(displayField.getText();break;default:answerd=Double.parseDouble(displayField.getText();displayField.setText();prekey=key=1;/*操作if(temp=button12)switch(prekey)case0:answerd+=Double.parseDouble(displayField.g

22、etText();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;elseanswerd/=Double.parseDouble(displayField.getText();break;

23、default:answerd=Double.parseDouble(displayField.getText();displayField.setText();prekey=key=2;/操作if(temp=button13)switch(prekey)case0:answerd+=Double.parseDouble(displayField.getText();break;case1:answerd-=Double.parseDouble(displayField.getText();break;case2:answerd*=Double.parseDouble(displayField

24、.getText();break;case3:if(Double.parseDouble(displayField.getText()=0)displayField.setText(除数不能为零);clickable=false;elseanswerd/=Double.parseDouble(displayField.getText();break;default:answerd=Double.parseDouble(displayField.getText();displayField.setText();prekey=key=3;/=操作if(temp=EqButton&clickable

25、=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(除

26、数不能为零);clickable=false;elseanswerd/=vard;displayField.setText(df.format(answerd);elsevard=Double.parseDouble(displayField.getText();if(key=0)prekey=-1;answerd+=Double.parseDouble(displayField.getText();displayField.setText(df.format(answerd);if(key=1)prekey=-1;answerd-=Double.parseDouble(displayFiel

27、d.getText();displayField.setText(df.format(answerd);if(key=2)prekey=-1;answerd*=Double.parseDouble(displayField.getText();displayField.setText(df.format(answerd);if(key=3)prekey=-1;if(Double.parseDouble(displayField.getText()=0)displayField.setText(除数不能为零);clickable=false;elseanswerd/=Double.parseDo

28、uble(displayField.getText();displayField.setText(df.format(answerd);prekey=5;/按下+/-按钮时处理if(temp=button15&clickable=true)booleanisNumber=true;Strings=displayField.getText();for(inti=0;i=0&s.charAt(i)=9|s.charAt(i)=.|s.charAt(i)=-)isNumber=false;break;if(isNumber=true)/如果当前字符串首字母有-号,代表现在是个负数,再按下时,则将首符

29、号去掉if(s.charAt(0)=-)displayField.setText();for(inti=1;is.length();i+)chara=s.charAt(i);displayField.setText(displayField.getText()+a);/如果当前字符串第一个字符不是符号,则添加一个符号在首字母处elsedisplayField.setText(-+s);按下Backspace键,利用循环将当前字符串中的最后一个字母删除if(temp=BkButton&clickable=true)Strings=displayField.getText();displayFie

30、ld.setText();for(inti=0;is.length()-1;i+)chara=s.charAt(i);displayField.setText(displayField.getText()+a);按下CE按钮,将当前文本框内数据清除if(temp=CeButton)displayField.setText();clickable=true;按下C按钮,文本框内数据清除,同时var,answer清0if(temp=CButton)vard=answerd=0;displayField.setText();clickable=true;/输入中如果有操作非法,比如按下两次+,捕获异常catch(Exceptione)displayF

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论