JAVA课程设计----计算器小程序报告

#####学院

JAVA语言课程设计报告

小程序计算器系统管理

班    级:#######

姓    名:###

##

指导老师:###

时间:20##年6月25日至6月29日


目录

1、课程设计概述--------------------------------------------------3

     1.1利用java编写计算器,使之具备一定的功能:-----------------3

     1.2 课程设计的主要思想--------------------------------------------------3

     1.3 该项目设计的目的-----------------------------------------------------3

2、需求分析方案--------------------------------------------------4

2.1功能需求分析-----------------------------------------------4

2.2 性能需求分析-----------------------------------------------4

3、总体设计方案--------------------------------------------------5

3.1界面设计----------------------------------------------------------------------5

3.2功能介绍-----------------------------------------------------------------------5

4、 详细说明、调试---------------------------------------------6

4.1程序流程图-------------------------------------------------------6

    4.2部分代码说明-----------------------------------------------------6

    4.3程序调试与结果示例-------------------------------------------8

5、 个人总结-----------------------------------------------------10

6、 附录(代码)-----------------------------------------------11

     6.1登陆界面代码 --------------------------------------------11

      6.2计算器主界面 --------------------------------------------12

      6.3 退出界面代码 -------------------------------------------15


1.课程设计概述

1.1利用java编写计算器,使之具备一定的功能

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

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

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

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

1.2 课程设计的主要思想

      首先要设计一个登录界面,必须输入密码并正确才能进入到计算器界面;

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

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

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

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

最后还需要一个退出界面。

重要的是必须把三个界面的代码放在同一个包里。

1.3 该项目设计的目的

(1)理解并掌握Java中的类、对象、继承、方法等概念,以及Applet的基本框架和事件处理的方法。

(2)学会一些按钮,标签,主件,文本框的使用;

(3)学会使用JDK编写、调试和运行Java Applet应用程序。

(4)利用awt组件编写一个计算器,实现基本的四则运算。


2.需求分析

2.1 功能需求分析

在日常生活中经常需要用到计算器,比如科学计算、数值计算、会计业务等,在Applet中实现一个精巧实用的计算器,可以让用户在使用网站服务的同时,可以很方便地进行数据运算,可增加页面的实用性,同时让用户的操作也更方便与快捷。本项目需要实现一个用Java中的类、对象、继承、方法等概念以及awt主键和 Applet的基本框架和事件处理的方法。简单的四则运算的计算器,拥有加、减、乘、除功能,除此之外要三个界面即:登录面,计算器主界面,退出界面,要剧本的功能就是点击登录界面可以前往计算器主界面,退出可以到达退出界面。

2.2性能需求分析

实用性:在实现此过程中,我们要考虑到,计算的实用性,能过用于哪些方面。

准确性:在实现此过程中,我们要考虑到,怎样使计算器界面更简单,让人更容易明白它怎样去用。

连贯性:在此项目中,要让登陆界面,计算器主界面,退出界面能连起;即:运行登陆界面,密码正确时能登陆到计算器主界面,点主界面退出时能到达退出界面,给人以提示。

3总体设计

3.1界面设计

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

登陆界面

    计算器主界面

退出提示界面

3.2功能介绍

(1)本项目分为三个界面,登录,计算器,退出三个界面,点击登录输入密码正确就可以登录到计算器界面,退出计算器界面还可以再次登录。(2)这是计算器中的一种:简单计算器,本项目用到了Java中的GUI界面和swing组件以及awt布局,所以简单易用,它能完成如下的几个小功能:点击按钮中的数字键和运算符键就能进行简单的加、乘、乘、除求模四则运算 ;还能通过用户自己在文本框中输入数字,进行简单运算 ;

如果输入有误时可以点“清除”撤销后重新输入新数据 .

4.详细设计说明、调试

4.1程序流程图

4.2部分代码说明

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

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);//设置为可见

添加相应的按钮

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);   //*乘号

    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();

运算设计代码:

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

       {  

         y=0; 

          tf.setText("0.");

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

       }            

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

          elseif(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;

    }

4.3程序调试与结果示例

1.运行登录界面,输入密码,正确和错误两种情况;当输入正确时会弹出计算器界面,如果错误也会提示你,点击“重置”就可以重新输入密码

     

2.当除数为0时,结果显示“除数不能为零”if(d3==0)  tf.setText("除数为零")”                                                                     

3.预计“32+3=35”,结果显示“35.0”

