java计算器设计报告

时间:2024.4.2

设 计 报 告

课题名称:计算器设计

学    院:

专业班级:

学    号:

学    生:

指导教师:

教务处

 年月  日


第二篇:java计算器设计报告


枣 庄 学 院

信息科学与工程学院

课程设计任务书

        题目:           计算器                                   

学    号:    0315     0307      0311                              

姓    名:    王宇     刘志伟    王传翔                      

专    业:         网络技术                                

课    程:     java程序设计与实践教程                             

指导教师:    王琳琳         职称:   讲师             

         

完成时间: 20##年  12 月----2014 年 1 月

枣庄学院信息科学与工程学院制

  年  月   日

课程设计任务书及成绩评定



目录

1 概述 ...........................................................1

1.1设计目的及思路......................................... 2

1.2功能模块设计........................................... 2

1.3系统功能图............................................. 3

2计算器的设计与实现........................................ 3

2.1程序界面............................................... 3

2.2程序源代码............................................. 4

3计算器演示............................................... 10

4运行调试及讨论分析....................................... 13

5小结.................................................... 13


1概述

1.1设计目的及思路

通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。利用Java Applet图形界面首先开始设计一个计算器的界面,定义计算器所需要的按钮并赋给其按钮名称,使得使用计算器时简单明了,清晰可见,操作轻松。

   给各个按钮进行算法,利用鼠标点击事件,当鼠标点击某个按钮时就开始执行那个按钮所定义的算法,生成数据并显示。

   除数字的输入为直接进行输入外,其他运算例如+、-、*、/、开平方等算法要求计算时通过内部较为复杂的运算将结果显示在显示屏上。

   至于其中的进制转换功能的实现则是直接调用Java中进制转换的函数,例如要将十进制转换成二进制则可直接调用函数Integer.toBinaryString(int i)来实现,充分显示了Java语言的简洁性和Java语言功能的强大性。

   当然了在输入数据时还要进行异常捕捉,防止越界的现象的发生,这也是Java语言健壮性的体现!

1.2功能模块设计

以下为标准计算器的基本功能:
(1)加法

 两个数据进行加操作,可以为小数。

(2)减法

 两个数据进行减操作,可以为负数相减。

(3)乘法
 两个数相乘操作。

(4)除法

 两个数相除操作。

(5)开平方

对任意一个数进行开方运算,可以是小数。

1.3系统功能图

2计算器的设计与实现

2.1程序界面

2.2程序源代码

import java.awt.*;//计算器实例

import java.awt.event.*;

class calculator

{

public static void main(String args[])

{

MyWindow my=new MyWindow("计算器");

}

}

class MyWindow extends Frame implements ActionListener

{    StringBuffer m=new StringBuffer();//传值

     int p;

