科学计算器--Java课程设计

面向对象程序设计》

课程设计报告

题    目:   科学计算器软件设计与实现   

院 (系):      信息科学与工程学院     

专业班级:    计算机科学与技术1201班  

学生姓名:           程 伟             

学    号:        20121183011          

指导教师:           吴 奕             

20 14 12  月  29  日至20 15  1  月  9  日

华中科技大学武昌分校制


 面向对象程序设计 课程设计任务书


目录

1需求与总体设计.......................................................... 1

1.1需求分析.............................................................. 1

1.2总体设计思路.......................................................... 1

1.3功能图................................................................ 2

1.4类图.................................................................. 2

2详细设计................................................................ 3

2.1详细设计思路.......................................................... 3

2.2类图设计说明和细化................................................... 10

3编码实现............................................................... 11

3.1java编码实现......................................................... 11

4系统测试............................................................... 59

总  结................................................................... 61

1需求与总体设计

1.1需求分析

1.刚启动计算器时的状态:开始计算按键开始键"ON"清零:计算刚启动时,或者任何时候键入了清零键,计算器所处的状态。

2.一个操作数:输入了一个操作数时计算器所处的状态,如键入“2”后的状态,此时操作数为“2”,或者依次键入“3”、“8”后的状态,此时操作数为“38”。

3.运算结果:键入了“=”键后计算器所处的状态,如依次键入“3+5=”之后计算器的状态。在此状态如果输入数字,输入的数字将作为第一个操作数,开始一次新的计算。

4.一个操作数和一个两元符号:输入了一个操作数和加减乘除中的一个键后计算器的状态,如依次输入“2+”或“31×5=÷”之后计算器的状态。

5.操作数两元符操作数:输入了一个操作数、一个加减乘除符号和另一个操作数后计算器所处的状态,如依次键入“30÷4”或“3+5=÷5”后计算器的状态。

6.操作数两元符运算结果:输入了一个操作数、一个加减乘除符号和另一个操作数后紧接着键入开方键计算器所处的状态。

7.错误:执行非法计算后所处的状态,如执行÷0计算或者对负数的开方计算后的状态。比如6/0后计算的结果是“0不能做除数”。

1.2总体设计思路

 对于此计算器程序,首先要设计其GUI界面,总体界面有一个文本框,18个按钮,总体界面用BorderLayout布局。

    文本框放置在最NORTH,然后0到9以及+,-,*,/的按钮放置到一个面板Panel中,添加到整体布局的CENTER,界面设计完成。

布局设计好后再添加按钮事件。对于此程序要考虑到点击加、减、乘、除按钮时是否有点击数字按钮,如果是第一次点击数字按钮或者是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮的数值设置到文本框中,否则则应把文本框中的内容加上你所点击按钮的数值设置到文本框中。

这是计算器中的一种:简单计算器,本项目用到了Java中的GUI界面和swing组件以及awt布局,所以简单易用,它能完成如下的几个小功能:

点击按钮中的数字键和运算符键就能进行简单的加、乘、乘、除求模四则运算 。

1.3功能图

1.4类图

                                    


2详细设计

2.1详细设计思路

1)  流程图,如图6。

图6 流程图

2)  设置窗体

窗体名称biaozhun继承JFrame类和ActionListener接口,并实现public void

actionPerformed(ActionEvent e){}方法。

3)  定义菜单、菜单条、菜单项、按钮、文本框、容器,设置为private类型。

4)  定义变量double memoryd;//使用内存中存储的数字;DecimalFormat df;//保留小数位数。

5)  使用private JButton getJButton()方法添加按钮并给按钮命名,使用

setFont(new Font("楷体", Font.BOLD, 30)); setForeground(new Color

(250,0,0));方法设置按钮的字体和字体颜色。

6)  设置数字按钮1到9并添加监控,使其在发生鼠标事件时改变按钮颜色

addMouseListener(new MouseListener(){

                           public void actionPerformed(MouseEvent e) {

                                  jButton.setForeground(new Color(0,100,0));}

                           public void mouseClicked(MouseEvent e) {

                                  jButton.setForeground(new Color(0,150,100));}

                           public void mouseEntered(MouseEvent e) {

                                  jButton.setForeground(new Color(0,0,250));}

                           public void mouseExited(MouseEvent e) {

                                  jButton.setForeground(new Color(250,0,0));}

                           public void mousePressed(MouseEvent e) {

                                  jButton.setForeground(new Color(0,250,0));}

                           public void mouseReleased(MouseEvent e) {

                                  jButton.setForeground(new Color(250,250,0));}});

7)  开根号运算,定义jButton2 = new JButton("sqrt");对其设置监控,调用Math.sqrt()方法来实现开根号运算,并在文本框中输出结果,

jButton2.addActionListener(new ActionListener() {

      public void actionPerformed(ActionEvent e) {

      double a=Double.parseDouble(jTextField.getText());

      double b;

      if(a<0){jTextField.setText("负数不能开平方");}

      else{b=Math.sqrt(a);jTextField.setText(Double.toString(b));}}});

8)  设置百分比按钮,jButton7 = new JButton("%");使用变量i1来存放从文本框中读出的数据并转换成double类型,定义double类型变量z1,z1=i1/100实现求百分比运算,在使用jTextField.setText(Double.toString(z1))使其在文本框中输出结果

jButton7.addActionListener(new ActionListener() {

                           public void actionPerformed(ActionEvent e) {

                                  double i1=Double.parseDouble(jTextField.getText());

                                  double z1=i1/100;

                                  jTextField.setText(Double.toString(z1)); }});

9)  设置求倒数运算,jButton14 = new JButton("1/x");定义double变量c用来存放从文本框中读出的数据,设置if……else语句来判断当c==0时在文本框中输出“除数不能等于0”,否则就输出结果

jButton14.addActionListener(new ActionListener() {

      public void actionPerformed(ActionEvent e) {

             double c=Double.parseDouble(jTextField.getText());

             double d;

             if(c==0){jTextField.setText("除数不能等于0");

             }else{d=1/c; jTextField.setText(Double.toString(d));}}});

10) 定义相反数按钮,jButton16 = new JButton("+/-");通过使用

0-Double.parseDouble(jTextField.getText().trim());使文本框中的数据变成其相反数

jButton16.addActionListener(new ActionListener() {

             public void actionPerformed(ActionEvent e) {

             double i2=0-Double.parseDouble(jTextField.getText().trim());

             jTextField.setText(Double.toString(i2));}});

11) 等于号按钮,jButton19.setText("=");通过使用switch……case语句来控制,Operator变量在定义+、-、*、/按钮时对其赋值

jButton19.addActionListener(new ActionListener() {

                           public void actionPerformed(ActionEvent e) {

                                  double datatwo;

                                  datatwo=Double.parseDouble(str);

                                  switch(Operator){

                                  case'+':dataone+=datatwo;break;

                                  case'-':dataone-=datatwo;break;

                                  case'*':dataone*=datatwo;break;

                                  case'/':dataone/=datatwo;break;

                                  default:break;}

                                  str=Double.toString(dataone);

                                  jTextField.setText(str);}});

12) 定义文本框textMemory,用来显示进行MS、M+操作时显示M用,使用

textMemory.setEditable(false);方法使textMemory文本框变成不可编辑。

13) 定义文本框jTextField,用来显示运算结果

jTextField.addKeyListener(new KeyAdapter() {

                           public void keyTyped(KeyEvent e) {

                           if(e.getKeyChar()>='0'&&e.getKeyChar()<='9'){

                                  str+=e.getKeyChar();

                                  jTextField.setText(str);

                           }else if(e.getKeyChar()==KeyEvent.VK_BACK_SPACE){

                                  str=str.substring(0, str.length()-1);

                                  jTextField.setText(str);

                           }else if(e.getKeyChar()==KeyEvent.VK_ESCAPE){

                                  str="";

                                  jTextField.setText(str);}}});

14) 定义jButton20、jButton21、jButton22、jButton23分别为MC、MR、MS、

M+,并且对按钮添加监听,计算器内部有一个存贮器,假设将其称为“寄数器”。MS是将当前窗口数据写入“寄数器”,M+是将当前窗口数据与“寄数器”内的数据相加后再存入“寄数器”,MR是读出“寄数器”内的数据到窗口,MC是清除“寄数器”内的数据,使其为0。按钮实现方法在public void actionPerformed

(ActionEvent e)中实现,

