JAVA计算器实验报告

时间:2024.4.13

实验报告

课程名称:JAVA语言程序设计

院系:计算机科学与工程学院

班级:网络091班          

学号:2009083128          

指导教师:王波(老师)    

完成日期:2011年11月04日

一.  实验名称:设计一个简单的计算器

二.  实验目的:

1.熟悉java图形用户界面的设计原理和程序结构

2.能设计复核问题要求的图形用户界面程序

3.熟悉java awt和swing的组合

4.掌握常用组建的事件借口

5.会应用awt和swing组件进行应用程序设计

三.  实验硬件软件环境:

1.PC计算机一台,配置为CPU为P4 2.8G,内存为1G,硬盘为320G

2.Myseclipse 8.6 JAVA 开发环境

四.    实验算法设计:

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.lang.*;

public class Text1 {

       public static void main(String[] args) {

        Jisuanqi JSQ=new Jisuanqi("计算器");

       }

}

class Jisuanqi extends JFrame{//框架

       JButton B[];

       JTextField txt;

       char temp=' ';//存储运算符

       int flag=0;//标记button是否是运算符  

       int Flag=0;//标记button[0]是否有效

       int j=0;

       String Btxt;

       double num1=0;

       double num2=0;

       double num3=0;

       public Jisuanqi(String s){//构造

              setTitle(s);

              B=new JButton[18];//16个button

              txt=new JTextField(16);//文本兰

              FlowLayout flow=new FlowLayout();

              flow.setHgap(2);

              flow.setVgap(8);

              setLayout(flow);

              add(txt);

              Actmonitor m=new Actmonitor();

              for(int i=0;i<10;i++)

              {

                     B[i]=new JButton(""+i);

                    

              }

              B[10]=new JButton("+");

              B[11]=new JButton("-");

              B[12]=new JButton("*");

              B[13]=new JButton("/");

              B[14]=new JButton("=");

              B[15]=new JButton(".");

              B[16]=new JButton("del");

              B[17]=new JButton("cle");   

              for(int i=0;i<18;i++)

              {

                     add(B[i]);

                     B[i].addActionListener(m);//添加监听器

              }

             

              validate();

              setBounds(100,100,200,250);

              setVisible(true);

              setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

             

       }

             

public class Actmonitor implements ActionListener{   //编辑监听器

       public void actionPerformed(ActionEvent e){

              Object o=e.getSource();

        String str=txt.getText();

              if(o==B[0]){

                     if(flag==0){

                            if(!"0".equals(str))

                         txt.setText(txt.getText()+"0");

              }

                     else txt.setText("0");

                     }

              if(o==B[1]){

              if(flag==0)     {

                            if(!"0".equals(str))

                         txt.setText(txt.getText()+"1");

              }

              else {

                  txt.setText("1");

                  flag=0;

                   }

              }

             

             

              if(o==B[2]){

                     if(flag==0)     {

                            if(!"0".equals(str))

                         txt.setText(txt.getText()+"2");

              }

                     else {

                         txt.setText("2");

                         flag=0;

                          }

                     }

             

              if(o==B[3]){

                     if(flag==0)     {

                            if(!"0".equals(str))

                         txt.setText(txt.getText()+"3");

              }

                     else {

                         txt.setText("3");

                         flag=0;

                          }

                     }

             

              if(o==B[4]){

                     if(flag==0)     {

                            if(!"0".equals(str))

                         txt.setText(txt.getText()+"4");

              }

                     else {

                         txt.setText("4");

                         flag=0;

                          }

                     }

             

              if(o==B[5]){

                     if(flag==0)     {

                            if(!"0".equals(str))

                         txt.setText(txt.getText()+"5");

              }

                     else {

                         txt.setText("5");

                         flag=0;

                          }

                     }

             

              if(o==B[6]){

                     if(flag==0)     {

                            if(!"0".equals(str))

                         txt.setText(txt.getText()+"6");

              }

                     else {

                         txt.setText("6");

                         flag=0;

                          }

                     }

             

              if(o==B[7]){

                     if(flag==0)     {

                            if(!"0".equals(str))

                         txt.setText(txt.getText()+"7");

              }

                     else {

                         txt.setText("7");

                         flag=0;

                          }

                     }

             

              if(o==B[8]){

                     if(flag==0)     {

                            if(!"0".equals(str))

                         txt.setText(txt.getText()+"8");

              }

                     else {

                         txt.setText("8");

                         flag=0;

                          }

                     }

              if(o==B[9]){

                     if(flag==0)     {

                            if(!"0".equals(str))

                         txt.setText(txt.getText()+"9");

              }

                     else {

                         txt.setText("9");

                         flag=0;

                          }

                     }

             

             

              if(o==B[10]&&!str.isEmpty()){    //"+"

                    

                     {temp='+';

                     num1=Double.parseDouble(txt.getText());

                     flag=1;

                     }

              }

              if(o==B[11]&&!str.isEmpty()){    //"-"

                     temp='-';

                     num1=Double.parseDouble(txt.getText());

                     flag=1;

              }

              if(o==B[12]&&!str.isEmpty()){    //"*"

                     temp='*';

                     num1=Double.parseDouble(txt.getText());

                     flag=1;

              }

              if(o==B[13]&&!str.isEmpty()){    //"/"

                     temp='/';

                     num1=Double.parseDouble(txt.getText());

                     flag=1;

              }

              if(o==B[14]&&!str.isEmpty()){//"="

                    

                     num2=Double.parseDouble(txt.getText());;

                     flag=1;

                    

                     if(temp=='+'){

                            num3=num1+num2;

                     }

                     if(temp=='-'){

                            num3=num1-num2;

                     }

                     if(temp=='*'){

                            num3=num1*num2;

                     }

                     if(temp=='/'){

                            if(num2!=0)

                            num3=num1/num2;      

                            else num3=0;

                     }

                    

                     txt.setText(""+num3);

                     temp=' ';

              }

             

              if(o==B[15]&&!str.isEmpty()){    //"."

                     if(flag==0)    

                         txt.setText(txt.getText()+".");

             

              }

              if(o==B[16]){

                     txt.setText(txt.getText().substring(0, txt.getText().length()-1));

              }

              if(o==B[17]){

                     char temp=' ';

                     int flag=0;

                     int Flag=0;

                     txt.setText("");

              }

             

       }

}

}