 TextField tex;//文本框

 Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,jia,jian,cheng,chu,deng,dian,qingling,kaifang;//调用button里面的东西

MyWindow(String s)

{

 super(s);//调用父类构造函数

//StringBuffer s2=new StringBuffer();

//String s;

   tex=new  TextField(18);

   b0=new Button("    0   ");

   b1=new Button("    1   ");

   b2=new Button("    2   ");

   b3=new Button("   3    ");

   b4=new Button("    4   ");

   b5=new Button("    5   ");

   b6=new Button("    6   ");

   b7=new Button("    7   ");

   b8=new Button("    8   ");

   b9=new Button("     9   ");

    dian=new Button("     .   ");

     jia=new Button("     +   ");

    jian=new Button("     -    ");

   cheng=new Button("     ×   ");

     chu=new Button("    /    ");

    deng=new Button("    =   ");

   qingling=new Button("  清零 ");

    kaifang=new Button("   √   ");

 setLayout(new FlowLayout());//布局管理

 add(tex);//静态方法

 add(b0);

 add(b1);

 add(b2);

 add(b3);

 add(b4);

 add(b5);

 add(b6);

 add(b7);

 add(b8);

 add(b9);

 add(dian);

 add(jia);

 add(jian);

 add(cheng);

 add(chu);

 add(kaifang);

 add(qingling);

 add(deng);

 b0.addActionListener(this);//注册事件监听器,作用是将b0界面的事件处理交给this对象去处理

 b1.addActionListener(this);

 b2.addActionListener(this);

 b3.addActionListener(this);

 b4.addActionListener(this);

 b5.addActionListener(this);

 b6.addActionListener(this);

 b7.addActionListener(this);

 b8.addActionListener(this);

 b9.addActionListener(this);

 jia.addActionListener(this);

 jian.addActionListener(this);

 cheng.addActionListener(this);

 chu.addActionListener(this);

 dian.addActionListener(this);

 deng.addActionListener(this);

 qingling.addActionListener(this);

 kaifang.addActionListener(this);

 setBounds(200,200,160,280);//建立窗口坐标大小

 setResizable(false);//调整窗口大小

 setVisible(true);

 validate();//确保组件具有有效的布局

 addWindowListener(new WindowAdapter()//事件监听器

 {   public void windowClosing(WindowEvent ee)//判断返回值是否错误

   { System.exit(0);

           

    }

           

   });

              

}

public void actionPerformed(ActionEvent e)//用于接收操作事件的侦听器接口

{

 if(e.getSource()==b0)

 {

   m=m.append("0");

  

   tex.setText(String.valueOf(m));

 }

 if(e.getSource()==b1)

 {

   m=m.append("1"); tex.setText(String.valueOf(m));

 }

 if(e.getSource()==b2)

 {

   m=m.append("2"); tex.setText(String.valueOf(m));

 }

 if(e.getSource()==b3)

 {

   m=m.append("3"); tex.setText(String.valueOf(m));

 }

 if(e.getSource()==b4)

 {

   m=m.append("4"); tex.setText(String.valueOf(m));

 }

 if(e.getSource()==b5)

 {

   m=m.append("5"); tex.setText(String.valueOf(m));

 }

 if(e.getSource()==b6)

 {

   m=m.append("6"); tex.setText(String.valueOf(m));

 }

 if(e.getSource()==b7)

 {

   m=m.append("7"); tex.setText(String.valueOf(m));

 }

 if(e.getSource()==b8)

 {

   m=m.append("8"); tex.setText(String.valueOf(m));

 }

 if(e.getSource()==b9)

 {

   m=m.append("9"); tex.setText(String.valueOf(m));

 }

 if(e.getSource()==jia)

 {

   m=m.append("+"); tex.setText(String.valueOf(m));

 }

  

 if(e.getSource()==jian)

 {

   m=m.append("-"); tex.setText(String.valueOf(m));

 }

 if(e.getSource()==cheng)

 {

   m=m.append("*"); tex.setText(String.valueOf(m));

 }

 if(e.getSource()==chu)

 {

   m=m.append("/"); tex.setText(String.valueOf(m));

 }

 if(e.getSource()==dian)

 {

   m=m.append("."); tex.setText(String.valueOf(m));

 }

 String mm=String.valueOf(m);//把字符类型转化成字符串

 int p1=mm.indexOf("+");

 int p2=mm.indexOf("-");

 int p3=mm.indexOf("*");

 int p4=mm.indexOf("/");

 if(p1!=-1)

 {

  p=p1;

 }

 else if(p3!=-1)

 {

  p=p3;

 }

 else if(p2!=-1)

 {

  p=p2;

 }

 else if(p4!=-1)

 {

  p=p4;

 }

  if(e.getSource()==deng)

 {

 

  

   String m1=mm.substring(0,p);//构造一个新的 String

   String m2=mm.substring(p+1);

   String ch=mm.substring(p,p+1);

   

   //System.out.println(m1);

   //System.out.println(m2);

   //System.out.println(ch);

  

   if(ch.equals("+"))

   {

   float n1=Float.parseFloat(m1);

   float n2=Float.parseFloat(m2);

   float sum=n1+n2;

   String su=String.valueOf(sum);

   tex.setText(su);

   }

  

  

   if(ch.equals("-"))

   {

   float n1=Float.parseFloat(m1);

   float n2=Float.parseFloat(m2);

   float sum=n1-n2;

   String su=String.valueOf(sum);

   tex.setText(su);

   }

  

  

   if(ch.equals("*"))

   {

   float n1=Float.parseFloat(m1);

   float n2=Float.parseFloat(m2);

   float sum=n1*n2;

   String su=String.valueOf(sum);

   tex.setText(su);

   }

  

  

   if(ch.equals("/"))

   {

   float n1=Float.parseFloat(m1);

   float n2=Float.parseFloat(m2);

   float sum=n1/n2;

   String su=String.valueOf(sum);

   tex.setText(su);

   }

}

 

 

 

 if(e.getSource()==qingling)

 {StringBuffer kk=new StringBuffer();

   m=kk;

  

   tex.setText("0");

  

  

  

  // System.out.println(mm);

 }

 if(e.getSource()==kaifang)

 {

  String t=tex.getText();

  float num=Float.parseFloat(t);

  double nub=Math.sqrt(num);

  tex.setText(String.valueOf(nub));

 

 }

}

}

