生产实习报告

时间:2024.4.7

 

西安邮电学院

通信与信息工程学院

生产实习报告

专业班级:                

学生姓名:                    

学号(班内序号):      

 20##    3    23


西安邮电学院通信与信息工程学院院(系)

生产实习过程考核表


西安邮电学院通信与信息工程学院生产实习考核表

实验目的

(1)熟悉Java编程语言与开发环境的搭建

(2)熟悉Android的特性、开发环境的搭建及Android基本控件的学习。

(3)尝试Android系统的开发,在平台上开发一些小程序

(4)尽力掌握程序的调试。

实验内容

1.  程序简介

   贪吃蛇游戏:(1)主界面显示

              (2)具有开始、暂停、退出的功能。

2.  项目简介

Android简介

Android是Google于20##年11月5口宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。可以把它简单理解成Linux上套了一个TAVA的壳。

Android的平台基本上是免费的,虽然有部份原生链接库会要求费用,但大部份是免权利金。Android的程序可以采用JAVA开发,因为它的虚拟机(Virtual Machine) Dalvik,只是它将JAVA的byte code转成自己的格式,回避掉需要付给SUN有关JAVA的授权费用。因此,Android开发环境是需要JDK的。

Java简介

它最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak,以“Java”的名称正式发布。

Java 编程语言的风格十分接近C、C++语言。Java是一个纯的面向对象的程序设计语言,它继承了 C++ 语言面向对象技术的核心,Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java SE 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。

Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。但在 J2SE 1.4.2 发布后,Java 的执行速度有了大幅提升。与传统程序不同,Sun 公司在推出 Java 之际就将其作为一种开放的技术。全球数以万计的 Java 开发公司被要求所设计的 Java 软件必须相互兼容。“Java 语言靠群体的力量而非公司的力量”是 Sun 公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。Sun 公司对 Java 编程语言的解释是:Java 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。

3  Android开发环境搭建

3.1 Windows下Java编程环境的配置

