Java计算器课程设计报告

时间:2024.4.30

石家庄职业技术学院

课程设计报告

计算器应用程序

学 生 姓 名: 

指 导 教 师:  

系       别: 

专       业:  

年       级:  

    论文提交时间:      年    月   日

 

目录

一 概述... 2

二 总体方案设计... 3

三详细设计... 4

四 程序的调试与运行结果说明... 7

五 课程设计总结... 9

六 附录... 10

 

 

 

一 概述

1.程序具备的功能:

(1)使用图形用户界面:一个文本框;0-9数字按钮;加、减、乘、除运算符;“等于”符号;复位按钮;

(2)完成整数、实数的四则运算(加、减、乘、除);

(3)通过按钮点击实现数据的复位(清零);

(4)实数运算中小数位的精度一致。

2.课程设计的主要设计思想

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

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

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

在进行加、减、乘、除计算时要把点击加、减、乘、除按钮之前的数值保存下来,运算时是这个被保存下来的数值和文本框中的数值加、减、乘、除。

 

二 总体方案设计

1.界面设计

界面设计要求用GUI,界面设计中有用到swing组件的TextField和Button,用到awt中的BorderLayout和GridLayout布局管理方式,其图形界面如下:

2.功能介绍

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

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

还能通过用户自己在文本框中输入数字,进行简单运算 ;

如果输入有误时可以按Clear撤销后重新输入新数据

三详细设计

  程序流程图如下:

部分代码展示及说明:

这段代码主要是对程序的主框架进行相应的设置。

Frame f=new Frame("计算器");

     f.setBackground(Color.lightGray);

     f.setForeground(Color.blue);

f.add(p1,BorderLayout.NORTH); 

     f.add(p2,BorderLayout.CENTER);       

     f.add(p3,BorderLayout.SOUTH);

     f.setSize(350,300);//设置大小  

     f.setVisible(true);//设置为可视

这段代码是对程序如何进行运算的设计

if(y==0&&command!="*"&&command!="/"               

            &&command!="+"&&command!="-"  

                 &&command!="=")//判断输入是否为数字  

                   {

                     s1=s1.concat(command);

                     tf.setText(s1);

                   }

             if(command=="*"||command=="/"      

        ||command=="+"||command=="-")//判断是否输入运算符

     {

       y=1;

     s2=command;

     }

    if(y==1&&command!="*"&&command!="/"              

            &&command!="+"&&command!="-"  

                 &&command!="=")

    {

      s3=s3.concat(command);

      tf.setText(s3);

    }

   if(command=="=")

     {

      Double ob1=Double.valueOf(s1);

      Double ob3=Double.valueOf(s3);

      d1=ob1.doubleValue();

      d3=ob3.doubleValue();

  if(s2=="+")    d4=d1+d3;

  if(s2=="-")  d4=d1-d3;

  if(s2=="*")  d4=d1*d3;

    Double ob4=new Double(d4);

    tf.setText(ob4.toString());

  if(s2=="/") 

      {  if(d3==0)

          tf.setText("除数不能为零");

       else{ d4=d1/d3;

          ob4=new Double(d4);

          tf.setText(ob4.toString());}

        }

     y=0;

}

这段代码主要为窗口关闭按钮编写程序

class closeWin extends WindowAdapter //为关闭按钮编写程序 

{

  public void windowClosing(WindowEvent e)

   {   System.exit(0);

   }

}

 

四 程序的调试与运行结果说明

事例1 当除数为0时,程序运行结果如下:

事例2:4561+8715  预计结果  13276  实际结果

事例3: 189/2   预计结果94.5   实际结果:

 

事例4: 29-87  预计结果-58   实际结果:

五 课程设计总结

在做本项目是时候,会遇到很多小问题,比如说:如何保存输入的数字和下一个数进行加、减、乘、除运算。还有如何判断它是第几个输入的数字。后来进行多次研究和查询才知道可以通过设运算符标志位来判断是输入的第几个数值。

