




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
word完美格式word完美格式精心整理 学习帮手精心整理 学习帮手目录 11 需求分析 1计算器的基本功能:1.1.1加法运算:1.1.1加法运算:用数字按钮和“+”1.1.2减法运算:用数字按钮和“-1.1.3乘法运算:用数字按钮和“*,,1.1.4除法运算:用数字按钮和“/”按钮进行运算; 1按钮进行运算; 1按钮进行运算; 1按钮进行运算; 1退格键和清零键:用"Backspace”和“C按钮实现; TOC\o"1-5"\h\z计算器的科学计算方法: 1开方:用数字按钮和“Sqrt”按钮进行运算; 1百分比:用数字按钮和“%'按钮进彳T运算; 1求倒数:用数字按钮和“1/x”按钮进行运算; 1设计 2用户界面设计 2该计算器程序的设计:用户界面包括 Swing组件,不过程序中大都使用的AWW件.importjava.awt.*; 2在AWW件, 2这个界面设计中包含了两个接口 ,单击事件监听器接 ActionListener口监听器接口 (KeyListener) 4程序设计中,使用了布局管理: 4概要设计 4Calculator类中的类名是Calculator.它的功能是使用图形用户来实现计算器的界面设计和运算功能以及一些科学运算方法 4main主类.中调用了cal.display 来实现计算器的功能 4实现 4\o"CurrentDocument"4测试 164+12=16 22-11=11 4+12=16 22-11=11 3*9=27 64/32=2 17171818实现减法运算实现乘法运算实现除法运算TOC\o"1-5"\h\z用“C'实现清零功能: 19用“Backspace”实现退格功能 : 20求倒数:1/4=0.25 20总结和体会.总结和体会.1需求分析(该部分主要阐述所要实现的程序具体具有什么样的功能, 要细化,可以用图表作为辅助描述手段)该计算器程序除了具备加减乘除基本功能外,还有清零键C和退格键Backspace,和一些部分的科学计算方法,包括开方、求倒、百分比,程序里面也写了键盘事件监听器接口,不过由于时间仓促,还没能设计出来,所以该计算器不能实现此功能。BackspaceCECMC789/SqrtMR456*%MS123-1/xM+0+/-.+=计算器的基本功能:加法运算:用数字按钮和“+”按钮进行运算;减法运算:用数字按钮和“-”按钮进行运算;乘法运算:用数字按钮和“*”按钮进行运算;除法运算:用数字按钮和“/”按钮进行运算;退格键和清零键:用"Backspace"和“C'按钮实现;计算器的科学计算方法:开方:用数字按钮和“Sqrt”按钮进行运算;百分比:用数字按钮和“%按钮进行运算;求倒数:用数字按钮和“1/x”按钮进行运算;2设计(该部分主要要说明,在使用Java实现该程序前考虑的内容,主要包括下面两部分:用户界面设计和概要设计(这部分可简单看作是类设计) )。用户界面设计(用图或文字阐述你的界面如何设计, 如:包括哪些部分,使用什么样的布局管理器等)该计算器程序的设计:用户界面包括 Swing组件,不过程序中大都使用的是AWffi件.importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;在AWffi件,(1)使用了面板和按钮:Panelp1,p2,p3,p4,p5,p6;Buttonb1,b2,b3,b4,b5,b6,b7,b8,b9,b0;ButtonbDiv,bSqrt,bMulti,bMinus,bPercent,bPlus,bReciprocal,bEqual,bDot,bNegative;ButtonbBackspace,bCE,bC,bMR,bMS,bMC,bM;(2)界面设计也包括了 AWT的委托事件模型,该程序设计在java.awt.event 包中定义了窗口事件类publicvoidwindowClosing(WindowEvente){System.exit(0);}单击事件类.publicvoidactionPerformed(ActionEvente){//key0to9if(this.keyAvailable &&e.getActionCommand().length()==1 &&e.getActionCommand().compareTo("0")>=0 &&e.getActionCommand().compareTo("9")<=0){if(this.isTempNowInput){this.dNowInput=0;this.isTempNowInput=false;}this.nBitsNum++;if(this.alreadyHaveDot==false)this.dNowInput=this.dNowInput*10+Double.parseDouble(e.getActionCommand());elsedoubletemp=Double.parseDouble(e.getActionCommand());for(inti=this.n;i<0;i++){temp*=0.1;}this.dNowInput+=temp;this.n--;}this.tf1.setText(Double.toString(this.dNowInput));在程序中也注册了事件监听器,里面包含了事件处理方法/*add(b1);add(b2);add(b3);add(b4);add(b5);add(b6);add(b7);add(b8);add(b9);add(b0);*/b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);b4.addActionListener(this);b5.addActionListener(this);b6.addActionListener(this);b7.addActionListener(this);b8.addActionListener(this);b9.addActionListener(this);b0.addActionListener(this);这个界面设计中包含了两个接口 ,单击事件监听器接ActionListener口和键盘事件监听器接口(KeyListener).publicclassCalculatorextendsWindowAdapterimplementsActionListener,KeyListener程序设计中,使用了布局管理:(1)用流布局管理器(FlowLayout)设置面板p4=newPanel(newFlowLayout());p5=newPanel(newFlowLayout());p6=newPanel(newFlowLayout());(2)用边布局管理器(BorderLayout)设置计算器容器北西组件的大小 :f.setLayout(newBorderLayout(4,4));f.add(p5,BorderLayout.NORTH);'f.add(p4,BorderLayout.CENTER);f.add(p3,BorderLayout.WEST);(3)用网格布局管理器(GridLayout)设置面板p1=newPanel(newGridLayout(1,3,5,5));p2=newPanel(newGridLayout(4,5,5,5));p3=newPanel(newGridLayout(5,1,5,5));概要设计该部分主要阐述整个程序包括哪些类, 各个类的类名、功能,以及各类中具有什么样的public成员方法(方法访问修饰符、返回值类型、名字、参数列表、方法的功能) ,以及这些类的对象之间有什么样的关系(或类和类之间有什么关系,即,函数调用关系) 。计算器的整个程序包括:Calculator类和一个main主类.Calculator 类中的类名是Calculator.它的功能是使用图形用户来实现计算器的界面设计和运算功能以及一些科学运算方法 .(1)在Calculator 类中具有设置计算器界面布局和颜色的成员方法 ,使用了两个接口单击事件监听器接ActionListener 口和键盘事件监听器接口 (KeyListener).(2)返回值类型是布尔类型.main主类.中调用了cal.display 来实现计算器的功能.3实现(程序的实现代码)importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassCalculatorextendsWindowAdapterimplementsActionListener,KeyListener{doubledResult=0;doubledNowInput=0;doubledMemory;intn=0;intnOperation=1;intnBitsNum=0;charch;booleanalreadyHaveDot=false;booleankeyAvailable=true;booleanalreadyClickedEqueal=false;booleanisTempNowInput=false;JFramef;Panelp1,p2,p3,p4,p5,p6;TextFieldtf1,tf2;Buttonb1,b2,b3,b4,b5,b6,b7,b8,b9,b0;ButtonbDiv,bSqrt,bMulti,bMinus,bPercent,bPlus,bReciprocal,bEqual,bDot,bNegative;ButtonbBackspace,bCE,bC,bMR,bMS,bMC,bM;publicvoiddisplay(){f=newJFrame("Calculator");f.setForeground(Color.BLUE);f.setSize(290,223);f.setLocation(220,220);f.setBackground(Color.PINK);f.setResizable(false);f.setLayout(newBorderLayout(4,4));p1=newPanel(newGridLayout(1,3,5,5));p2=newPanel(newGridLayout(4,5,5,5));p3=newPanel(newGridLayout(5,1,5,5));p4=newPanel(newFlowLayout());p5=newPanel(newFlowLayout());p6=newPanel(newFlowLayout());p4.add(p1);p4.add(p2);tf1=newTextField(35);tf1.setText("0.");tfl.setEditable(false);p5.add(tf1);f.add(p5,BorderLayout.NORTH);f.add(p4,BorderLayout.CENTER);f.add(p3,BorderLayout.WEST);tfl.addKeyListener(this);b1=newButton("1");b2=newButton("2");b3=newButton("3");b4=newButton("4");b5=newButton("5");b6=newButton("6");b7=newButton("7");b8=newButton("8");b9=newButton("9");b0=newButton("0");bl.setForeground(Color.BLUE);b2.setForeground(Color.BLUE);b3.setForeground(Color.BLUE);b4.setForeground(Color.BLUE);b5.setForeground(Color.BLUE);b6.setForeground(Color.BLUE);b7.setForeground(Color.BLUE);b8.setForeground(Color.BLUE);b9.setForeground(Color.BLUE);bO.setForeground(Color.BLUE);/*add(b1);add(b2);add(b3);add(b4);add(b5);add(b6);add(b7);add(b8);add(b9);add(b0);*/bl.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);b4.addActionListener(this);b5.addActionListener(this);b6.addActionListener(this);b7.addActionListener(this);b8.addActionListener(this);b9.addActionListener(this);bO.addActionListener(this);bl.addKeyListener(this);b2.addKeyListener(this);b3.addKeyListener(this);b4.addKeyListener(this);b5.addKeyListener(this);b6.addKeyListener(this);b7.addKeyListener(this);b8.addKeyListener(this);b9.addKeyListener(this);bO.addKeyListener(this);bDiv=newButton"");bSqrt=newButton("sqrt");bMulti=newButton("*");bMinus=newButton("-");bPercent=newButton("%");bPlus=newButton("+");bReciprocal=newButton("1/x");bEqual=newButton("=");bDot=newButton(".");bNegative=newButton("+/-");bDiv.setForeground(Color.RED);bSqrt.setForeground(Color.RED);bMulti.setForeground(Color.RED);bMinus.setForeground(Color.RED);bPercent.setForeground(Color.RED);bPlus.setForeground(Color.RED);bReciprocal.setForeground(Color.RED);bEqual.setForeground(Color.RED);bDot.setForeground(Color.RED);bNegative.setForeground(Color.RED);/*add(bDiv);add(bSqrt);add(bMulti);add(bMinus);add(bPercent);add(bPlus);add(bReciprocal);add(bEqual);add(bDot);add(bNegative);*/bDiv.addActionListener(this);bSqrt.addActionListener(this);bMulti.addActionListener(this);bMinus.addActionListener(this);bPercent.addActionListener(this);bPlus.addActionListener(this);bReciprocal.addActionListener(this);bEqual.addActionListener(this);bDot.addActionListener(this);bNegative.addActionListener(this);bDiv.addKeyListener(this);bSqrt.addKeyListener(this);bMulti.addKeyListener(this);bMinus.addKeyListener(this);bPercent.addKeyListener(this);bPlus.addActionListener(this);bReciprocal.addKeyListener(this);bEqual.addKeyListener(this);bDot.addKeyListener(this);bNegative.addKeyListener(this);p2.add(b7);p2.add(b8);p2.add(b9);p2.add(bDiv);p2.add(bSqrt);p2.add(b4);p2.add(b5);p2.add(b6);p2.add(bMulti);p2.add(bPercent);p2.add(b1);p2.add(b2);p2.add(b3);p2.add(bMinus);p2.add(bReciprocal);p2.add(b0);p2.add(bNegative);p2.add(bDot);p2.add(bPlus);p2.add(bEqual);bBackspace=newButton("Backspace");bCE=newButton("CE");bC=newButton("C");bBackspace.setForeground(Color.GREEN);bCE.setForeground(Color.BLACK);bC.setForeground(Color.BLACK);/*add(bBackspace);add(bCE);add(bC);*/bBackspace.addActionListener(this);bCE.addActionListener(this);bC.addActionListener(this);bBackspace.addKeyListener(this);bCE.addKeyListener(this);bC.addKeyListener(this);pl.add(bBackspace);pl.add(bCE);pl.add(bC);tf2=newTextField(2);tf2.setEnabled(false);tf2.setBackground(Color.PINK);bMC=newButton("MC");bMR=newButton("MR");bMS=newButton("MS");bM=newButton("M+");bMC.setForeground(Color.BLUE);bMR.setForeground(Color.BLUE);bMS.setForeground(Color.BLUE);bM.setForeground(Color.BLUE);tf2.addKeyListener(this);/*add(MC);add(MR);add(MS);add(M);*/bMC.addActionListener(this);bMR.addActionListener(this);bMS.addActionListener(this);bM.addActionListener(this);bMC.addKeyListener(this);bMR.addKeyListener(this);bMS.addKeyListener(this);bM.addKeyListener(this);p6.add(tf2);p3.add(p6);p3.add(bMC);p3.add(bMR);p3.add(bMS);p3.add(bM);f.setVisible(true);f.addWindowListener(this);}publicvoidactionPerformed(ActionEvente){//key0to9if(this.keyAvailable &&e.getActionCommand().length()==1 &&e.getActionCommand().compareTo("0")>=0 &&e.getActionCommand().compareTo("9")<=0){if(this.isTempNowInput){this.dNowInput=0;this.isTempNowInput=false;}this.nBitsNum++;if(this.alreadyHaveDot==false)this.dNowInput=this.dNowInput*10+Double.parseDouble(e.getActionCommand());else{doubletemp=Double.parseDouble(e.getActionCommand());for(inti=this.n;i<0;i++){temp*=0.1;}this.dNowInput+=temp;this.n--;}this.tf1.setText(Double.toString(this.dNowInput));}//keydotif(this.keyAvailable&&e.getActionCommand()=="."){if(this.alreadyHaveDot==false){this.nBitsNum++;this.alreadyHaveDot=true;this.n=-1;}}//key"+","-","*","/"if(this.keyAvailable &&e.getActionCommand()=="+" ||e.getActionCommand()=="-" || e.getActionCommand(尸"*" ||e.getActionCommand(尸"/"){if(this.alreadyClickedEqueal){this.dNowInput=this.dResult;this.isTempNowInput=true;}else{switch(this.nOperation){case1:this.dResult+=this.dNowInput;break;case2:this.dResult-=this.dNowInput;break;case3:this.dResult*=this.dNowInput;break;case4:{if(this.dNowInput==0){tf1.setText(" 除数不能为零");this.keyAvailable=false;}elsethis.dResult=this.dResult/this.dNowInput;}}if(this.keyAvailable)tf1.setText(Double.toString(this.dResult));this.dNowInput=0;}if(e.getActionCommand()=="+"){this.nOperation=1;}if(e.getActionCommand()=="-"){this.nOperation=2;}if(e.getActionCommand()=="*"){this.nOperation=3;}if(e.getActionCommand()=="/"){this.nOperation=4;}this.nBitsNum=0;this.alreadyClickedEqueal=false;}//key"+/-”if(this.keyAvailable&&e.getActionCommand()=="+/-"){this.dNowInput=0-this.dNowInput;tf1.setText(Double.toString(this.dNowInput));}//key"C"if(e.getActionCommand()=="C"){this.nBitsNum=0;this.dResult=0;this.dNowInput=0;this.alreadyHaveDot=false;this.n=0;this.nOperation=1;this.keyAvailable=true;this.alreadyClickedEqueal=false;tf1.setText("0.");{ch='C';}}//key"CE"if(e.getActionCommand()=="CE"){this.nBitsNum=0;this.dNowInput=0;this.alreadyHaveDot=false;this.n=0;this.nOperation=1;this.keyAvailable=true;tf1.setText("0.");}//key"sqrt"if(this.keyAvailable&&e.getActionCommand()=="sqrt"){if(this.alreadyClickedEqueal){if(this.dResult>=0){this.dResult=Math.sqrt(this.dResult);tf1.setText(Double.toString(this.dResult));}else{tf1.setText(" 函数输入无效");this.keyAvailable=false;}}else{if(this.dNowInput>=0){this.dNowInput=Math.sqrt(this.dNowInput);tf1.setText(Double.toString(this.dNowInput));}else{tf1.setText(" 函数输入无效");this.keyAvailable=false;}}}//key"1/x"if(this.keyAvailable&&e.getActionCommand()=="1/x"){if(this.dNowInput==0){tf1.setText(" 除数不能为零");this.keyAvailable=false;}else{this.dNowInput=1/this.dNowInput;tf1.setText(Double.toString(this.dNowInput));}}//key"="if(this.keyAvailable&&e.getActionCommand()=="="){this.alreadyClickedEqueal=true;switch(this.nOperation){this.dResult+=this.dNowInput;break;this.dResult-=this.dNowInput;break;this.dResult*=this.dNowInput;break;{if(this.dNowInput==0){tf1.setText(" 除数不能为零");this.keyAvailable=false;}elsethis.dResult=this.dResult/this.dNowInput;}}if(this.keyAvailable)tf1.setText(Double.toString(this.dResult));}//key"MS"if(this.keyAvailable&&e.getActionCommand()=="MS"){this.dMemory=this.dNowInput;if(this.dMemory!=0)tf2.setText("M");}//key"MC"if(this.keyAvailable&&e.getActionCommand()=="MC"){this.dMemory=0;tf2.setText("");}//key"MR"if(this.keyAvailable&&e.getActionCommand()=="MR"){this.dNowInput=this.dMemory;tf1.setText(Double.toString(this.dNowInput));}//key"M+"if(this.keyAvailable&&e.getActionCommand()=="M+"){this.dMemory+
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年跨国球员转会合同范本
- 2025商业租赁合同书大全
- 2025专卖店合同专卖店申请加盟合同
- 文言文古诗词文学文化常识知识点
- 2025《设备采购合同范本》
- 《复习大纲梳理》课件
- 课件:人格尊严权的法律保障-教学内容与讨论
- 《城市规划管理与控制策略研究》课件
- 三峡电力职业学院《资产评估案例分析》2023-2024学年第一学期期末试卷
- 南方科技大学《历史学前沿与评论》2023-2024学年第一学期期末试卷
- 集成电路先进封装材料PPT全套教学课件
- 有色金属冶金概论总论
- 砂石料单价编制
- 海藻学知到章节答案智慧树2023年烟台大学
- 六年级下册道德与法治期中测试卷含答案【考试直接用】
- EIM Book 1 Unit 11 Promise,promise单元知识要点
- 全陕西师范大学《716文学综合》考研真题详解下载全
- 引航梯的位置和标识及保养记录
- 外科学急性化脓性腹膜炎
- 苯酚的分子组成和结构课件
- 《罗织经》全文及翻译
评论
0/150
提交评论