1.在甲骨文官方网站(http://www.oracle.com/technetwork/java/javase/downloads/index.html)下载Java Platform(JDK)后,安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为D:\Program Files\Java\jdk1.7.0_03;

2.安装完成后,右击“我的电脑”,点击“属性”;

3.选择“高级”选项卡,点击“环境变量”;

4.在“系统变量”中,设置3项属性,JAVA_HOME,PATH,CLASSPATH(大小写无所谓),若已存在则点击“编辑”,不存在则点击“新建”;

5.JAVA_HOME指明JDK安装路径,就是刚才安装时所选择的路径D:\Program Files\Java\jdk1.7.0_03,此路径下包括lib,bin,jre等文件夹;

Path使得系统可以在任何路径下识别java命令,设为:

%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

CLASSPATH为java加载类(classorlib)路径,只有类在classpath中,java命令才能识别,设为:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

%JAVA_HOME%就是引用前面指定的JAVA_HOME;

6.“开始”->;“运行”,键入“cmd”;

7.键入命令“java-version”,“java”,“javac”几个命令,出现如下画面,说明环境变量配置成功;

8.至此,环境配置完成。

3.2  Eclipse开发软件的安装

1.可以在Eclipse官网(http://www.eclipse.org/downloads/)下载Eclipse软件,选择Eclipse IDE for Java Developers并注意32bit或者64bit,根据自己Windows系统下载即可。

2.下载后直接解压即可,不用安装,双击eclipse.exe即可运行。

3.3  Android SDK安装

1.在 http://developer.android.com/sdk/index.html可以下载最新的Android SDK,如下图:

2.直接默认安装好就可以,安装好后如下图所示:

3. 在用户变量中新建PATH值为:Android SDK中的tools绝对路径,本机为D:\Program Files\Android\android-sdk\tools。

4.安装成功后,运行android –h,如果出现如下画面说明安装成功。

3.4  ADT安装

1.目前Android开发所用的开发工具是Eclipse,在Eclipse编译IDE环境中,安装ADT,为Android开发提供开发工具的升级或者变更,简单理解为在Eclipse下开发工具的升级下载工具。

2.打开 Eclipse IDE,进入菜单中的 "Help" -> "Install New Software"

点击Add按钮,弹出对话框要求输入Name和Location:Name自己随便取,Location输入http://dl-ssl.google.com/android/eclipse。如下图所示

3. 确定返回后,在work with后的下拉列表中选择我们刚才添加的ADT,我们会看到下面出有Developer Tools,展开它会有Android DDMS和Android Development Tool,勾选他们。 如下图所示:

4.然后就是按提示一步一步next。

完成之后:

选择Window > Preferences...

在左边的面板选择Android,然后在右侧点击Browse...并选中SDK路径,本机为:

D:\Program Files\Android\android-sdk,因为路径有空格,所以正确的配置路径应该写成:D:\PROGRA~1\Android\android-sdk。

5.点击Apply、OK。配置完成。

4    程序源代码

package com.fit.android.game;

public final class R {

    public static final class attr {

    }

    public static final class drawable {

        public static final int icon=0x7f020000;

    }

    public static final class layout {

        public static final int main=0x7f030000;

    }

    public static final class string {

        public static final int app_name=0x7f040001;

        public static final int hello=0x7f040000;

    }

}

package com.fit.android.game;

import android.content.Context;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.os.Handler;

import android.view.View;

public class GameView extends View {

       public int f = 0;

       Snake snake = new Snake(320, 320);

       Node random;

       boolean runFlag = false;

       Handler handler = new Handler();

       Handler panelHandler;

       int s=300;

       Runnable updateThead = null;

       public GameView(Context context, Handler pHandler) {

              super(context);

              panelHandler = pHandler;

              random = getRandom();

              updateThead = new Runnable() {

                     public void run() {

                            runFlag = true;

                            int result = snake.move(random);

                            if (result == 3 || result == 4) {

panelHandler.sendEmptyMessage(f);

handler.removeCallbacks(updateThead);

                            }

                            switch (result) {

                            case Snake.MOVE:

                                   break;

                            case Snake.EAT:

                                   f = f + 10;

                                   if(s>100){

                                          s = s - 10;

                                   }

                                   random = getRandom();

                                   break;

                            case Snake.BREAK:

                                   runFlag = false;

                                   break;

                            case Snake.SWAP:

                                   runFlag = false;

                                   break;

                            }

                            postInvalidate();

                            if (runFlag) {

                                   handler.postDelayed(this, s);

                            }

                     }

              };

       }

       @Override

       protected void onDraw(Canvas canvas) {

              Paint p = new Paint();

              p.setAntiAlias(true);

              p.setColor(Color.GRAY);

              canvas.drawRect(0, 0, 320, 320, p);

              p.setColor(Color.GREEN);

              random.draw(canvas, p);

              snake.show(canvas);

       }

       public int getThreads() {

              return 1;

       }

       public Node getRandom() {

              int x = ((int) (Math.random() * 32)) * 10 + 5;

              int y = ((int) (Math.random() * 32)) * 10 + 5;

              while (!snake.checkRandom(x, y)) {

                     x = ((int) (Math.random() * 32)) * 10 + 5;

                     y = ((int) (Math.random() * 32)) * 10 + 5;

              }

              return new Node(x, y);

       }

}

package com.fit.android.game;

import android.app.Activity;

import android.os.Bundle;

import android.view.KeyEvent;

public class MainActivity extends Activity {

       Snake snake;

       @Override

       public void onCreate(Bundle savedInstanceState) {

              super.onCreate(savedInstanceState);

              GameView view = new GameView(this, null);

              snake = view.snake;

              setContentView(view);

       }

       @Override

       public boolean onKeyDown(int keyCode, KeyEvent event) {

              switch (keyCode) {

              case KeyEvent.KEYCODE_DPAD_UP:

                     snake.changeDirect(Snake.UP);

                     break;

              case KeyEvent.KEYCODE_DPAD_RIGHT:

                     snake.changeDirect(Snake.RIGHT);

                     break;

              case KeyEvent.KEYCODE_DPAD_DOWN:

                     snake.changeDirect(Snake.DOWN);

                     break;

              case KeyEvent.KEYCODE_DPAD_LEFT:

                     snake.changeDirect(Snake.LEFT);

                     break;

              }

              return super.onKeyDown(keyCode, event);

       }

}

package com.fit.android.game;

import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.view.KeyEvent;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.ViewGroup.LayoutParams;

import android.widget.Button;

import android.widget.LinearLayout;

import android.widget.TextView;

public class MyActivity extends Activity {

       Snake snake;

       GameView view;

       TextView tx;

       Handler handler = new Handler() {

              public void handleMessage(android.os.Message msg) {

              int score = msg.what;

                     tx.setText("您得到的总分数为:" + score);

                     view.handler.removeCallbacks(view.updateThead);

                     view.snake = new Snake(320, 320);

                     view.random = view.getRandom();

                     view.f = 0;

                    

                     snake = view.snake;

              }

       };

       @Override

       public void onCreate(Bundle savedInstanceState) {

              super.onCreate(savedInstanceState);

              view = new GameView(this, handler);

              snake = view.snake;

              LinearLayout lean = new LinearLayout(this);

              tx = new TextView(this);

              lean.setOrientation(LinearLayout.VERTICAL);

              view.setLayoutParams(new LayoutParams(320, 320));

              lean.addView(view);

              LinearLayout lean1 = new LinearLayout(this);

              lean1.setOrientation(LinearLayout.HORIZONTAL);

              Button btn1 = new Button(this);

              btn1.setText("开始");

              btn1.setTextSize(24);

              Button btn2 = new Button(this);

              btn2.setText("暂停");

              btn2.setTextSize(24);

              Button btn3 = new Button(this);

              btn3.setText("退出游戏");

              btn3.setTextSize(24);

              lean1.addView(btn1);

              lean1.addView(btn2);

              lean1.addView(btn3);

              lean.addView(lean1);

              lean.addView(tx);

              setContentView(lean);

              btn1.setOnClickListener(new OnClickListener() {

                     public void onClick(View v) {

                            tx.setText("");

                            view.handler.post(view.updateThead);

                     }

              });

              btn2.setOnClickListener(new OnClickListener() {

                     public void onClick(View v) {

                            view.handler.removeCallbacks(view.updateThead);

                     }

              });

              btn3.setOnClickListener(new OnClickListener() {

                     public void onClick(View v) {

                            tx.setText("您的总分是:" + view.f);

                     view.handler.removeCallbacks(view.updateThead);

                            view.snake = new Snake(320, 320);

                            view.random = view.getRandom();

                            view.f = 0;

                            snake = view.snake;

                     }

              });

       }

       public boolean onKeyDown(int keyCode, KeyEvent event) {

              switch (keyCode) {

              case KeyEvent.KEYCODE_DPAD_UP:

                     snake.changeDirect(Snake.UP);

                     break;

              case KeyEvent.KEYCODE_DPAD_RIGHT:

                     snake.changeDirect(Snake.RIGHT);

                     break;

              case KeyEvent.KEYCODE_DPAD_DOWN:

                     snake.changeDirect(Snake.DOWN);

                     break;

              case KeyEvent.KEYCODE_DPAD_LEFT:

                     snake.changeDirect(Snake.LEFT);

                     break;

              }

              return super.onKeyDown(keyCode, event);

       }

}

package com.fit.android.game;

import android.graphics.Canvas;

import android.graphics.Paint;

public class Node {

       private int x;

       private int y;

       public Node(int x, int y) {

              super();

              this.x = x;

              this.y = y;

       }

       public void draw(Canvas c, Paint p) {

              c.drawCircle(x, y, 5, p);

       }

       public int getX() {

              return x;

       }

       public void setX(int x) {

              this.x = x;

       }

       public int getY() {

              return y;

       }

       public void setY(int y) {

              this.y = y;

       }

       @Override

       public int hashCode() {

              final int prime = 31;

              int result = 1;

              result = prime * result + x;

              result = prime * result + y;

              return result;

       }

       @Override

       public boolean equals(Object obj) {

              if (this == obj)

                     return true;

              if (obj == null)

                     return false;

              if (getClass() != obj.getClass())

                     return false;

              Node other = (Node) obj;

              if (x != other.x)

                     return false;

              if (y != other.y)

                     return false;

              return true;

       }

package com.fit.android.game;

import java.util.LinkedList;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

public class Snake {

       public static final int UP = 1;

       public static final int RIGHT = 2;

       public static final int DOWN = 3;

       public static final int LEFT = 4;

       public static final int MOVE = 1;

       public static final int EAT = 2;

       public static final int BREAK = 3;

       public static final int SWAP = 4;

       private LinkedList<Node> self = new LinkedList<Node>();

       private int direct = RIGHT;

       private int widthX;

       private int widthY;

       public Snake(int wx, int wy) {

              self.add(new Node(25, 5));

              self.add(new Node(15, 5));

              self.add(new Node(5, 5));

              widthX = wx;

              widthY = wy;

       }

       public void changeDirect(int d) {

              switch (direct) {

              case UP:

                     if (d == DOWN)

                            return;

                     break;

              case RIGHT:

                     if (d == LEFT)

                            return;

                     break;

              case DOWN:

                     if (d == UP)

                            return;

                     break;

              case LEFT:

                     if (d == RIGHT)

                            return;

                     break;

              }

              direct = d;

       }

       public int move(Node bean) {

              Node head = null;

              Node first = self.get(0);

              switch (direct) {

              case UP:

                     head = new Node(first.getX(), first.getY() - 10);

                     break;

              case RIGHT:

                     head = new Node(first.getX() + 10, first.getY());

                     break;

              case DOWN:

                     head = new Node(first.getX(), first.getY() + 10);

                     break;

              case LEFT:

                     head = new Node(first.getX() - 10, first.getY());

                     break;

              }

              if (head.getX() < 0 || head.getX() > widthX || head.getY() < 0

                            || head.getY() > widthY) {

                     return BREAK;

              }

              for (int i = 0; i < self.size(); i++) {

                     if (head.equals(self.get(i))) {

                            return SWAP;

                     }

              }

              self.add(0, head);

              if (head.equals(bean)) {

                     return EAT;

              }

              self.remove(self.size() - 1);

              return MOVE;

       }

       public void show(Canvas c) {

              Paint paint = new Paint();

              paint.setAntiAlias(true);

              paint.setColor(Color.RED);

              self.get(0).draw(c, paint);

              paint.setColor(Color.YELLOW);

              for (int i = 1; i < self.size(); i++) {

                     self.get(i).draw(c, paint);

              }

       }

       public boolean checkRandom(int x, int y) {

              for (int i = 0; i < self.size(); i++) {

                     if (self.get(i).getX() == x && self.get(i).getY() == y) {

                            return false;

                     }

              }

              return true;

       }

}

4.贪吃蛇程序截图

(1)主界面显示

(2)贪吃蛇运行界面

实验结果及心得

(1)实验结果是成功实现了预定功能,能在贪吃蛇启动时随时暂停。

(2)通过这次生产实习,我们熟练掌握了JAVA的编程,并学会了基本的基于安卓的基本应用程序的开发,不仅锻炼了自己的动手能力,也提高了自己的思考和解决问题的能力。

(3)对每次的设计,要有一个清晰的程序设计思路和一个完整的软件流程图,在设计程序时,要反复思考,反复修改,不断改进是程序设计成功的必经之路。发现,提出,分析,解决问题和实践能力的提高都会受益于我在以后的学习,工作和生活中,在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

指导教师评语:

                                                                   

                                            

                                            

                                            

                                            

                                             

                                            

                                            

实 验 成 绩:               

指导(辅导)教师 :               

更多相关推荐:
生产实习报告范文

IE生产实习报告院系管理工程学院姓名方宗炼专业工业工程班级081班学号3080502101指导老师费志敏曹邦平梁艳叶逊王志国刘从虎唐娟完成时间20xx年5月10日20xx工业工程生产实习报告第一章绪论11实习目...

生产实践实习实习报告

生产实践实习实习报告学科专业武器系统与工程弹药方向学生姓名张洪铭学号1101510340实习日期20xx年3月实习地点豫西工业集团有限公司指导老师兵老师张庆老师南京理工大学机械工程学院一实习内容十天的实习生...

大学生生产实习报告

生产实习报告学院专业年级姓名学号一概述实习目的生产实习是高等工科院校教学计划中的一个重要的实践性教学环节为了响应课本知识与实践相结合的教学宗旨XXXX大学将生产实习纳入大学本科的教学计划中通过实习达到以下目的1...

一汽大众生产实习报告

姓名:吴彦民院系:广东机电职业技术学院机械工程系专业:数控技术一、实习目的....................................................................…

生产实习报告

生产实习报告实习地点东风汽车公司湖北十堰实习时间学生姓名班级学号一生产实习内容每天的实习内容字数不应少于1000字要求字迹工整11湖北精益高精铜板带有限公司时间按照本组的时间安排1生产流程2我的体会我认为上述的...

电气生产实习报告

生产实习报告实习名称电气学院生产实习学生李晓生学号310808010812学院电气工程与自动化学院专业电气工程及其自动化专业指导老师王玉梅王新掌孙岩州许孝卓目录一实习目的2二实习安排2三实习内容2四实习过程31...

生产实习报告

东北大学秦皇岛分校课程设计报告用纸东北大学秦皇岛分校自动化工程系学年第学期生产实习报告学生姓名朱伟龙专业自动化班级学号5080110指导教师高原实习时间20xx7117181东北大学秦皇岛分校课程设计报告用纸一...

摇摇棒生产实习报告

系别专业班级号姓名指导教师实习题目实习地点教务处印制20xx年9月4日生产实习报告指导教师填阅摇摇棒的设计制作及调试1前言人眼在观察景物时光信号传入大脑神经需经过一段短暂的时间光的作用结束后视觉形象并不立即消失...

生产实习报告

大连民族学院土木建筑工程学院生产实习报告专业班级学号姓名指导教师时间20xx年7月1日20xx年7月15日大连民族学院土木建筑工程学院目录一实习目的二实习要求三实习概况四实习总结五实习结束语大连民族学院土木建筑...

建筑工程生产实习报告 六篇范文合集

生产实习报告一这是我第一次踏入工地体验生产活动也是踏入社会进行实践的过程也就是理论与实践的结合特别是对与建筑这种实践性能非常强的一门学科更要强调实际操作技能的培养而且教材的更新速度肯定比不上技术的发展尤其是这门...

生产实习报告

目录前言1实习过程及内容2实习总结17致谢18生产实习报告任务书前言大四第一学期刚开学,我们工业工程08级学生便迎来了盼望已久的生产实习。今年通过曾强老师的努力,我们专业比较幸运能到代工帝国富士康实习。生产实习…

电子科技大学生产实习报告

电子科技大学生产实习报告学生姓名学号班号实习时间实习地点带队老师姓名电子科技大学生产实习报告一实习项目名称学习使用MSExpressionBlend进行网页设计二实习时间地点时间20xx年11月26号11月27...

生产实习实习报告(35篇)