java课程设计计算器

时间:2024.4.8

中文摘要

该程序是一个图形界面的简单Java计算器,具有良好的界面,使用人员能快捷简单的进行操作。即时准确地获得需要的计算结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。可以进行简单的四则运算(加、减、乘、除,等)。其中C表示清零,界面简洁使用方便。
目 

一、课程设计任务及要求... 1

二、需求分析... 2

三、设计思路... 3

四、详细设计... 5

五、运行调试与分析讨论... 11

六、设计体会与小结... 14

七、参考文献... 15

 

一、课程设计任务及要求

设计一个图形界面(GUI)的计算器应用程序,完成简单的算术运算、设计的计算器应用程序可以完成家法、减法、乘法、除法和取余运算。且有小数点、正负号、求倒数、退格和清零功能。

二、需求分析

在日常生活中经常要用到计算器,比如科学计算器、数值计算、会计业务等,在Applet中实现一个精巧实用的计算器,可以让用户在使用网站服务的同时,可以很方便地进行数据运算,可增加页面的实用性,同时让用户的操作也更方便与快捷。本次实验要求实现一个具有四则运算的计算器,拥有加、减、乘、除功能,并且还要求具备清零等功能。

三、设计思路

本应用程序继承自框架类(Frame),此程序使用Frame布局管理器BorderLayout,将单行文本框加入到“North”区域,包含各种按钮的面板Panel p加入到”Center”区域。         包含各种按钮的面板Panel p 采用4行5列的网格布局,然后将数字按钮和运算符按钮以及控制按钮添加到面板中。同时注册按钮事件监听器。如:

Button b=new Button();

b.addActionListener(事件监听器);

事件监听器中的事件处理方法void actionPerformed(ActionEvent evt)完成主要的按钮事件的处理。事件处理分以下几种情况:数字按钮事件(”0”,”1”,”2”…”8”,”9”)、运算符按钮事件(”+”,”-“,”*”,”/”,”%”)、正负号按钮事件(”+/-“)、小数点按钮事件(”.”)、等号按钮事件(”=”)、求倒按钮事件(”1/x”)、退格按钮事件(”退格”)、清楚按钮事件(“C”)。

在事件处理。

触发按钮事件时,要进一步分析,是重新开始计算时触发的按钮事件还是计算中间触发的按钮事件。

计算器完成的是一个数学表达式,如:3+2,所以可以采用一个链表(LinkedList类)来存储数字或字符,如3,+,2分别存储在链表中,最后运算时,可以一一取出来进行运算。

本应用程序中的数字按钮和运算符按钮可以分别定义以下两个类的对象组件

数字按钮NumberButton类如下:

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class NumberButton extends Button

{

  int number;

  public NumberButton(int number)

   {

    super(""+number);

    this.number=number;

    setForeground(Color.blue);

   }

  public int getNumber()

   {

     return number;

   }

}

运算符按钮OperationButton类如下

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class OperationButton extends Button

{

  String 运算符号;

  public OperationButton(String s)

   {

    super(s);

    运算符号=s;

    setForeground(Color.red);

   }

  public String get运算符号()

   {

     return 运算符号;

   }

}

四、详细设计

本程序主要包含两部分分别为主类和附类,程序详细设计如下:

1.  数据分析

计算器的程序设计,必然有数据的输入,当中就包含运算符和数字,都要通过计算器上的button按钮选项按键输入进去,里面录入的为字符型的数据,若要进行运算,要将输入的字符转换成double型,以防运算出错。

2.  类的设计

class Calculator extends JFrame implements ActionListener

{

}//Calculator 是初始化界面,以及响应用户的操作。

Calculate是个内部类,功能是进行进制的转换。

3.  功能设计

1数字键按钮,输入所需计算的数字。

2算数符按钮,输入所需的算数符号。

3等号按钮,输出运算的结果。

4C按钮,执行清零。

4.  程序代码

主类:

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.event.*;

class SwingCalculator {

   public static void main(String[] args) {

        JFrame frame = new Calculator();

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        frame.setVisible(true);

    }

}