public void actionPerformed(ActionEvent e) {

             Object temp = e.getSource();

             if (temp == jButton20) {

              memoryd = memoryi = 0;

              textMemory.setText("ZY ");

              textMemory.setFont(new Font("华文行楷", Font.BOLD, 30));}

            //'MS'的操作,将当前文本框内容保存入内存,显示'M'

            if (temp == jButton22) {   //textMemory显示m的文本框

              boolean isDot = false;

              textMemory.setText(" M  ");

              textMemory.setFont(new Font("楷体", Font.BOLD, 30));

              for (int i = 0; i < jTextField.getText().length(); i++)

                if ('.' == jTextField.getText().charAt(i)) {

                  isDot = true;

                  break;       }

              //如果是double,则存入memoryd(double存储器)

              if (isDot == true) {

                memoryd = Double.parseDouble(jTextField.getText());

                memoryi = 0; //保证存储器中存放最新的值  }

              //如果是int,则存入memoryi(int存储器)

              else {

                memoryi = Integer.parseInt(jTextField.getText());

                memoryd = 0; //保证存储器中存放最新的值      }}

            //'MR'的操作,将存储器中的信息输出

            if (temp == jButton21) {     if (memoryd != 0)

                     jTextField.setText(Double.toString(memoryd));

              if (memoryi != 0)

                     jTextField.setText(Integer.toString(memoryi));  }

 //'M+'的功能,将当前文本框里的数据和存储器中数据相加后,再存入存储器

            if (temp == jButton23) {

                   textMemory.setText(" M  ");

                   textMemory.setFont(new Font("楷体", Font.BOLD, 30));

                   boolean isDot = false;

                   for (int i = 0; i < jTextField.getText().length(); i++)

                if ('.' == jTextField.getText().charAt(i)) {

                       isDot = true;         break;  }

                   if (memoryi != 0) { //存储中是一个int型数

                if (isDot == false) //被加数是一个int型数

                  memoryi += Integer.parseInt(jTextField.getText());

                else {

//被加数是一个double型数,则将int存储器中数传入double存储器与当前数相加,int存储器清零

memoryd = memoryi + Double.parseDouble(jTextField.getText());

                  memoryi = 0;  }  }

              else

                memoryd += Double.parseDouble(jTextField.getText());  }

15) 设置退格按钮backspace,为jButton24添加监控ActionListener,通过引用全局变量str,str为string类型的变量

jButton24.addActionListener(new ActionListener() {

                            public void actionPerformed(ActionEvent e) {

                                   if(str.length()!=0){ str=str.substring(0, str.length()-1);

                                          jTextField.setText(str);}}});

16) 设置清空按钮C,添加监控,在单击C时通过改变全局变量str的值来实现功能,单击时就将str的值赋为空,文本框jTextField通过调用setText将

str的值输出。

jButton26.addActionListener(new ActionListener() {

                           public void actionPerformed(ActionEvent e) {

                                  str="";     jTextField.setText(str);}});

17) 添加菜单条jJMenuBar,在jJMenuBar中通过add来添加获取菜单的方法

getJMenu,以此将菜单添加到菜单条中。菜单分别为编辑、查看、帮助。这三个菜单分别在其对应的getJMenu()方法中定义,编辑菜单下定义了菜单项复制和黏贴,查看菜单下定义了标准型、科学型、勾股定理、解一元二次方程四个菜单项,标准型通过jMenuItem4.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

df=new DecimalFormat("#.###############");//保留15位小数

biaozhun.this.setBounds(400, 200, 600, 590);

biaozhun.this.setJMenuBar(getJJMenuBar());

biaozhun.this.setContentPane(getJContentPane1());//将jContentPane1面板添加到jFrame框架上                               

biaozhun.this.setTitle("计 算 器");

Image image=biaozhun.this.getToolkit().getImage("计算器图标.jpg");

biaozhun.this.setIconImage(image);

biaozhun.this.setVisible(true);

jTextField.addActionListener(this);}});方法来实现窗体之间切换。

setBounds()方法实现窗体的显示位置和窗体大小,setVisible()将其设置为

true使其变为可见。使用相同的方法实现窗体之间相互切换,其中标准型和科学型在同一个窗体中,通过改变窗体大小和窗体添加控件来实现标准型和科学型两种计算器所需要的按钮。勾股定理、解一元二次方程通过改变setVisible()的值为true和false来实现窗体切换。帮助菜单下添加帮助主题和关于计算器选项,当单击帮助主题时就打开系统中关于计算器的帮助文件,单击关于计算器时就会打开一个窗体显示关于计算器的内容,当单击确定按钮时就会关闭关于计算器窗体。

18)        定义JPanel类型的变量jPanel、jContentPane,在容器jPanel中添加标准计算器的右下角的按钮,jContentPane中添加退格、清除、MS、MR、MC、M+按钮,jPanel在方法getJPanel()中,jContentPane在方法getJContentPane()中,窗体通过this.setJMenuBar(getJJMenuBar());this.setContentPane

(getJContentPane());将控件添加到窗体中。

19) 定义进制转换按钮,jButton31、jButton34、jButton37、jButton40分别为十六进制、十进制、八进制、二进制,通过调用Integer.toHexString(n)十六进制、Integer.toOctalString(n)八进制、Integer.toBinaryString(n)二进制来实现进制之间的相互转换。

20) 定义三角函数sin、cos、tan但是在使用需要先调用弧度按钮,将相应的角度转换成弧度以后在使用三角函数对应的按钮才可以实现求三角函数的值。求弧度方法在定义弧度按钮时实现,string.valueOf(i/180*Math.PI)求对应的弧度sin、cos、tan使用math中的方法。

21) 定义阶乘按钮jButton42,实现求阶乘方法,

jButton42.addActionListener(new ActionListener() {

                           public void actionPerformed(ActionEvent e) {

                                  double i=Double.parseDouble(jTextField.getText());

                                  if((i%2==0)||(i%2==1)){//判断为整数进行阶乘操作

                                         int j=(int)i;//强制类型转换

                                         int result=1;   for(int k=1;k<=j;k++) result *=k;

                                         jTextField.setText(String.valueOf(result));}}});

22) 定义pi按钮,直接调用Math.PI,通过jTextField.setText(String.valueOf

(Math.PI));在窗体中显示pi值。

23) 定义log10按钮,用来求log以10为底的对数值,当对数值i大于0时就调用Math.log10(i)来输出结果,当i小于0时就在文本框中显示负数不能求对数!。

jButton45.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

      double i=Double.parseDouble(jTextField.getText());

      if(i>0){   jTextField.setText(String.valueOf(df.format(Math.log10(i))));

      }else{ jTextField.setText("负数不能求对数!");}}});

24) 定义ln按钮,方法调用Math.log1p(i),当对数值i大于0时就调用Math.ln(i)来输出结果,当i小于0时就在文本框中显示负数不能求对数!。

jButton44.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

double i=Double.parseDouble(jTextField.getText());

if(i>0){  jTextField.setText(String.valueOf(df.format(Math.ln(i))));

}else{jTextField.setText("负数不能求对数!");}}});

25) 将科学计算器按钮添加到jPanel1中,通过getJPanel1()方法返回jPanel1,再定义jContentPane1,将jPanel1、按钮、文本框添加到jContentPane1中,通过调用getJContentPane1()返回jContentPane1,窗体通过调用this.set

ContentPane(getJContentPane1());在窗体中显示出相对应的按钮。

26) 书写主函数

biaozhun thisClass = new biaozhun();

thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口

thisClass.setVisible(true);

27) 在定义三个窗体gougudingli、guanyujisuanqi2、一元二次方程用来在调用时使用。

28) 设置标题栏的图标

Image image=biaozhun.this.getToolkit().getImage("计算器图标.jpg");

biaozhun.this.setIconImage(image);

使用getImage()方法返回此图标的image并赋给image,通过this来调用

setIconImage(imager)方法来改变窗体标题栏上的图标

2.2类图设计说明和细化

java应用程序由许多类所构成,类图的设计与实现,是Java实现面向对象应用程序的核心。本文通过一个具体的应用程序的设计与实现过程,具体说明了利用UML类图设计Java应用程序,使得开发过程标准化、可视化,代码编程简单化。

顶层为类名,一般用加粗字体表示。假如类是抽象的,其名称用斜体表示;假如类是接口,则在类名上方标注<<interface>>。中间层包含类的属性(或变量),底层包含类的方法。与类名相似,假如方法是抽象的,那么它的名称也用斜体表示。我们要设计的应用程序CDrawApp应用程序在基于字符的网格上画点、框和文本串,该应用程序涉及到Java面向对象的许多概念与应用方法,非常系统、全面,在您仔细研读后,定能迅速把握UML类图,并将其应用到实际的Java应用程序开发过程中。为减少代码长度,让程序简单易懂,这里使用Java控制台窗口显示程序运行结果。该程序总共由10个大类组成,以下分别介绍。一、Point类在CDrawApp程序中定义的第一个类是Point类,该类用于通过x和y坐标在网格上标识一点。

在该类中,有2个成员变量x和y,类图中,“-”表示变量或方法为PRivate,“+”表示public,“#”则表示protected。该类定义了三个不同的构造函数,这是重载(overload)的例子。 接着该类设计了7个访问方法。getX()和getY()方法分别返回一点的x和y坐标。SetX()和setY()方法根据参数xValue和yValue的值设置这些坐标的值。两个add()方法通过被访问点的坐标加上一个值来建立一个新的Point对象。New运算符建立类的新实例。它后面紧跟着初始化新生成实例的构造函数。toString() 方法返回类String的一个对象,该对象用一个有序对来描述一个点。

3编码实现

源代码

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.text.DecimalFormat;

import java.awt.Font;

import java.awt.GridLayout;

import java.awt.Image;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

public class biaozhun extends JFrame implements ActionListener {

    public static void main(String[] args) {//主方法

        biaozhun thisClass = new biaozhun();

        thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//实现关闭窗口

        thisClass.setVisible(true);            

    }

    private static final long serialVersionUID = 1L;

    private JPanel jContentPane = null;

    private JPanel jPanel = null;

    private JButton jButton = null;

    private JButton jButton1 = null;

    private JButton jButton2 = null;

    private JButton jButton3 = null;

    private JButton jButton4 = null;

    private JButton jButton5 = null;

    private JButton jButton6 = null;

    private JButton jButton7 = null;

    private JButton jButton8 = null;

    private JButton jButton9 = null;

    private JButton jButton10 = null;

    private JButton jButton11 = null;

    private JButton jButton12 = null;

    private JButton jButton13 = null;

    private JButton jButton14 = null;

    private JButton jButton15 = null;

    private JButton jButton16 = null;

    private JButton jButton17 = null;

    private JButton jButton18 = null;

    private JButton jButton19 = null;

    private JTextField jTextField = null;

    private JTextField textMemory= null;//作为输入M用

    private JButton jButton20 = null;

    private JButton jButton21 = null;

    private JButton jButton22 = null;

    private JButton jButton23 = null;

