版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
年4月19日用JAVA编写的计算器程序设计报告文档仅供参考目录TOC\o"2-3"\h\z\t"标题1,1,目录,1"目录 I1 需求分析 11.1 计算器的基本功能: 11.1.1 加法运算:用数字按钮和“+”按钮进行运算; 11.1.2 减法运算:用数字按钮和“-”按钮进行运算; 11.1.3 乘法运算:用数字按钮和“*”按钮进行运算; 11.1.4 除法运算:用数字按钮和“/”按钮进行运算; 11.2 退格键和清零键:用”Backspace”和”C”按钮实现; 11.3 计算器的科学计算方法: 11.3.1 开方:用数字按钮和“Sqrt”按钮进行运算; 11.3.2 百分比:用数字按钮和“%”按钮进行运算; 11.3.3 求倒数:用数字按钮和“1/x”按钮进行运算; 12 设计 22.1 用户界面设计 22.1.1 该计算器程序的设计:用户界面包括Swing组件,不过程序中大都使用的是AWT组件.importjava.awt.*; 22.1.2 在AWT组件, 22.1.3 这个界面设计中包含了两个接口,单击事件监听器接ActionListener口和键盘事件监听器接口(KeyListener). 32.1.4 程序设计中,使用了布局管理: 42.2 概要设计 42.2.1 Calculator类中的类名是Calculator.它的功能是使用图形用户来实现计算器的界面设计和运算功能以及一些科学运算方法. 42.2.2 main主类.中调用了cal.display来实现计算器的功能. 43 实现 44 测试 164.1 实现加法运算:4+12=16 164.2 实现减法运算:22-11=11 174.3 实现乘法运算:3*9=27 174.4 实现除法运算:64/32=2 184.5 用”C’实现清零功能: 184.6 用”Backspace”实现退格功能: 194.7 求倒数:1/4=0.25 195 总结和体会 20需求分析(该部分主要阐述所要实现的程序具体具有什么样的功能,要细化,能够用图表作为辅助描述手段)该计算器程序除了具备加减乘除基本功能外,还有清零键C和退格键Backspace,和一些部分的科学计算方法,包括开方、求倒、百分比,程序里面也写了键盘事件监听器接口,不过由于时间仓促,还没能设计出来,因此该计算器不能实现此功能。BackspaceCECMC789/SqrtMR456*%MS123-1/xM+0+/-.+=计算器的基本功能:加法运算:用数字按钮和“+”按钮进行运算;减法运算:用数字按钮和“-”按钮进行运算;乘法运算:用数字按钮和“*”按钮进行运算;除法运算:用数字按钮和“/”按钮进行运算;退格键和清零键:用”Backspace”和”C”按钮实现;计算器的科学计算方法:开方:用数字按钮和“Sqrt”按钮进行运算;百分比:用数字按钮和“%”按钮进行运算;求倒数:用数字按钮和“1/x”按钮进行运算;设计(该部分主要要说明,在使用Java实现该程序前考虑的内容,主要包括下面两部分:用户界面设计和概要设计(这部分可简单看作是类设计))。用户界面设计(用图或文字阐述你的界面如何设计,如:包括哪些部分,使用什么样的布局管理器等)该计算器程序的设计:用户界面包括Swing组件,不过程序中大都使用的是AWT组件.importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;在AWT组件,使用了面板和按钮: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;界面设计也包括了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());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));}在程序中也注册了事件监听器,里面包含了事件处理方法./*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程序设计中,使用了布局管理:用流布局管理器(FlowLayout)设置面板p4=newPanel(newFlowLayout());p5=newPanel(newFlowLayout());p6=newPanel(newFlowLayout());用边布局管理器(BorderLayout)设置计算器容器北西组件的大小:f.setLayout(newBorderLayout(4,4));f.add(p5,BorderLayout.NORTH);`f.add(p4,BorderLayout.CENTER);f.add(p3,BorderLayout.WEST);用网格布局管理器(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.它的功能是使用图形用户来实现计算器的界面设计和运算功能以及一些科学运算方法.在Calculator类中具有设置计算器界面布局和颜色的成员方法,使用了两个接口单击事件监听器接ActionListener口和键盘事件监听器接口(KeyListener).返回值类型是布尔类型.main主类.中调用了cal.display来实现计算器的功能.实现(程序的实现代码)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.");tf1.setEditable(false);p5.add(tf1);f.add(p5,BorderLayout.NORTH);f.add(p4,BorderLayout.CENTER);f.add(p3,BorderLayout.WEST);tf1.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");b1.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);b0.setForeground(Color.BLUE);/*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);b1.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);b0.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);p1.add(bBackspace);p1.add(bCE);p1.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){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));}//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+=this.dNowInput;if(this.dMemory!=0)tf2.setText("M");elsetf2.setText("");}//key"%"if(this.keyAvailable&&e.getActionCommand()=="%"){
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2030年中国海轮碱Ⅱ产业未来发展趋势及投资策略分析报告
- 2024-2030年中国海水养殖海蜇行业竞争力策略及投资运作模式分析报告
- 2024-2030年中国汽车美容行业市场发展分析及前景趋势与投资研究报告
- 2024-2030年中国汽车玻璃贴膜行业产销需求及投资策略研究报告
- 2022年大学海洋科学专业大学物理下册模拟考试试题D卷-附解析
- 2022年山西省长治市壶关县九年级数学第一学期期末达标检测模拟试题含解析
- 2022年大学环境生态专业大学物理下册模拟考试试卷A卷-附解析
- 2022年暑假高分训练营-高三入学综合能力拔高卷12(解析版)
- 2022年大学心理学专业大学物理下册模拟考试试卷D卷-附解析
- 2022年大学水产专业大学物理下册月考试题D卷-附解析
- 世界各国国家代号、区号、时差
- Talent5五大职业性格测试技巧138答案
- 工程水文学题库及题解(全)
- 【学生基本信息表】样本
- 环境监测仪器设备采购投标方案(技术标)
- 薄壁不锈钢管卡压连接施工工艺
- 新课标-人教版数学六年级上册第四单元《比》单元教材解读
- XML期末大作业实验报告
- 部编版道德与法治 四年级上册 单元作业设计《为父母分担》
- 第一章-教育及其本质
- 中国女性生理健康白皮书
评论
0/150
提交评论