java程序设计报告

程序设计

课程设计报告

设计题目:      计算器模拟程序           

专业班级:            信管              

学    号:                               

姓    名:                               

指导教师:        郭春燕                  

时间:2011.06.13-2011.06.24

摘要

    计算器模拟程序课程项目是在JAVA学习过程一项要的内容,它涵盖了对JAVA内容学习的考察,同时通过实验项目,也加强了学生的动手能力。进一步加深对Java语言的理解和掌握,把自己所学的理论知识运用到实际应用中去。

    计算器模拟程序是一个小的计算算程序,包括日常我们用到的一些计算方法。主要研究的是加法、减法、乘法、出发、三角函数、阶乘、以及次方等。采用的是JAVA语言进行编写,引用JAVA自带数据库中swt包与math包中的一些构造类与函数类,然后自己构造板块和模型,从而完成自己的程序设计项目。

目录

一、课题概述................................................................................................................... 3

1、课题任务.............................................................................................................. 3

2、课题目的.............................................................................................................. 3

3、课题要求.............................................................................................................. 4

二、设计思路及采取的方案.............................................................................................. 4

1、总体设计思想....................................................................................................... 4

2、实验方案.............................................................................................................. 4

三、实验结果................................................................................................................. 16

四、总结体会................................................................................................................. 16

1、遇到的难题........................................................................................................ 16

2、一些应用中的技巧.............................................................................................. 17

3、心得体会与收获................................................................................................. 17

一、课题概述

1、课题任务

自主设计与编写一个计算机模拟程序,实现一个简单的计算器程序,能够进行简单的数据运算。

(1) 通过实践,进一步对JAVA程序语言的熟练;

(2) 自主的设计,加强了学生的设计与动脑的过程;

(3) 编写java源程序;

(4) 完成程序设计课程设计报告;

2、课题目的

1、复习、巩固Java语言的基础知识,进一步加深对Java语言的理解和掌握;

2、课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力;

3、培养学生在项目开发中创新意识及能力;

4、通过编写一个基于JAVA的应用系统综合实例,来掌握Java语言编程技巧,熟练运用各部分知识。

3、课题要求

 课程设计必须自己独立完成,严禁抄袭他人;

 界面模拟Windows中的计算器程序。实现基本数学运算、函数等功能:加、减、乘、除、阶乘、正弦、余弦和指数运算;

(3) 实现要点:添加相关组件并进行按钮事件处理;

(4) 界面要求:用图形界面实现。简单界面可参考图1。

图1

二、设计思路及采取的方案

1、总体设计思想

(1) 在设计计算器之前构造好计算器的版块与模型;

(2) 通过Calculator构造方法,设计好窗口的框架(面板,按钮,背景颜色,大小, 并把相应的按钮添加监视器);

(3) 编写主函数,创建计算器对象;

(4) 编写加减乘除,三角函数,阶乘,次方等计算方法。

2、实验方案

import  java.awt.*;

import  java.awt.event.*;

import  javax.swing.*;

import  java.lang.Math.*;

public  class  Calculator  extends Frame implements  ActionListener

{

         String[] label={"1","2","3","+","sin","CE","4","5","6","-","cos","<--","7","8","9","*","y^x","1/x","0","+/-",".","/","n!","="};

         Button[] button;

         Panel p1;

         JTextField text1;

         StringBuffer str=new StringBuffer();

         int a,b=0;

         double x=0,y=0;

         boolean append = false;

         public Calculator()    //旆?