此次课程设计让我更了解熟悉了Java中的图形用户界面和它的编程方式。在完成课题的过程中也不断充实了自己,学习到了很多以前没有学习到的知识,收获很大。最大的收获就是对大学学习的总结和培养了解决困难的信心和能力,使我对所学知识能够融会贯通,又不断丰富了新知识。Java计算器设计使得我们对所学的专业课有了更为深刻的认识,使得知识得到了巩固和提高。

 

 

六 附录

import java.awt.*;

import java.awt.event.*;

public class Calculator implements   ActionListener

{    Panel p1=new Panel();

     Panel p2=new Panel();

     Panel p3=new Panel();

  TextField tf=new TextField(30);

  String a[]={"7","8","9","/","4","5","6","*","1","2","3","-","0",".","=","+"};        

  Button B[];

  Button b1=new Button("CE");

  Button b2=new Button("退出");

  String s1=new String();

  String s2=new String();

  String s3=new String();//s1记录第一个数;s2记录运算符;s3记录第二个数;

  double d1,d3,d4;

  int y=0; // y用于控制运算符

  public   void   init()

   {

     Frame f=new Frame("计算器");

     f.setBackground(Color.lightGray);

     f.setForeground(Color.blue);

     p1.add(tf);

     p3.setLayout(new  GridLayout(1,2)); 

     p3.add(b1);      

     p3.add(b2);    

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

     B=new Button[a.length]; 

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

      {

        B[i]=new Button(a[i]);

        p2.add(B[i]);

      }    

     f.add(p1,BorderLayout.NORTH); 

     f.add(p2,BorderLayout.CENTER);       

     f.add(p3,BorderLayout.SOUTH);

     f.setSize(350,300);//设置大小  

     f.setVisible(true);//设置为可视

    B[0].addActionListener(this);//7

    B[1].addActionListener(this); //8

    B[2].addActionListener(this); //9

    B[3].addActionListener(this);   //除

    B[4].addActionListener(this); //4

    B[5].addActionListener(this); //5

    B[6].addActionListener(this); //6

    B[7].addActionListener(this); //*

    B[8].addActionListener(this); //1

    B[9].addActionListener(this); //2

    B[10].addActionListener(this);   //3

    B[11].addActionListener(this); // -

    B[12].addActionListener(this); //0

    B[13].addActionListener(this); //.

    B[14].addActionListener(this); //=

    B[15].addActionListener(this); //+

    b1.addActionListener(this);

    b2.addActionListener(this);

    f.addWindowListener(new closeWin());

  }

  public   void   actionPerformed(ActionEvent   e)

   {

     String   command   =   e.getActionCommand();   

     if(command=="CE")   //清零键   按下时返回初始状态  

       {  

         y=0; 

          tf.setText("0.");

          s1="";s2="";s3="";//记录输入值的变量清空  

       }            

     else if(command=="退出")   System.exit(0);//退出键   关闭应用程序     

          else if(y==0&&command!="*"&&command!="/"              

            &&command!="+"&&command!="-"  

                 &&command!="=")//判断输入是否为数字  

                   {

                     s1=s1.concat(command);

                     tf.setText(s1);

                   }

             if(command=="*"||command=="/"      

        ||command=="+"||command=="-")//判断是否输入运算符

     {

       y=1;

     s2=command;

     }

    if(y==1&&command!="*"&&command!="/"               

            &&command!="+"&&command!="-"  

                 &&command!="=")

    {

      s3=s3.concat(command);

      tf.setText(s3);

    }

   if(command=="=")

     {

      Double ob1=Double.valueOf(s1);

      Double ob3=Double.valueOf(s3);

      d1=ob1.doubleValue();

      d3=ob3.doubleValue();

  if(s2=="+")    d4=d1+d3;

  if(s2=="-")  d4=d1-d3;

  if(s2=="*")  d4=d1*d3;

    Double ob4=new Double(d4);

    tf.setText(ob4.toString());

  if(s2=="/") 

      {  if(d3==0)

          tf.setText("除数不能为零");

       else{ d4=d1/d3;

          ob4=new Double(d4);

          tf.setText(ob4.toString());}

        }

     y=0;

    }

 }

