毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

java图形界面简单计算器设计

更新时间:2011-5-21:  来源:毕业论文

java图形界面简单计算器设计
 需求分析:    
    设计一个简单的计算器类(类型),要求:
(1) 点击按钮进行输入。
(2) 可以进行加、减、乘、除运算。
(3) 有一定的排错功能。
12.2概要设计:
本程设计思路: 计算器的构建用java的话还是挺容易的,用组件将各个需要的按钮放上去,然后监听事件,有按钮按下去的时间就实现相应的错做,或是显示,或是进行计算。并且使用字符串来实现记忆功能。
程序流程图(如左图):
12.3   详细设计与编码:
见上传程序。
 12.4  调试分析:
      这题在写监听事件的时候,很是费了大的功夫。由于对java一些功能及用法还不是很熟练,所以是碰到了不少的问题。像是显示计算结果的方法就不会,是是参考了别人的实验才弄出来的。
 程序执行的结果:
错误检测
当被除数为0时显示:原文请找腾讯752018766优,文-论'文.网http://www.youerw.com
12.5   用户使用说明:
      点击按钮进行计算。
12.6  设计心得:
     写计算器的实验,大家都感觉是用栈会比较好。但是由于java本身自带的栈说实在的我是真不懂应该怎么将它继承来使用,如果是自己再写的话那就更加麻烦了。所以就投机取巧了,使用字符串来代替。
 这个计算器能实现的功能并不多,本来是想实现成计算公式的那种计算器,但是在结合的时候有点小麻烦,而且时间也不是太多了,所以就没有实现了,有空再细细研究。
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class Calculator extends Applet implements ActionListener
{
  Label display = new Label();
  String com[] = { "C", "sqrt", "+",  "-", "7", "8", "9",  "*", "4", "5", "6",
   "/", "1", "2", "3","=", "0", "." };
  Button b[];
  Panel panel, bboard;
  boolean inputState;  //输入状态指标值
  boolean isFloat;  //浮点数指标值
  String memory = "";  //用以暂存数值
  String symbol ="";  //用以暂存运算符号
  double num1, num2;
  final int len = 15;  //最大显示的位数

  //            applet初始化           
  public void init()
  {
    panel = new Panel();
    bboard = new Panel();

    GridLayout bgl = new GridLayout(0, 4, 2, 2);
    bboard.setLayout(bgl);  //bboard面板建立格式配置管理

    b = new Button[com.length];
    for(int j = 0; j < com.length; j++)
    {
      b[j] = new Button(com[j]);
      bboard.add(b[j]);  //按钮加至bboard面板
      b[j].addActionListener(this);
    }

    BorderLayout pgl = new BorderLayout(0, 10);
    panel.setLayout(pgl);
    panel.add(display, "North");  //放置显示区
    display.setBackground(Color.WHITE);
    panel.add(bboard, "Center");  //放置按钮区
    panel.setBackground(Color.blue);

    this.setBackground(Color.blue);
    add(panel);
    display.setAlignment(Label.RIGHT);
    display.setText("0");
    inputState = true;  //设定为输入状态
  }

  //            按下按钮时           
  public void actionPerformed(ActionEvent e)
  {
    String click = e.getActionCommand();
    if(click.equals("C"))  //清除
    {
      display.setText("0");  //归零
      inputState = true;  //为输入状态
      isFloat = false;  //设为非浮点数
      memory = "";  //清除记忆的数字
      symbol = "";  //清除记忆的符号
    }
    else if(click.equals("0") || click.equals("1") || click.equals("2") ||
 click.equals("3") || click.equals("4") || click.equals("5") ||
 click.equals("6") || click.equals("7") || click.equals("8") ||
 click.equals("9") )
    {
      pressNum(click);
    }
    else if(click.equals("."))
    {
      if (display.getText().indexOf(click) < 0) //显示区内没有小数点
        if(display.getText().length() < len)  //而且位数未达最大
            display.setText(display.getText()+click);
    }
    else if(click.equals("+") || click.equals("-") || click.equals("*") ||
 click.equals("/") || click.equals("=") || click.equals("sqrt") )
    {
      pressSymbol(click);
      inputState = false;
    }
  }

  //            按下数字时           
  void pressNum(String s)
  {
      if(inputState)  //若为输入状态
      {
        if(display.getText().length() < len)  //还未超过位数
        {
          if(display.getText() != "0")
            display.setText(display.getText()+s);  //若原值不为零,加至字串尾端
          else
            display.setText(s);  //若原值为零,以新键入值取代
        }
      }
      else  //若不为输入状态
      {
        display.setText(s);  //显示新键入的数值
        inputState = true;  //设定为输入状态
      }
  }

  //            按下运算符号时           
  void pressSymbol(String s)
  {
    num1 = parseDouble ( display.getText() );

    if( s == "sqrt" )  //如果按下的是开根号
    {
      double dTemp = Math.sqrt(num1);
      isFloat = true;
      display.setText( getNumStr(dTemp) );  //设定显示的数目
      memory = "";
      symbol = "";
      return;
    }
    else if( s == "=")  //如果按下的是等号
    {
        if(inputState && memory != "")  //之前有储存数值,而且为输入状态
        {
          //计算结果
          display.setText( getNumStr( cal( symbol ) ) );
        }
        memory = "";
        symbol = "";
    }
    else  //如果按下的是四则运算符号
    {
      if(memory == "")  //如果之前没有储存数值
      {
        memory = display.getText();
        symbol = new String(s);
      }
      else
      {
          //计算结果
          display.setText( getNumStr( cal( symbol ) ) );
          memory = display.getText();
          symbol = new String(s);
      }
    }
  }

  //            四则运算           
  double cal(String s)
  {
        //判断输入的运算元是否带有小数点
        if (display.getText().indexOf(".") > 0 || memory.indexOf(".") > 0)
          isFloat = true;
        else
          isFloat = false;

    num1 = parseDouble(display.getText());
    num2 = parseDouble(memory);
    if(s.equals("+"))
      return num2+num1;
    else if(s.equals("-"))
      return num2-num1;
    else if(s.equals("*"))
      return num2*num1;
    else
      return num2/num1;
  }

  //            将数值转换字串           
  String getNumStr(double d)
  {
    String s;
    if(d > 999999999999999L)  //超过位数时
    {
      showStatus("出错!");
      memory ="";
      return "0";
    }

    if(isFloat)  //若为浮点数时
    {
原文请找腾讯752018766优,文-论'文.网http://www.youerw.com     {
      long temp = (long) d;
      return ""+temp;
    }
  }

  //            将字串转换成倍精数           
  double parseDouble(String s)
  {
    Double d = new Double(s);
    return d.doubleValue();

java图形界面简单计算器设计下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。