         {

                  text1=new JTextField("0.",20);

                  text1.setHorizontalAlignment(JTextField.RIGHT);

                  text1.setEditable(false);

                  button=new Button[label.length];

                  p1=new Panel();

                  p1.setLayout(new GridLayout(4,6,1,1));//校校式

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

                  {

                           button[i]=new Button(label[i]);//驯签诎钮

                           button[i].setForeground(Color.blue);//钮色

                           button[i].addActionListener(this);//每钮蛹

                           p1.add(button[i]);//钮拥签

                  }

                  Frame frame=new Frame("熊氏计算器");

             // 默贸杀呓绮?

             frame.setLayout(new BorderLayout());

                  frame.add(BorderLayout.NORTH,text1);

                  frame.add(BorderLayout.CENTER,p1);

                  frame.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent eve){System.exit(0);}});//录

                  frame.setSize(350, 250);

        frame.setLocation(200,200);

        frame.setVisible(true);    

         }

        

        

        

         public static void main(String args[])

   {

     Calculator xiong = new Calculator();

   }

        

        

        

         public void actionPerformed(ActionEvent e)

          {

                 String s=e.getActionCommand();//硕氐址

                

                   if(s.equals("+"))//鍔犳硶

        {

            str.setLength(0);

            if(b==0)

            {

               a= b = 1;

               y= 0;

                text1.setText(""+x);

            }

            else

            {

                b = a;

                a = 1;

                switch(b)

                {

                  case 1:

                    x+= y;

                    text1.setText(""+x);

                    break;

                  case 2:

                    x -= y;

                    text1.setText(""+x);

                    break;

                  case 3:

                    x *= y;

                    text1.setText(""+x);

                    break;

                  case 4:

                    x /= y;

                    text1.setText(""+x);

                    break;

                }

            }

        }

        else if(s.equals("-"))//鍑忔硶

        {

           str.setLength(0);

            if(b==0)

            {

                a=b=2;

                text1.setText(""+x);

            }

            else

            {

                b =a;

                a =2;

                switch(b)

                {

                  case 1:

                    x=x+y;

                    text1.setText(""+x);

                    break;

                  case 2:

                    x=x-y;

                    text1.setText(""+x);

                    break;

                  case 3:

                    x=x*y;

                    text1.setText(""+x);

                    break;

                  case 4:

                    x=x/y;

                    text1.setText(""+x);

                    break;

                }

            }

        }

        else if(s.equals("*"))//涔樻硶

        {

            str.setLength(0);

            if(b==0)

            {

                a=b=3;

                text1.setText(""+x);

            }

            else

            {

                b=a;

               a =3;

                switch(b)

                {

                  case 1:

                    x=x+y;

                    text1.setText(""+x);

                    break;

                  case 2:

                    x=x-y;

                    text1.setText(""+x);

                    break;

                  case 3:

                    x=x*y;

                    text1.setText(""+x);

                    break;

                  case 4:

                    x=x/y;

                    text1.setText(""+x);

                    break;

                }

            }

        }

        else if(s.equals("/"))//闄ゆ硶

        {

            str.setLength(0);

            if(b==0)

            {

                a=b=4;

                text1.setText(""+x);

            }

            else

            {

                b=a;

                a =4;

                switch(b)

                {

                  case 1:

                    x=x+y;

                    text1.setText(""+x);

                    break;

                  case 2:

                    x=x-y;

                    text1.setText(""+x);

                    break;

                  case 3:

                    x=x*y;

                    text1.setText(""+x);

                    break;

                  case 4:

                    x=x/y;

                    text1.setText(""+x);

                    break;

                }

            }

        }

                 

                  else if(s.equals(".")) //灏忔暟鐐?

        {

            append=true;

            if(text1.getText().trim().indexOf('.')!=-1);

            else

            {

              if(text1.getText().trim().equals("0"))

              {

                str.setLength(0);

                text1.setText((str.append("0"+s)).toString());

              }

               

              else

              {

                text1.setText((str.append(s)).toString());

              }

            }

         }

        else if(s.equals("0"))//鎸夐敭0

        {

            if(text1.getText().trim().equals("0.")){}

            else

            {

                text1.setText(str.append(s).toString());

                y=Double.parseDouble(text1.getText().trim());

            }

        }

       

        else if(s.equals("sin"))//姝e鸡

        {

         

            String temp = text1.getText().trim();

            double dtemp = Double.parseDouble(temp);

            text1.setText(""+Math.sin(dtemp)); 

        }

        else if(s.equals("cos"))//浣欏鸡

        {

         

            String temp = text1.getText().trim();

            double dtemp = Double.parseDouble(temp);

            text1.setText(""+Math.cos(dtemp)); 

        }

       

       

        else if(s.equals("n!"))//闃朵箻

        {

         

            String temp = text1.getText().trim();

            double dtemp = Double.parseDouble(temp);

            double j=1;

            for(int i=1;i<=dtemp;i++)

            {

              j=j*i;

            }

            text1.setText(""+j); 

        }

       

        else if(s.equals("y^x"))//鎸囨暟杩愮畻

        {

         

            String temp = text1.getText().trim();

            double dtemp = Double.parseDouble(temp);

           

            text1.setText(""+Math.pow(dtemp,b)); 

        }

        else if(s.equals("CE")) //鍒濆鐘舵€?

     {

       text1.setText("0.");

       x = y = 0;

       str.replace(0, str.length()," " );

       x= y= 0;

     }

        else if(s.equals("<--"))//閫€鏍?

        {

            if(!text1.getText().trim().equals("0."))

            {

                if(str.length()!=1 && str.length()!=0)//谋

                {

                    text1.setText(str.delete(str.length()-1,str.length()).toString());

                }

                else

                {

                    text1.setText("0.");

                    str.setLength(0);

                }

            }

            y = Double.parseDouble(text1.getText().trim());

        }

        else if(s.equals("+/-"))//姝h礋鍙?

        {

          if(text1.getText().charAt(0)!='-')

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

          else

            text1.setText(text1.getText().substring(1));

            return;

         }

        else if(s.equals("1/x"))//姹傚€掓暟

        {

         

            String temp = text1.getText().trim();

            double dtemp = Double.parseDouble(temp);

            text1.setText(""+1/dtemp); 

        }

       

         else if(s.equals("="))// 绛変簬

        {

            if(b==0)

            {

                str.setLength(0);

                text1.setText(""+y);

            }

            else

            {

                str.setLength(0);

               b =a;

                switch(b)

                {

                  case 1:

                    x=x+y;

                    text1.setText(""+x);

                    break;

                  case 2:

                    x=x-y;

                    text1.setText(""+x);

                    break;

                  case 3:

                    x=x*y;

                    text1.setText(""+x);

                    break;

                  case 4:

                    x=x/y;

                    text1.setText(""+x);

                    break;

                }

                b=0;

                y=0;

            }

        }

       

          else

        {

            text1.setText(str.append(s).toString());

            y=Double.parseDouble(text1.getText().trim());

                if(b==0)

                x=y;

        }

  }

}