    private JButton jButton24 = null;

    private JButton jButton25 = null;

    private JButton jButton26 = null;

   

    double memoryd; //使用内存中存储的数字

    int memoryi;

   

//科学计算器按钮

    private JButton jButton31 = null;

    private JButton jButton32 = null;

    private JButton jButton33 = null;

    private JButton jButton34 = null;

    private JButton jButton35 = null;

    private JButton jButton36 = null;

    private JButton jButton37 = null;

    private JButton jButton38 = null;

    private JButton jButton39 = null;

    private JButton jButton40 = null;

    private JButton jButton41 = null;

    private JButton jButton42 = null;

    private JButton jButton43 = null;

    private JButton jButton44 = null;

    private JButton jButton45 = null;

   

//A-F

    private JButton jButton46 = null;

    private JButton jButton47 = null;

    private JButton jButton48 = null;

    private JButton jButton49 = null;

    private JButton jButton50 = null;

    private JButton jButton51 = null;

    private JPanel jPanel1 = null;

    private JPanel jContentPane1 = null;

   

    private String str="";

    private double dataone;

    private char Operator='A';

    private boolean pointIsTyped=false;

    private JMenuBar jJMenuBar = null;

    private JMenu jMenu = null;

    private JMenuItem jMenuItem = null;

    private JMenuItem jMenuItem1 = null;

    private JMenu jMenu1 = null;

    private JMenuItem jMenuItem3 = null;

    private JMenuItem jMenuItem4 = null;

    private JMenu jMenu2 = null;

    private JMenuItem jMenuItem5 = null;

    private JMenuItem jMenuItem6 = null;

    private JMenuItem jMenuItem7 = null;

    private JMenuItem jMenuItem8 = null;

    DecimalFormat df;//保留小数位数

   

    private JButton getJButton() {

        if (jButton == null) {

            jButton = new JButton();

            jButton.setText("9");

            jButton.setFont(new Font("楷体", Font.BOLD, 30));

            jButton.setForeground(new Color(250,0,0));        //红色、绿色和蓝色

            jButton.setFocusable(false);

            jButton.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    str+="9";

                    jTextField.setText(str);

                }

            });

