实习报告
班级 信息13-4 姓名 赵军 学号 **********
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应用编程接口中有一个网络应用编程接口(java.net),它提供了用于网络应用编程的类库,包括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 Vector 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(value<0){ 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+\"分\ 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;i 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;i for(int i =0;i for(int i =0;i } 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;i<4;i++){ Npc n = new Npc(type); switch (direction) { case 0: n.x = -n.w-(50*i); n.y = -n.h-(50*i); n.xstep=3; n.ystep=3; break; case 1: n.x = 320/2-(150+n.w)/2+(50*i); n.y = -n.h; n.ystep=3; break; case 2: n.x = 320+(50*i); n.y = -n.h-(50*i); n.xstep=-3; n.ystep=3; break; default: break; } npcs.add(n); } npcCount=0; } } } Map: import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import javax.imageio.ImageIO; public class Map { int x; int y; BufferedImage img; // 构造器 public Map() { x =0; y =0; try { img = ImageIO.read(getClass().getResource(\"imgs/bg.gif\")); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } // paint() public void paint(Graphics g){ g.drawImage(img, x, y-img.getHeight(), null); g.drawImage(img, x, y, null); } // move() public void move(){ y ++; if(y>img.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 BufferedImage[4]; 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 } catch (IOException e) { e.printStackTrace(); } w = img.getWidth(); h = img.getHeight(); y = -h; randomNum = r.nextInt(50)+50; time = 0; } public void paint(Graphics g){ if(destroy) return; g.drawImage(img, x, y, null); if(hit){ img = imgs[index++]; index =++hitCount/4%5; } if(index>=imgs.length){ destroy = true; } } public void move(Vector 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(y>300){ 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 BufferedImage[3]; 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;i } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } img = imgs[index]; w = img.getWidth(); h = img.getHeight(); x =320/2-w/2; y =405; } public void paint(Graphics g){ g.drawImage(img, x, y, null); if(hit){ flas++; img = imgs[index = flas/3%2]; if(flas>11){ 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(x<0) x=0; if(y<0) = y=0; if(x>320-w) x=320-w; if(y>480-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.remove(this); } //子弹与敌机碰撞检测 for(int i =0;i 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 int x1 = plane.x; int y1 = plane.y; int w1 = plane.w; int h1 = plane.h; if(x>x1-w && x if(x<-50||y<-50||x>370||y>550){ 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,开发数据库应用系统,让我学会开发两层结构的应用系统。 这次实习让我学到了很多东西,让我整体素质有所提升,明白了很多做人做事的道理。第一、毕业了以后不是学习的结束,而是学习的开始,在当今社会,只有不断地汲取新信息新知识,才能获得事业进步的动力,武装自己的头脑,提升自己的能力,扩展自己的视野。第二、学习要联系实践,一个人的价值是通过实践活动来实现的,也只有通过实践才能提升人的品质,彰显人的意志。学到的理论只有通过实践的检验才是合格的。第三、我们要做一个勤于思考的人,我们只有注意观察、分析、总结、提炼,才能积累经验,使自己的工作做出成绩。同时我也明白了遇到麻烦解决的办法有很多:第一、就是上网查询,不懂的可以查查,不要一不会就去问别人,得先自己想办法解决;第二。请教别人。当自己查资料解决不了,就去问一下别人,不要老死扣着,反而浪费时间。当然遇到麻烦的事情千万不要着急,越着急越然人昏头转向,越着急越解决不了问题,还不如心平气静的想想解决办法,或者转换下思维,先做其他的事情,静下来时再去思考。遇到问题时,要保持一颗平常心。第四、有的时候人与人的差别并不大,但工作热情的不同却使两个人做出完全不同的成绩,只有具备热情,才能保证你能发挥自己全部的能量和才能。一个人的能力有差异,但关键是看你能发挥出多少,这就取决于热情。用自己的热情来点燃斗志。而且热情是可以传递的,一个人全力投入工作,他可带动周围的人,感染周围的人全力以赴,是整个团队赶出骄人的成绩。最后,衡量一个人是不是人才,不仅是看知识掌握的多少,当代社会更看重的是一个人的沟通能力。 原来一直觉得学校的知识是没用的,当真正用到了才后悔自己当时为什么不好好学习。所以说实习注重实践和在学校学习理论是相辅相成的。平时在学校学的不知道是否有用,但当实习后我们就清楚学习的知识到底有什么实际应用,和当今社会的发展有什么联系。只有到公司亲身实践,才让我们更加明确了那些知识是能跟上时代发展,那些知识已经落后了,什么样的人才是当今社会需求的。同时通过实习让我们认识到了自己知识掌握的不足,更加激发了我们学习的热情。 而这一次的专业实习,让我明白了大学生生产实习是引导我们学生走出校门,走向社会,接触社会,了解社会,投身社会的良好形式;是培养锻炼才干的好渠道;是提升思想,树立服务社会的思想的有效途径。通过参加专业实习活动,有助于我们在校中学生更新观念,吸收新的思想与知识。近四个月的实习,虽然时间很短,却让我从中领悟到了很多的东西,而这些东西将让我终生受用。专业实习加深了我与社会各阶层人的感情,拉近了我与社会的距离,也让自己在实践中开拓了视野,增长了才干,进一步明确了我们青年学生的成材之路与肩负的历史使命。社会才是学习和受教育的大课堂,在那片广阔的天地里,我们的人生价值得到了体现,为将来更加激烈的竞争打下了更为坚实的基础。我在实践中得到许多的感悟!通过在达内的实习,让我的专业知识有了进一步的提高,缩短了我与社会接轨距离。让我懂得在工作上还要有自信。自信不是盲目地自夸,而是对自己的能力做出肯定。社会经验缺乏,学历不足等种种原因会使自己缺乏自信。其实有谁一生下来句什么都会的,只要有自信,就能克服心理障碍,那一切就变得容易解决了。同时知识的积累也是非常重要的。知识犹如人的血液。人缺少了血液,身体就会衰弱,人缺少了知识,头脑就要枯竭。这次接触的酿造业,对我来说很陌生,要想把工作做好,就必须了解这方面的知识,对其各方面都有深入的了解,才能更好地应用于工作中 总之,通过这次实习,确实让自己成长了许多。在工作中,总会遇到这样那样的问题,当前的软件的功能日趋复杂,不学到一定的深度和广度是难以在实际工作中应付自如的。因此反映出学习的还不够,缺点疏漏。需再加以刻苦钻研及学习,不断开拓视野,增强自己的实践操作技能,为以后能做好工作而努力。 因篇幅问题不能全部显示,请点此查看更多更全内容