4.预计“5-7=-2”,实际结果显示“-2.0”

5. 当不需要计算时,点击“退出”或关闭窗口时会弹出退出界面,会提示你是否真的退出,如需要重新登录就点击“再次登录”,如不需要登录就点击“退出”或关闭窗口。

  5.个人总结                                                                                   

           

附录:(代码)

6.1登录界面的代码:

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

publicclassjiemianextends JFrame implements ActionListener

{

    JButton button1,button2;

    JTextField text1,text2;

    JLabel jlb,jlb1,jlb2;

    public jiemian()

    {

       super("java小程序登陆窗口");

       Container con=getContentPane();

       con.setLayout(null);

       jlb=new JLabel("您好!欢迎您登陆java小程序计算器");

       jlb1=new JLabel("请输入秘密:");//标签

       button1=new JButton("登陆");//登陆按钮

       button1.addActionListener(this); //添加监听者

       button2=new JButton("重置");//取消按钮

       button2.addActionListener(this); //添加监听者

       text1=new JPasswordField(10);//密码文本框

       ((JPasswordField) text1).setEchoChar('*');//设置掩码

       text1.addActionListener(this); //添加监听者

       jlb2=new JLabel("密码提示:");//标签

       text2=new JTextField(10);//密码提示文本框

       //标签,文本框,按钮的位置大小

       jlb.setBounds(70,0,220,100);

       jlb1.setBounds(90,50,80,50);

       text1.setBounds(80,90,190,30);

       button1.setBounds(90,210,60,30);                         

       button2.setBounds(170,210,60,30);

       jlb2.setBounds(90,110,90,50);                              

       text2.setBounds(80,150,190,30);

       con.add(jlb);

       con.add(jlb1);

       con.add(jlb2);

       con.add(text1);

       con.add(text2);                                                  

       con.add(button1);

       con.add(button2);                                                                                                setBounds(300,200,350,350);

       setVisible(true);

    }

    publicstaticvoid main(String args[])

    {

       new  jiemian();//函数调用

    }

    publicvoid actionPerformed(ActionEvent e)

    {

       if(text1.getText().equals("ruanjian11312"))//判断密码

       {

           text2.setText("密码正确");

           new   jsq().init();//调用计算器主界面函数

       }

       elseif(text1.getText().equals("11312"))//判断密码

       {

           text2.setText("密码正确");

           new   jsq().init();//调用计算器主界面函数

       }

       else

           text2.setText("对不起,密码错误,请重新输入");

       if(e.getSource()==button2)

       {

           text1.setText(null);

           text2.setText(null);

       }//使文本框1、2反空

    }

}

6.2计算器主界面的代码:

import java.awt.*;                                              import java.awt.event.*;

publicclass jsq 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("清除");

  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);   //*乘号                    

    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=="清除")   //清零键   按下时返回初始状态  

       {  

         y=0; 

          tf.setText("0.");

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

       }            

     else if(command=="退出")   {

        new tuichu();//调用退出界面函数

     }//退出键   退出到退出界面     

          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   jsq().init();     //函数调用

   }  

}

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

{

  publicvoid windowClosing(WindowEvent e)

   {

     new tuichu();  //关闭调用退出界面函数

   }

}

6.3退出界面的代码:

import java.awt.Container;

import java.awt.event.*;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

publicclasstuichuextends JFrame implements ActionListener     

{

    JLabel jlb;                                                 

    JButton button;

    JButton button2;

    public tuichu()

    {

       super("计算器退出");

       Container con=getContentPane();

       con.setLayout(null);

    jlb=new JLabel("谢谢你的光临,欢迎下次登录小程序计算器!!!");

       button=new JButton("退出");                               

       button2=new JButton("再次登录");                                        

       jlb.setBounds(20,0,300,100);

       button.setBounds(70,70,60,30);                                                    

       button.addActionListener(this);//添加监听者

       button2.setBounds(150,70,100,30);

       button2.addActionListener(this); //添加监听者

       con.add(jlb);

       con.add(button);

       con.add(button2);

       setBounds(300,200,340,150);

       setVisible(true);

    }

    publicstaticvoid main(String args[])

    {

       new  tuichu();

    }

    @Override

    publicvoid actionPerformed(ActionEvent e) {

       if(e.getSource()==button)

       {

           System.exit(0);//退出程序

       }

       elseif(e.getSource()==button2)

       {

           new jiemian();//调用登陆界面函数

       }

      

    }

}

相关推荐