程序测试记录与结果说明:

1.运行得到如图1中的窗体

                                图10

五.     实验总结:

通过对计算器窗体的编写我熟悉java图形用户界面的设计原理和程序结构熟悉java awt和swing的组合。学会将书本上的知识运用在实际中,提升了编程能力。


第二篇:java计算器代码及实验报告



一、实验内容

题目:1、设计一个计算器

要求:1、使用layout进行布局,使界面更加友好

      2、实现整数的加减乘除运算(不考虑优先级)二、实验过程

(这是实验报告极其重要的内容。要抓住重点,可以从理论和实践两个方面考虑。这部分要写明依据什么知识点以及使用方法进行实验以及实验步骤。不要简单照抄实习指导,更不可写一大堆源代码)

二、实验过程

1、进行计算器界面的布局:

a 、Panel的嵌套布局:

主要设置了七个Panel来将界面分成几个部分。且Panel都是用borderLayout来进行的布局。

如图所示,其中4、5、6、7分别表示Panel4、Panel5、Panel6、Panel7

Panel2由Panel4、Panel5组成;Panel3由Panel6、Panel7组成;

Panel1由Panel2、Panel3组成;

b、

(1)、在Panel6添加一个按钮并将border设置成LoweredBevel,设置按钮大小,并给按钮命名

(2)、将Panel7的layout 设置成FlowLayout,并添加三个按钮,设置按钮大小,并给按钮命名

(3)、将Panel5的layout 设置成gridLayout,并添加四个按钮,设置按钮大小,并给按钮命名

(4)、将Panel4的layout 设置成gridLayout,并添加二十个按钮,设置按钮大小,并给按钮命名

2、给对应按钮添加方法,实现起相应的功能

三、实验结果

1、计算器界面

2、实现功能

能进行整数基本的加减乘除运算、及其连续运算、清零。

四、讨论与分析

1、此实验主要是进行计算器界面的布局,根据电脑上的计算器设计布局

主要设置了七个Panel来将界面分成几个部分。且Panel都是用borderLayout来进行的布局。

2、刚刚开始不能实现连续运算,本程序的设计思路是,读取两次文本框的内容赋值给a,b。

后来在原来的 基础上增加了一个标志位,判断符号是不是第一次输入,如果不是则调用等于按钮功能,实现与等于相同的功能。

五、附录:关键代码

1、数字按钮方法:

如0:如果之前只输入过一次符号,则将数字添加在之前的数后面,否则将文本框置为数字"0"。

 void num0_actionPerformed(ActionEvent e) {

    if(flag1 == 0)

   jTextField1.setText(jTextField1.getText() + "0");

   else

   {

   jTextField1.setText("0");

   flag1 = 0;

   }

  }

其它数字键相同的处理方法,即数字不一样

2、运算按钮:

若为加

