Java實(shí)習(xí)報告資料_第1頁
Java實(shí)習(xí)報告資料_第2頁
Java實(shí)習(xí)報告資料_第3頁
Java實(shí)習(xí)報告資料_第4頁
Java實(shí)習(xí)報告資料_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、哈爾濱理工大學(xué)管理學(xué)院信息系 實(shí)習(xí)報告 班級 信息13-4 姓名 趙軍 學(xué)號 1306040428 日15 月7 年2016 一、實(shí)習(xí)目的及意義 進(jìn)一步了解java開發(fā)的相關(guān)知識,掌握java開發(fā)的基本技術(shù),豐富java開發(fā)的實(shí)戰(zhàn)經(jīng)驗(yàn)。學(xué)習(xí)SQL的基礎(chǔ)知識及正確的運(yùn)用方法,和有用的相關(guān)技術(shù),提高自己的工作效率。通過實(shí)習(xí),鞏固大學(xué)所學(xué)專業(yè)的基本知識,提高分析、判斷和處理實(shí)際問題的能力,鍛煉自己的實(shí)際動手能力,增強(qiáng)自己的團(tuán)隊協(xié)作意識,了解軟件開發(fā)的思考角度和主要流程。為畢業(yè)之后能夠更快地進(jìn)入工作狀態(tài)并且能夠更好的工作,打好一定的基礎(chǔ)。 二、實(shí)習(xí)任務(wù) 實(shí)習(xí)期間,通過學(xué)習(xí)一個簡單的Java程序飛機(jī)大戰(zhàn)

2、,了解和掌握J(rèn)ava編程的基礎(chǔ),如構(gòu)造器、API接口等。最后可以獨(dú)立完成一個小程序。 三、實(shí)習(xí)語言Java的特點(diǎn) Java語言的語法與C語言和C+語言很接近,使得大多數(shù)程序員很容易學(xué)習(xí)和使用Java。另一方面,Java丟棄了C+ 中很少使用的、很難理解的、令人迷惑的那些特性,如操作符重載、多繼承、自動的強(qiáng)制類型轉(zhuǎn)換。特別地,Java語言不使用指針,并提供了自動的廢料收集,使得程序員不必為內(nèi)存管理而擔(dān)憂。 2、Java語言是一個面向?qū)ο蟮?Java語言提供類、接口和繼承等原語,為了簡單起見,只支持類之間的單繼承,但支持接口之間的多繼承,并支持類與接口之間的實(shí)現(xiàn)機(jī)制(關(guān)鍵字為implements)

3、。Java語言全面支持動態(tài)綁定,而C+ 語言只對虛函數(shù)使用動態(tài)綁定??傊?,Java語言是一個純的面向?qū)ο蟪绦蛟O(shè)計語言。 3、Java語言是分布式的 Java語言支持Internet應(yīng)用的開發(fā),在基本的Java應(yīng)用編程接口中有一個網(wǎng)絡(luò)應(yīng)用編程接口(),它提供了用于網(wǎng)絡(luò)應(yīng)用編程的類庫,包括URL、URLConnection、Socket、 ServerSocket等。Java的RMI(遠(yuǎn)程方法激活)機(jī)制也是開發(fā)分布式應(yīng)用的重要手段。 4、Java語言是健壯的 Java的強(qiáng)類型機(jī)制、異常處理、廢料的自動收集等是Java程序健壯性的重要保證。對指針的丟棄是Java的明智選擇。Java的

4、安全檢查機(jī)制使得Java更具健壯性。 5、Java語言是安全的 Java通常被用在網(wǎng)絡(luò)環(huán)境中,為此,Java提供了一個安全機(jī)制以防惡意代碼的攻擊。除了Java語言具有的許多安全特性以外,Java對通過網(wǎng)絡(luò)下載的類具有一個安全防范機(jī)制(類ClassLoader),如分配不同的名字空間以防替代本地的同名類、字節(jié)代碼檢查,并提供安全管理機(jī)制(類SecurityManager)讓Java應(yīng)用設(shè)置安全哨兵。 6、Java語言是體系結(jié)構(gòu)中立的 Java程序(后綴為java的文件)在Java平臺上被編譯為體系結(jié)構(gòu)中立的字節(jié)碼格式(后綴為class的文件), 然后可以在實(shí)現(xiàn)這個Java平臺的任何系統(tǒng)中運(yùn)行。這