//          单击后变色

            jButton.addMouseListener(new MouseListener(){

                public void actionPerformed(MouseEvent e) {

                    jButton.setForeground(new Color(0,100,0));

                }

                public void mouseClicked(MouseEvent e) {

                    jButton.setForeground(new Color(0,150,100));

                }

                public void mouseEntered(MouseEvent e) {

                    jButton.setForeground(new Color(0,0,250));

                }

                public void mouseExited(MouseEvent e) {

                    jButton.setForeground(new Color(250,0,0));

                }

                public void mousePressed(MouseEvent e) {

                    jButton.setForeground(new Color(0,250,0));

                }

                public void mouseReleased(MouseEvent e) {

                    jButton.setForeground(new Color(250,250,0));

                }

            }

            );

           

        }

        return jButton;

    }

    private JButton getJButton1() {

        if (jButton1 == null) {

            jButton1 = new JButton();

            jButton1.setText("/");

            jButton1.setFont(new Font("楷体", Font.BOLD, 30));

            jButton1.setForeground(new Color(0,150,100));

            jButton1.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    str=jTextField.getText();

                    Operator='/';

                    dataone=Double.parseDouble(str);

                    str="";

                    jTextField.setText(str);

                }

            });

        }

        return jButton1;

    }

    private JButton getJButton2() {

        if (jButton2 == null) {

            jButton2 = new JButton("sqrt");

            jButton2.setFont(new Font("楷体", Font.BOLD, 30));

            jButton2.setForeground(new Color(0,0,200));

            jButton2.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    double a=Double.parseDouble(jTextField.getText());

                    double b;

                    if(a<0){

                        jTextField.setText("负数不能开平方");

                    }

                    else{

                        b=Math.sqrt(a);

                        jTextField.setText(Double.toString(b));

                    }

                }

            });

        }

        return jButton2;

    }

    private JButton getJButton3() {

        if (jButton3 == null) {

            jButton3 = new JButton();

            jButton3.setText("4");

            jButton3.setFont(new Font("楷体", Font.BOLD, 30));

            jButton3.setForeground(new Color(250,0,0));

            jButton3.setFocusable(false);

            jButton3.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    str+="4";

                    jTextField.setText(str);

                }

            });

            jButton3.addMouseListener(new MouseListener(){

                public void actionPerformed(MouseEvent e) {

                    jButton3.setForeground(new Color(0,100,0));

                }

                public void mouseClicked(MouseEvent e) {

                    jButton3.setForeground(new Color(0,150,100));

                }

                public void mouseEntered(MouseEvent e) {

                    jButton3.setForeground(new Color(0,0,250));

                }

                public void mouseExited(MouseEvent e) {

                    jButton3.setForeground(new Color(250,0,0));

                }

                public void mousePressed(MouseEvent e) {

                    jButton3.setForeground(new Color(0,250,0));

                }

                public void mouseReleased(MouseEvent e) {

                    jButton3.setForeground(new Color(250,250,0));

                }

            }

            );

        }

        return jButton3;

    }

    private JButton getJButton4() {

        if (jButton4 == null) {

            jButton4 = new JButton();

            jButton4.setText("5");

            jButton4.setFont(new Font("楷体", Font.BOLD, 30));

            jButton4.setForeground(new Color(250,0,0));

            jButton4.setFocusable(false);

            jButton4.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    str+="5";

                    jTextField.setText(str);

                }

            });

            jButton4.addMouseListener(new MouseListener(){

                public void actionPerformed(MouseEvent e) {

                    jButton4.setForeground(new Color(0,100,0));

                }

                public void mouseClicked(MouseEvent e) {

                    jButton4.setForeground(new Color(0,150,100));

                }

                public void mouseEntered(MouseEvent e) {

                    jButton4.setForeground(new Color(0,0,250));

                }

                public void mouseExited(MouseEvent e) {

                    jButton4.setForeground(new Color(250,0,0));

                }

                public void mousePressed(MouseEvent e) {

                    jButton4.setForeground(new Color(0,250,0));

                }

                public void mouseReleased(MouseEvent e) {

                    jButton4.setForeground(new Color(250,250,0));

                }

            }

            );

        }

        return jButton4;

    }

    private JButton getJButton5() {

        if (jButton5 == null) {

            jButton5 = new JButton();

            jButton5.setText("6");

            jButton5.setFont(new Font("楷体", Font.BOLD, 30));

            jButton5.setForeground(new Color(250,0,0));

            jButton5.setFocusable(false);

            jButton5.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    str+="6";

                    jTextField.setText(str);

                }

            });

            jButton5.addMouseListener(new MouseListener(){

                public void actionPerformed(MouseEvent e) {

                    jButton5.setForeground(new Color(0,100,0));

                }

                public void mouseClicked(MouseEvent e) {

                    jButton5.setForeground(new Color(0,150,100));

                }

                public void mouseEntered(MouseEvent e) {

                    jButton5.setForeground(new Color(0,0,250));

                }

                public void mouseExited(MouseEvent e) {

                    jButton5.setForeground(new Color(250,0,0));

                }

                public void mousePressed(MouseEvent e) {

                    jButton5.setForeground(new Color(0,250,0));

                }

                public void mouseReleased(MouseEvent e) {

                    jButton5.setForeground(new Color(250,250,0));

                }

            }

            );

        }

        return jButton5;

    }

    private JButton getJButton6() {

        if (jButton6 == null) {

            jButton6 = new JButton();

            jButton6.setText("*");

            jButton6.setFont(new Font("楷体", Font.BOLD, 30));

            jButton6.setForeground(new Color(0,150,100));

            jButton6.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    str=jTextField.getText();

                    Operator='*';

                    dataone=Double.parseDouble(str);

                    str="";

                    jTextField.setText(str);

                }

            });

        }

        return jButton6;

    }

    private JButton getJButton7() {

        if (jButton7 == null) {

            jButton7 = new JButton("%");

            jButton7.setFont(new Font("楷体", Font.BOLD, 30));

            jButton7.setForeground(new Color(0,0,200));

            jButton7.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    double i1=Double.parseDouble(jTextField.getText());

                    double z1=i1/100;

                    jTextField.setText(Double.toString(z1));

                    //jTextField.setText("还没有做");

                }

            });

        }

        return jButton7;

    }

    private JButton getJButton8() {

        if (jButton8 == null) {

            jButton8 = new JButton();

            jButton8.setText("1");

            jButton8.setFont(new Font("楷体", Font.BOLD, 30));

            jButton8.setForeground(new Color(250,0,0));

            jButton8.setFocusable(false);

            jButton8.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    str+="1";

                    jTextField.setText(str);

                   

                }

            });

            jButton8.addMouseListener(new MouseListener(){

                public void actionPerformed(MouseEvent e) {

                    jButton8.setForeground(new Color(0,100,0));

                }

                public void mouseClicked(MouseEvent e) {

                    jButton8.setForeground(new Color(0,150,100));

                }

                public void mouseEntered(MouseEvent e) {

                    jButton8.setForeground(new Color(0,0,250));

                }

                public void mouseExited(MouseEvent e) {

                    jButton8.setForeground(new Color(250,0,0));

                }

                public void mousePressed(MouseEvent e) {

                    jButton8.setForeground(new Color(0,250,0));

                }

                public void mouseReleased(MouseEvent e) {

                    jButton8.setForeground(new Color(250,250,0));

                }

            }

            );

        }

        return jButton8;

    }

    private JButton getJButton9() {

        if (jButton9 == null) {

            jButton9 = new JButton();

            jButton9.setText("7");

            jButton9.setFont(new Font("楷体", Font.BOLD, 30));

            jButton9.setForeground(new Color(250,0,0));

            jButton9.setFocusable(false);

            jButton9.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    str+="7";

                    jTextField.setText(str);

                }

            });

            jButton9.addMouseListener(new MouseListener(){

                public void actionPerformed(MouseEvent e) {

                    jButton9.setForeground(new Color(0,100,0));

                }

                public void mouseClicked(MouseEvent e) {

                    jButton9.setForeground(new Color(0,150,100));

                }

                public void mouseEntered(MouseEvent e) {

                    jButton9.setForeground(new Color(0,0,250));

                }

                public void mouseExited(MouseEvent e) {

                    jButton9.setForeground(new Color(250,0,0));

                }

                public void mousePressed(MouseEvent e) {

                    jButton9.setForeground(new Color(0,250,0));

                }

                public void mouseReleased(MouseEvent e) {

                    jButton9.setForeground(new Color(250,250,0));

                }

            }

            );

        }

        return jButton9;

    }

    private JButton getJButton10() {

        if (jButton10 == null) {

            jButton10 = new JButton();

            jButton10.setText("8");

            jButton10.setFocusable(false);

            jButton10.setFont(new Font("楷体", Font.BOLD, 30));

            jButton10.setForeground(new Color(250,0,0));

            jButton10.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    str+="8";

                    jTextField.setText(str);

                }

            });

            jButton10.addMouseListener(new MouseListener(){

                public void actionPerformed(MouseEvent e) {

                    jButton10.setForeground(new Color(0,100,0));

                }

                public void mouseClicked(MouseEvent e) {

                    jButton10.setForeground(new Color(0,150,100));

                }

                public void mouseEntered(MouseEvent e) {

                    jButton10.setForeground(new Color(0,0,250));

                }

                public void mouseExited(MouseEvent e) {

                    jButton10.setForeground(new Color(250,0,0));

                }

                public void mousePressed(MouseEvent e) {

                    jButton10.setForeground(new Color(0,250,0));

                }

                public void mouseReleased(MouseEvent e) {

                    jButton10.setForeground(new Color(250,250,0));

                }

            }

            );

        }

        return jButton10;

    }

    private JButton getJButton11() {

        if (jButton11 == null) {

            jButton11 = new JButton();

            jButton11.setText("2");

            jButton11.setFont(new Font("楷体", Font.BOLD, 30));

            jButton11.setForeground(new Color(250,0,0));

            jButton11.setFocusable(false);

            jButton11.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    str+="2";

                    jTextField.setText(str);

                }

            });

            jButton11.addMouseListener(new MouseListener(){

                public void actionPerformed(MouseEvent e) {

                    jButton11.setForeground(new Color(0,100,0));

                }

                public void mouseClicked(MouseEvent e) {

                    jButton11.setForeground(new Color(0,150,100));

                }

                public void mouseEntered(MouseEvent e) {

                    jButton11.setForeground(new Color(0,0,250));

                }

                public void mouseExited(MouseEvent e) {

                    jButton11.setForeground(new Color(250,0,0));

                }

                public void mousePressed(MouseEvent e) {

                    jButton11.setForeground(new Color(0,250,0));

                }

                public void mouseReleased(MouseEvent e) {

                    jButton11.setForeground(new Color(250,250,0));

                }

            }

            );

        }

        return jButton11;

    }

    private JButton getJButton12() {

        if (jButton12 == null) {

            jButton12 = new JButton();

            jButton12.setText("3");

            jButton12.setFont(new Font("楷体", Font.BOLD, 30));

            jButton12.setForeground(new Color(250,0,0));

            jButton12.setFocusable(false);

            jButton12.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    str+="3";

                    jTextField.setText(str);

                }

            });

            jButton12.addMouseListener(new MouseListener(){

                public void actionPerformed(MouseEvent e) {

                    jButton12.setForeground(new Color(0,100,0));

                }

                public void mouseClicked(MouseEvent e) {

                    jButton12.setForeground(new Color(0,150,100));

                }

                public void mouseEntered(MouseEvent e) {

                    jButton12.setForeground(new Color(0,0,250));

                }

                public void mouseExited(MouseEvent e) {

                    jButton12.setForeground(new Color(250,0,0));

                }

                public void mousePressed(MouseEvent e) {

                    jButton12.setForeground(new Color(0,250,0));

                }

                public void mouseReleased(MouseEvent e) {

                    jButton12.setForeground(new Color(250,250,0));

                }

            }

            );

        }

        return jButton12;

    }

    private JButton getJButton13() {

        if (jButton13 == null) {

            jButton13 = new JButton();

            jButton13.setText("-");

            jButton13.setFont(new Font("楷体", Font.BOLD, 30));

            jButton13.setForeground(new Color(0,150,100));

            jButton13.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    str=jTextField.getText();

                    Operator='-';

                    dataone=Double.parseDouble(str);

                    str="";

                    jTextField.setText(str);

                }

            });

        }

        return jButton13;

    }

    private JButton getJButton14() {

        if (jButton14 == null) {

            jButton14 = new JButton("1/x");

            jButton14.setFont(new Font("楷体", Font.BOLD, 30));

            jButton14.setForeground(new Color(0,0,200));

            jButton14.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    double c=Double.parseDouble(jTextField.getText());

                    double d;

                    if(c==0){

                        jTextField.setText("除数不能等于0");

                    }else{

                        d=1/c;

                        jTextField.setText(Double.toString(d));

                    }

                }

            });

        }

        return jButton14;

    }

    private JButton getJButton15() {

        if (jButton15 == null) {

            jButton15 = new JButton();

            jButton15.setText("0");

            jButton15.setFont(new Font("楷体", Font.BOLD, 30));

            jButton15.setForeground(new Color(250,0,0));

            jButton15.setFocusable(false);

            jButton15.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    str+="0";

                    jTextField.setText(str);

                }

            });

            jButton15.addMouseListener(new MouseListener(){

                public void actionPerformed(MouseEvent e) {

                    jButton15.setForeground(new Color(0,100,0));

                }

                public void mouseClicked(MouseEvent e) {

                    jButton15.setForeground(new Color(0,150,100));

                }

                public void mouseEntered(MouseEvent e) {

                    jButton15.setForeground(new Color(0,0,250));

                }

                public void mouseExited(MouseEvent e) {

                    jButton15.setForeground(new Color(250,0,0));

                }

                public void mousePressed(MouseEvent e) {

                    jButton15.setForeground(new Color(0,250,0));

                }

                public void mouseReleased(MouseEvent e) {

                    jButton15.setForeground(new Color(250,250,0));

                }

            }

            );

        }

        return jButton15;

    }

    private JButton getJButton16() {

        if (jButton16 == null) {

            jButton16 = new JButton("+/-");

            jButton16.setFont(new Font("楷体", Font.BOLD, 30));

            jButton16.setForeground(new Color(0,0,200));

            jButton16.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    double i2=0-Double.parseDouble(jTextField.getText().trim());

                    jTextField.setText(Double.toString(i2));

                }

            });

        }

        return jButton16;

    }

    private JButton getJButton17() {

        if (jButton17 == null) {

            jButton17 = new JButton();

            jButton17.setFocusable(false);

            jButton17.setText(".");

            jButton17.setFont(new Font("楷体", Font.BOLD, 30));

            jButton17.setForeground(new Color(33,95,95));

            jButton17.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    str+=".";

                    jTextField.setText(str);

                }

            });

        }

        return jButton17;

    }

    private JButton getJButton18() {

        if (jButton18 == null) {

            jButton18 = new JButton();

            jButton18.setText("+");

            jButton18.setFont(new Font("楷体", Font.BOLD, 30));

            jButton18.setForeground(new Color(0,150,100));

            jButton18.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    str=jTextField.getText();

                    Operator='+';

                    dataone=Double.parseDouble(str);

                    str="";

                    jTextField.setText(str);

                }

            });

        }

        return jButton18;

    }

    private JButton getJButton19() {

        if (jButton19 == null) {

            jButton19 = new JButton();

            jButton19.setText("=");

            jButton19.setFont(new Font("楷体", Font.BOLD, 30));

            jButton19.setForeground(new Color(0,255,0));

            jButton19.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    double datatwo;

                    datatwo=Double.parseDouble(str);

                    switch(Operator){

                    case'+':dataone+=datatwo;break;

                    case'-':dataone-=datatwo;break;

                   

                    case'*':dataone*=datatwo;break;

                    case'/':dataone/=datatwo;break;

                    default:break;

                    }

                    str=Double.toString(dataone);

                    jTextField.setText(str);

                }

            });

        }

        return jButton19;

    }

    private JTextField gettextMemory(){

        if (textMemory== null) {

            textMemory = new JTextField();

            textMemory.setText("ZY ");

            textMemory.setFont(new Font("华文行楷", Font.BOLD, 30));

            textMemory.setEditable(false);

            textMemory.setBounds(new Rectangle(5, 40, 60, 40));

            textMemory.setHorizontalAlignment(JTextField.RIGHT);

            textMemory.addActionListener(this);

        }

        return textMemory;

    }

   

    private JTextField getJTextField() {

        if (jTextField == null) {

            jTextField = new JTextField();

            jTextField.setText("0");

            jTextField.setFont(new Font("宋体", Font.BOLD, 30));

            jTextField.setEditable(false);

            jTextField.setBounds(new Rectangle(5, 5, 575, 30));

            jTextField.setHorizontalAlignment(JTextField.RIGHT);

            jTextField.addKeyListener(new KeyAdapter() {

                public void keyTyped(KeyEvent e) {

                if(e.getKeyChar()>='0'&&e.getKeyChar()<='9'){

                    str+=e.getKeyChar();

                    jTextField.setText(str);

                }else if(e.getKeyChar()==KeyEvent.VK_BACK_SPACE){

                    str=str.substring(0, str.length()-1);

                    jTextField.setText(str);

                }else if(e.getKeyChar()==KeyEvent.VK_ESCAPE){

                    str="";

                    jTextField.setText(str);

                }

                }

            });

        }

        return jTextField;

    }

    private JButton getJButton20() {

        if (jButton20 == null) {

            jButton20 = new JButton();

            jButton20.setText("MC");

            jButton20.setFont(new Font("楷体", Font.BOLD, 25));

            jButton20.setForeground(new Color(0,150,250));

            jButton20.setBounds(new Rectangle(5, 85, 80, 40));

            jButton20.addActionListener(this);

        }

        return jButton20;

    }

    private JButton getJButton21() {

        if (jButton21 == null) {

            jButton21 = new JButton();

            jButton21.setText("MR");

            jButton21.setFont(new Font("楷体", Font.BOLD, 25));

            jButton21.setForeground(new Color(0,150,250));

            jButton21.setBounds(new Rectangle(5, 125, 80, 40));

            jButton21.addActionListener(this);

        }

        return jButton21;

    }

    private JButton getJButton22() {

        if (jButton22 == null) {

            jButton22 = new JButton();

            jButton22.setText("MS");

            jButton22.setFont(new Font("楷体", Font.BOLD, 25));

            jButton22.setForeground(new Color(0,150,250));

            jButton22.setBounds(new Rectangle(5, 165, 80, 40));

            jButton22.addActionListener(this);

        }

        return jButton22;

    }

    private JButton getJButton23() {

        if (jButton23 == null) {

            jButton23 = new JButton();

            jButton23.setText("M+");

            jButton23.setFont(new Font("楷体", Font.BOLD, 25));

            jButton23.setForeground(new Color(0,150,250));

            jButton23.setBounds(new Rectangle(5, 205, 80, 40));

            jButton23.addActionListener(this);

        }

        return jButton23;

    }

    private JButton getJButton24() {

        if (jButton24 == null) {

            jButton24 = new JButton();

            jButton24.setText("Backspace");//退格键

            jButton24.setFont(new Font("楷体", Font.BOLD, 30));

            jButton24.setForeground(new Color(0,150,250));

            jButton24.setBounds(new Rectangle(70, 40, 195, 40));

            jButton24.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    if(str.length()!=0){

                        str=str.substring(0, str.length()-1);

                        jTextField.setText(str);

                    }

                }

            });

        }

        return jButton24;

    }

    private JButton getJButton25() {

        if (jButton25 == null) {

            jButton25 = new JButton();

            jButton25.setText("CE");

            jButton25.setFont(new Font("楷体", Font.BOLD, 30));

            jButton25.setForeground(new Color(0,150,250));

            jButton25.setBounds(new Rectangle(270, 40, 150, 40));

        }

        return jButton25;

    }

    private JButton getJButton26() {

        if (jButton26 == null) {

            jButton26 = new JButton();

            jButton26.setText("C");

            jButton26.setFont(new Font("楷体", Font.BOLD, 30));

            jButton26.setForeground(new Color(0,150,250));

            jButton26.setBounds(new Rectangle(425, 40, 155, 40));

            jButton26.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    str="";

                    jTextField.setText(str);

                }

            });

        }

        return jButton26;

    }

    private JMenuBar getJJMenuBar() {//在菜单条上添加3个菜单

        if (jJMenuBar == null) {

            jJMenuBar = new JMenuBar();

            jJMenuBar.add(getJMenu());

            jJMenuBar.add(getJMenu1());

            jJMenuBar.add(getJMenu2());

        }

        return jJMenuBar;

    }

    private JMenu getJMenu() {//在菜单“编辑”上添加两个菜单项

        if (jMenu == null) {

            jMenu = new JMenu();

            jMenu.setMnemonic(KeyEvent.VK_UNDEFINED);

            jMenu.setText("编辑(E)");

            jMenu.setFont(new Font("Dialog", Font.BOLD, 12));//设置字体类型和大小

            jMenu.add(getJMenuItem());

            jMenu.add(getJMenuItem1());

        }

        return jMenu;

    }

    private JMenuItem getJMenuItem() {

        if (jMenuItem == null) {

            jMenuItem = new JMenuItem();

            jMenuItem.setText("复制(C)Crtl+ C");//设置jMenuItem的显示内容

            jMenuItem.addActionListener(new java.awt.event.ActionListener() {

                public void actionPerformed(java.awt.event.ActionEvent e) {

                    jTextField.selectAll();

                    jTextField.copy();

                    jTextField.select(0, 0);

                   

                }

            });

        }

        return jMenuItem;

    }

    private JMenuItem getJMenuItem1() {

        if (jMenuItem1 == null) {

            jMenuItem1 = new JMenuItem();

            jMenuItem1.setText("黏贴(P)Ctrl+V");//设置jMenuItem1的显示内容

            jMenuItem1.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    str="";

                    jTextField.setText(str);

                    jTextField.setEditable(true);

                    jTextField.paste();

                    jTextField.setEditable(false);

                    str=jTextField.getText();

                }

            });

        }

        return jMenuItem1;

    }

    private JMenu getJMenu1() {//在菜单“查看”上添加3个菜单项

        if (jMenu1 == null) {

            jMenu1 = new JMenu();

            jMenu1.setText("查看(V)");

            jMenu1.add(getJMenuItem8());

            jMenu1.add(getJMenuItem4());

            jMenu1.addSeparator();

            jMenu1.add(getJMenuItem3());

            jMenu1.addSeparator();

            jMenu1.add(getJMenuItem7());

        }

        return jMenu1;

    }

    private JMenuItem getJMenuItem3() {

        if (jMenuItem3 == null) {

            jMenuItem3 = new JMenuItem();

            jMenuItem3.setText("勾股定理(I)");//设置jMenuItem3的显示内容

            jMenuItem3.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    biaozhun.this.setVisible(false);

                    new JMenuItem().setVisible(true);

                }

            });

        }

        return jMenuItem3;

    }

    private JMenuItem getJMenuItem7() {

        if (jMenuItem7 == null) {

            jMenuItem7 = new JMenuItem();

            jMenuItem7.setText("解一元二次方程(G)");//设置jMenuItem3的显示内容

            jMenuItem7.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    biaozhun.this.setVisible(false);

                    new JMenuItem().setVisible(true);

                }

            });

        }

        return jMenuItem7;

    }

    private JMenuItem getJMenuItem4() {

        if (jMenuItem4 == null) {

            jMenuItem4 = new JMenuItem();

            jMenuItem4.setText("科学型(S)");//设置jMenuItem4的显示内容

            jMenuItem4.addActionListener(this);

            jMenuItem4.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    df=new DecimalFormat("#.###############");//保留15位小数

                    biaozhun.this.setBounds(400, 200, 600, 590);

                    biaozhun.this.setJMenuBar(getJJMenuBar());

                    biaozhun.this.setContentPane(getJContentPane1());//将jContentPane1面板添加到jFrame框

架上去                               

                    biaozhun.this.setTitle("计 算 器");

                    Image image=biaozhun.this.getToolkit().getImage("计算器图标.jpg");

                    biaozhun.this.setIconImage(image);

                    biaozhun.this.setVisible(true);

                    jTextField.addActionListener(this);

                }

            });

        }

        return jMenuItem4;

    }

    private JMenu getJMenu2() {//在菜单“帮助”上添加两个菜单项

        if (jMenu2 == null) {

            jMenu2 = new JMenu();

            jMenu2.setText("帮助(H)");//显示菜单的内容

            jMenu2.add(getJMenuItem5());

            jMenu2.add(getJMenuItem6());

        }

        return jMenu2;

    }

    private JMenuItem getJMenuItem5() {

        if (jMenuItem5 == null) {

            jMenuItem5 = new JMenuItem();

            jMenuItem5.setText("帮助主题(H)");//设置jMenuItem5的显示内容

        }

        return jMenuItem5;

    }

    private JMenuItem getJMenuItem6() {

        if (jMenuItem6 == null) {

            jMenuItem6 = new JMenuItem();

            jMenuItem6.setText("关于计算器(A)");//设置jMenuItem6的显示内容

            jMenuItem6.addActionListener(this);

            jMenuItem6.addActionListener(new ActionListener(){

                public void actionPerformed(ActionEvent e) {

                    biaozhun.this.setVisible(true);

                    new JMenuItem().setVisible(true);

                }

            });

        }

        return jMenuItem6;

    }

    private JMenuItem getJMenuItem8() {

        if (jMenuItem8 == null) {

            jMenuItem8= new JMenuItem();

            jMenuItem8.setText("标准型(T)");//设置jRadioButtonMenuItem的显示内容

            jMenuItem8.addActionListener(this);

            jMenuItem8.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    biaozhun.this.setBounds(400, 200, 593, 310);

                }

            });    

        }

        return jMenuItem8;

    }

   

    public biaozhun() {//初始化一个计算机类

        super();

        initialize();

    }

   

   

    private JPanel getJPanel() {

        if (jPanel == null) {

            GridLayout gridLayout = new GridLayout();

            gridLayout.setRows(4);

            jPanel = new JPanel();

            jPanel.setLayout(gridLayout);

            jPanel.setBounds(new Rectangle(90, 85, 490, 160));   //右边的按钮布局

            jPanel.add(getJButton14(), null);

            jPanel.add(getJButton9(), null);

           

            jPanel.add(getJButton10(), null);

            jPanel.add(getJButton(), null);

            jPanel.add(getJButton1(), null);

            jPanel.add(getJButton2(), null);

            jPanel.add(getJButton3(), null);

            jPanel.add(getJButton4(), null);

            jPanel.add(getJButton5(), null);

            jPanel.add(getJButton6(), null);

            jPanel.add(getJButton7(), null);

            jPanel.add(getJButton8(), null);

           

            jPanel.add(getJButton11(), null);

           

            jPanel.add(getJButton12(), null);

            jPanel.add(getJButton13(), null);

            jPanel.add(getJButton16(), null);

            jPanel.add(getJButton15(), null);

           

            jPanel.add(getJButton17(), null);

           

            jPanel.add(getJButton19(), null);

            jPanel.add(getJButton18(), null);

           

        }

        return jPanel;

    }

   

    private JPanel getJContentPane() {//将按钮和文本域等构件添加到jContentPane里面去

        if (jContentPane == null) {

            jContentPane = new JPanel();

            jContentPane.setLayout(null);

            jContentPane.add(getJPanel(), null);

            jContentPane.add(getJTextField(), null);

            jContentPane.add(gettextMemory(),null);

            jContentPane.add(getJButton20(), null);

            jContentPane.add(getJButton21(), null);

            jContentPane.add(getJButton22(), null);

            jContentPane.add(getJButton23(), null);

            jContentPane.add(getJButton24(), null);

            jContentPane.add(getJButton25(), null);

            jContentPane.add(getJButton26(), null);

            jContentPane.setVisible(true);

        }

        return jContentPane;

    }

   

    private void initialize() {

        this.setBounds(400, 200, 593, 310);     //窗体大小

        this.setJMenuBar(getJJMenuBar());

        this.setContentPane(getJContentPane());//将jContentPane面板添加到jFrame框架上去

        this.setTitle("计 算 器");

        Image image=this.getToolkit().getImage("计算器图标.jpg");

        this.setIconImage(image);

        this.setVisible(true);

        jTextField.addActionListener(this);

    }

