哈尔滨理工大学管理学院信息系实习报告班级信息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应用编程接口中有一个网络应用编程接口(),它提供了用于网络应用编程的类库,包括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(){@Overridepublic 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;}}@Overridepublic 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<Bullet> bullets = new Vector<Bullet>();int BulletCount = 0;int BulletStep = 8;Vector<Npc> npcs= new Vector<Npc>();int npcCount =0;int npcStep =50;Vector<NpcBullet> nbs = new Vector<NpcBullet>();//随机数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 blocke.printStackTrace();}//初始状态status = RUNNING;}//绘制@Overridepublic 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+"分", 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;i<bullets.size();i++){bullets.get(i).paint(g);}for(int i =0;i<npcs.size();i++){npcs.get(i).paint(g);}for(int i =0;i<nbs.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;}}//多线程@Overridepublic void run() {while(true){map.move();switch (status) {case START:break;case RUNNING:plane.move();addBullet();for(int i =0;i<bullets.size();i++){bullets.get(i).move(bullets,npcs);}addNpc();for(int i =0;i<npcs.size();i++){npcs.get(i).move(npcs,nbs,plane);}for(int i =0;i<nbs.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;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 blocke.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<imgs.length;i++){imgs[i]=ImageIO.read(getClass().getResource("imgs/bomb_"+i+".png"));}} 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<Npc> npcs,Vector<NpcBullet> 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(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<imgs.length;i++){imgs[i] = ImageIO.read(getClass().getResource("imgs/plane"+i+".png"));}} catch (IOException e) {// TODO Auto-generated catch blocke.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<Bullet> bullets,Vector<Npc> npcs){y-=8;x+=xstep;if(y<-h){bullets.remove(this);}//子弹与敌机碰撞检测for(int i =0;i<npcs.size();i++){int x1 = npcs.get(i).x;int y1 = npcs.get(i).y;int w1 = npcs.get(i).w;int h1 = npcs.get(i).h;if(x>x1-w && x<x1+w1){if(y<y1+h1 && y>y1-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 blocke.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<NpcBullet> 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(x>x1-w && x<x1+w1){if(y>y1-h&& y<y1+h1){plane.hit = true;plane.hitcount++;nbs.remove(this);}}//边界判断if(x<-50||y<-50||x>370||y>550){nbs.remove(this);}}}八、实习心得初次涉及Java领域,感觉到Java入门是好像没有C,C++入门快,工具也没有什么Turbo C,Visual C++好用,什么JAVA_HOME,CLASSPATH,虚拟机等概念都是初次基础,旁边的人都很少用Java的。