JAVA实训总结

JAVA程序设计课程实训报告

一、实训目的

   知识目标

1.了解图形用户界面的编程思路及方法;

2.了解事件及事件处理机制;

3.掌握常用的图形用户界面组件;

4.掌握容器布局的设置方法及组件的添加方法;

5.掌握常见事件类型及事件处理方法;

   能力目标

1.与客户沟通的基本能力;

2.团队协作的基本能力;

3.编程的良好习惯;

4.软件调试和测试的能力;

5.查阅文献的能力;

二、项目设置:

1、实训内容

利用所学Java程序设计语言实现一个图形化的计算器。

2、实训要求

1.程序运行正常无误,系统层次清晰合理;

2.实训内容里的要求必须要全面实现;

3.实训过程中要仔细操作,细心观察,勤于思考,注意记录;

4.实训报告要做到文字通畅、论点正确、论述有据;

5.要求学生在指导教师的指导下,独立完成实训的全部内容;

6.在规定时间内完成实训的全部任务,并按规定格式上交实训报告;

三、实训设备

硬件:个人电脑、

软件:JCreator Pro 3.50、JDK1.6.0_23

四、实训过程

以上的图表示实训编写的程序没有错误,可以正常的运行

以上的图是运行程序时所显示出来的小小计算机的界面

为了实际的运行一下计算机的功能,此时输入1加2

此时计算机上显示的是数字1和数字2相加的结果,3.

为了实际的运行一下计算机的功能,此时输入数字1乘数字2

此时计算机上显示的是数字1和数字2相乘的结果,2.

因为上述的两个小算数成功的运算出正确的结果所以此时关闭小小简单计算机的界面此时出现的编程图面为:

计算机程序的源码:

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;            //计算机界面

class CalculatorPanel extends JPanel

{

   private JLabel display;

   private JPanel panel;

   private double result;       //用以存放最后的计算结果

   private String lastCommand;  //计算你选择的运算方式

   private boolean start;

   public CalculatorPanel()

   {

      setLayout(new BorderLayout());

      result=0;

      lastCommand="=";

      start=true;

      display=new JLabel("0",SwingConstants.RIGHT);

display.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Color.black),BorderFactory.createEmptyBorder(5,5,5,5)));

//createCompoundBorder意为设置组合边框,createLineBorder意为设置线边框,createEmptyBorder意为设置一个空的边框,因为是空边框在此处是看不见的,目的是为了占位子

      add(display,BorderLayout.NORTH);

      ActionListener insert=new InsertAction();

      ActionListener command=new CommandAction();

      panel=new JPanel();                     //计算机按钮的布局

      panel.setLayout(new GridLayout(4,4))    //添加按钮及相应的事件监听

      addButton("7",insert);

      addButton("8",insert);

      addButton("9",insert);

      addButton("/",command);

      addButton("4",insert);

      addButton("5",insert);

      addButton("6",insert);

      addButton("*",command);

      addButton("1",insert);

      addButton("2",insert);

      addButton("3",insert);

      addButton("-",command);

      addButton("0",insert);

      addButton(".",insert);

      addButton("=",command);

      addButton("+",command);

      add(panel,BorderLayout.CENTER);

   }

//点击按钮会触发ActionEvent事件,事件监听器接口ActionListener,接口实现的方法ActionPerformed,注册事件的监听器add ActionListener.

   private void addButton(String label,ActionListener listener)

   {

      JButton button=new JButton(label);

      button.addActionListener(listener);

      panel.add(button);           //按钮监听器类,用于显示

   }

   private class InsertAction implements ActionListener

   {

      public void actionPerformed(ActionEvent event)

      {

         String input=event.getActionCommand();

         if(start)

         {

            display.setText("");

            start=false;

         }

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

      }

   }

   //按钮监听器类,用于监听计算

   private class CommandAction implements ActionListener

   {

      public void actionPerformed(ActionEvent event)

      {

         String command=event.getActionCommand();    

//获取你点击的那个按钮

         if(start)

         {

            if(command.equals("="))

            {

              display.setText("command");

              start=false; 

            }

                else

                {

                lastCommand=command;

                }

         }

        

         else

         {

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

      //进行数据计算,输入的是字符串,所以要进行强制类型的转换

            lastCommand=command;

            start=true;

         }

      }

   }

//计算类    两个方法:setTest()设置标签中的内容,getTest()获取标签中的方法;

   public void calculate(double x)

   {

      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("="))

      {

         result=x;

      }

      display.setText(""+result);

   } 

}

   class CalculatorFrame extends JFrame

   {

      public CalculatorFrame()

      {

         setTitle("计算机");

         Container contentPane=getContentPane();

         CalculatorPanel panel=new CalculatorPanel();

         contentPane.add(panel);

      }

   }

   public class CalculatorExample

   {

      public static void main(String[] args)

      {

         CalculatorFrame frame=new CalculatorFrame();

         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

         frame.setSize(200,200);

         frame.setVisible(true);

         frame.setResizable(false);

      }

   }

五、实训总结