//科学计算器

    private JButton getJButton31() {

        if (jButton31 == null) {

            jButton31 = new JButton();

            jButton31.setText("十六进制");//十六进制

            jButton31.setFont(new Font("楷体", Font.BOLD, 30));

            jButton31.setForeground(new Color(0,255,128));

            jButton31.setBounds(new Rectangle(5, 40, 200, 40));

            jButton31.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    int n=Integer.parseInt(jTextField.getText());

                    String temp = Integer.toHexString(n);

                    jTextField.setText(temp);

                }

            });

        }

        return jButton31;

    }

    private JButton getJButton32() {

        if (jButton32 == null) {

            jButton32 = new JButton();

            jButton32.setText("sin");//sin

            jButton32.setFont(new Font("楷体", Font.BOLD, 30));

            jButton32.setForeground(new Color(255,0,128));

            jButton32.setBounds(new Rectangle(5, 40, 200, 40));

            jButton32.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    double i=Double.parseDouble(jTextField.getText());

                    jTextField.setText(String.valueOf(df.format(Math.sin(i))));

                }

            });

        }

        return jButton32;

    }

    private JButton getJButton33() {

        if (jButton33 == null) {

            jButton33 = new JButton();

            jButton33.setText("cos");//cos

            jButton33.setFont(new Font("楷体", Font.BOLD, 30));

            jButton33.setForeground(new Color(255,0,128));

            jButton33.setBounds(new Rectangle(5, 40, 200, 40));

            jButton33.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    double i=Double.parseDouble(jTextField.getText());

                    jTextField.setText(String.valueOf(df.format(Math.cos(i))));

                }

            });

        }

        return jButton33;

    }

    private JButton getJButton34() {

        if (jButton34 == null) {

            jButton34 = new JButton();

            jButton34.setText("十进制");//十进制

            jButton34.setFont(new Font("楷体", Font.BOLD, 30));

            jButton34.setForeground(new Color(0,255,128));

            jButton34.setBounds(new Rectangle(5, 40, 200, 40));

            jButton34.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    if(str.length()!=0){

                        str=str.substring(0, str.length()-1);

                        jTextField.setText(str);

                    }

                }

            });

        }

        return jButton34;

    }

    private JButton getJButton35() {

        if (jButton35 == null) {

            jButton35 = new JButton();

            jButton35.setText("tan");//tan

            jButton35.setFont(new Font("楷体", Font.BOLD, 30));

            jButton35.setForeground(new Color(255,0,128));

            jButton35.setBounds(new Rectangle(5, 40, 200, 40));

            jButton35.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    double i=Double.parseDouble(jTextField.getText());

                    jTextField.setText(String.valueOf(df.format(Math.tan(i))));

                }

            });

        }

        return jButton35;

    }

    private JButton getJButton36() {

        if (jButton36 == null) {

            jButton36 = new JButton();

            jButton36.setText("弧度");//弧度

            jButton36.setFont(new Font("楷体", Font.BOLD, 30));

            jButton36.setForeground(new Color(255,0,128));

            jButton36.setBounds(new Rectangle(5, 40, 200, 40));

            jButton36.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    double i=Double.parseDouble(jTextField.getText());

                    jTextField.setText(String.valueOf(i/180*Math.PI));

                }

            });

        }

        return jButton36;

    }

    private JButton getJButton37() {

        if (jButton37 == null) {

            jButton37 = new JButton();

            jButton37.setText("八进制");//八进制

            jButton37.setFont(new Font("楷体", Font.BOLD, 30));

            jButton37.setForeground(new Color(0,255,128));

            jButton37.setBounds(new Rectangle(5, 40, 200, 40));

            jButton37.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    int n=Integer.parseInt(jTextField.getText());

                    jTextField.setText(Integer.toOctalString(n));

                }

            });

        }

        return jButton37;

    }

    private JButton getJButton38() {

        if (jButton38 == null) {

            jButton38 = new JButton();

            jButton38.setText("x^2");//x的平方

            jButton38.setFont(new Font("楷体", Font.BOLD, 30));

            jButton38.setForeground(new Color(0,150,250));

            jButton38.setBounds(new Rectangle(5, 40, 200, 40));

            jButton38.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    double i=Double.parseDouble(jTextField.getText());

                    jTextField.setText(String.valueOf(df.format(i*i)));

                }

            });

        }

        return jButton38;

    }

    private JButton getJButton39() {

        if (jButton39 == null) {

            jButton39 = new JButton();

            jButton39.setText("x^3");//x的3次

            jButton39.setFont(new Font("楷体", Font.BOLD, 30));

            jButton39.setForeground(new Color(0,150,250));

            jButton39.setBounds(new Rectangle(5, 40, 200, 40));

            jButton39.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    double i=Double.parseDouble(jTextField.getText());

                    jTextField.setText(String.valueOf(df.format(i*i*i)));

                }

            });

        }

        return jButton39;

    }

    private JButton getJButton40() {

        if (jButton40 == null) {

            jButton40 = new JButton();

            jButton40.setText("二进制");//二进制

            jButton40.setFont(new Font("楷体", Font.BOLD, 30));

            jButton40.setForeground(new Color(0,255,128));

            jButton40.setBounds(new Rectangle(5, 40, 200, 40));

            jButton40.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                        int n=Integer.parseInt(jTextField.getText());

                        jTextField.setText(Integer.toBinaryString(n));

                }

            });

        }

        return jButton40;

    }

    private JButton getJButton41() {

        if (jButton41 == null) {

            jButton41 = new JButton();

            jButton41.setText("x^y");//x的y次

            jButton41.setFont(new Font("楷体", Font.BOLD, 30));

            jButton41.setForeground(new Color(0,150,250));

            jButton41.setBounds(new Rectangle(5, 40, 200, 40));

            jButton41.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    int n1=Integer.parseInt(jTextField.getText());

                    int n2=Integer.parseInt(jTextField.getText());

                    for(int i=1;i<=n2;i++){

                        n1=n1*n1;

                    }

                }

            });

        }

        return jButton41;

    }

    private JButton getJButton42() {

        if (jButton42 == null) {

            jButton42 = new JButton();

            jButton42.setText("n!");//阶乘

            jButton42.setFont(new Font("楷体", Font.BOLD, 30));

            jButton42.setForeground(new Color(0,150,250));

            jButton42.setBounds(new Rectangle(5, 40, 200, 40));

            jButton42.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    double i=Double.parseDouble(jTextField.getText());

                    if((i%2==0)||(i%2==1)){//判断为整数放进行阶乘操作           

                        int j=(int)i;//强制类型转换

                        int result=1;

                        for(int k=1;k<=j;k++)

                            result *=k;

                        jTextField.setText(String.valueOf(result));

                    }

                }

            });

        }

        return jButton42;

    }

    private JButton getJButton43() {

        if (jButton43 == null) {

            jButton43 = new JButton();

            jButton43.setText("pi");//pi

            jButton43.setFont(new Font("楷体", Font.BOLD, 30));

            jButton43.setForeground(new Color(0,150,250));

            jButton43.setBounds(new Rectangle(5, 40, 200, 40));

            jButton43.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    jTextField.setText(String.valueOf(Math.PI));

                }

            });

        }

        return jButton43;

    }

    private JButton getJButton44() {

       

        if (jButton44 == null) {

            jButton44 = new JButton();

            jButton44.setText("log100");//log100

            jButton44.setFont(new Font("楷体", Font.BOLD, 30));

            jButton44.setForeground(new Color(132,46,209));

            jButton44.setBounds(new Rectangle(5, 40, 200, 40));

            jButton44.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    double i=Double.parseDouble(jTextField.getText());

                    if(i>0){

                        jTextField.setText(String.valueOf(df.format(Math.log(i))));

                    }else{

                        jTextField.setText("负数不能求对数!");

                    }

                }

            });

        }

        return jButton44;

    }

    private JButton getJButton45() {

        if (jButton45 == null) {

            jButton45 = new JButton();

            jButton45.setText("  log10");//log10

            jButton45.setFont(new Font("楷体", Font.BOLD, 30));

            jButton45.setForeground(new Color(132,46,209));

            jButton45.setBounds(new Rectangle(5, 40, 200, 40));

            jButton45.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    double i=Double.parseDouble(jTextField.getText());

                    if(i>0){

                        jTextField.setText(String.valueOf(df.format(Math.log10(i))));

                    }else{

                        jTextField.setText("负数不能求对数!");

                    }

                }

            });

        }

        return jButton45;

    }

    private JButton getJButton46() {

        if (jButton46 == null) {

            jButton46 = new JButton();

            jButton46.setText("  A");//A

            jButton46.setFont(new Font("楷体", Font.BOLD, 30));

            jButton46.setForeground(new Color(0,255,128));

            jButton46.setBounds(new Rectangle(5, 40, 200, 40));

            jButton46.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    str+="A";

                    jTextField.setText(str);

                }

            });

        }

        return jButton46;

    }

    private JButton getJButton47() {

        if (jButton47 == null) {

            jButton47 = new JButton();

            jButton47.setText("B");//B

            jButton47.setFont(new Font("楷体", Font.BOLD, 30));

            jButton47.setForeground(new Color(0,255,128));

            jButton47.setBounds(new Rectangle(5, 40, 200, 40));

            jButton47.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    str+="B";

                    jTextField.setText(str);

                }

            });

        }

        return jButton47;

    }

    private JButton getJButton48() {

        if (jButton48 == null) {

            jButton48 = new JButton();

            jButton48.setText("C");//C

            jButton48.setFont(new Font("楷体", Font.BOLD, 30));

            jButton48.setForeground(new Color(0,255,128));

            jButton48.setBounds(new Rectangle(5, 40, 200, 40));

            jButton48.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    str+="C";

                    jTextField.setText(str);

                }

            });

        }

        return jButton48;

    }

    private JButton getJButton49() {

        if (jButton49 == null) {

            jButton49 = new JButton();

            jButton49.setText("D");//D

            jButton49.setFont(new Font("楷体", Font.BOLD, 30));

            jButton49.setForeground(new Color(0,255,128));

            jButton49.setBounds(new Rectangle(5, 40, 200, 40));

            jButton49.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    str+="D";

                    jTextField.setText(str);

                }

            });

        }

        return jButton49;

    }

    private JButton getJButton50() {

        if (jButton50 == null) {

            jButton50 = new JButton();

            jButton50.setText("E");//E

            jButton50.setFont(new Font("楷体", Font.BOLD, 30));

            jButton50.setForeground(new Color(0,255,128));

            jButton50.setBounds(new Rectangle(5, 40, 200, 40));

            jButton50.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    str+="E";

                    jTextField.setText(str);

                }

            });

        }

        return jButton50;

    }

    private JButton getJButton51() {

        if (jButton51 == null) {

            jButton51 = new JButton();

            jButton51.setText("F");//F

            jButton51.setFont(new Font("楷体", Font.BOLD, 30));

            jButton51.setForeground(new Color(0,255,128));

            jButton51.setBounds(new Rectangle(5, 40, 200, 40));

            jButton51.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    str+="F";

                    jTextField.setText(str);

                }

            });

        }

        return jButton51;

    }

    private JPanel getJPanel1() {

        if (jPanel1== null) {

            GridLayout gridLayout = new GridLayout();

            gridLayout.setRows(7);

            jPanel1 = new JPanel();

            jPanel1.setLayout(gridLayout);

            jPanel1.setBounds(new Rectangle(5, 250, 576, 280));   //右边的按钮布局

            jPanel1.add(getJButton31(), null);

            jPanel1.add(getJButton32(), null);

           

            jPanel1.add(getJButton33(), null);

            jPanel1.add(getJButton34(), null);

            jPanel1.add(getJButton35(), null);

            jPanel1.add(getJButton36(), null);

            jPanel1.add(getJButton37(), null);

            jPanel1.add(getJButton38(), null);

            jPanel1.add(getJButton39(), null);

            jPanel1.add(getJButton40(), null);

            jPanel1.add(getJButton41(), null);

            jPanel1.add(getJButton42(), null);

           

            jPanel1.add(getJButton43(), null);

           

            jPanel1.add(getJButton44(), null);

            jPanel1.add(getJButton45(), null);

            jPanel1.add(getJButton46(), null);

            jPanel1.add(getJButton47(), null);

            jPanel1.add(getJButton48(), null);

            jPanel1.add(getJButton49(), null);

            jPanel1.add(getJButton50(), null);

            jPanel1.add(getJButton51(), null);

           

        }

        return jPanel1;

    }

   

    private JPanel getJContentPane1() {//将按钮和文本域等构件添加到jContentPane里面去

        if (jContentPane1 == null) {

            jContentPane1 = new JPanel();

            jContentPane1.add(getJPanel(), null);

            jContentPane1.setLayout(null);

            jContentPane1.add(getJTextField(), null);

            jContentPane1.add(gettextMemory(),null);

            jContentPane1.add(getJButton20(), null);

            jContentPane1.add(getJButton21(), null);

            jContentPane1.add(getJButton22(), null);

            jContentPane1.add(getJButton23(), null);

            jContentPane1.add(getJButton24(), null);

            jContentPane1.add(getJButton25(), null);

            jContentPane1.add(getJButton26(), null);

            jContentPane1.add(getJPanel1(), null);

            jContentPane1.setVisible(true);

        }

        return jContentPane1;

    }

    public void actionPerformed(ActionEvent e) {

        Object temp = e.getSource();

        if(temp==jMenuItem5)

          { //打开系统帮助文件 要查资料

           try

           {

             String filePath = "C:/WINDOWS/Help/calc.chm";

              Runtime.getRuntime().exec("cmd.exe /c "+filePath);

          

           }

           catch(Exception eeee)

           {

            System.out.println("打开系统的计算器出错");   

           }

          }

        if (temp == jButton20) {

            memoryd = memoryi = 0;

            textMemory.setText("ZY ");

            textMemory.setFont(new Font("华文行楷", Font.BOLD, 30));

          }

          //'MS'的操作,将当前文本框内容保存入内存,显示'M'

          if (temp == jButton22) {   //textMemory显示m的文本框

            boolean isDot = false;

            textMemory.setText(" M  ");

            textMemory.setFont(new Font("楷体", Font.BOLD, 30));

            for (int i = 0; i < jTextField.getText().length(); i++)

              if ('.' == jTextField.getText().charAt(i)) {

                isDot = true;

                break;

              }

            //如果是double,则存入memoryd(double存储器)

            if (isDot == true) {

              memoryd = Double.parseDouble(jTextField.getText());

              memoryi = 0; //保证存储器中存放最新的值

            }

            //如果是int,则存入memoryi(int存储器)

            else {

              memoryi = Integer.parseInt(jTextField.getText());

              memoryd = 0; //保证存储器中存放最新的值

            }

          }

          //'MR'的操作,将存储器中的信息输出

          if (temp == jButton21) {

            if (memoryd != 0)

               jTextField.setText(Double.toString(memoryd));

            if (memoryi != 0)

               jTextField.setText(Integer.toString(memoryi));

          }

          //'M+'的功能,将当前文本框里的数据和存储器中数据相加后,再存入存储器

          if (temp == jButton23) {

             textMemory.setText(" M  ");

             textMemory.setFont(new Font("楷体", Font.BOLD, 30));

             boolean isDot = false;

             for (int i = 0; i < jTextField.getText().length(); i++)

              if ('.' == jTextField.getText().charAt(i)) {

                 isDot = true;

                 break;

              }

             if (memoryi != 0) { //存储中是一个int型数

              if (isDot == false) //被加数是一个int型数

                memoryi += Integer.parseInt(jTextField.getText());

              else { //被加数是一个double型数,则将int存储器中数传入double存储器与当前数相加,int存储器清零

                memoryd = memoryi + Double.parseDouble(jTextField.getText());

                memoryi = 0;

              }

            }

            else

              memoryd += Double.parseDouble(jTextField.getText());

          }

    }

