2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  課 程 設 計 報 告</p><p>  課程名稱 JAVA </p><p>  課題名稱 BeatBox </p><p>  2013 年 12 月 13 日</p><p><b>  目錄</b&g

2、t;</p><p>  設計內容與要求…………………………………………………4</p><p>  摘要與前言……………………………………………………… 5</p><p>  術語解釋…………………………………………………………6</p><p>  創(chuàng)建播放器的圖形用戶界面所需的控件………………………6</p><p

3、>  程序運行界面與結論……………………………………………7</p><p>  設計總結與心得體會……………………………………………8</p><p>  附錄 ……………………………………………………………………9</p><p>  1 參考文獻……………………………………………………………9</p><p>  2 源代碼………

4、………………………………………………………9</p><p>  3 理學院課程設計評分表……………………………………………14</p><p>  一、設計內容與設計要求</p><p><b>  設計內容:</b></p><p> ?、賱?chuàng)建出帶有256個復選框的GUI。初始的時候這些復選框都是未勾選的,

5、 樂器的名稱用到16個JLabel,還有4個按鈕。</p><p> ?、趯ι厦娴?個按鈕注冊ActionListener.我們無需個別的監(jiān)聽復選框, 因為我們不會試著動態(tài)地(在復選框被點選時)馬上改變發(fā)聲的樣式。</p><p>  相反,我們會等到用戶按下start按鈕之后才會檢這256個復選框的</p><p>  狀態(tài)并制作出MIDI的track。

6、</p><p>  ②設定MIDI系統(tǒng),這包括取得Sequencer、創(chuàng)建Sequence以及track。</p><p>  我們會用到java5.0之后才有的setLoopCount()這個sequencer的方</p><p>  法。它能讓你指定重復播放的次數(shù)。我們也會用到節(jié)奏因子(tempo factor)來調整節(jié)奏的速度,并維持重復時的節(jié)奏

7、。</p><p> ?、郛斢脩舭聪聅tart時,啟動真正的操作。此按鈕的事件處理程序會調用</p><p>  butildTrackAndStart()方法。在該方法中,我們會逐個(一次一行)</p><p>  取得256個復選框的狀態(tài),然后使用這些信息來創(chuàng)建MIDI的track(使</p><p>  用之前編寫的makeEvent(

8、))。一旦track完成之后,我們會啟動</p><p>  sequencer來持續(xù)播放直到用戶按下stop為止。 </p><p><b>  2.設計要求:</b></p><p>  課程設計報告正文內容</p><p>  實現(xiàn)音頻文件的正確播放;</p><p>  能夠實現(xiàn)對音頻播放

9、的控制,如播放、暫停、加速、減速;</p><p>  能夠進行文件音頻的選擇;</p><p> ?、僬莆認ava的語言規(guī)范,面向對象的核心概念和特性。</p><p>  ②掌握Java的編程技術,包括異常處理,圖形界面設計,多線程, 網(wǎng)絡,通信程序等;</p><p> ?、壅莆彰嫦驅ο蟮乃枷牒统绦蛟O計方法。</p>

10、;<p>  附件(所有程序的原代碼,要求對程序寫出必要的注釋)。</p><p><b>  二、摘要與前言</b></p><p><b>  摘要</b></p><p>  在信息,技術高速發(fā)展的今天,多媒體技術也越來越受到人們的重視。文章對目前使用較多的音樂播放器作出較詳細的比較。通過閱讀多張文獻,

11、分析了一些音樂播放器的功能并考慮了怎樣能實現(xiàn)支持更多格式的音樂文件,怎樣能滿足使用者對播放器的需求。本文主要介紹了一個基于Java Applet來實現(xiàn)的音樂播放器的設計。并對系統(tǒng)開發(fā)中涉及到的關鍵技術作了探討,簡要分析介紹了Java技術和 Applet的工作原理,最后說明系統(tǒng)需要實現(xiàn)的功能。</p><p><b>  前言</b></p><p>  近年來,聽音樂

12、已成為人們生活的一部分,與此同時,音樂播放器以其平易近人的價格也日趨普及,這大大豐富了業(yè)余生活也緩解了工作壓力,但尚有諸多不足之處有待改進日常生活中,我們在聽音時,常感手動操作甚是麻煩且想尋找某個音頻文件須從頭到尾逐個查看,這樣費時費力很是不便。音樂播放器的實現(xiàn)方法,采用口述音樂文件名的方式即可播放指定歌曲文件,避免了繁瑣的查找,亦使其更加人性化,實現(xiàn)了播放器的全自動語音控制。 我將來要采用java Applet的多媒體技術,設計出一個

