c程序設(shè)計課程程序設(shè)計報告媒體播放器的設(shè)計與實現(xiàn)

上傳人:仙*** 文檔編號:28676635 上傳時間:2021-09-07 格式:DOC 頁數(shù):33 大?。?14.02KB
收藏 版權(quán)申訴 舉報 下載
c程序設(shè)計課程程序設(shè)計報告媒體播放器的設(shè)計與實現(xiàn)_第1頁
第1頁 / 共33頁
c程序設(shè)計課程程序設(shè)計報告媒體播放器的設(shè)計與實現(xiàn)_第2頁
第2頁 / 共33頁
c程序設(shè)計課程程序設(shè)計報告媒體播放器的設(shè)計與實現(xiàn)_第3頁
第3頁 / 共33頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《c程序設(shè)計課程程序設(shè)計報告媒體播放器的設(shè)計與實現(xiàn)》由會員分享,可在線閱讀,更多相關(guān)《c程序設(shè)計課程程序設(shè)計報告媒體播放器的設(shè)計與實現(xiàn)(33頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、 C#程序設(shè)計 設(shè)計說明書 媒體播放器的設(shè)計與實現(xiàn) 學(xué)生姓名 學(xué)號 班級 計算機(1)班 成績 指導(dǎo)教師 計算機科學(xué)與技術(shù) C#課程設(shè)計評閱書 題目 媒體播放器的設(shè)計與實現(xiàn) 姓名 馬林彪 學(xué)號 1006111057 成績 指導(dǎo)教師評語 指導(dǎo)教師簽名: 年 月 日 課程設(shè)計任務(wù)書 2011—2012學(xué)年第

2、一學(xué)期 專業(yè): 計算機科學(xué)與技術(shù) 學(xué)號: 1006111057 姓名: 馬林彪 課程設(shè)計名稱: C#課程設(shè)計 設(shè)計題目: 媒體播放器的設(shè)計與實現(xiàn) 完成期限:自 2011 年 xx月 xx 日至 2011 年 xx 月 xx 日共 x 周 設(shè)計依據(jù)、要求及主要內(nèi)容(可另加附頁): 根據(jù)程序設(shè)計所學(xué)知識,設(shè)計與實現(xiàn)一個媒體播放器,該XXX設(shè)計的內(nèi)容和功能要求如下: (1) 用windows me

3、dia player設(shè)計一個畫面簡潔的媒體播放器,listBox用作曲目列表框; (2) 通過按鈕既可以一次性添加一首歌曲,也可以通過文件夾一次性添加多首歌曲等; (3) 在下次播放時仍保留上次播放的的曲目; (4) 可一次性刪除一首或多首歌曲; (5) listBox有快捷菜單,該菜單包含能:播放、暫停、刪除、單曲循環(huán)、順序播放、 隨機播放、全部循環(huán)和退出; 要求:系統(tǒng)功能設(shè)計基本完善,并寫出詳細(xì)的設(shè)計說明書。 (6) 能夠播放mp3和DAT格式的音樂或MV; 指導(dǎo)教師(簽字): 批準(zhǔn)日期: 年 月 日

4、 摘 要 關(guān)鍵詞:媒體播放器; 刪除; 循環(huán); 目錄 1課題描述 1 2程序設(shè)計流程圖 1 2.1 系統(tǒng)說明 1 2.2主界面的設(shè)計 1 3 功能的設(shè)計 1 3.1 XX功能的設(shè)計 1 3.2 XX功能的設(shè)計 1 3.3 XX功能的設(shè)計 1 4測試 1 4.1系統(tǒng)測試 1 4.2 調(diào)試結(jié)果 1 4.3 錯誤原因分析 1 總結(jié) 1 參考文獻(xiàn) 1 附錄: 1 源代碼: 1 31 / 33 1課題描述 構(gòu)建一個簡單的播放器提供播放、暫停、刪除等功能,支持多種格式,窗體上有7個按

5、鈕,一個mediar player播放器控件和一個listBox控件 用來顯示曲目。 2程序設(shè)計流程圖 為界面、按鈕等控件設(shè)置屬性 用戶界面、按鈕等控件 程序開始 調(diào)式程序 添加程序代碼 運行結(jié)束 2.1 系統(tǒng)說明 在Visual Studio 2008中的C# 語言設(shè)計環(huán)境下設(shè)計出簡單的計算器的Window 窗體。 2.2主界面的設(shè)計 3 功能的設(shè)計 功能簡介: (1)添加到播放列表:在列表區(qū)域單擊右鍵中的“添加到播放列表”,

6、彈出打開本地文件的窗口,可一次添加一首或多首歌曲到播放列表中。 (2)播放:選擇歌曲,在右鍵菜單中播放歌曲,即可播放選中的歌曲;雙擊選中的歌曲也可以實現(xiàn)播放功能;直接點擊播放器中的“播放”也可播放選中的歌曲。 (3)刪除單曲:選擇要刪除的歌曲,單擊“刪除單曲”,即可從列表中刪除此歌曲。 (4)單曲循環(huán):在曲目列表框中,右擊鼠標(biāo)彈出快捷菜單,選中歌曲,右鍵,選中“單曲循環(huán)”,即可重復(fù)播放選中的歌曲。 (5)退出:單擊“退出”即可退出本系統(tǒng)。 (6)上一曲:單擊“上一曲”即可播放選中歌曲的上一曲。 (7)下一曲:單擊“下一曲”即可播放選中歌曲的下一首。 (8) 全曲循環(huán):在曲目列

7、表框中,右擊鼠標(biāo)彈出快捷菜單,選中歌曲,單擊“全部循環(huán)”,即可全部循環(huán)。 (9) 順序播放:單擊“順序播放”,即可既可按列表順序依次自動播放。 (10)刪除歌曲:在曲目列表框中,右擊鼠標(biāo)彈出快捷菜單,單擊“刪除歌曲”既可刪除所選中的一首或多首歌曲; (11)隨即播放:在曲目列表框中,右擊鼠標(biāo)彈出快捷菜單,單擊“隨機播放”既可自動實現(xiàn)隨機播放列表中的歌曲; (12)暫停/播放/退出:在曲目列表框中,右擊鼠標(biāo)彈出快捷菜單,單擊“暫?!?、“播放”、“退出”既可實現(xiàn); 1. 操作界面顯示: 播放器的主界面如下, 單擊“添加歌曲”,實現(xiàn)播放功能

8、雙擊歌曲,即可實現(xiàn)播放,如下, 主要方法: 3.1 添加歌曲功能的設(shè)計 private void btnAddFile_Click(object sender, EventArgs e) { int i; odlgMedia.FileName = ""; // 設(shè)置默認(rèn)文件名 if (odlgMedia.ShowDialog() == DialogResult.OK) {

9、 string path = odlgMedia.FileName; FileInfo f = new FileInfo(path); AddFile(f.FullName); string strFile = Convert.ToString(numOfMusic); for (i = 1; i <= 5 - strFile.Length; i++) { strFile

10、 += ""; } strFile = f.FullName; int n = strFile.LastIndexOf("\\") + 1; strFile = strFile.Substring(n) + "/" + strFile.Substring(0, n); lstFileList.Items.Add(strFile); if (lstFileList.Items.Count >=

11、0) { OpenBtn(); } } } 3.2 添加目錄功能的設(shè)計 private void btnAddFiles_Click(object sender, EventArgs e) { fbdlgMedia.ShowNewFolderButton = true; fbdlgMedia.Description = "請選擇媒體文件目錄:";

12、 fbdlgMedia.ShowNewFolderButton = false; if (fbdlgMedia.ShowDialog() == DialogResult.OK) { AddFiles(fbdlgMedia.SelectedPath, lstFileList); if (lstFileList.Items.Count > 0) { OpenBtn();

13、 } } } 3.3刪除單曲 private void btnDelete_Click(object sender, EventArgs e) { int i = lstFileList.SelectedIndex; if (lstFileList.SelectedIndex >= 0) { if ((selectOne == lstFileList.SelectedIndex) && (mediaPlayer

14、.URL != "")) { MessageBox.Show("不能刪除正在播放的文件", "錯誤"); } else { DelFile(i + 1); lstFileList.Items.RemoveAt(i); if (i < lstFileList.Items.Count)

15、 { lstFileList.SelectedIndex = i; } else if (lstFileList.Items.Count == 0) { CloseBtn(); } else {

16、 lstFileList.SelectedIndex = 0; } } } 3.4播放 private void btnPlay_Click(object sender, EventArgs e) { if (lstFileList.Items.Count > 0) { if (lstFileList.SelectedIndex < 0)

17、 { selectOne = 1; lstFileList.SelectedIndex = 0; } else { selectOne = lstFileList.SelectedIndex; } Play(selectOne); tmrMed

18、ia.Enabled = true; btnStop.Enabled = true; } } 3.5 上一首 private void btnBack_Click(object sender, EventArgs e) { int j = lstFileList.SelectedIndex; lstFileList.SelectedIndex = -1; if (j > -1) {

19、 if (j == 0) selectOne = 0; else { j -= 1; selectOne = j; } Play(selectOne); lstFileList.SelectedIndex = j; } }

20、 3.6下一曲 private void btnForward_Click(object sender, EventArgs e) { int j = lstFileList.SelectedIndex; if (j < lstFileList.Items.Count) { j = j + 1; selectOne = j; if (j == lstFileList.Items.Count)

21、 { j = lstFileList.Items.Count - 1; selectOne = j; } lstFileList.SelectedIndex = -1; Play(selectOne); btnStop.Enabled = true; lstFileList.SelectedIndex = j;

22、 } } 3.7 停止 private void btnStop_Click(object sender, EventArgs e) { mediaPlayer.URL = ""; this.Text = "媒體播放器:停止!"; tmrMedia.Enabled = false; } 3.8 刪除歌曲 private void 刪除歌曲ToolStripMenuItem_Click(object s

23、ender, EventArgs e) { int i = lstFileList.SelectedIndex; if (lstFileList.SelectedIndex >= 0) { object[] selected_objs = new object[lstFileList.SelectedItems.Count]; lstFileList.SelectedItems.CopyTo(selected_objs, 0);

24、 foreach (object oval in selected_objs) { string msg = lstFileList.Items[lstFileList.SelectedIndex].ToString(); string[] strs = msg.Split(/); string s = strs[1] + strs[0]; if (mediaP

25、layer.URL == s) { this.Text = null; mediaPlayer.URL = null; lstFileList.Items.Remove(oval); this.Text = "播放停止!"; } else

26、 lstFileList.Items.Remove(oval); } } } 3.9時鐘:tmrMedia private void tmrMedia_Tick(object sender, EventArgs e) { if (lstFileList .SelectedIndex < lstFileList.Items.Count ) { selectOne = lstFileList.S

27、electedIndex; // 用Timer控件控制連續(xù)播放 if (mediaPlayer.playState == WMPLib.WMPPlayState.wmppsStopped) { if (playOne == 1) { lstFileList.SelectedIndex = -1; lstFile

28、List.SelectedIndex = selectOne; Play(selectOne); label1.Text = "單曲循環(huán)"; } if (playOne == 2) { selectOne += 1; lstFileList.SelectedIndex =

29、 -1; if (selectOne >= lstFileList.Items.Count) { lstFileList.SelectedIndex = selectOne-1; mediaPlayer.Ctlcontrols.stop(); this.Text = "媒體播放器:停止!";

30、 // tmrMedia.Stop(); } else { lstFileList.SelectedIndex = selectOne; Play(selectOne); label1.Text = "順序播放";

31、 } } if (playOne == 3) { Random m = new Random(); selectOne = m.Next(lstFileList.Items.Count); lstFileList.SelectedIndex = -1; lstF

32、ileList.SelectedIndex = selectOne; Play(selectOne); label1.Text = "隨機播放"; } if (playOne == 4) { lstFileList.SelectedIndex = -1; selectOn

33、e += 1; if (selectOne ==lstFileList .Items .Count ) selectOne = 0; lstFileList.SelectedIndex = selectOne; Play(selectOne); label1.Text = "全部循環(huán)"; }

34、 } } } 4測試 4.1系統(tǒng)測試 4.2 調(diào)試結(jié)果 4.3 錯誤原因分析 錯誤原因:lstFileList.SelectedIndex = selectOne;超出了lstFileList .Items .Count的范圍 總結(jié) 經(jīng)過一周的課程設(shè)計,使我對Visual C#編程有了更深一層的了解。經(jīng)過編程與不斷調(diào)試,盡管依然存在很多的問題,但努力終于有了成果。設(shè)計的是簡單媒體播放器程序。整個設(shè)計的過程也是不斷學(xué)習(xí)的一個過程,在運