class yiyuanerci extends JFrame implements ActionListener {

    private JMenuBar myBar1;

    private JMenu menu1;

    private JMenuItem seeItem2,seeItem3;

    private JLabel jl1,jl2,jl3;

    private JTextField jtf1,jtf2,jtf3,jtf4,jtf5;

    private JButton jb1,jb2,jb3;

    private JPanel jp1,jp2,jp3;

    public yiyuanerci(){

        super("求一元二次方程解和");

        myBar1=new JMenuBar();

        menu1=new JMenu("查看");

        menu1.setFont(new Font("华文行楷", Font.BOLD, 30));

       

        seeItem2=new JMenuItem("标准计算器");

        seeItem2.addActionListener(this);

        seeItem2.setFont(new Font("华文行楷", Font.BOLD, 20));

       

        seeItem3=new JMenuItem("勾股定理");

        seeItem3.addActionListener(this);

        seeItem3.setFont(new Font("华文行楷", Font.BOLD, 20));

       

        menu1.add(seeItem2);

        menu1.add(seeItem3);

       

        myBar1.add(menu1);

        jp3=new JPanel();

        jp3.add(myBar1);

        jl1=new JLabel("a=");

        jl2=new JLabel("b=");

        jl3=new JLabel("c=");

        jl1.setFont(new Font("楷体", Font.BOLD, 30));

        jl2.setFont(new Font("楷体", Font.BOLD, 30));

        jl3.setFont(new Font("楷体", Font.BOLD, 30));

        jtf1=new JTextField(10);

        jtf1.setFont(new Font("华文行楷", Font.BOLD, 30));

        jtf1.addActionListener(this);

        jtf2=new JTextField(10);

        jtf2.setFont(new Font("华文行楷", Font.BOLD, 30));

        jtf2.addActionListener(this);

        jtf3=new JTextField(10);

        jtf3.setFont(new Font("华文行楷", Font.BOLD, 30));

        jtf3.addActionListener(this);

        jb1=new JButton("X1=");

        jb1.setFont(new Font("华文行楷", Font.BOLD, 25));

        jb1.addActionListener(this);

        jtf4=new JTextField(11);

        jtf4.setFont(new Font("华文行楷", Font.BOLD, 30));

        jtf4.addActionListener(this);

        jb2=new JButton("X2=");

        jb2.setFont(new Font("华文行楷", Font.BOLD, 25));

        jb2.addActionListener(this);

        jtf5=new JTextField(11);

        jtf5.setFont(new Font("华文行楷", Font.BOLD, 30));

        jtf5.addActionListener(this);

        jb3=new JButton("清空");

        jb3.setFont(new Font("华文行楷", Font.BOLD, 25));

        jb3.addActionListener(this);

        jp1=new JPanel();

jp1.add(jl1);jp1.add(jtf1);jp1.add(jl2);jp1.add(jtf2);jp1.add(jl3);jp1.add(jtf3);jp1.add(jtf4);

        jp2=new JPanel();

    jp2.add(jb1);jp2.add(jtf4);jp2.add(jb2);jp2.add(jtf5);jp2.add(jb3);

        this.setBounds(300,200,740,200);

        this.setLayout(new GridLayout(3,0));

        this.add(jp3);this.add(jp1);this.add(jp2);

//设置图标

        Image image=this.getToolkit().getImage("计算器图标.jpg");

        this.setIconImage(image);

        this.setVisible(true);

        this.validate();

        //设置鼠标图标

        Toolkit tk=Toolkit.getDefaultToolkit();

        Image img=tk.getImage("计算器图标.jpg");

        Cursor cu=tk.createCustomCursor(img, new Point(10,10), "stick");

        this.setCursor(cu);

      this.addWindowListener(new WindowAdapter()

        {

            public void windowClosing(WindowEvent e)

                {

                    System.exit(0);

                }

        }

        ); 

//设置窗体之间切换  

       

        seeItem2.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                yiyuanerci.this.setVisible(false);

                new biaozhun().setVisible(true);

            }

        });

       

        seeItem3.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                yiyuanerci.this.setVisible(false);

                new gougudingli().setVisible(true);

            }

        });

       

       

    }

    public void actionPerformed(ActionEvent e) { 

       

        double a=Double.parseDouble(jtf1.getText());

        double b=Double.parseDouble(jtf2.getText());

        double c=Double.parseDouble(jtf3.getText());

        double d,x1,x2;

        d=b*b-4*a*c;

        x1=(-1*b+Math.sqrt(d))/(2*a);

        x2=(-1*b-Math.sqrt(d))/(2*a);

        if(e.getSource()==jb1&&d<0){

            jtf4.setText("d小于0无解");

            jtf5.setText("d小于0无解");

        }

        else if(e.getSource()==jb1&&d>=0){

            jtf4.setText(Double.toString(x1));

            jtf5.setText(Double.toString(x2));

        }

        else if(e.getSource()==jb3){

            jtf1.setText("");

            jtf2.setText("");

            jtf3.setText("");

            jtf4.setText("");

            jtf5.setText("");

        }

    }

    public static void main(String[] args) {

        new yiyuanerci();

    }

}