5、種途徑適合于異構(gòu)的網(wǎng)絡(luò)環(huán)境和軟件的分發(fā)。 7、Java語言是可移植的 這種可移植性來源于體系結(jié)構(gòu)中立性,另外,Java還嚴(yán)格規(guī)定了各個基本數(shù)據(jù)類型的長度。Java系統(tǒng)本身也具有很強(qiáng)的可移植性,Java編譯器是用Java實(shí)現(xiàn)的,Java的運(yùn)行環(huán)境是用ANSI C實(shí)現(xiàn)的。 8、Java是高性能的 的運(yùn)行速度Java的確是高性能的。事實(shí)上,Java與那些解釋型的高級腳本語言相比,隨著JIT(Just-In-Time)編譯器技術(shù)的發(fā)展越來越接近于C+。 9、Java語言是多線程的 在Java語言中,線程是一種特殊的對象,它必須由Thread類或其子(孫)類來創(chuàng)建。通常有兩種方法來創(chuàng)建線程:其一,使用型

6、構(gòu)為Thread(Runnable) 的構(gòu)造子將一個實(shí)現(xiàn)了Runnable接口的對象包裝成一個線程,其二,從Thread類派生出子類并重寫run方法,使用該子類創(chuàng)建的對象即為線程。值得注意的是Thread類已經(jīng)實(shí)現(xiàn)了Runnable接口,因此,任何一個線程均有它的run方法,而run方法中包含了線程所要運(yùn)行的代碼。線程的活動由一組方法來控制。 Java語言支持多個線程的同時執(zhí)行,并提供多線程之間的同步機(jī)制(關(guān)鍵字為synchronized)。 10、Java語言是動態(tài)的 Java語言的設(shè)計目標(biāo)之一是適應(yīng)于動態(tài)變化的環(huán)境。Java程序需要的類能夠動態(tài)地被載入到運(yùn)行環(huán)境,也可以通過網(wǎng)絡(luò)來載入所需要

7、的類。這也有利于軟件的升級。另外,Java中的類有一個運(yùn)行時刻的表示,能進(jìn)行運(yùn)行時刻的類型檢查。 四、實(shí)習(xí)時間 2016年7月12日7月15日 五、實(shí)習(xí)地點(diǎn) 哈爾濱達(dá)內(nèi)科技有限公司。 六、實(shí)習(xí)公司簡介 達(dá)內(nèi)全稱達(dá)內(nèi)時代科技集團(tuán)有限公司,是中國高端IT培訓(xùn)的領(lǐng)先品牌,致力于培養(yǎng)面向電信和金融領(lǐng)域的Java、C+、C#/.Net、軟件測試、嵌入式、PHP、android等方面的中高端軟件人才。 由于達(dá)內(nèi)優(yōu)秀的教學(xué)效果和行業(yè)領(lǐng)先的經(jīng)營模式贏得了社會各界的廣泛贊譽(yù)和好評,榮獲了各界權(quán)威機(jī)構(gòu)的頒獎:達(dá)內(nèi)成為業(yè)界唯一的一家2006、2007、2008、2009連續(xù)4年入選德勤評選的 “中國高科技高成長50

8、強(qiáng)公司”、“亞太地區(qū)高科技高成長500強(qiáng)公司”,獲得首屆中國留學(xué)人才歸國創(chuàng)業(yè)“騰飛”獎、中關(guān)村管理委員會指定的“軟件人才培養(yǎng)示范基地”、被計算機(jī)世界評選的“就業(yè)服務(wù)杰出貢獻(xiàn)獎”、被中國計算機(jī)報評選的“最具影響力培訓(xùn)機(jī)構(gòu)獎”、被搜狐評為“中國十大教育集團(tuán)”、被騰訊評為“中國大學(xué)生心目中最具影響力的IT品牌”。 七、實(shí)習(xí)成果 部分代碼展示: Games: import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import javax.swing.JFrame; public class Games extends JFr