附类:

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.event.*;

  class Calculator extends JFrame {

  private final Font BIGGER_FONT = new Font("monspaced", Font.PLAIN, 20);

  private JTextField textfield;      

  private boolean   number = true; 

  private String    equalOp  = "="; 

  private CalculatorOp op = new CalculatorOp();

  public Calculator() {

  textfield = new JTextField("0", 12);

  textfield.setHorizontalAlignment(JTextField.RIGHT);

  textfield.setFont(BIGGER_FONT);

  ActionListener numberListener = new NumberListener();

  String buttonOrder = "1234567890 ";

  JPanel buttonPanel = new JPanel();

  buttonPanel.setLayout(new GridLayout(4, 4, 4, 4));

    for (int i = 0; i < buttonOrder.length(); i++) {

            String key = buttonOrder.substring(i, i+1);

            if (key.equals(" ")) {

                buttonPanel.add(new JLabel(""));

            } else {

                JButton button = new JButton(key);

                button.addActionListener(numberListener);

                button.setFont(BIGGER_FONT);

              buttonPanel.add(button);

            }

        }

  ActionListener operatorListener = new OperatorListener();

  JPanel panel = new JPanel();

  panel.setLayout(new GridLayout(4, 4, 4, 4));

  String[] opOrder = {"+", "-", "*", "/","=","C"};

   for (int i = 0; i < opOrder.length; i++) {

    JButton button = new JButton(opOrder[i]);

    button.addActionListener(operatorListener);

    button.setFont(BIGGER_FONT);

    panel.add(button);

    }

   JPanel pan = new JPanel();

        pan.setLayout(new BorderLayout(4, 4));

        pan.add(textfield, BorderLayout.NORTH );

        pan.add(buttonPanel   , BorderLayout.CENTER);

        pan.add(panel , BorderLayout.EAST  );

        this.setContentPane(pan);

        this.pack();

        this.setTitle("Calculator");

        this.setResizable(false);

    }

        private void action() {

        number = true;        

        textfield.setText("0");

        equalOp  = "=";

        op.setTotal("0");

    }

    class OperatorListener implements ActionListener {

        public void actionPerformed(ActionEvent e) {

        if (number) {

                action();

                textfield.setText("0");

            } else {

                number = true;

                String displayText = textfield.getText();

                if (equalOp.equals("=")) {

                        op.setTotal(displayText);

                    } else if (equalOp.equals("+")) {

                        op.add(displayText);

                    } else if (equalOp.equals("-")) {

                        op.subtract(displayText);

                    } else if (equalOp.equals("*")) {

                        op.multiply(displayText);

                    } else if (equalOp.equals("/")) {

                        op.divide(displayText);

                    }

                   textfield.setText("" + op.getTotalString());

                   equalOp = e.getActionCommand();

            }

           }

           }

    class NumberListener implements ActionListener {

        public void actionPerformed(ActionEvent event) {

            String digit = event.getActionCommand();

            if (number) {

              textfield.setText(digit);

              number = false;

            } else {

             textfield.setText(textfield.getText() + digit);

            }

        }

    }

    public class CalculatorOp {

   

private int total;  

public CalculatorOp() {

        total = 0;

    }

   public String getTotalString() {

        return ""+total;

    }

   public void setTotal(String n) {

        total = convertToNumber(n);

    }

   public void add(String n) {

        total += convertToNumber(n);

   }

   public void subtract(String n) {

        total -= convertToNumber(n);

    }

   public void multiply(String n) {

        total *= convertToNumber(n);

    }

   

    public void divide(String n) {

        total /= convertToNumber(n);

    }

   

    private int convertToNumber(String n) {

        return Integer.parseInt(n);

    }

}

  }

      

五、运行调试与分析讨论

程序运行中所遇到的错误:

例如:

程序在运行中遇到很多的困难和错误,上述为列举错误中的两个,实际上程序在刚开始编译完成时遇到很多的错误,在通过自身努力和同学们的帮助下错误得以一一解决。以下就不一一举例所遇到的错误了。

程序运行如下:

运行状况如下:

例如 运行3×9

先输入3,在按*,在输入9

      

然后按=号,输出结果:

六、设计体会与小结