35、用舊知識的同時也學(xué)到了不少新知識,給自己大腦充電的同時也填補了一些相關(guān)知識方面的空白。整個設(shè)計的過程中,不僅僅只是經(jīng)歷了是失敗與成功所帶來的啟迪,還有同學(xué)之間互相幫助的友誼。通過這次課程設(shè)計,掌握住到了應(yīng)該掌握住的知識,也讓體會到了生活中應(yīng)該體會到的東西??傊@次實習(xí)是有收獲的。 參考文獻(xiàn) [1] 馬靖善等.C語言程序設(shè)計.清華大學(xué)出版社,2005 [2] 譚浩強.C語言程序設(shè)計(第二版).北京:高等教育出版社,2002 [3] 黃超.C語言程序設(shè)計.北京.人民郵電出版社.2003 [4] 譚浩強等.C語言程序設(shè)計.清華大學(xué)出版社,2007 [5] 方敏,張彤.C語言程序設(shè)

36、計.西安電子科技大學(xué)出版社.2006 附錄: 源代碼: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using Microsoft.Win32; using System.Runtime.InteropServices; using System.Thr

37、eading; namespace 音頻播放__1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } // 接下來在代碼的通用段定義以下公共數(shù)組和變量: //******************************************************************************* str

38、ing endpath = null; int i = 0; int lstFilllist = 1; string[] fileList = new string[10000]; // 定義播放列表數(shù)的最大值 int numOfMusic; // 選中的媒體文件的索引號 int selectOne; // 選中的音樂文件 int playOne = 2;