class gougudingli extends JFrame implements ActionListener{

    private JMenuBar myBar1;

    private JMenu menu1;

    private JMenuItem seeItem1;

    private JTextField jtf11,jtf12,jtf13;

    private JButton jb11,jb12,jb13;

    private JPanel jp11,jp12;

    DecimalFormat df=new DecimalFormat("#.####");//保留4位小数

    gougudingli(){

        super("勾股定理");

        myBar1=new JMenuBar();

        menu1=new JMenu("查看");

        menu1.setFont(new Font("华文行楷", Font.BOLD, 30));

        seeItem1=new JMenuItem("标准计算器");

        seeItem1.addActionListener(this);

        seeItem1.setFont(new Font("华文行楷", Font.BOLD, 20));

        menu1.add(seeItem1);

        myBar1.add(menu1);

        jp12=new JPanel();

        jp12.add(myBar1);

        jb11=new JButton("直角边a");

        jb12=new JButton("直角边b");

        jb13=new JButton("直角边c");

        jb11.setFont(new Font("楷体", Font.BOLD, 20));

        jb12.setFont(new Font("楷体", Font.BOLD, 20));

        jb13.setFont(new Font("楷体", Font.BOLD, 20));

        jb13.addActionListener(this);

        jb11.addActionListener(this);

        jb12.addActionListener(this);

        jtf11=new JTextField(5);

        jtf11.setFont(new Font("华文行楷", Font.BOLD, 30));

        jtf11.addActionListener(this);

        jtf12=new JTextField(5);

        jtf12.setFont(new Font("华文行楷", Font.BOLD, 30));

        jtf12.addActionListener(this);

        jtf13=new JTextField(5);

        jtf13.setFont(new Font("华文行楷", Font.BOLD, 30));

        jtf13.addActionListener(this);

        jp11=new JPanel();

        jp11.add(jb11);jp11.add(jtf11);jp11.add(jb12);

        jp11.add(jtf12);jp11.add(jb13);jp11.add(jtf13);

        this.setBounds(300,200,660,150);

        this.setLayout(new GridLayout(2,0));

        this.add(jp12);this.add(jp11);

//      设置图标

        Image image=this.getToolkit().getImage("计算器图标.jpg");

        this.setIconImage(image);

        this.setVisible(true);

        this.validate();

//      设置窗体之间切换 

        seeItem1.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                gougudingli.this.setVisible(false);

                new biaozhun().setVisible(true);}});}

    public static void main(String[] args) {

        new gougudingli();   }

    public void actionPerformed(ActionEvent e) {

        if (e.getSource()==jb13){

            double a=Double.parseDouble(jtf11.getText());

            double b=Double.parseDouble(jtf12.getText());

            double d,d2;

            d=a*a+b*b;

            d2=Math.sqrt(d);

            jtf13.setText(String.valueOf(df.format(d2)));}

        if (e.getSource()==jb12){

            double a=Double.parseDouble(jtf11.getText());

            double b=Double.parseDouble(jtf13.getText());

            double d,d2;

            d=b*b-a*a;

            d2=Math.sqrt(d);

            jtf12.setText(String.valueOf(df.format(d2)));}

        if (e.getSource()==jb11){

            double a=Double.parseDouble(jtf12.getText());

            double b=Double.parseDouble(jtf13.getText());

            double d,d2;

            d=b*b-a*a;

            d2=Math.sqrt(d);

            jtf11.setText(String.valueOf(df.format(d2)));}}}

           

