版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 課 程 設(shè) 計(jì) 報(bào) 告</p><p> 課程名稱 JAVA </p><p> 課題名稱 BeatBox </p><p> 2013 年 12 月 13 日</p><p><b> 目錄</b&g
2、t;</p><p> 設(shè)計(jì)內(nèi)容與要求…………………………………………………4</p><p> 摘要與前言……………………………………………………… 5</p><p> 術(shù)語解釋…………………………………………………………6</p><p> 創(chuàng)建播放器的圖形用戶界面所需的控件………………………6</p><p
3、> 程序運(yùn)行界面與結(jié)論……………………………………………7</p><p> 設(shè)計(jì)總結(jié)與心得體會(huì)……………………………………………8</p><p> 附錄 ……………………………………………………………………9</p><p> 1 參考文獻(xiàn)……………………………………………………………9</p><p> 2 源代碼………
4、………………………………………………………9</p><p> 3 理學(xué)院課程設(shè)計(jì)評(píng)分表……………………………………………14</p><p> 一、設(shè)計(jì)內(nèi)容與設(shè)計(jì)要求</p><p><b> 設(shè)計(jì)內(nèi)容:</b></p><p> ①創(chuàng)建出帶有256個(gè)復(fù)選框的GUI。初始的時(shí)候這些復(fù)選框都是未勾選的,
5、 樂器的名稱用到16個(gè)JLabel,還有4個(gè)按鈕。</p><p> ?、趯?duì)上面的4個(gè)按鈕注冊(cè)ActionListener.我們無需個(gè)別的監(jiān)聽復(fù)選框, 因?yàn)槲覀儾粫?huì)試著動(dòng)態(tài)地(在復(fù)選框被點(diǎn)選時(shí))馬上改變發(fā)聲的樣式。</p><p> 相反,我們會(huì)等到用戶按下start按鈕之后才會(huì)檢這256個(gè)復(fù)選框的</p><p> 狀態(tài)并制作出MIDI的track。
6、</p><p> ?、谠O(shè)定MIDI系統(tǒng),這包括取得Sequencer、創(chuàng)建Sequence以及track。</p><p> 我們會(huì)用到j(luò)ava5.0之后才有的setLoopCount()這個(gè)sequencer的方</p><p> 法。它能讓你指定重復(fù)播放的次數(shù)。我們也會(huì)用到節(jié)奏因子(tempo factor)來調(diào)整節(jié)奏的速度,并維持重復(fù)時(shí)的節(jié)奏
7、。</p><p> ?、郛?dāng)用戶按下start時(shí),啟動(dòng)真正的操作。此按鈕的事件處理程序會(huì)調(diào)用</p><p> butildTrackAndStart()方法。在該方法中,我們會(huì)逐個(gè)(一次一行)</p><p> 取得256個(gè)復(fù)選框的狀態(tài),然后使用這些信息來創(chuàng)建MIDI的track(使</p><p> 用之前編寫的makeEvent(
8、))。一旦track完成之后,我們會(huì)啟動(dòng)</p><p> sequencer來持續(xù)播放直到用戶按下stop為止。 </p><p><b> 2.設(shè)計(jì)要求:</b></p><p> 課程設(shè)計(jì)報(bào)告正文內(nèi)容</p><p> 實(shí)現(xiàn)音頻文件的正確播放;</p><p> 能夠?qū)崿F(xiàn)對(duì)音頻播放
9、的控制,如播放、暫停、加速、減速;</p><p> 能夠進(jìn)行文件音頻的選擇;</p><p> ①掌握J(rèn)ava的語言規(guī)范,面向?qū)ο蟮暮诵母拍詈吞匦浴?lt;/p><p> ②掌握J(rèn)ava的編程技術(shù),包括異常處理,圖形界面設(shè)計(jì),多線程, 網(wǎng)絡(luò),通信程序等;</p><p> ?、壅莆彰嫦?qū)ο蟮乃枷牒统绦蛟O(shè)計(jì)方法。</p>
10、;<p> 附件(所有程序的原代碼,要求對(duì)程序?qū)懗霰匾淖⑨專?lt;/p><p><b> 二、摘要與前言</b></p><p><b> 摘要</b></p><p> 在信息,技術(shù)高速發(fā)展的今天,多媒體技術(shù)也越來越受到人們的重視。文章對(duì)目前使用較多的音樂播放器作出較詳細(xì)的比較。通過閱讀多張文獻(xiàn),
11、分析了一些音樂播放器的功能并考慮了怎樣能實(shí)現(xiàn)支持更多格式的音樂文件,怎樣能滿足使用者對(duì)播放器的需求。本文主要介紹了一個(gè)基于Java Applet來實(shí)現(xiàn)的音樂播放器的設(shè)計(jì)。并對(duì)系統(tǒng)開發(fā)中涉及到的關(guān)鍵技術(shù)作了探討,簡(jiǎn)要分析介紹了Java技術(shù)和 Applet的工作原理,最后說明系統(tǒng)需要實(shí)現(xiàn)的功能。</p><p><b> 前言</b></p><p> 近年來,聽音樂
12、已成為人們生活的一部分,與此同時(shí),音樂播放器以其平易近人的價(jià)格也日趨普及,這大大豐富了業(yè)余生活也緩解了工作壓力,但尚有諸多不足之處有待改進(jìn)日常生活中,我們?cè)诼犚魰r(shí),常感手動(dòng)操作甚是麻煩且想尋找某個(gè)音頻文件須從頭到尾逐個(gè)查看,這樣費(fèi)時(shí)費(fèi)力很是不便。音樂播放器的實(shí)現(xiàn)方法,采用口述音樂文件名的方式即可播放指定歌曲文件,避免了繁瑣的查找,亦使其更加人性化,實(shí)現(xiàn)了播放器的全自動(dòng)語音控制。 我將來要采用java Applet的多媒體技術(shù),設(shè)計(jì)出一個(gè)
13、基于java Applet的音樂播放器。</p><p> 現(xiàn)在電腦上的音樂播放器百花齊放,以Winamp,F(xiàn)oobar2000,千千靜聽,酷狗和酷我音樂盒最流行。播放器最重要的參數(shù)當(dāng)屬支持的格式了,即使只圖個(gè)響,也需要有豐富的格式作為后盾。在此方面,千千靜聽支持多種音頻格式,除了常見的MP3,WMA等,也支持APE,F(xiàn)LAC等無損壓縮格式,它一共支持三十多種音頻格式,是一個(gè)比較全能的播放器。Winamp也支持
14、非常多的格式,但對(duì)APE格式的支持需要安裝對(duì)應(yīng)插件;除音頻格式外,Winamp還支持一些常見的視頻格式,這個(gè)功能能為用戶帶來一些方便。Foobar2000支持的格式數(shù)量也差不多,但是對(duì)APE的支持仍然需要安裝插件。不過Foobar2000有一個(gè)特色功能,它支持直接讀取壓縮包里的音樂文件,從電騾上下載的APE完整碟通常都是打包的,如果用Foobar2000的這個(gè)功能就可以不解壓直接聽歌了。</p><p> 相比
15、之下,酷我音樂盒支持的格式就比較單一了,無論是網(wǎng)上搜索還是本地播放歌曲,都僅支持MP3和WMA種格式??峁返谋憩F(xiàn)則稍微好點(diǎn),除了支持MP3和WMA之外,還支持APE和FLAC格式。而酷我音樂盒,則支持在線MV視頻的播放。在本文中我利用java語言設(shè)計(jì)的音樂播放器的功能跟千千靜聽,酷狗和酷我音樂盒,Winamp,F(xiàn)oobar2000的功能差不多,不過利用java設(shè)計(jì)的音樂播放器支持的音頻文件格式比它們豐富一點(diǎn)。如:WAP,AIFF,MID
16、I,AU,RMF等跨平臺(tái)功能比較強(qiáng)。</p><p><b> 三、術(shù)語解釋:</b></p><p> Awt抽象窗口工具包(Abstract Windowing Toolkit)(AWT)是Java的平臺(tái)獨(dú)立的窗口系統(tǒng),圖形和用戶界面器件工具包。AWT是Java基礎(chǔ)類 (JFC)的一部分,為Java程序提供圖形用戶界面(GUI)的標(biāo)準(zhǔn)API。AWT提供了Jav
17、aApplet和Java Application中可用的用戶圖形界面GUI中的基本組件(components)。由于Java是一種獨(dú)立于平臺(tái)的程序設(shè)計(jì)語言,但GUI卻往往是依賴于特定平臺(tái)的,Java采用了相應(yīng)的技術(shù)使得AWT能提供給應(yīng)用程序獨(dú)立于機(jī)器平臺(tái)的接口,這保證了同一程序的GUI在不同機(jī)器上運(yùn)行具有類似的外觀(不一定完全一致)。</p><p> Swing是目前Java中不可缺少的窗口工具組,是用戶建立
18、圖形化用戶界面(GUI)程序的強(qiáng)大工具。Java Swing組件自動(dòng)產(chǎn)生各種事件來響應(yīng)用戶行為。如當(dāng)用戶點(diǎn)擊按鈕或選擇菜單項(xiàng)目時(shí)Swing組件會(huì)產(chǎn)生一個(gè)ActionEvent。Swing組件會(huì)產(chǎn)生許多事件,如ActionEvents,ChangeEvents,ItemEvents等,來響應(yīng)用戶的鼠標(biāo)點(diǎn)擊行為,列表框中值的改變,計(jì)時(shí)器的開計(jì)時(shí)等行為。在Java Swing編程中,通過注冊(cè)監(jiān)聽器,我們可以監(jiān)聽事件源產(chǎn)生的事件,從而在事件處理
19、程序中處理們所需要處理的用戶行為。Java Swing中處理各組件事件的一般步驟是:</p><p> 1.新建一個(gè)組件(如JButton)。</p><p> 2.將該組件添加到相應(yīng)的面板(如JPanel)。</p><p> 3.注冊(cè)監(jiān)聽器以監(jiān)聽事件源產(chǎn)生的事件(如通過ActionListener來響應(yīng)用戶點(diǎn)擊按鈕)。</p><p&g
20、t; 4.定義處理事件的方法(如在ActionListener中的actionPerformed中定義相應(yīng)方法)。</p><p> 以上步驟我們可以用多種方法實(shí)現(xiàn)。但人們通常用二種方法。第一種方法是只利用一個(gè)監(jiān)聽</p><p> 四、創(chuàng)建播放器的圖形用戶界面所需的控件</p><p> ArrayList<JCheckBox> checkbo
21、xList; //把checkbox儲(chǔ)存在ArrayList</p><p> String[] instrumentNames = {"Bass Drum", "Closed Hi-Hat", </p><p> "Open Hi-Hat","Acoustic Snare", "Crash Cy
22、mbal", "Hand Clap"</p><p> "High Tom", "Hi Bongo", "Maracas", "Whistle", "Low Conga", </p><p> "Cowbell", "Vibra
23、slap", "Low-mid Tom", "High Agogo", </p><p> "Open Hi Conga"}; //樂器的名稱,以string的array維護(hù)</p><p> int[] instruments = {35,42,46,38,49,39,50,60,70,72,64,56,58,47
24、,67,63};</p><p> //實(shí)際的樂器的關(guān)鍵字,這些數(shù)字與上方的樂器對(duì)應(yīng)</p><p> background.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); //設(shè)定面板上擺設(shè)組件式的空白邊緣</p><p> //創(chuàng)建checkbox組,設(shè)定成未勾選的balse并加到Array
25、List和面板上</p><p> for (int i = 0; i < 256; i++) { </p><p> JCheckBox c = new JCheckBox();</p><p> c.setSelected(false);</p><p> checkboxList.ad
26、d(c);</p><p> mainPanel.add(c); </p><p><b> } // 循環(huán)結(jié)束</b></p><p> track = sequence.createTrack(); //消除舊的track做一個(gè)新的</p><p> makeTracks(trackLi
27、st); //創(chuàng)建此樂器的事件并加到track上</p><p> sequencer.setLoopCount(sequencer.LOOP_CONTINUOUSLY);</p><p> // 重復(fù)的次數(shù)為無窮大</p><p> equencer.setTempoFactor((float)(tempoFactor * 1.03));</p>
28、;<p> //節(jié)奏因子,預(yù)設(shè)為1.0 , 每次調(diào)整3%</p><p> 五、程序運(yùn)行界面與結(jié)論</p><p><b> 程序運(yùn)行界面:</b></p><p><b> 結(jié)論</b></p><p> 本文介紹了基于java applet音樂播放器的關(guān)鍵技術(shù)。并對(duì)App
29、let的基本原理與設(shè)計(jì)方法,對(duì)Appplet實(shí)現(xiàn)的多媒體功能。我將要設(shè)計(jì)的播放器,使用Swing組件生成播放器的菜單欄,利用JButton類創(chuàng)建按鈕,JLabel類創(chuàng)建標(biāo)簽,JList類創(chuàng)建列表框等方法實(shí)現(xiàn)播放器的基本功能。</p><p> 六、設(shè)計(jì)總結(jié)與心得體會(huì)</p><p> 經(jīng)過這段為期不久的課程設(shè)計(jì),使我對(duì)于Java有了更深層次的理解,認(rèn)識(shí)變量,使用Java的函數(shù)庫,深入多
30、態(tài),如何創(chuàng)建完整版本的BeatBox。</p><p> 在這個(gè)過程中。我也曾因?yàn)閷?shí)踐經(jīng)驗(yàn)缺乏失落過;也曾經(jīng)仿真成功而熱情高漲。生活就這樣;雖然這只是一次極其簡(jiǎn)單的課程設(shè)計(jì);可是平心而論,也耗費(fèi)我不少的心血。這讓我不得不對(duì)我們社會(huì)的付出的老一輩;為了我們的生活更美好,他們?yōu)槲覀兏冻龆嗌傩难?lt;/p><p> 我感覺用心細(xì)心地做好一件事情的重要性,在這次課程設(shè)計(jì)中,體會(huì)到了做設(shè)計(jì)的嚴(yán)謹(jǐn)
31、,更加加深了我對(duì)課程設(shè)計(jì)的興趣,在此次課程設(shè)計(jì)過程中,遇到不懂的問題我會(huì)及時(shí)向老師,同學(xué)請(qǐng)教,以更好地完成該項(xiàng)課題設(shè)計(jì)。</p><p> 一個(gè)人的能力有限;此次的程序設(shè)計(jì)能夠成功,是我自身的努力和尋求老師同學(xué)的幫助共同努力作用的結(jié)果。在這一段努力學(xué)習(xí)的過程中,收獲還真是不少,雖然說以前非常不懂這門語言,在它上面花費(fèi)了好多心血,覺得它很難,是需用花費(fèi)了大量的時(shí)間編寫出來的?,F(xiàn)在真正的明白了一些代碼的應(yīng)用,每個(gè)程
32、序都有一些共同點(diǎn),通用的結(jié)構(gòu),相似的格式。只要努力去學(xué)習(xí),就會(huì)靈活的去應(yīng)用它。</p><p> 以后,努力學(xué)習(xí)好這么課程,讓自己擁有更多的知識(shí),才能解決更多的問題。</p><p><b> 附錄</b></p><p><b> 1、參考文獻(xiàn):</b></p><p> [1]劉慧寧,那
33、盟.Java程序設(shè)計(jì)[M].北京:機(jī)械工業(yè)出版社,2005,10:309-312.</p><p> [2]朱喜福,趙敏,夏齊霄,等.java程序設(shè)計(jì)[M].北京:人民郵電出版社,2005,2:272-290.</p><p> [3]Y.Daniel Liang 著,馬海軍,景麗等 譯.java編程原理與實(shí)踐[M].北京:清華大學(xué)出版社2005,8:367-643.</p>
34、;<p> [4]徐明浩 著,武轉(zhuǎn)海,譯.java編程基礎(chǔ)應(yīng)用與實(shí)例[M].北京:人民郵電出版社,2005,10:342-347.</p><p> [5] 蔡學(xué)鏞.java歷史回顧[J].WWW.cnki.net,2009,4:53-55.</p><p> [6]王祖析.基于java技術(shù)的網(wǎng)絡(luò)教學(xué)互動(dòng)系統(tǒng)的構(gòu)建[J].學(xué)術(shù)探討,2009:74-78.</p&g
35、t;<p> [7]湯庸 主編,馮至圣,申建芳 等.java 程序設(shè)計(jì)與實(shí)踐[J].北京:冶金工業(yè)出社,2003,1:208-212.</p><p> [8] 馬義德 ,周煒超 ,文 芳 ,李柏年,李 庚 . 基于SPCE061A 的聲控 mp3播放器設(shè)計(jì)[J]. 電子設(shè)計(jì),2009:217-301.</p><p> [9] 周華中,李繼凱.基于J2ME 流媒體播放
36、器的模型設(shè)計(jì)[J].科技創(chuàng)新導(dǎo)報(bào),2009:15-18.</p><p> [10]春水東流. 不讓超級(jí)旋風(fēng)自動(dòng)關(guān)聯(lián)QQ音樂播放器[J]. 電腦迷,2009,(7).</p><p><b> 2、源代碼:</b></p><p> import java.awt.*;</p><p> import javax
37、.swing.*;</p><p> import javax.sound.midi.*;</p><p> import java.util.*;</p><p> import java.awt.event.*;</p><p> public class BeatBox {</p><p> JPane
38、l mainPanel;</p><p> ArrayList<JCheckBox> checkboxList;</p><p> Sequencer sequencer;</p><p> Sequence sequence;</p><p> Track track;</p><p> JFr
39、ame theFrame;</p><p> String[] instrumentNames = {"Bass Drum", "Closed Hi-Hat", </p><p> "Open Hi-Hat","Acoustic Snare", "Crash Cymbal", "
40、;Hand Clap", </p><p> "High Tom", "Hi Bongo", "Maracas", "Whistle", "Low Conga", </p><p> "Cowbell", "Vibraslap", &qu
41、ot;Low-mid Tom", "High Agogo", </p><p> "Open Hi Conga"};</p><p> int[] instruments = {35,42,46,38,49,39,50,60,70,72,64,56,58,47,67,63};</p><p> public s
42、tatic void main (String[] args) {</p><p> new BeatBox().buildGUI();</p><p><b> }</b></p><p> public void buildGUI() {</p><p> theFrame = new JFrame(&quo
43、t;Cyber BeatBox");</p><p> theFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</p><p> BorderLayout layout = new BorderLayout();</p><p> JPanel background = new JPanel(
44、layout);</p><p> background.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));</p><p> checkboxList = new ArrayList<JCheckBox>();</p><p> Box buttonBox = new Box(BoxL
45、ayout.Y_AXIS);</p><p> JButton start = new JButton("Start");</p><p> start.addActionListener(new MyStartListener());</p><p> buttonBox.add(start); </p>&
46、lt;p> JButton stop = new JButton("Stop");</p><p> stop.addActionListener(new MyStopListener());</p><p> buttonBox.add(stop);</p><p> JButton upTempo = new JButton(&
47、quot;Tempo Up");</p><p> upTempo.addActionListener(new MyUpTempoListener());</p><p> buttonBox.add(upTempo);</p><p> JButton downTempo = new JButton("Tempo Down");
48、</p><p> downTempo.addActionListener(new MyDownTempoListener());</p><p> buttonBox.add(downTempo);</p><p> Box nameBox = new Box(BoxLayout.Y_AXIS);</p><p> for (int
49、 i = 0; i < 16; i++) {</p><p> nameBox.add(new Label(instrumentNames[i]));</p><p><b> }</b></p><p> background.add(BorderLayout.EAST, buttonBox);</p><p&
50、gt; background.add(BorderLayout.WEST, nameBox);</p><p> theFrame.getContentPane().add(background);</p><p> GridLayout grid = new GridLayout(16,16);</p><p> grid.setVgap(1);</
51、p><p> grid.setHgap(2);</p><p> mainPanel = new JPanel(grid);</p><p> background.add(BorderLayout.CENTER, mainPanel);</p><p> for (int i = 0; i < 256; i++) {
52、 </p><p> JCheckBox c = new JCheckBox();</p><p> c.setSelected(false);</p><p> checkboxList.add(c);</p><p> mainPanel.add(c); </p><
53、;p> } // end loop</p><p> setUpMidi();</p><p> theFrame.setBounds(50,50,300,300);</p><p> theFrame.pack();</p><p> theFrame.setVisible(true);</p><p&g
54、t; } // close method</p><p> public void setUpMidi() {</p><p><b> try {</b></p><p> sequencer = MidiSystem.getSequencer();</p><p> sequencer.open();<
55、;/p><p> sequence = new Sequence(Sequence.PPQ,4);</p><p> track = sequence.createTrack();</p><p> sequencer.setTempoInBPM(120);</p><p> } catch(Exception e) {e.printSt
56、ackTrace();}</p><p> } // close method</p><p> public void buildTrackAndStart() {</p><p> int[] trackList = null;</p><p> sequence.deleteTrack(track);</p>&l
57、t;p> track = sequence.createTrack();</p><p> for (int i = 0; i < 16; i++) {</p><p> trackList = new int[16];</p><p> int key = instruments[i]; </p><p> for
58、 (int j = 0; j < 16; j++ ) { </p><p> JCheckBox jc = (JCheckBox) checkboxList.get(j + (16*i));</p><p> if ( jc.isSelected()) {</p><p> trackList[j] = key;</p>&
59、lt;p><b> } else {</b></p><p> trackList[j] = 0;</p><p> } </p><p> } // close inner loop</p><p> makeTracks(trackList);</p>
60、<p> track.add(makeEvent(176,1,127,0,16)); </p><p> } // close outer</p><p> track.add(makeEvent(192,9,1,0,15)); </p><p><b> try {</b></p><p&
61、gt; sequencer.setSequence(sequence); </p><p> sequencer.setLoopCount(sequencer.LOOP_CONTINUOUSLY); </p><p> sequencer.start();</p><p> sequencer.setTempoInBPM(
62、120);</p><p> } catch(Exception e) {e.printStackTrace();}</p><p> } // close buildTrackAndStart method</p><p> public class MyStartListener implements ActionListener {</p>
63、<p> public void actionPerformed(ActionEvent a) {</p><p> buildTrackAndStart();</p><p><b> }</b></p><p> } // close inner class</p><p> public cl
64、ass MyStopListener implements ActionListener {</p><p> public void actionPerformed(ActionEvent a) {</p><p> sequencer.stop();</p><p><b> }</b></p><p> }
65、 // close inner class</p><p> public class MyUpTempoListener implements ActionListener {</p><p> public void actionPerformed(ActionEvent a) {</p><p> float tempoFactor = sequence
66、r.getTempoFactor(); </p><p> sequencer.setTempoFactor((float)(tempoFactor * 1.03));</p><p><b> }</b></p><p> } // close inner class</p><p> public class
67、 MyDownTempoListener implements ActionListener {</p><p> public void actionPerformed(ActionEvent a) {</p><p> float tempoFactor = sequencer.getTempoFactor();</p><p> sequencer.se
68、tTempoFactor((float)(tempoFactor * .97));</p><p><b> }</b></p><p> } // close inner class</p><p> public void makeTracks(int[] list) { </p><p> f
69、or (int i = 0; i < 16; i++) {</p><p> int key = list[i];</p><p> if (key != 0) {</p><p> track.add(makeEvent(144,9,key, 100, i));</p><p> track.add(makeEvent(128
70、,9,key, 100, i+1));</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> public MidiEvent makeEvent(int comd, int chan, i
71、nt one, int two, int tick) {</p><p> MidiEvent event = null;</p><p><b> try {</b></p><p> ShortMessage a = new ShortMessage();</p><p> a.setMessage(comd
72、, chan, one, two);</p><p> event = new MidiEvent(a, tick);</p><p> } catch(Exception e) {e.printStackTrace(); }</p><p> return event;</p><p><b> }</b>&l
73、t;/p><p> } // close class</p><p> 理學(xué)院課程設(shè)計(jì)評(píng)分表</p><p> 課程名稱: java課程設(shè)計(jì) </p><p> 教師簽名: </p><p> 日 期: <
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- java課程設(shè)計(jì)----課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)報(bào)告-
- java課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)報(bào)告
- JAVA課程設(shè)計(jì)報(bào)告.doc
- java語言課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告--java日歷設(shè)計(jì)
- java課程設(shè)計(jì)報(bào)告---java實(shí)現(xiàn)畫筆系統(tǒng)
- java課程設(shè)計(jì)-猜數(shù)游戲課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)-蜘蛛紙牌游戲設(shè)計(jì)課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)報(bào)告——蜘蛛紙牌
- java課程設(shè)計(jì)--掃雷游戲報(bào)告
- java代購網(wǎng)課程設(shè)計(jì)報(bào)告
- java坦克大戰(zhàn)課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)報(bào)告---考試系統(tǒng)
- java課程設(shè)計(jì)報(bào)告--hannoi塔
- java火柴游戲課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)報(bào)告—蜘蛛紙牌
- java課程設(shè)計(jì)報(bào)告--hannoi塔
評(píng)論
0/150
提交評(píng)論