  public   static   void   main(String   []   args)  

   {           

     new   Calculator().init();    

   }  

}

class closeWin extends WindowAdapter //为关闭按钮编写程序 

{

  public void windowClosing(WindowEvent e)

   {

     System.exit(0);

   }

}


第二篇:课程设计报告(java版的计算器源代码)


程序功能简介:从最基本的加、减、乘、除,到基本数学函数处理,再到数的进制转换处理。 代码如下

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class Calculator extends Frame implements ActionListener, WindowListener

{

private Container container;

private GridBagLayout layout;

private GridBagConstraints constraints;

private JTextField displayField; //计算结果显示区

private String lastCommand; //保存+,-,*,/,=命令0

private double result; //保存计算结果

private boolean start; //判断是否为数字的开始

private JMenuBar menubar;

private JMenuItem m_exit,m2_ejz,m2_bjz;

private Dialog dialog;

private Label label_dialog;

private JButton button_sqrt,button_plusminus,button_CE,button_cancel,button_1,button_2, button_3,button_4,button_5,button_6,button_7,button_8,button_9,button_0,

button_plus,button_minus,button_multiply,button_divide,button_point,

button_equal,button_log,button_tan,button_cos,button_sin,button_exp;

public Calculator() //构造方法设置布局、为按钮注册事件监听器

{

super("Calculator");

this.setLocation(240,200);

this.setSize(350,300);

this.setResizable(true);

this.setLayout(new GridLayout(7,1));

this.addmyMenu(); //调用成员方法添加菜单

displayField=new JTextField(30);

this.add(displayField);

displayField.setEditable(true);

start=true;

result=0;

lastCommand = "=";

JPanel panel0=new JPanel();

panel0.setLayout(new GridLayout(1,4,4,4));

JPanel panel1=new JPanel();

panel1.setLayout(new GridLayout(1,5,4,4));

this.add(panel1);

button_sqrt=new JButton("sqrt"); button_plusminus=new JButton("+/-"); button_exp=new JButton("exp");

button_CE=new JButton("退格");

button_cancel=new JButton("C");

JPanel panel2=new JPanel();

panel2.setLayout(new GridLayout(1,5,4,4)); this.add(panel2);

button_7=new JButton("7");

button_8=new JButton("8");

button_9=new JButton("9");

button_log=new JButton("log");

button_divide=new JButton("/");

JPanel panel3=new JPanel();

panel3.setLayout(new GridLayout(1,5,4,4)); this.add(panel3);

button_4=new JButton("4");

button_5=new JButton("5");

button_6=new JButton("6");

button_tan=new JButton("tan");

button_multiply=new JButton("*");

JPanel panel4=new JPanel();

panel4.setLayout(new GridLayout(1,5,4,4)); this.add(panel4);

button_1=new JButton("1");

button_2=new JButton("2");

button_3=new JButton("3");

button_cos=new JButton("cos");

button_minus=new JButton("-");

JPanel panel5=new JPanel();

panel5.setLayout(new GridLayout(1,5,4,4)); this.add(panel5);

button_0=new JButton("0");

button_point=new JButton(".");

button_equal=new JButton("=");

button_sin=new JButton("sin");

button_plus=new JButton("+");

panel1.add(button_sqrt);

panel1.add(button_plusminus);

panel1.add(button_exp);

panel1.add(button_CE);

panel1.add(button_cancel);

panel2.add(button_7);

panel2.add(button_8);

panel2.add(button_9);

panel2.add(button_log);

2

panel2.add(button_divide);

panel3.add(button_4);

panel3.add(button_5);

panel3.add(button_6);

panel3.add(button_tan);

panel3.add(button_multiply);

panel4.add(button_1);

panel4.add(button_2);

panel4.add(button_3);

panel4.add(button_cos);

panel4.add(button_minus);

panel5.add(button_0);

panel5.add(button_point);

panel5.add(button_equal);

panel5.add(button_sin);

panel5.add(button_plus);

button_sqrt.addActionListener(this);

button_plusminus.addActionListener(this); button_exp.addActionListener(this); button_CE.addActionListener(this); button_cancel.addActionListener(this); button_7.addActionListener(this);

button_8.addActionListener(this);

button_9.addActionListener(this);

button_log.addActionListener(this); button_divide.addActionListener(this); button_4.addActionListener(this);

button_5.addActionListener(this);

button_6.addActionListener(this);

button_tan.addActionListener(this);

button_multiply.addActionListener(this); button_1.addActionListener(this);

button_2.addActionListener(this);

button_3.addActionListener(this);

button_cos.addActionListener(this); button_minus.addActionListener(this); button_0.addActionListener(this);

button_point.addActionListener(this); button_equal.addActionListener(this); button_sin.addActionListener(this); button_plus.addActionListener(this);

this.addWindowListener(new WinClose()); this.setVisible(true);

}

private void addmyMenu() //菜单的添加 {

JMenuBar menubar=new JMenuBar();

this.add(menubar);

3 注册窗口监听器 //

JMenu m1=new JMenu("选项");

JMenu m2=new JMenu("进制转换");

JMenuItem m1_exit=new JMenuItem("退出");

m1_exit.addActionListener(this);

JMenuItem m2_ejz=new JMenuItem("二进制");

m2_ejz.addActionListener(this);

JMenuItem m2_bjz=new JMenuItem("八进制");

m2_bjz.addActionListener(this);

JMenu m3 = new JMenu(" 帮助");

JMenuItem m3_Help = new JMenuItem("用法");

m3_Help.addActionListener(this);

dialog = new Dialog(this,"提示",true); //模式窗口

dialog.setSize(240,80);

label_dialog = new Label("",Label.CENTER); //标签的字符串为空,居中对齐 dialog.add(label_dialog);

dialog.addWindowListener(this); //为对话框注册窗口事件监听器

m1.add(m1_exit);

menubar.add(m1);

m2.add(m2_ejz);

m2.add(m2_bjz);

menubar.add(m2);

m3.add(m3_Help);

menubar.add(m3); }