三、实验结果

以下就是Calculator程序的执行结果:

四、总结体会

1、遇到的难题

(1) 在对计算器的框架进行排版和在添加监视器时,发现很繁琐,没能运用循环。之后,在同学的帮助下,很简单简洁的解决了问题;

(2) 在编写计算器的计算方法y^x的时候,很棘手,不知道如何下手;

2、一些应用中的技巧

(1) 添加按钮和监视器的过程中,尽量避免繁琐,运用循环,简单明了;

(2) 充分利用java自带数据库中的math包中的数学计算方法;

(3) 学会利用网络,不知道的东西可以在网上找;

(4) 自己解决不了的问题,可以向老师询问;

3、心得体会与收获

    通过计算器这个实验项目,让我进一步认识到通过JAVA语言设计项目的过程,加深我对java这门课程的理解。为今后从事的各种实际工作,如:设计,分析和设计一些小游戏等提供了程序设计基础。

     整个设计过程,我觉得最关键的是不断的查错和纠正错误的过程,在整个设计的过程中让我受益匪浅。而且,我学习到了,只要不断的严格要求自己,注意培养自己的思维能力,就一定的发展和提高,让自己的只是体系变得更加牢固。

    总的来说,通过这次设计学习使我学到了平时很多学不到的东西,更体会到了设计一个小的JAVA项目的过程,我想以后我很可能朝程序设计这条路走下去。

    最后,感谢老师和同学的大力支持和帮助!

参考文献:

【1】 耿祥义、张跃平    java2 实用教程(第三版)  清华大学出版社

【2】 飞思科技产品研发中心编著    Java2应用开发指南(第二版)   电子工业出版社

【3】 http://wenku.baidu.com/view/c5f7beea172ded630b1cb634.html     百度文库

相关推荐