13、基于java Applet的音樂播放器。</p><p>  現(xiàn)在電腦上的音樂播放器百花齊放,以Winamp,F(xiàn)oobar2000,千千靜聽,酷狗和酷我音樂盒最流行。播放器最重要的參數(shù)當屬支持的格式了,即使只圖個響,也需要有豐富的格式作為后盾。在此方面,千千靜聽支持多種音頻格式,除了常見的MP3,WMA等,也支持APE,F(xiàn)LAC等無損壓縮格式,它一共支持三十多種音頻格式,是一個比較全能的播放器。Winamp也支持

14、非常多的格式,但對APE格式的支持需要安裝對應插件;除音頻格式外,Winamp還支持一些常見的視頻格式,這個功能能為用戶帶來一些方便。Foobar2000支持的格式數(shù)量也差不多,但是對APE的支持仍然需要安裝插件。不過Foobar2000有一個特色功能,它支持直接讀取壓縮包里的音樂文件,從電騾上下載的APE完整碟通常都是打包的,如果用Foobar2000的這個功能就可以不解壓直接聽歌了。</p><p>  相比

15、之下,酷我音樂盒支持的格式就比較單一了,無論是網(wǎng)上搜索還是本地播放歌曲,都僅支持MP3和WMA種格式??峁返谋憩F(xiàn)則稍微好點,除了支持MP3和WMA之外,還支持APE和FLAC格式。而酷我音樂盒,則支持在線MV視頻的播放。在本文中我利用java語言設計的音樂播放器的功能跟千千靜聽,酷狗和酷我音樂盒,Winamp,F(xiàn)oobar2000的功能差不多,不過利用java設計的音樂播放器支持的音頻文件格式比它們豐富一點。如:WAP,AIFF,MID

16、I,AU,RMF等跨平臺功能比較強。</p><p><b>  三、術語解釋:</b></p><p>  Awt抽象窗口工具包(Abstract Windowing Toolkit)(AWT)是Java的平臺獨立的窗口系統(tǒng),圖形和用戶界面器件工具包。AWT是Java基礎類 (JFC)的一部分,為Java程序提供圖形用戶界面(GUI)的標準API。AWT提供了Jav

17、aApplet和Java Application中可用的用戶圖形界面GUI中的基本組件(components)。由于Java是一種獨立于平臺的程序設計語言,但GUI卻往往是依賴于特定平臺的,Java采用了相應的技術使得AWT能提供給應用程序獨立于機器平臺的接口,這保證了同一程序的GUI在不同機器上運行具有類似的外觀(不一定完全一致)。</p><p>  Swing是目前Java中不可缺少的窗口工具組,是用戶建立

18、圖形化用戶界面(GUI)程序的強大工具。Java Swing組件自動產(chǎn)生各種事件來響應用戶行為。如當用戶點擊按鈕或選擇菜單項目時Swing組件會產(chǎn)生一個ActionEvent。Swing組件會產(chǎn)生許多事件,如ActionEvents,ChangeEvents,ItemEvents等,來響應用戶的鼠標點擊行為,列表框中值的改變,計時器的開計時等行為。在Java Swing編程中,通過注冊監(jiān)聽器,我們可以監(jiān)聽事件源產(chǎn)生的事件,從而在事件處理

19、程序中處理們所需要處理的用戶行為。Java Swing中處理各組件事件的一般步驟是:</p><p>  1.新建一個組件(如JButton)。</p><p>  2.將該組件添加到相應的面板(如JPanel)。</p><p>  3.注冊監(jiān)聽器以監(jiān)聽事件源產(chǎn)生的事件(如通過ActionListener來響應用戶點擊按鈕)。</p><p&g

20、t;  4.定義處理事件的方法(如在ActionListener中的actionPerformed中定義相應方法)。</p><p>  以上步驟我們可以用多種方法實現(xiàn)。但人們通常用二種方法。第一種方法是只利用一個監(jiān)聽</p><p>  四、創(chuàng)建播放器的圖形用戶界面所需的控件</p><p>  ArrayList<JCheckBox> checkbo

21、xList; //把checkbox儲存在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維護</p><p>  int[] instruments = {35,42,46,38,49,39,50,60,70,72,64,56,58,47

