Java实习报告-.pdf
哈尔滨理工大学管理学院信息系实 习 报 告班级信息 13-4 姓名赵军学号 1306040428 2016 年7 月15 日一、实习目的及意义进一步了解java 开发的相关知识,掌握java 开发的基本技术,丰富java 开发的实战经验。学习SQL的基础知识及正确的运用方法,和有用的相关技术,提高自己的工作效率。通过实习,巩固大学所学专业的基本知识,提高分析、判断和处理实际问题的能力,锻炼自己的实际动手能力,增强自己的团队协作意识,了解软件开发的思考角度和主要流程。为毕业之后能够更快地进入工作状态并且能够更好的工作,打好一定的基础。二、实习任务实习期间,通过学习一个简单的Java 程序飞机大战,了解和掌握Java 编程的基础,如构造器、API 接口等。最后可以独立完成一个小程序。三、实习语言Java 的特点Java 语言的语法与C 语言和C+语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java 丢弃了 C+中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java 语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。2、Java 语言是一个面向对象的Java 语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java 语言全面支持动态绑定,而C+语言只对虚函数使用动态绑定。总之,Java 语言是一个纯的面向对象程序设计语言。3、Java 语言是分布式的Java 语言支持Internet应用的开发,在基本的Java 应用编程接口中有一个网络应用编程接口(),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java 的 RMI(远程方法激活)机制也是开发分布式应用的重要手段。4、Java 语言是健壮的Java 的强类型机制、异常处理、废料的自动收集等是Java 程序健壮性的重要保证。对指针的丢弃是Java 的明智选择。Java 的安全检查机制使得Java 更具健壮性。5、Java 语言是安全的Java 通常被用在网络环境中,为此,Java 提供了一个安全机制以防恶意代码的攻击。除了 Java 语言具有的许多安全特性以外,Java 对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让 Java 应用设置安全哨兵。6、Java 语言是体系结构中立的Java 程序(后缀为java 的文件)在Java 平台上被编译为体系结构中立的字节码格式(后缀为class 的文件),然后可以在实现这个Java 平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。7、Java 语言是可移植的这种可移植性来源于体系结构中立性,另外,Java 还严格规定了各个基本数据类型的长度。Java 系统本身也具有很强的可移植性,Java 编译器是用Java 实现的,Java 的运行环境是用ANSI C 实现的。8、Java 是高性能的与那些解释型的高级脚本语言相比,Java 的确是高性能的。事实上,Java 的运行速度随着 JIT(Just-In-Time)编译器技术的发展越来越接近于C+。9、Java 语言是多线程的在 Java 语言中,线程是一种特殊的对象,它必须由Thread 类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable)的构造子将一个实现了Runnable 接口的对象包装成一个线程,其二,从Thread 类派生出子类并重写run 方法,使用该子类创建的对象即为线程。值得注意的是Thread 类已经实现了Runnable 接口,因此,任何一个线程均有它的run 方法,而 run 方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java 语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为 synchronized)。10、Java 语言是动态的Java 语言的设计目标之一是适应于动态变化的环境。Java 程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。四、实习时间 2016年 7 月 12 日 7 月 15 日五、实习地点哈尔滨达内科技有限公司。六、实习公司简介达内全称达内时代科技集团有限公司,是中国高端IT 培训的领先品牌,致力于培养面向电信和金融领域的Java、C+、C#/.Net、软件测试、嵌入式、PHP、android 等方面的中高端软件人才。由于达内优秀的教学效果和行业领先的经营模式赢得了社会各界的广泛赞誉和好评,荣获了各界权威机构的颁奖:达内成为业界唯一的一家2006、2007、2008、2009 连续 4 年入选德勤评选的“中国高科技高成长50 强公司”、“亚太地区高科技高成长500 强公司”,获得首届中国留学人才归国创业“腾飞”奖、中关村管理委员会指定的“软件人才培养示范基地”、被计算机世界评选的“就业服务杰出贡献奖”、被中国计算机报评选的“最具影响力培训机构奖”、被搜狐评为“中国十大教育集团”、被腾讯评为“中国大学生心目中最具影响力的 IT 品牌”。七、实习成果部分代码展示:Games:import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import javax.swing.JFrame;public class Games extends JFrame World w=new World();public Games()this.setSize(320,480+30);this.setTitle(飞机大战);this.setLocationRelativeTo(null);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setResizable(false);this.add(w);this.setVisible(true);Thread t=new Thread(w);t.start();this.addKeyListener(new KeyAdapter()Override public void keyPressed(KeyEvent e)switch(e.getKeyCode()case KeyEvent.VK_LEFT:w.plane.left=true;break;case KeyEvent.VK_UP:w.plane.up=true;break;case KeyEvent.VK_RIGHT:w.plane.right=true;break;case KeyEvent.VK_DOWN:w.plane.down=true;break;Override public void keyReleased(KeyEvent e)switch(e.getKeyCode()case KeyEvent.VK_LEFT:w.plane.left=false;break;case KeyEvent.VK_UP:w.plane.up=false;break;case KeyEvent.VK_RIGHT:w.plane.right=false;break;case KeyEvent.VK_DOWN:w.plane.down=false;break;);public static void main(String args)Games games=new Games();World:import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.image.BufferedImage;import java.io.IOException;import java.util.Random;import java.util.Vector;import javax.imageio.ImageIO;import javax.swing.JPanel;public class World extends JPanel implements Runnable Map map=new Map();/创建地图Plane plane=new Plane();Vector bullets=new Vector();int BulletCount=0;int BulletStep=8;Vector npcs=new Vector();int npcCount=0;int npcStep=50;Vector nbs=new Vector();/随机数Random r=new Random();public static int Score;public static final int START=0;public static final int RUNNING=1;public static final int GAME_OVER=2;public int status;BufferedImage start;BufferedImage game_over;public World()try start=ImageIO.read(getClass().getResource(imgs/start.png);game_over=ImageIO.read(getClass().getResource(imgs/gameover.png);catch(IOException e)/TODO Auto-generated catch block e.printStackTrace();/初始状态status=RUNNING;/绘制Override public void paint(Graphics g)/绘制地图map.paint(g);g.setColor(Color.red);g.drawRect(200,12,100,15);int value=100-plane.hitcount*10;if(value0)value=0;g.fillRect(200,12,value,15);/积分g.setColor(Color.white);Font f=new Font(Font.SANS_SERIF,Font.ITALIC|Font.BOLD,14);g.setFont(f);g.drawString(Score*100+分,10,30);switch(status)case START:/绘制飞机plane.paint(g);g.drawImage(start,160-start.getWidth()/2,200,this);break;case RUNNING:/绘制飞机plane.paint(g);for(int i=0;ibullets.size();i+)bullets.get(i).paint(g);for(int i=0;inpcs.size();i+)npcs.get(i).paint(g);for(int i=0;inbs.size();i+)nbs.get(i).paint(g);break;case GAME_OVER:g.drawImage(game_over,160-game_over.getWidth()/2,200,this);break;default:break;/多线程Override public void run()while(true)map.move();switch(status)case START:break;case RUNNING:plane.move();addBullet();for(int i=0;ibullets.size();i+)bullets.get(i).move(bullets,npcs);addNpc();for(int i=0;inpcs.size();i+)npcs.get(i).move(npcs,nbs,plane);for(int i=0;inbs.size();i+)nbs.get(i).move(plane,nbs);try Thread.sleep(1000/60);catch(InterruptedException e)e.printStackTrace();repaint();break;case GAME_OVER:break;default:break;void addBullet()BulletCount+;if(BulletCount%BulletStep=0)if(plane.level=1)Bullet b=new Bullet();b.x=plane.x+plane.w/2-b.w/2;b.y=plane.y-b.y;bullets.add(b);BulletCount=0;if(plane.level=2)Bullet b=new Bullet();b.x=plane.x+plane.w/2-b.w/2;b.y=plane.y-b.y;bullets.add(b);b=new Bullet();b.x=plane.x+plane.w/2-b.w/2+10;b.y=plane.y-b.y;bullets.add(b);BulletCount=0;if(plane.level=3)Bullet b=new Bullet();b.x=plane.x+plane.w/2-b.w/2;b.y=plane.y-b.y;bullets.add(b);b=new Bullet();b.x=plane.x+plane.w/2-b.w/2;b.y=plane.y-b.y;b.xstep-=1;bullets.add(b);b=new Bullet();b.x=plane.x+plane.w/2-b.w/2;b.y=plane.y-b.y;bullets.add(b);b.xstep+=1;BulletCount=0;if(plane.level=4)Bullet b=new Bullet();b.x=plane.x+plane.w/2-b.w/2-7;b.y=plane.y-b.y;bullets.add(b);b=new Bullet();b.x=plane.x+plane.w/2-b.w/2+7;b.y=plane.y-b.y;bullets.add(b);b=new Bullet();b.x=plane.x+plane.w/2-b.w/2-10;b.y=plane.y-b.y;b.xstep-=1;bullets.add(b);b=new Bullet();b.x=plane.x+plane.w/2-b.w/2+10;b.y=plane.y-b.y;b.xstep+=1;bullets.add(b);BulletCount=0;if(plane.level=5)Bullet b=new Bullet();b.x=plane.x+plane.w/2-b.w/2;b.y=plane.y-b.y;bullets.add(b);b=new Bullet();b.x=plane.x+plane.w/2-b.w/2-5;b.y=plane.y-b.y;b.xstep-=1;bullets.add(b);b=new Bullet();b.x=plane.x+plane.w/2-b.w/2+5;b.y=plane.y-b.y;b.xstep+=1;bullets.add(b);b=new Bullet();b.x=plane.x+plane.w/2-b.w/2-10;b.y=plane.y-b.y;b.xstep-=2;bullets.add(b);b=new Bullet();b.x=plane.x+plane.w/2-b.w/2+10;b.y=plane.y-b.y;b.xstep+=2;bullets.add(b);BulletCount=0;void addNpc()npcCount+;if(npcCount%npcStep=0)int type=r.nextInt(8);int direction=r.nextInt(3);for(int i=0;iimg.getHeight()y=0;NPC:import java.awt.Graphics;import java.awt.Image;import java.awt.image.BufferedImage;import java.io.IOException;import java.util.Random;import java.util.Vector;import javax.imageio.ImageIO;public class Npc int x;int y;int w;int h;int xstep=0;int ystep=5;BufferedImage img;BufferedImage imgs=new BufferedImage4;int index=0;boolean hit=false;/击中boolean destroy=false;/销毁int hitCount=0;Random r=new Random();int randomNum;int time;public Npc(int type)try img=ImageIO.read(getClass().getResource(imgs/+type+.png);for(int i=0;i=imgs.length)destroy=true;public void move(Vector npcs,Vector nbs,Plane plane)if(destroy)npcs.remove(this);World.Score+;return;time+;if(time%randomNum=0)NpcBullet nb=new NpcBullet(this,plane);nbs.add(nb);time=0;randomNum=r.nextInt(50)+50;x+=xstep;y+=ystep;/飞行轨迹if(y300)ystep=-1;xstep=-xstep;if(y-250)npcs.remove(this);Plane:import java.awt.Graphics;import java.awt.image.BufferedImage;import java.io.IOException;import javax.imageio.ImageIO;public class Plane int x;int y;int w;int h;BufferedImage imgs=new BufferedImage3;BufferedImage img;boolean left,up,right,down;int index=0;int level=5;boolean hit=false;int hitcount=0;int flas=0;public Plane()try for(int i=0;i11)hit=false;flas=0;/index=0;public void move()if(left)x-=8;if(up)y-=8;if(right)x+=8;if(down)y+=8;if(x0)x=0;if(y320-w)x=320-w;if(y480-h)y=480-h;Bullets:import java.awt.Graphics;import java.awt.image.BufferedImage;import java.io.IOException;import java.util.Vector;import javax.imageio.ImageIO;public class Bullet int x;int y;int w;int h;int xstep=0;BufferedImage img;public Bullet()try img=ImageIO.read(getClass().getResource(imgs/bullet.png);catch(IOException e)e.printStackTrace();w=img.getWidth();h=img.getHeight();public void paint(Graphics g)g.drawImage(img,x,y,null);public void move(Vector bullets,Vector npcs)y-=8;x+=xstep;if(y-h)bullets.remove(this);/子弹与敌机碰撞检测for(int i=0;ix1-w&xx1+w1)if(yy1-h)/1.移除子弹bullets.remove(this);/2.npc被击中npcs.get(i).hit=true;NpcBullet:import java.awt.Graphics;import java.awt.image.BufferedImage;import java.io.IOException;import java.util.Vector;import javax.imageio.ImageIO;import sun.java2d.pipe.DrawImage;public class NpcBullet int x;int y;int w;int h;int step=5;double sin;double cos;BufferedImage img;public NpcBullet(Npc npc,Plane plane)try img=ImageIO.read(getClass().getResource(imgs/npcbullet.png);catch(IOException e)/TODO Auto-generated catch block e.printStackTrace();w=img.getWidth();h=img.getHeight();x=npc.x+npc.w/2-w/2;y=npc.y+npc.h;int x1=plane.x+plane.w/2;int y1=plane.y+plane.h/2;int dx=x1-x;int dy=y1-y;double dLine=Math.sqrt(dx*dx+dy*dy);cos=dx/dLine;sin=dy/dLine;public void paint(Graphics g)g.drawImage(img,x,y,null);public void move(Plane plane,Vector nbs)x=(int)(x+step*cos);y=(int)(y+step*sin);/碰撞检测int x1=plane.x;int y1=plane.y;int w1=plane.w;int h1=plane.h;if(xx1-w&xy1-h&yy1+h1)plane.hit=true;plane.hitcount+;nbs.remove(this);/边界判断if(x-50|y370|y550)nbs.remove(this);八、实习心得初次涉及 Java领域,感觉到Java入门是好像没有C,C+入门快,工具也没有什么Turbo C,Visual C+好用,什么 JAVA_HOME,CLASSPATH,虚拟机等概念都是初次基础,旁边的人都很少用 Java的。感觉 Java就是做 App 的。让我不可思议的是JAVA 2,JDK,J2SE,J2EE,J2ME等新名词在自己的脑海里蔓延。搭起Java开发环境后,记得刚开始还是用UltraEdit 编辑并编译的慢慢的改用JCreator 了,要开始干项目了,以前从书上看到的东西,在项目中有了很好的机会去温习,开始主要是用Swing,开发桌面系统,放置一个按钮怎么也放不好,后来才知道有一个布局管理器。后来开始涉及到数据库访问,JDBC。随后 Java规范了。最开始下载的规范是 JDBC Specification,很多概念一目了然,尤其是DATABASE 的事务性控制,自己对于她的理解慢慢的有了较为深入的了解。对于开发C/S 结构,比如,Swing+JDBC,开发数据库应用系统,让我学会开发两层结构的应用系统。这次实习让我学到了很多东西,让我整体素质有所提升,明白了很多做人做事的道理。第一、毕业了以后不是学习的结束,而是学习的开始,在当今社会,只有不断地汲取新信息新知识,才能获得事业进步的动力,武装自己的头脑,提升自己的能力,扩展自己的视野。第二、学习要联系实践,一个人的价值是通过实践活动来实现的,也只有通过实践才能提升人的品质,彰显人的意志。学到的理论只有通过实践的检验才是合格的。第三、我们要做一个勤于思考的人,我们只有注意观察、分析、总结、提炼,才能积累经验,使自己的工作做出成绩。同时我也明白了遇到麻烦解决的办法有很多:第一、就是上网查询,不懂的可以查查,不要一不会就去问别人,得先自己想办法解决;第二。请教别人。当自己查资料解决不了,就去问一下别人,不要老死扣着,反而浪费时间。当然遇到麻烦的事情千万不要着急,越着急越然人昏头转向,越着急越解决不了问题,还不如心平气静的想想解决办法,或者转换下思维,先做其他的事情,静下来时再去思考。遇到问题时,要保持一颗平常心。第四、有的时候人与人的差别并不大,但工作热情的不同却使两个人做出完全不同的成绩,只有具备热情,才能保证你能发挥自己全部的能量和才能。一个人的能力有差异,但关键是看你能发挥出多少,这就取决于热情。用自己的热情来点燃斗志。而且热情是可以传递的,一个人全力投入工作,他可带动周围的人,感染周围的人全力以赴,是整个团队赶出骄人的成绩。最后,衡量一个人是不是人才,不仅是看知识掌握的多少,当代社会更看重的是一个人的沟通能力。原来一直觉得学校的知识是没用的,当真正用到了才后悔自己当时为什么不好好学习。所以说实习注重实践和在学校学习理论是相辅相成的。平时在学校学的不知道是否有用,但当实习后我们就清楚学习的知识到底有什么实际应用,和当今社会的发展有什么联系。只有到公司亲身实践,才让我们更加明确了那些知识是能跟上时代发展,那些知识已经落后了,什么样的人才是当今社会需求的。同时通过实习让我们认识到了自己知识掌握的不足,更加激发了我们学习的热情。而这一次的专业实习,让我明白了大学生生产实习是引导我们学生走出校门,走向社会,接触社会,了解社会,投身社会的良好形式;是培养锻炼才干的好渠道;是提升思想,树立服务社会的思想的有效途径。通过参加专业实习活动,有助于我们在校中学生更新观念,吸收新的思想与知识。近四个月的实习,虽然时间很短,却让我从中领悟到了很多的东西,而这些东西将让我终生受用。专业实习加深了我与社会各阶层人的感情,拉近了我与社会的距离,也让自己在实践中开拓了视野,增长了才干,进一步明确了我们青年学生的成材之路与肩负的历史使命。社会才是学习和受教育的大课堂,在那片广阔的天地里,我们的人生价值得到了体现,为将来更加激烈的竞争打下了更为坚实的基础。我在实践中得到许多的感悟!通过在达内的实习,让我的专业知识有了进一步的提高,缩短了我与社会接轨距离。让我懂得在工作上还要有自信。自信不是盲目地自夸,而是对自己的能力做出肯定。社会经验缺乏,学历不足等种种原因会使自己缺乏自信。其实有谁一生下来句什么都会的,只要有自信,就能克服心理障碍,那一切就变得容易解决了。同时知识的积累也是非常重要的。知识犹如人的血液。人缺少了血液,身体就会衰弱,人缺少了知识,头脑就要枯竭。这次接触的酿造业,对我来说很陌生,要想把工作做好,就必须了解这方面的知识,对其各方面都有深入的了解,才能更好地应用于工作中总之,通过这次实习,确实让自己成长了许多。在工作中,总会遇到这样那样的问题,当前的软件的功能日趋复杂,不学到一定的深度和广度是难以在实际工作中应付自如的。因此反映出学习的还不够,缺点疏漏。需再加以刻苦钻研及学习,不断开拓视野,增强自己的实践操作技能,为以后能做好工作而努力。