




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 4 不做“小马虎”(教学设计)部编版道德与法治一年级下册
- 【+初中语文+】第11课《核舟记》课件+++统编版语文八年级下册
- 2023一年级数学下册 三 丰收了-100以内数的认识信息窗1 农家院-认识100以内的数教学设计 青岛版六三制
- 2024-2025学年高中政治 专题5 2 社会主义市场经济体制的建立和完善教学设计 新人教版选修2
- 4 曹冲称象 教学设计-2024-2025学年语文二年级上册统编版
- Unit 2 My week Part A Lets talk Lets learn大单元整体教学设计表格式-2024-2025学年人教PEP版英语五年级上册
- 一年级语文下册 课文 1 语文园地二教学设计 新人教版
- 七年级英语下册 Unit 10 I'd like some noodles Section B第3课时(1a-1d)教学设计 (新版)人教新目标版
- 12 学会赞美 教学设计-2023-2024学年心理健康三年级大象版
- 1假期有收获 教学设计-2023-2024学年道德与法治二年级上册 统编版
- 2024年北京电子科技职业学院高职单招语文历年参考题库含答案解析
- 《性病防治知识讲座》课件
- 可下载打印的公司章程
- TCCIAT 0043-2022 建筑工程渗漏治理技术规程
- 初中美术七年级下册《第4课扮靓生活的花卉纹样》课件
- 土建、装饰、维修改造等零星工程施工组织方案设计技术标范文
- 宫颈癌病历书写模板
- summary-writing-概要写作-优质课件
- 芭蕾基训课程课时教案
- T∕CIC 049-2021 水泥窑用固体替代燃料
- 部编版高中语文必修下册第八单元《单元导读》教学设计
评论
0/150
提交评论