39、 // 順序播放 // 添加以下六個方法,分別用于添加單個媒體文件、添加媒體文件目錄、刪除媒體文件、播放媒體文件、打開和關(guān)閉窗體上的按鈕。 //******************************************************************************* // 添加單個媒體文件的方法 //***********************************************************************

40、******** public void AddFile(string path) { if (numOfMusic < 10000) { numOfMusic += 1; fileList[numOfMusic] = path; } else { MessageBox.Show("不能添加文件!", "播放列表已滿");

41、 } } //******************************************************************************* // 添加媒體文件目錄的方法 //******************************************************************************* public void AddFiles(string path, ListBox lstFiles)

42、 { DirectoryInfo dir = new DirectoryInfo(path); foreach (FileInfo f in dir.GetFiles("*.mp3")) { AddFile(f.FullName); int i; string strFile = Convert.ToString(numOfMusic); for (i = 1; i <= 5 - s

43、trFile.Length; i++) { strFile += ""; } strFile = f.FullName; int n = strFile.LastIndexOf("\\") + 1; strFile = strFile.Substring(n) + "/" + strFile.Substring(0, n); lstFileList.I

44、tems.Add(strFile); } foreach (FileInfo f in dir.GetFiles("*.DAT")) { AddFile(f.FullName); int i; string strFile = Convert.ToString(numOfMusic); for (i = 1; i <= 5 - strFile.Length; i++)

45、 { strFile += ""; } strFile = f.FullName; int n = strFile.LastIndexOf("\\") + 1; strFile = strFile.Substring(n) + "/" + strFile.Substring(0, n); lstFileList.Items.Add(strFile);

46、 } foreach (FileInfo f in dir.GetFiles("*.flv")) { AddFile(f.FullName); int i; string strFile = Convert.ToString(numOfMusic); for (i = 1; i <= 5 - strFile.Length; i++) {

47、 strFile += ""; } strFile = f.FullName; int n = strFile.LastIndexOf("\\") + 1; strFile = strFile.Substring(n) + "/" + strFile.Substring(0, n); lstFileList.Items.Add(strFile); } foreach

48、 (FileInfo f in dir.GetFiles("*.lrc")) { AddFile(f.FullName); int i; string strFile = Convert.ToString(numOfMusic); for (i = 1; i <= 5 - strFile.Length; i++) { strFile += "";

49、 } strFile = f.FullName; int n = strFile.LastIndexOf("\\") + 1; strFile = strFile.Substring(n) + "/" + strFile.Substring(0, n); lstFileList.Items.Add(strFile); } foreach (DirectoryInfo d in dir.Ge

50、tDirectories()) { AddFiles(d.FullName, lstFileList); } } //******************************************************************************* // 刪除單個媒體文件的方法 //***************************************************************