public void actionPerformed(ActionEvent e) //按钮的单击事件处理方法 {

if(e.getSource().equals(button_1)||e.getSource().equals(button_2)||

e.getSource().equals(button_3)||e.getSource().equals(button_4)||

e.getSource().equals(button_5)|| e.getSource().equals(button_6)||

e.getSource().equals(button_7)|| e.getSource().equals(button_8)||

e.getSource().equals(button_9) ||e.getSource().equals(button_0)||

e.getSource().equals(button_point)||e.getSource().equals(button_plusminus)|| e.getSource().equals(button_cancel)||e.getSource().equals(button_CE))

{ //非运算符的处理方法

String input=e.getActionCommand();

if (start)

{

displayField.setText("");

start=false;

if(input.equals("+/-"))

displayField.setText(displayField.getText()+"-");

}

if(!input.equals("+/-"))

{

String str=displayField.getText();

if(input.equals("退格")) //退格键的实现方法

{

if(str.length()>0)

4

displayField.setText(str.substring(0,str.length()-1)); }

else if(input.equals("C")) //清零键的实现方法

{

displayField.setText("0");

start=true;

}

else

displayField.setText(displayField.getText()+input);

}

}

else if (e.getActionCommand()=="二进制") //二进制的转换

{

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

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

}

else if (e.getActionCommand()=="八进制") //八进制的转换

{

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

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

}

else if (e.getActionCommand()=="退出") //选项中退出的处理方法

{

System.exit(0);

}

else if (e.getActionCommand()=="用法") //按下'帮助'菜单栏中用法的处理方法 {

label_dialog.setText("sqrt,exp等键是先输运算符再输数字\n");

dialog.setLocation(400,250);

dialog.setVisible(true);

}

else //各运算符的识别