void add_actionPerformed(ActionEvent e) {

    if (flag == 0) {

      a = Integer.parseInt(jTextField1.getText());

      jTextField1.setText("");

    }

    else {

      equ_actionPerformed(e);

      flag1 = 1;

      b = 0;

    }

    flag = 1;

  }

若此次运算过程中第一次输入加号,则将文本框的内容转换成int型并赋值给a,再将文本框置空。否则,调用等于按钮方法,并将flag1 置1,b清零。最后符号位置1。

若为加法符号标志flag置1。若为减,符号标志flag置2。若为乘,符号标志flag置3。若为除,符号标志flag置4。

3、等于按钮:

void equ_actionPerformed(ActionEvent e) {

    b = Integer.parseInt(jTextField1.getText());

    switch (flag) {

      case 1:

        a += b;

        break;

      case 2:

        a -= b;

        break;

      case 3:

        a *= b;

        break;

      case 4:

        a /= b;

        break;

}

Flag= 0;

Flag 1 = 1;

    jTextField1.setText(String.valueOf(a));

  }

得到当前文本框内容,转换为整形,赋值给b。判断符号位,进行运算,将结果显示到文本框。

4、清零按钮

 void jButton2_actionPerformed(ActionEvent e) {

    jTextField1.setText("");

    a = 0;

    b = 0;

    flag = 0;

    flag1 = 0;

  }

即将文本框,及所有变量置零

更多相关推荐:
计数器实验报告

实验4计数器及其应用一实验目的1学习用集成触发器构成计数器的方法2掌握中规模集成计数器的使用及功能测试方法二实验原理计数器是一个用以实现计数功能的时序部件它不仅可用来计脉冲数还常用作数字系统的定时分频和执行数字...

简单的计算器实验报告

HUNANUNIVERSITY程序设计训练简单的计算器报告学生姓名田博鑫学生学号专业班级指导老师20xx年6月16日至20xx年7月10日1吴蓉晖1程序设计目的和要求目的此次程序设计的目的主要是为了我们能更好的...

计算器实验报告 (1)

HTML网页实验报告院系计算机控制与工程学院班级计1241学号姓名完成日期1一实验名称设计一个网页计算器二需求分析计算器是日常生活中十分便捷有效的工具能实现加减乘除开方求倒数等简单运算的工具要实现计算功能可以用...

计算器实验报告

目录一系统开发的背景1二系统分析与设计1一二计算器的主要功能1系统模块结构设计1三系统的设计与实现2一二计算器的初始界面2一般计算3三解一元二次方程5四计算银行本利和5四系统测试7一二测试主函数MAIN7测试一...

C#计算器实验报告

C计算器实验报告班级学号20xx13432姓名蔡启林一实验目的和要求设计一个简单计算器具有一般计算功能能进行基本的加减乘除运算还具有求根号倒数等功能特点是能进行不同进制的运算和不同进制间的转换主要的工作主要是操...

计算器实验报告

计科系实验报告单

模拟计算器实验报告

课程设计报告课程设计题目:模拟机算器程序学生姓名:专业:网络工程班级:指导教师:20XX年11月27日东华理工大学课程设计评分表学生姓名:XXX班级:XXX学号:21课程设计题目:模拟机算器程序目录一.课程设计…

c#实验报告计算器设计

实验2计算器设计文档姓名梁姣学号07220xx1班级计本071日期20xx1009实验目的和要求1设计背景设计拥有简单的计算功能方便计算简单的计算题方便用户的使用2设计功能具有一般计算功能能进行基本的加减乘除运...

C++实现计算器实验报告

实验报告完成日期20xx年10月27日实验题目完整计算器需求分析请实现一个只包含加减乘除以及括号运算的简单计算器输入格式是正确的不需要判断注意式子中可能会出现负数以及多余的空格操作数也可能是多位数和小数概要设计...

基于MFC的科学计算器课程设计实验报告

浙江工商大学C课程设计报告课程设计实验报告题目学院专业班级课程名称学号学生姓名指导教师成绩二一三年一月1浙江工商大学C课程设计报告目录1概述11课程设计目的12课程设计内容13课程设计思想2系统需求分析21系统...

课程设计报告——计算器

北京化工大学20xx20xx课程设计报告计算机科学与技术计算器程序的设计与实现数据结构课程设计班级计科1001北京化工大学信息科学与技术学院计算机科学与技术专业北京化工大学20xx20xx课程设计报告计算机科学...

c++计算器实验报告

简单计算器学号20xx21176051姓名周吉祥实验目的模仿日常生活中所用的计算器自行设计一个简单的计算器程序实现简单的计算功能实验内容1体系设计程序是一个简单的计算器能正确输入数据能实现加减乘除等算术运算运算...

计算器实验报告(47篇)