3计算器演示

加法

减法

乘法

除法

平方

清零

4运行调试及讨论分析

将代码写好之后检查代码的正确性,检查代码无误后将代码进行调试和运行将会出现一个JavaApplet计算器界面。在调试过程中可能会出现有界面但是不能运行小程序,那是因为没有初始化小程序,那时我们应该在主函数中将小程序进行初始化,这样小程序才能运行!

在调试和运行完全正确后,我们就可以按照自己的医院将小程序进行简单测试,例如输入一些简单数据分别运行各个按钮结果正确后可以初步确定程序师正确的。有时候我们还要输入不同范围的值进行测试,可能会发现更多的错误,因为有时候我们定义数据的范围可能会过小或输入数据会越界,到时我们就可以改正以适应更多更大的运算。

有时候我们会不自觉的选择一种最优函数方法尽量将自己的代码简单规范而又不缺少题目所要求的功能,那就要求我们翻阅很多参考书和查阅很多资料。其实javaApplet图形界面的布局也是我们要讨论的范围,如何使得界面更加美观是我们要探讨的!

有时候我们可能会到书上或网上找到一些满足我们要求的程序代码,在此我们应该取其优秀的简单易理解代码作为我们设计程序的代码,作为初学者参考和借用部分外部程序是不可避免,但是我认为前提我们应该看懂那些程序代码,要知其所以然,那样才达到我们学程序的目的,但不主张完全照搬,否则就会没意义了!

5小结

到此本次课程报告快接近尾声了,通过本次课程设计我学到了好多、也发现了自己的好多不足!

很显然最明显的收获是理解和较熟练的掌握了JavaApplet图形界面的基本方法,尤其在JavaApplet图形界面的布局方面学到颇多,以前布局很乱并且很多布局都是无效的。在此次课设中通过查阅很多资料和同学的互相帮助,充分发挥了JavaApplet界面布局的优越性。另外按钮功能的实现也是本次课设的一大难点,怎样实现那些功能是关键。通过这次课设我又学会了好多Java中的简单便捷的函数,例如Integer.toBinaryString(int i)函数(实现的是将一个十进制数转换成一个二进制的数)。

另外我这次课设部分程序是通过外部资料得到的,这使得我认识到查阅资料和开外多看书籍的重要性。但不主张照搬,因为那不是我们自己成果,那是不光彩的 。

总之通过此次课设我学到了好多,也掌握了好多关于JavaApplet的事件管理和按钮功能实现方法,这次课设给我的感受就是:只要你有心,不怕你完成不了课设。

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

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

计算器设计的java课程设计报告

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

Java计算器课程设计报告

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

Java简单计算器(程序设计报告)

JAVA课程设计报告哈尔滨哈商业大学JAVA课程设计课程名称课题名称简单计算器姓名学号班级宋双龙20xx5094028108级软件工程教育20xx年10月20日1一实验目的使用Eclipse软件制作简单计算器实...

Java课程设计报告-计算器

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

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

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

java课程设计报告_计算器设计报告

Java课程设计报告题目计算器院系xxx学院年级专业xxx班学生姓名xxx指导老师xx老师开始时间200xxxxx完成时间200xxxxx目录1摘要2概要设计3详细设计4测试分析5参考文献一摘要本计算器可以进行...

java计算器设计报告

枣庄学院信息科学与工程学院课程设计任务书题目学号031503070311姓名王宇刘志伟王传翔专业课程java程序设计与实践教程指导教师王琳琳职称讲师完成时间20xx年12月20xx年1月枣庄学院信息科学与工程学...

java课程设计报告—计算器

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

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

20xx20xx年度第1学期Java程序设计课程设计报告保存计算过程的计算器专业网络工程陆春燕B计算机0920970704211徐森20xx年1月13日学生姓名班学级号指导教师完成日期保存计算过程的计算器保存计...

用JAVA编写的计算器程序设计报告

课程设计报告设计题目学院班级学号姓名计算器信息工程学院应用一班房名扬070306120Java课程设计报告目录目录I1需求分析111计算器的基本功能1111加法运算用数字按钮和按钮进行运算1112减法运算用数字...

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

保存计算过程的计算器Java程序设计课程设计报告保存计算过程的计算器目录1概述111课程设计目的112课程设计内容12系统需求分析121系统目标122主体功能123开发环境13系统概要设计131系统的功能模块划...

java计算器设计报告(42篇)