{

String command=e.getActionCommand();

if(start)

{

lastCommand=command;

}

else

{

calculate(Double.parseDouble(displayField.getText()));

lastCommand=command;

start=true;

}

}

}

public void calculate(double x) //各运算符的具体运算方法

{

double d=0;

if (lastCommand.equals("+"))

5

result+= x;

else if (lastCommand.equals("-"))

result-=x;

else if (lastCommand.equals("*"))

result*=x;

else if (lastCommand.equals("/"))

result/=x;

else if (lastCommand.equals("="))

result=x;

else if (lastCommand.equals("sqrt"))

{

d=Math.sqrt(x);

result=d;

}

else if (lastCommand.equals("exp"))

{

d=Math.exp(x);

result=d;

}

else if (lastCommand.equals("log"))

{

d=Math.log(x);

result=d;

}

else if (lastCommand.equals("tan"))

{

d=Math.tan(x);

result=d;

}

else if (lastCommand.equals("cos"))

{

d=Math.cos(x);

result=d;

}

else if (lastCommand.equals("sin"))

{

d=Math.sin(x);

result=d;

}

displayField.setText(""+ result);

}

public void windowClosing(WindowEvent e)

{

if(e.getSource()==dialog)

dialog.setVisible(false);

else

System.exit(0);

}

public void windowOpened(WindowEvent e) { } 隐藏对话框 6 //

public void windowActivated(WindowEvent e) { }

public void windowDeactivated(WindowEvent e) { }

public void windowClosed(WindowEvent e) { }

public void windowIconified(WindowEvent e) { }

public void windowDeiconified(WindowEvent e) { }

public static void main(String args[])

{

Calculator calculator=new Calculator();

}

}

class WinClose implements WindowListener

{

public void windowClosing(WindowEvent e) //单击窗口关闭按钮时触发并执行实现窗口监听器接口

中的方法

{

System.exit(0); //结束程序运行

}

public void windowOpened(WindowEvent e){}

public void windowActivated(WindowEvent e){}

public void windowDeactivated(WindowEvent e){}

public void windowClosed(WindowEvent e){}

public void windowIconified(WindowEvent e){}

public void windowDeiconified(WindowEvent e){}

}

运行结果截图:

课程设计报告java版的计算器源代码

7

程序功能实现:

1. 运用两个面板的叠加做出界面。

2. 通过在按钮的单击事件处理方法中调用类的成员方法calculate()来进行简易计算器的各种运算,并正确实现运算功能。

3. 调用Math包中的方法实现各函数功能。

4. 添加菜单条,列出‘选项’、‘进制转换’、‘帮助’等菜单选项,并分别实现‘选项’中‘退出’的功能,通过调用Integer包中的方法实现二进制、八进制的转换,‘帮助'菜单栏中‘用法’的提示对话框。

5. 整个程序对话框可实现最小化、最大化、关闭。

设计体会:

在此次的课程设计实践中,我学到了教科书上没有的东西。这次课程设计,我按照课程设计的要求,分块实现程序的功能。在实践中我遇到许多的问题,但我都克服,最终我成功的完成了这次课程设计。从中我充分理解了Java面对对象的特性,并体会到Java与C语言的不同之处

在实践的同时,我又从中成长了许多,特别是在对程序的编译和调试中掌握了许多的技巧和方法,为今后的其他计算机语言的学习奠定了一定的基础。

总结:

(1)通过编写这个相对复杂的程序,让我认识解决实际问题前应现建立模型,再通过建立的模型使问题简单化,从而解决问题。

(2)这次编写的程序大部分是通过调用各包中的方法来实现的,这也让我充分理解了包和类调用的关系。

(3)由于这次编写的程序相对比较复杂,所以不能一次性编写、调试,也由此让我学会把程序分块,逐个编写、调试。

8

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

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

java课程设计计算器

中文摘要该程序是一个图形界面的简单Java计算器,具有良好的界面,使用人员能快捷简单的进行操作。即时准确地获得需要的计算结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。可以进行简单的四则运…

Java计算器课程设计报告

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

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

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

java计算器设计报告

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

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篇)