51、**************** public void DelFile(int selectNum) { int i; for (i = selectNum; i <= numOfMusic - 1; i++) { fileList[i] = fileList[i + 1]; } numOfMusic -= 1; } //*****************

52、************************************************************** // 播放媒體文件的方法 //******************************************************************************* public void Play(int selectNum) { if (selectNum < lstFileList.Items.Count) {

53、 lstFileList.SelectedIndex = selectOne; this.Text = null; string msg = lstFileList.Items[lstFileList.SelectedIndex].ToString(); string[] strs = msg.Split(/); mediaPlayer.URL = strs[1] + strs[0]; this.Te

54、xt = strs[0]; } } //******************************************************************************* // 使部分按鈕可用的方法 //******************************************************************************* public void OpenBtn() {

55、 btnPlay.Enabled = true; btnBack.Enabled = true; btnForward.Enabled = true; } //******************************************************************************* // 使部分按鈕不可用的方法 //**********************************************************

56、********************* public void CloseBtn() { btnPlay.Enabled = false; btnBack.Enabled = false; btnForward.Enabled = false; btnStop.Enabled = false; btnDelete.Enabled = false; } //******************

57、************************************************************* //******************************************************************************* //接下來編寫窗體的載入(Load)事件代碼如下,用于初始化各數(shù)據(jù)和窗體上各按鈕控件的狀態(tài)。 //*******************************************************************************