在本学期的期末临近之时很高兴我们能有一个星期的实训课程,我们在学校机房进行了为期一周的JAVA实训。一周的实训现在即将结束了,回首本学期的java学习,重点还是在学习概念等一些常识性的东西,关于类型、变量、接口、输入输出流、分析异常、抛出异常,后期主要是用JAVA编写一个应用程序,目的是实现简单的计算机的计算,在编程中遇到了很多不懂的难题,但是经过我们大家的讨论和老师细心的一一指导,问题得到了解决,同时也更深刻的认识到要做一个合格的程序员并非我以前想像的那么容易,最重要的还是细致严谨,并将理论与实践相结合才可以写好一段代码,以下是我在这次一周中的一些感悟和体会:

  本次老师要求我们做的简单编程“小小计算机”基本功能已经较好的完成,像平常的加减乘除已经可以实际的运用了,可是还是有一些不完善,比如我们的计算机不能计算平方,立方,根号,所以我觉得总体还是有些不完善,我们的指导老师对我们编程时遇到的问题作出了大体评价,粗心并且还不细心,因为我们往往一个程序编写下来很多的错误是因为花括号的乱运用,前后相同字母大小写的不符,标点符号的有无,和标点符号的书写环境(中文输入法,拼音输入法)……当发现很多错误的情况下我们往往还不能及时的发现这些潜在的问题,每当这时我都才深刻的感觉到认识到了自己不足,在编写这些应用程序时,一个小小的符号,一个常量变量的设定,这都无不考量着我们的细心和严谨,所以学习JAVA,不仅对我们以后学习其他语言有很大的好处,而且也让我们知道了和理解了作为一个编程人员首先应具有的良好心理素质,那就是冷静思考和专心致志。对待学术知识应该是严谨和认真。 通过这一周的实训,个人觉得总体上收获挺大的,通过这次的实训我想我们更多学到的是不懂就问和自己应该尽自己的全力去尝试,哪怕失败,只要自己尽自己的全力,和身边同学一起探讨而不是抄袭,团结合作,发挥团队意识,只有将所学知识充分融入到平时的学习生活中去,为以后的工作做好坚实的基础。感谢学校和老师能够为我们提供这次机会,同时也更深刻的认识到要认真的学习好一门课程不仅是学习它的理论知识还要将其用生活的去,在生活中去实践,去更好的学习,很多事情都不像我们看到的那么容易,需要认真,严谨,和探求知识实践热情的态度,在此次实训的一周中我想我们今后应该学习的东西还有很多,在今后的学习生活中我们会更加努力。

 

第二篇:JAVA俄罗斯方块实训总结.doc

JAVA俄罗斯方块实训总结

通过这次实训即有收获,也有失落:

1、俄罗斯方块程序勿促完成,有很多的bug,架构也有很多不合理的地方。虽然把所有的逻辑都进行的封装,但总感觉有些牵强附会。上课时,并没有讲任何的面向对象的内容,这样的代码让学生去理解实在是勉为其难。其实先让学生以面向过程的方法去编程,过一段时间再学面向对象或许对学生更为有利。

2、代码和逻辑过于复杂,一方面学生难于理解,以至于使很多的学生丧失了继续学习程序的勇气,打击了一大片。另一方面,学生敲错代码找老师解决,如果是语法错误还容易解决掉,但如果是逻辑错误就麻烦了,有时,一个加减号的错误就要花掉很多时间,这导至了教师的工作量大增。

3、实现分数显示功能非常困难(这点是我没想到的)有几种解决方案,第一种是在界面上直接画分数,但需要传递多一个画板。第二种是使用事件(这样比较合理,但太难),事件本身就很难理解了。由于使用的Timer本身是一个多线程的Timer,还需掌握多线程的知识才能做出来,我的《C#语言参考视频》还没有做到多线程,这样就变得难上加难了。但这样也有一个好处,如果能实现,能学到并理解不少的东西。

4、在做程序时一直在考虑是否应该使用静态类,说白了就是把静态类当全局变量使用。最后是决定i 用。但现在感觉还是应该使用的,至少改变参数时不用写任何代码就可以马上见到效果,也可以减少几百行的代码,有效使程序减肥。

5、实训时看到每个学生都在埋头敲代码感到很欣慰,有部分同学回到宿舍还继续奋战。虽然代码完全是照视频抄的,可能不会理解到太多的东西,但至少让他们找到了学习和互助的感觉,这一点才是最重要的。

这次实训有很多不足之处,需要改进。想了一下,大概制定了初步的解决方案,首先,程序代码不超过1000行,其次,不使用面向对象的编程方法:

1、继续使用俄罗斯方块,去掉设置界面,XML存储,也就是把砖块样式和快捷键写死在程序里面。这样一半的代码就没了。另外再使用单色的砖块样式,这样就可以使用位运算实现部份逻辑,这样不但加快了程序的运行速度,算法变得简单,也减少了部份的代码。但这样做这个游戏就变得没有特点了,可玩性大大降低。而且再重做一遍这个视频好象也不太好。

相关推荐