4系统测试

在这次代码测试中我发现了诸多问题,像是界面设计出来的不理想,导入代码时输入格式变化导致的错误,以及类名的不规则定义和顺序错乱等,都在老师与同学的帮助下度过了难关。

计算器的标准界面:

计算器的科学界面及运行结果:

计算器勾股定理界面与运行结果:

计算器一元二次方程与运行结果:

总  结

1.设置计算器MR、MC、MS、M+时遇到问题,开始不知道怎么去实现,后来通过上网查找相关代码得以解决,设置double memoryd和int memoryi来使用内存中的数据。

2.进制转换的实现,进制转换的功能没有完全实现, 通过调用 Integer.to

HexString(n)十六进制、Integer.toOctalString(n)八进制、Integer.toBinary

String(n)二进制可以将数字转换成对应的进制类型,但是没有实现从十六进制转换成十进制。

3.在按钮添加监控事件时出现问题,例如addActionListener(new Action

Listener() {public void actionPerformed(ActionEvent e) {…}})如果在方法体中书写if(e.getSource()==jMenuItem5)就会出现错误,必须是在public void actionPerformed(ActionEvent e){…}方法体中实现方法。

4.在科学型和标准型计算器之间的窗体转换出现问题,对响应的菜单项添加监控和响应的按钮添加到容器以后,可以实现从标准型转换到科学型,但是当单击标准型按钮以后却无法将窗体转换到标准型,只能显示标准型的窗体,但是在窗体。却没有按钮和文本框,通过改变相对应的容器进行改进。

5.在设置一元二次方程窗体时,单击计算按钮时却没有在文本框中输出对应的结果,但是对按钮和文本框都添加了addActionListener(this),而且在算法的编写中也没有出现错误,原因是在文本框中数据读出和写入时类型转换出现错误。

6.在改变窗体上的图标时出现错误,显示图标的语句并没有出现错误,而且也导入了相关的image包,Image image=this.getToolkit().getImage("计算器图标.jpg"); this.setIconImage(image);后来更改图片的后缀就可以显示图片了,将后缀gif改为jpg就可以。

7.在标准计算器中显示关于计算器窗体时,单击确定按钮关闭关于计算器窗体时需要单击两次确定按钮才可以关闭窗体,显示标准计算器窗体。

8. 通过这个星期每天通宵达旦的做课设,虽然最后是完成了任务。但是做起来很费力 ,有些地方还是没怎么搞懂,时间又不允许总在一 个问题上纠结。所以只是很表面的学习了一下东西 ,通过这次课设使我明白, 要脚踏实地学习,快餐式的学习不可取 。在编写代码的时候出现了很多错误,都是一些平时不怎么关注的,所以,平时还是要多实践。还有最重要的一点就是 不到万不得已才去请教别人要知道独立思考的能力对你很重要。要知道程序员的时间是很宝贵的。

课程设计成绩评定表

相关推荐