58、 // 窗體的載入事件代碼 //******************************************************************************* private void Form1_Load(object sender, EventArgs e) { label1.Text = "順序播放"; tmrMedia.Start(); //this.BackgroundImage = Image .

59、FromFile ("E:\\圖片\\景物\\動物\\狼.jpg"); lstFileList.Items.CopyTo(fileList, 0); // 將列表框(lstFileList)中的列表項全部復(fù)制到數(shù)組(fileList)中 numOfMusic = 0; // 選中第一個媒體文件 mediaPlayer.settings.volume = 22;//初始化音量大小 string msg; StreamRea

60、der sr = File.OpenText(Application.StartupPath + "\\list.txt"); msg = sr.ReadLine(); while (msg != null) { lstFileList.Items.Add(msg); msg = sr.ReadLine(); } sr.Close(); } //*********

61、********************************************************************** //為【添加文件】按鈕(btnAddFile)的Click事件添加以下代碼,添加媒體文件。 //******************************************************************************* // 【添加文件】按鈕的單擊事件代碼 //**************************

62、***************************************************** private void btnAddFile_Click(object sender, EventArgs e) { int i; odlgMedia.FileName = ""; // 設(shè)置默認(rèn)文件名 if (odlgMedia.ShowDialog() == DialogResult.OK)

63、 { string path = odlgMedia.FileName; FileInfo f = new FileInfo(path); AddFile(f.FullName); string strFile = Convert.ToString(numOfMusic); for (i = 1; i <= 5 - strFile.Length; i++) {

64、 strFile += ""; } strFile = f.FullName; int n = strFile.LastIndexOf("\\") + 1; strFile = strFile.Substring(n) + "/" + strFile.Substring(0, n); lstFileList.Items.Add(strFile); if (lstFileLi

65、st.Items.Count >= 0) { OpenBtn(); } } } //******************************************************************************* //*******************************************************************************

66、 //再為【添加目錄】按鈕(btnAddFiles)的Click事件添加以下代碼,添加媒體文件目錄,實現(xiàn)成批地添加媒體文件。 //******************************************************************************* // 【添加目錄】按鈕的單擊事件代碼 //******************************************************************************* private void btnAddFiles_Click(object sender, EventArgs e) { fbdlgMedia.ShowNewFolderButton = true; fbdlgMedia.Description = "請選擇媒體文件目錄:"; fbdlgMedia.ShowN

展開閱讀全文
溫馨提示:
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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!