9、ame World w = new World(); public Games() this.setSize(320, 480+30); 桴獩獻(xiàn)瑥楔汴?飛機(jī)大戰(zhàn)); 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() O

10、verride 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

11、 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: im

12、port 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 m

13、ap = new Map();/創(chuàng)建地圖 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(); /隨機(jī)數(shù) Random r = new Random(); public static int Score; public static final int START =0; pub

14、lic 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 (IOExceptio

15、n e) / TODO Auto-generated catch block e.printStackTrace(); /初始狀態(tài) 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.setC

16、olor(Color.white); Font f = new Font(Font.SANS_SERIF,Font.ITALIC|Font.BOLD,14); g.setFont(f); ?牤睡瑓楲杮匨潣敲?尫分 , 10, 30); switch (status) case START: /繪制飛機(jī) plane.paint(g); g.drawImage(start, 160-start.getWidth()/2, 200, this); break; case RUNNING: /繪制飛機(jī) plane.paint(g); for(int i =0;ibullets.size();i+) b

17、ullets.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 (s

18、tatus) 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 (

19、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.l

20、evel=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; bull

21、ets.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

22、 = 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;

23、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 = pla

24、ne.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

25、=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

26、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(getC

27、lass().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.next

28、Int(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

29、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

30、(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 = I

31、mageIO.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); 子彈與敵機(jī)碰撞檢測/ f

32、or(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

33、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();

34、 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(Plan

35、e 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); 八、實(shí)習(xí)心得 初次涉及Java領(lǐng)域,感覺到Java入門是好像沒有C,

36、C+入門快,工具也沒有什么Turbo C,Visual C+好用,什么JAVA_HOME,CLASSPATH,虛擬機(jī)等概念都是初次基礎(chǔ),旁邊的人都很少用Java的。感覺Java就是做App的。讓我不可思議的是JAVA 2,JDK,J2SE,J2EE,J2ME等新名詞在自己的腦海里蔓延。搭起Java開發(fā)環(huán)境后,記得剛開始還是用UltraEdit編輯并編譯的慢慢的改用JCreator了,要開始干項(xiàng)目了,以前從書上看到的東西,在項(xiàng)目中有了很好的機(jī)會去溫習(xí),開始主要是用Swing,開發(fā)桌面系統(tǒng),放置一個按鈕怎么也放不好,后來才知道有一個布局管理器。后來開始涉及到數(shù)據(jù)庫訪問,JDBC。隨后Java規(guī)范了

37、。最開始下載的規(guī)范是JDBC Specification,很多概念一目了然,尤其是DATABASE的事務(wù)性控制,自己對于她的理解慢慢的有了較為深入的了解。對于開發(fā)C/S結(jié)構(gòu),比如,Swing+JDBC,開發(fā)數(shù)據(jù)庫應(yīng)用系 統(tǒng),讓我學(xué)會開發(fā)兩層結(jié)構(gòu)的應(yīng)用系統(tǒng)。這次實(shí)習(xí)讓我學(xué)到了很多東西,讓我整體素質(zhì)有所提升,明白了很多做人做事的道理。第一、畢業(yè)了以后不是學(xué)習(xí)的結(jié)束,而是學(xué)習(xí)的開始,在當(dāng)今社會,只有不斷地汲取新信息新知識,才能獲得事業(yè)進(jìn)步的動力,武裝自己的頭腦,提升自己的能力,擴(kuò)展自己的視野。第二、學(xué)習(xí)要聯(lián)系實(shí)踐,一個人的價值是通過實(shí)踐活動來實(shí)現(xiàn)的,也只有通過實(shí)踐才能提升人的品質(zhì),彰顯人的意志。學(xué)到的理論只有通過實(shí)踐的檢驗(yàn)才是合格的。第三、我們要做一個勤于思考的人,我們只有注意觀察、分析、總結(jié)、提煉,才能積累經(jīng)驗(yàn),使自己的工作做出成績。同時我也明白了遇到麻煩解決的辦法有很多:第一、就是上網(wǎng)查詢,不懂的可以查查,不要一不會就去問別人,得先自己想辦法解決;第二。請教別人。當(dāng)自己查資料

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論