軟件工程實(shí)訓(xùn)報(bào)告_第1頁
軟件工程實(shí)訓(xùn)報(bào)告_第2頁
軟件工程實(shí)訓(xùn)報(bào)告_第3頁
軟件工程實(shí)訓(xùn)報(bào)告_第4頁
軟件工程實(shí)訓(xùn)報(bào)告_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

《軟件工程》實(shí)訓(xùn)報(bào)告題目掃雷小游戲?qū)嵙?xí)起止時(shí)間:12月02日至年12月12日

目錄TOC\o"1-1"\h\z\u一、實(shí)習(xí)時(shí)間 1二、實(shí)習(xí)地點(diǎn) 1三、實(shí)習(xí)目的 1四、實(shí)習(xí)內(nèi)容 1五、實(shí)習(xí)小結(jié)或體會 8六、參考文獻(xiàn) 9七、指導(dǎo)教師評閱 10一、實(shí)習(xí)時(shí)間從12月02日至年12月12日。二、實(shí)習(xí)地點(diǎn)。三、實(shí)習(xí)目的

通過本實(shí)訓(xùn)的實(shí)踐及其前后的準(zhǔn)備與總結(jié),復(fù)習(xí)、領(lǐng)略、鞏固和運(yùn)用軟件工程課堂上所學(xué)的軟件開發(fā)辦法和知識,例如,軟件項(xiàng)目的完整設(shè)計(jì)與開發(fā)過程、構(gòu)造化技術(shù)、快速原型法和面對對象辦法等。特別是構(gòu)造化分析、構(gòu)造化設(shè)計(jì)、快速原型開發(fā)、面對對象分析與面對對象設(shè)計(jì)。使每個(gè)學(xué)生理解軟件工具與環(huán)境對于項(xiàng)目開發(fā)的重要性,并且重點(diǎn)進(jìn)一步掌握好一、兩種較新或較流行的軟件工具或計(jì)算機(jī)應(yīng)用技術(shù)、技能(例如,網(wǎng)頁設(shè)計(jì)技術(shù)與常見工具;基于Java(ASP、PHP等)技術(shù)的Web編程;軟件開發(fā)文檔編制工具Office、Visio、Rose等;商用數(shù)據(jù)庫Access(或SQLServer、Oracle、MySql等)設(shè)計(jì)與實(shí)現(xiàn);客戶機(jī)/服務(wù)器構(gòu)造)。使學(xué)生通過參加小組團(tuán)體的開發(fā)實(shí)踐,理解項(xiàng)目管理、團(tuán)體合作、文檔編寫、口頭與書面體現(xiàn)的重要性。通過“稍大的”富有挑戰(zhàn)性的軟件實(shí)驗(yàn)項(xiàng)目開發(fā)實(shí)踐,為學(xué)生提供主動(dòng)學(xué)習(xí)(例如,對Web網(wǎng)頁設(shè)計(jì)、ASP或ASP交互網(wǎng)頁技術(shù)、Java開發(fā)環(huán)境、商用數(shù)據(jù)庫應(yīng)用、電子商務(wù)、客戶機(jī)/服務(wù)器技術(shù)、Visio與Rose軟件工具等內(nèi)容的學(xué)習(xí))、進(jìn)一步實(shí)踐的機(jī)會,并且通過實(shí)訓(xùn)實(shí)踐中,提高學(xué)生的自學(xué)能力、書面與口頭體現(xiàn)能力、發(fā)明能力和與團(tuán)體其它組員交往和協(xié)作開發(fā)軟件的能力,提高學(xué)生此后參加開發(fā)稍大規(guī)模實(shí)際軟件項(xiàng)目和探索未知領(lǐng)域的能力和自信心。四、實(shí)習(xí)內(nèi)容1.可行性分析隨著現(xiàn)在生活節(jié)奏的加緊,人們在工作之余需要一種輕松娛樂的放松環(huán)境。因此編寫一種掃雷小游戲,首先能夠鍛煉我的Java開發(fā)能力,另首先開發(fā)此軟件能夠使顧客能在娛樂休閑的同時(shí)拓展思維能力,同時(shí)進(jìn)一步拓展研究掃雷的游戲構(gòu)造。2.系統(tǒng)分析業(yè)務(wù)流程圖數(shù)據(jù)流程圖數(shù)據(jù)字典名稱:總塊數(shù)描述:窗口上的方塊總和。數(shù)據(jù)流來源:游戲開始前,顧客輸入方塊數(shù)。數(shù)據(jù)流去向:初始化后窗口上的方塊數(shù)。數(shù)據(jù)流構(gòu)成:行數(shù)+列數(shù)+總數(shù)。名稱:雷數(shù)描述:窗口上雷的數(shù)量數(shù)據(jù)流來源:總塊數(shù)/10數(shù)據(jù)流去向:初始化后窗口上的雷數(shù)數(shù)據(jù)流構(gòu)成:行號+列號+總數(shù)。數(shù)據(jù)加工解決顧客輸入總塊數(shù)后,系統(tǒng)初始化,開始生成窗口,并隨機(jī)分布雷的位置,雷數(shù)為總塊數(shù)除以10,最后在全部的塊上覆蓋上按鈕,游戲開始。3.系統(tǒng)設(shè)計(jì)編碼規(guī)范大括號的使用商定。如果是大括號內(nèi)為空,則簡潔地寫成{}即可,不需要換行;如果是非空代碼塊則:左大括號前不換行。左大括號后換行。右大括號前換行。右大括號后尚有else等代碼則不換行;表達(dá)終止的右大括號后必須換行。左小括號和字符之間不出現(xiàn)空格;同樣,右小括號和字符之間也不出現(xiàn)空格。代碼中的命名均不能下列劃線或美元符號開始,也不能下列劃線或美元符號結(jié)束。代碼中的命名嚴(yán)禁使用拼音與英文混合的方式,更不允許直接使用中文的方式。類名使用UpperCamelCase風(fēng)格,必須遵從駝峰形式,辦法名、參數(shù)名、組員變量、局部變量都統(tǒng)一使用lowerCamelCase風(fēng)格,必須遵從駝峰形式。抽象類命名使用Abstract或Base開頭;異常類命名使用Exception結(jié)尾;測試類命名以它要測試的類的名稱開始,以Test結(jié)尾。包名統(tǒng)一使用小寫,點(diǎn)分隔符之間有且僅有一種自然語義的英語單詞。包名統(tǒng)一使用單數(shù)形式,但是類名如果有復(fù)數(shù)含義,類名能夠使用復(fù)數(shù)形式。4.系統(tǒng)實(shí)施源代碼importjava.awt.Container;importjavax.swing.JFrame;publicclassstarter{ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstubJFrameclearing=newJFrame();GamePanelgamePanel=newGamePanel(20,20);int[]i=gamePanel.returnSize();clearing.setSize(i[0]+20,i[1]+40);clearing.setTitle("掃雷");clearing.setLocation(500,200);Containerc=clearing.getContentPane();c.add(gamePanel);clearing.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);clearing.setVisible(true); }}importjava.awt.Color;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.MouseEvent;importjava.awt.event.MouseListener;importjavax.swing.BorderFactory;importjavax.swing.JLabel;importjavax.swing.JPanel;importjavax.swing.JOptionPane;publicclassGamePanelextendsJPanelimplementsMouseListener{ privateintrow;//行 privateintcol;//列 privateintboomCount; privatefinalintwidth=20; privatefinalintheight=20; privateJLabel[][]block; privateMybutton[][]buttons; privatefinalint[][]offset={{-1,-1},{0,-1},{1,-1},{1,0},{1,1},{0,1},{-1,1},{-1,0}}; publicGamePanel(introw,intcol){ this.row=row; this.col=col; this.boomCount=row*col/10+10; this.block=newJLabel[row][col]; this.buttons=newMybutton[row][col]; this.setLayout(null); this.initbutton(); this.initblock(); }privatevoidinitblock(){ for(inti=0;i<this.row;i++){ for(intj=0;j<this.col;j++){ JLabell=newJLabel("",JLabel.CENTER); l.setBounds(j*width,i*height,width,height); l.setBorder(BorderFactory.createLineBorder(Color.black)); l.setOpaque(true); l.setBackground(Color.getHSBColor(255,0,104)); this.add(l); block[i][j]=l; } } randomboom(); writeNumber(); } publicint[]returnSize(){ int[]a={this.col*width,this.row*height}; returna; } privatevoidrandomboom(){ for(inti=0;i<this.boomCount;i++){ intboomrow=(int)(Math.random()*this.row); intboomcol=(int)(Math.random()*this.col); this.block[boomrow][boomcol].setText("*"); this.block[boomrow][boomcol].setBackground(Color.gray); this.block[boomrow][boomcol].setForeground(Color.red); } } privatevoidinitbutton(){ for(inti=0;i<this.row;i++){ for(intj=0;j<this.col;j++){ Mybuttonbutton=newMybutton(); button.setBounds(j*width,i*height,width,height); this.add(button); buttons[i][j]=button; button.rows=i; button.cols=j; button.addMouseListener(this); } } }privatevoidwriteNumber(){ for(inti=0;i<this.row;i++){ for(intj=0;j<this.col;j++){ if(block[i][j].getText().equals("*")){ continue; } intboomCount=0; for(int[]off:offset){ introw=i+off[1]; intcol=j+off[0]; if(verify(row,col)&&block[row][col].getText().equals("*")){ boomCount++; } } if(boomCount>0){ block[i][j].setText(String.valueOf(boomCount)); } } } } privatevoidopen(Mybuttonbtn){ btn.setVisible(false); switch(block[btn.rows][btn.cols].getText()){ case"*":for(inti=0;i<row;i++){ for(intj=0;j<col;j++){ buttons[i][j].setVisible(false); } } JOptionPane.showMessageDialog(null,"你踩到雷了,游戲結(jié)束。"); break; case"":for(int[]off:offset){ intnewRow=btn.rows+off[0]; intnewCol=btn.cols+off[1]; if(verify(newRow,newCol)){ MybuttonsButton=buttons[newRow][newCol]; if(sButton.isVisible()){ open(sButton); } } } default: } } privatebooleanverify(introws,intcols){ returnrows>=0&&rows<this.row&&cols>=0&&cols<this.col; } @Override publicvoidmouseClicked(MouseEvente){ //TODOAuto-generatedmethodstub if(e.getButton()==MouseEvent.BUTTON1){ open((Mybutton)e.getSource()); } }游戲運(yùn)行界面五、實(shí)習(xí)小結(jié)或體會這次軟件工程課程中,我學(xué)到了諸多東西,第一次深刻的體會到了什么叫做用工程化的思想來編寫軟件,以前自己也寫過某些小東西,沒有做過大型的項(xiàng)目,直到這次課堂我需要完畢“掃雷”這個(gè)項(xiàng)目,才發(fā)現(xiàn)運(yùn)用工程化的思想來做是如此的有必要。從這里,我才真正的意識到實(shí)施一種軟件工程并不是說簡樸的會編碼就能夠解決問題的,我們更多的精力不是放在編碼上,編碼只是一種很小的模塊,只占到那么小的一種部分。這個(gè)事實(shí)在很大程度上顛覆了我以前的思想,在我以前的認(rèn)識中,似乎整個(gè)軟件就是編碼,除此無它,還好有老師的指導(dǎo),否則真的會出現(xiàn)老師所說的,撞得頭破血流之后才想起來用軟件工程的思想來完畢這個(gè)工作。剛真正開始工作之前,我費(fèi)了諸多的時(shí)間來完畢某些前端工作,如需求分析和可行性分析,這塊工作在別人看來可能是相對無關(guān)緊要,甚至是多于的,其實(shí),換做在以前,我也會這樣認(rèn)為??墒牵椰F(xiàn)在算是深深地明白了磨刀不誤砍柴工的道理,這些工作的完畢太有必要了,太重要了,要想你的軟件有用有市場,能被別人接受和承認(rèn),在進(jìn)行過程中不會出現(xiàn)崩潰性的問題,這些工作缺一不可。尚有就是接下來的某些設(shè)計(jì)模塊,此模塊與軟件編碼涉及比較緊密,重要是解決某些參數(shù)傳遞和接口通訊的問題,此模塊對我的觸動(dòng)遠(yuǎn)沒有上兩個(gè)模塊對我的影響大,因此再次也不做過多的介紹。碰到問題先自己思考,無從下手再找高手幫忙看看,注意他幫你看的思路,別在一旁閑著,看多了自己也會了,否則你一輩子都停留在那種水平,從人

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論