本次的Java课程设计使我对Java的知识有了更深一步的了解,同时在编译程序的时候对知识系统进行了更加全面的梳理,并通复习,和同学的帮助,终于熟练的掌握了基本理论知识,从而完成程序的编译。

本次课程设计还使我收获很大,使我对Java的设计过程有了更深的了解,和对知识的笑话和吸收,同时也巩固了Java课程的知识。当然在设计编译程序是遇到了不少的麻烦和错误,在通过老师和同学的共同帮助下一一得到了解决。

总之这次程序的设计让我发现了更多学习中没有遇到的问题,从而提高了综合能力。同时本次设计,使我明白了许多。

七、参考文献

[1]丁振凡主编.《Java语言实用教程》.北京:北京邮电大学出版社.2007

[2]李刚主编.《疯狂Java讲义》.北京:电子工业出版社.2008

[3]埃史尔主编.《Java编程思想》.北京:机械工业出版社.2007

更多相关推荐:
计算器设计的java课程设计报告

华东交通大学课程设计华东交通大学课程设计课程设计题目计算器设计课程题目年级专业学号姓名组员指导教师Java程序设计信息一班1华东交通大学课程设计课程设计论文任务书基础学院信息与计算科学专业20xx1班一课程设计...

Java计算器课程设计报告

Java计算器Java计算器Java课程设计报告姓名学号专业0Java计算器一程序要实现的功能基础功能类似windows计算器普通计算器所具有的数的输入加减乘除开根号求倒数退格清空以及数字储存器中的MR显示MC...

计算器java课程设计(完整版)

目录一课设任务及要求1二需求分析2三设计思路3四详细设计4五运行调试与分析讨论14六设计体会与小结18七参考文献19一课设任务及要求1课设任务设计的计算器应用程序可以完成加法减法乘法除法以及取余运算可以进行浮点...

java计算器设计报告

摘要本计算器是由java语言所编程设计的标准计算器可以进行十进制下的四则运算加减乘除开平方求余求倒数还可以实现二进制与十进制之间的转换通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和开发方法以便...

Java计算器课程设计报告

石家庄职业技术学院课程设计报告计算器应用程序学生姓名指导教师系别专业年级论文提交时间年月日目录一概述3二总体方案设计4三详细设计5四程序的调试与运行结果说明7五课程设计总结9六附录102一概述1程序具备的功能1...

Java课程设计报告-计算器

Java课程设计报告计算器第一部分设计的内容要求11Windows自带计算器版面设计12计算器计算功能算法实现第二部分设计思想21根据图形用户界面设计方法设计计算器版面容器类窗口Window类面板Panel类框...

java课程设计报告—计算器

1计算器Java实习报告目录一课程设计目的2二课程设计任务221设计任务222课程设计要求223需求分析2三开发工具与平台331开发工具332开发平台3四设计思路441界面设计4421逻辑设计4422程序流程图...

java课程设计 科学计算器

目录1课设任务及要求111课设任务112创新要求113设计要求12需求分析221设计背景222开发的技术及功能23设计思路34详细设计441功能实现444程序设计过程65系统调试651运行调试66参考文献7附录...

Java带计算过程的计算器课程设计报告

目录1概述12系统需求分析121系统目标122主体功能13系统概要设计231系统的功能模块划分232系统流程图24系统详细设计241主界面模块详细设计242事件响应模块详细设计55测试651测试方案652测试结...

java课程设计 计算器的设计与实现

淮海工学院计算机工程学院课程设计报告设计名称:面向对象课程设计选题名称:计算器的设计与实现姓名:学号:专业班级:系(院):计算机工程学院设计时间:设计地点:软件实验室、教室

Java课程设计----简易计算器

面向对象课程设计Java题目简易计算器专业电子商务班级1110025学生姓名指导老师20xx年1月6日目录一设计内容1二设计要求1三总体设计1四具体设计1五程序设计6设计体会与小结15简易计算器设计一设计内容设...

Java语言课程设计-计算器制作

JAVA语言课程设计报告题目带函数功能和数制转换功能的计算器制作设计者专业班级学号指导教师20xx年12月12日计算机学院计算机学院信管08级JAVA程序设计报告1系统需求分析11系统名称带函数功能和数制转换功...

java计算器课程设计报告(43篇)