24、,67,63};</p><p>  //實際的樂器的關鍵字,這些數(shù)字與上方的樂器對應</p><p>  background.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); //設定面板上擺設組件式的空白邊緣</p><p>  //創(chuàng)建checkbox組,設定成未勾選的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)結束</b></p><p>  track = sequence.createTrack(); //消除舊的track做一個新的</p><p>  makeTracks(trackLi

27、st); //創(chuàng)建此樂器的事件并加到track上</p><p>  sequencer.setLoopCount(sequencer.LOOP_CONTINUOUSLY);</p><p>  // 重復的次數(shù)為無窮大</p><p>  equencer.setTempoFactor((float)(tempoFactor * 1.03));</p>

28、;<p>  //節(jié)奏因子,預設為1.0 , 每次調整3%</p><p>  五、程序運行界面與結論</p><p><b>  程序運行界面:</b></p><p><b>  結論</b></p><p>  本文介紹了基于java applet音樂播放器的關鍵技術。并對App

29、let的基本原理與設計方法,對Appplet實現(xiàn)的多媒體功能。我將要設計的播放器,使用Swing組件生成播放器的菜單欄,利用JButton類創(chuàng)建按鈕,JLabel類創(chuàng)建標簽,JList類創(chuàng)建列表框等方法實現(xiàn)播放器的基本功能。</p><p>  六、設計總結與心得體會</p><p>  經(jīng)過這段為期不久的課程設計,使我對于Java有了更深層次的理解,認識變量,使用Java的函數(shù)庫,深入多

30、態(tài),如何創(chuàng)建完整版本的BeatBox。</p><p>  在這個過程中。我也曾因為實踐經(jīng)驗缺乏失落過;也曾經(jīng)仿真成功而熱情高漲。生活就這樣;雖然這只是一次極其簡單的課程設計;可是平心而論,也耗費我不少的心血。這讓我不得不對我們社會的付出的老一輩;為了我們的生活更美好,他們?yōu)槲覀兏冻龆嗌傩难?lt;/p><p>  我感覺用心細心地做好一件事情的重要性,在這次課程設計中,體會到了做設計的嚴謹

31、,更加加深了我對課程設計的興趣,在此次課程設計過程中,遇到不懂的問題我會及時向老師,同學請教,以更好地完成該項課題設計。</p><p>  一個人的能力有限;此次的程序設計能夠成功,是我自身的努力和尋求老師同學的幫助共同努力作用的結果。在這一段努力學習的過程中,收獲還真是不少,雖然說以前非常不懂這門語言,在它上面花費了好多心血,覺得它很難,是需用花費了大量的時間編寫出來的?,F(xiàn)在真正的明白了一些代碼的應用,每個程

32、序都有一些共同點,通用的結構,相似的格式。只要努力去學習,就會靈活的去應用它。</p><p>  以后,努力學習好這么課程,讓自己擁有更多的知識,才能解決更多的問題。</p><p><b>  附錄</b></p><p><b>  1、參考文獻:</b></p><p>  [1]劉慧寧,那

33、盟.Java程序設計[M].北京:機械工業(yè)出版社,2005,10:309-312.</p><p>  [2]朱喜福,趙敏,夏齊霄,等.java程序設計[M].北京:人民郵電出版社,2005,2:272-290.</p><p>  [3]Y.Daniel Liang 著,馬海軍,景麗等 譯.java編程原理與實踐[M].北京:清華大學出版社2005,8:367-643.</p>

34、;<p>  [4]徐明浩 著,武轉海,譯.java編程基礎應用與實例[M].北京:人民郵電出版社,2005,10:342-347.</p><p>  [5] 蔡學鏞.java歷史回顧[J].WWW.cnki.net,2009,4:53-55.</p><p>  [6]王祖析.基于java技術的網(wǎng)絡教學互動系統(tǒng)的構建[J].學術探討,2009:74-78.</p&g

35、t;<p>  [7]湯庸 主編,馮至圣,申建芳 等.java 程序設計與實踐[J].北京:冶金工業(yè)出社,2003,1:208-212.</p><p>  [8] 馬義德 ,周煒超 ,文 芳 ,李柏年,李 庚 . 基于SPCE061A 的聲控 mp3播放器設計[J]. 電子設計,2009:217-301.</p><p>  [9] 周華中,李繼凱.基于J2ME 流媒體播放

36、器的模型設計[J].科技創(chuàng)新導報,2009:15-18.</p><p>  [10]春水東流. 不讓超級旋風自動關聯(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>  理學院課程設計評分表</p><p>  課程名稱: java課程設計 </p><p>  教師簽名: </p><p>  日 期: <

溫馨提示

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

評論

0/150

提交評論