java计算器设计报告.docx
java计算器设计报告 摘要 本计算器是由java语言所编程设计的标准计算器,可以进行十进制下的四则运算(加、减、乘、除)、开平方、求余、求倒数,还可以实现二进制与十进制之间的转换。通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。 关键词: java语言,计算器,算法 目录 摘要 (1) 1概述 (3) 1.1设计目的及思路 (3) 1.2功能模块设计 (3) 1.3系统功能图 (3) 2计算器的设计与实现 (4) 2.1程序界面 (4) 2.2程序源代码 (4) 3计算器演示 (10) 4运行调试及讨论分析 (13) 5小结 (14) 参考文献: (14) 1概述 1.1设计目的及思路 通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。利用Java Applet图形界面首先开始设计一个计算器的界面,定义计算器所需要的按钮并赋给其按钮名称,使得使用计算器时简单明了,清晰可见,操作轻松。 给各个按钮进行算法,利用鼠标点击事件,当鼠标点击某个按钮时就开始执行那个按钮所定义的算法,生成数据并显示。 除数字的输入为直接进行输入外,其他运算例如+、-、*、/、开平方等算法要求计算时通过内部较为复杂的运算将结果显示在显示屏上。 至于其中的进制转换功能的实现则是直接调用Java中进制转换的函数,例如要将十进制转换成二进制则可直接调用函数Integer.toBinaryString(int i)来实现,充分显示了Java语言的简洁性和Java语言功能的强大性。 当然了在输入数据时还要进行异常捕捉,防止越界的现象的发生,这也是Java语言健壮性的体现! 1.2功能模块设计 以下为标准计算器的基本功能: (1)加法 两个数据进行加操作,可以为小数。 (2)减法 两个数据进行减操作,可以为负数相减。 (3)乘法 两个数相乘操作。 (4)除法 两个数相除操作。 (5)开平方 对任意一个数进行开方运算,可以是小数。 (6)求余 对任意一个数进行求余运算。 (7)倒数 对任意一个数进行倒数运算。 (8)转换 将十进制数转换为二进制以及将二进制转换为十进制。 1.3系统功能图 2计算器的设计与实现 2.1程序界面 2.2程序源代码 import javax.swing.*; import javax.swing.text.JTextComponent; import java.util.StringTokenizer; import java.awt.*; import java.awt.event.*; import java.math.*; public class Calculator implements ActionListener JFrame jf=new JFrame("计算器"); JTextField tf=new JTextField(); JPanel pnl; JButton jButtonDENG; JButton jButtonJIAN; JButton jButtonCHENG; JButton jButton1; JButton jButton2; JButton jButton3; JButton jButton4; JButton jButton5; JButton jButton6; JButton jButton7; JButton jButton8; JButton jButton9; JButton jButton0; JButton jButtonCHU; JButton jButtonQINGKONG; JButton jButtonJIA; JButton jButtonQUYU; JButton jButtonPINGFANG; JButton jButtonXIAOSHUDIAN; JButton jButtonBACKSPACE; JButton jButtonDAOSHU; JButton jButtonKAIPINGFANG; JButton jButtonERJINZHI; JButton jButtonSHIJINZHI; public Calculator () /初始化界面的方法Container c=jf.getContentPane(); tf.setHorizontalAlignment(JTextField.RIGHT); c.add(tf,"North"); JPanel pnl=new JPanel(); c.add(pnl,"Center"); pnl.setLayout(new GridLayout(6,5); jButton1=new JButton("1"); jButton1.addActionListener(this); pnl.add(jButton1); jButton2=new JButton("2"); jButton2.addActionListener(this); pnl.add(jButton2); jButton3=new JButton("3"); jButton3.addActionListener(this); pnl.add(jButton3); jButtonBACKSPACE=new JButton("backspace"); jButtonBACKSPACE.addActionListener(this); pnl.add(jButtonBACKSPACE); jButton4=new JButton("4"); jButton4.addActionListener(this); pnl.add(jButton4); jButton5=new JButton("5"); jButton5.addActionListener(this); pnl.add(jButton5); jButton6=new JButton("6"); jButton6.addActionListener(this); pnl.add(jButton6); jButtonJIA=new JButton("+"); jButtonJIA.addActionListener(this); pnl.add(jButtonJIA); jButton7=new JButton("7"); jButton7.addActionListener(this); pnl.add(jButton7); jButton8=new JButton("8"); jButton8.addActionListener(this); pnl.add(jButton8); jButton9=new JButton("9"); jButton9.addActionListener(this); pnl.add(jButton9); jButtonJIAN=new JButton("-"); jButtonJIAN.addActionListener(this); pnl.add(jButtonJIAN); jButton0=new JButton("0"); jButton0.addActionListener(this); pnl.add(jButton0); jButtonQINGKONG=new JButton("清空"); jButtonQINGKONG.addActionListener(this); pnl.add(jButtonQINGKONG); jButtonCHENG=new JButton("*"); jButtonCHENG.addActionListener(this); pnl.add(jButtonCHENG); jButtonCHU=new JButton("/"); jButtonCHU.addActionListener(this); pnl.add(jButtonCHU); jButtonQUYU=new JButton("%"); jButtonQUYU.addActionListener(this); pnl.add(jButtonQUYU); jButtonPINGFANG=new JButton("平方"); jButtonPINGFANG.addActionListener(this); pnl.add(jButtonPINGFANG); jButtonXIAOSHUDIAN=new JButton("."); jButtonXIAOSHUDIAN.addActionListener(this); pnl.add(jButtonXIAOSHUDIAN); jButtonDENG=new JButton("="); jButtonDENG.addActionListener(this); pnl.add(jButtonDENG); jButtonDAOSHU=new JButton("倒数"); jButtonDAOSHU.addActionListener(this); pnl.add(jButtonDAOSHU); jButtonKAIPINGFANG=new JButton("开平方"); jButtonKAIPINGFANG.addActionListener(this); pnl.add(jButtonKAIPINGFANG); jButtonERJINZHI=new JButton("二进制"); jButtonERJINZHI.addActionListener(this); pnl.add(jButtonERJINZHI); jButtonSHIJINZHI=new JButton("十进制"); jButtonSHIJINZHI.addActionListener(this); pnl.add(jButtonSHIJINZHI); jf.setSize(600,400); jf.setVisible(true); public void actionPerformed(ActionEvent event) /检测运算符的方法try double wen=0; String toknizer="+" String ben; String wenben=tf.getText()+event.getActionCommand(); tf.setText(wenben); /各运算符的判断运行代码 if(wenben.indexOf("*")!=-1) toknizer="*" if(wenben.indexOf("+")!=-1) toknizer="+" if(wenben.indexOf("-")!=-1) toknizer="-" if(wenben.indexOf("/")!=-1) toknizer="/" if(wenben.indexOf("%")!=-1) toknizer="%" if(wenben.indexOf("平方")!=-1) toknizer="平方" if(wenben.indexOf("倒数")!=-1) toknizer="倒数" if(wenben.indexOf("开平方")!=-1) toknizer="开平方" if(wenben.indexOf("二进制")!=-1) toknizer="二进制" if(wenben.indexOf("十进制")!=-1) toknizer="十进制" /各个运算符的运算方法代码 if(event.getSource()=jButtonQINGKONG) /清空算法wenben="" tf.setText(wenben); if(event.getSource()=jButtonBACKSPACE) /清除算法wenben=wenben.substring(0,wenben.length()-10); tf.setText(wenben); if(event.getSource()=jButtonDENG) /"="算法 wenben=wenben.substring(0,wenben.length()-1); double b=new double10; String a=new String15; StringTokenizer sun=new StringTokenizer(wenben,toknizer); int i=0; while(sun.hasMoreTokens() ai+=sun.nextToken(); for(int j=0;jbj+1) wen=bj%bj+1; if(j>1) bj=Double.parseDouble(aj); wen=wen%bj; ben=Double.toString(wen); tf.setText(wenben+"="+ben); catch(Exception e) e.getMessage(); private int sqrt(double d) / TODO Auto-generated method stub return 0; /主函数 public static void main(Stringargs) new Calculator(); /对小程序进行初始化 3计算器演示 加法 减法 乘法 除法