




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、 數(shù)學與計算機學院課程設計說明書課 程 名 稱: 軟件工程課程設計 課 程 代 碼: 8404131 題 目:KTV點歌管理系統(tǒng)實現(xiàn)歌曲播放年級/專業(yè)/班: 09級軟件工程4班 學 生 姓 名: 學 號: 開 始 時 間: 2011 年 05 月 27 日完 成 時 間: 2011 年 06 月 8 日課程設計成績:學習態(tài)度及平時成績(30)技術水平與實際能力(20)創(chuàng)新(5)說明書(計算書、圖紙、分析報告)撰寫質(zhì)量(45)總 分(100)指導教師簽名: 年 月 日軟件工程 課程設計任務書學院名稱: 數(shù)學與計算機學院 課程代碼:8404131 專業(yè): 軟件工程 年級: 2009級 一、設計題目
2、 KTV點歌管理系統(tǒng)二、主要內(nèi)容本課程設計完成一KTV自動點歌管理系統(tǒng),本系統(tǒng)包括歌曲管理和點歌查詢界面等功能。三、具體要求及應提交材料具體要求:本課程設計要求學生運用軟件工程的思想,嚴格按照軟件生命周期各階段的目的和任務,完成對系統(tǒng)的分析、設計、編碼、及測試。1完成系統(tǒng)的需求分析2完成系統(tǒng)的設計: 針對分析階段提出的軟件要求,給出實現(xiàn)的方案和具體細節(jié)的說明。(1)導出系統(tǒng)的數(shù)據(jù)流程圖和功能模塊圖。(2)設計數(shù)據(jù)庫。使用Microsoft Access創(chuàng)建數(shù)據(jù)庫。確定數(shù)據(jù)庫中數(shù)據(jù)表的組成。確定數(shù)據(jù)表中字段的構成、主鍵字段和有關字段的約束條件等。依靠數(shù)據(jù)表中主鍵字段建立數(shù)據(jù)表之間的關系,并由此建
3、立數(shù)據(jù)表之間的參照完整性約束。(3)根據(jù)功能確定軟件模塊組成及調(diào)用關系。(4)確定每個模塊的數(shù)據(jù)結構及算法。3編碼建造模塊,在可視化編程環(huán)境下,按照軟件設計要求制作界面和完成對模塊的編碼,由此使軟件設計具體化為軟件作品。4. 測試編寫合適的測試用例完成系統(tǒng)的測試工作并分析結果。5編寫課程設計報告應提交材料:1上交源程序:學生按照課程設計的具體要求所開發(fā)的所有源程序(應該放到一個文件夾中);2課程設計報告的打印稿和電子稿;四、主要技術路線提示1認真閱讀相關知識,完成系統(tǒng)的功能分析和系統(tǒng)設計2選用ACCESS作為DBMS五、進度安排序號設計內(nèi)容天數(shù)1分析設計內(nèi)容,給出解決方案32創(chuàng)建數(shù)據(jù)庫及建表3
4、3可視化界面設計34對所建數(shù)據(jù)庫進行設計,整理設計思路,編碼、測試,寫出課程設計報告35指導老師檢查設計結果并做成績評定2總 計14六、參考資料1 張海藩. 軟件工程導論. 北京:清華大學出版社,20042 陳明. 實用軟件工程基礎. 北京:清華大學出版社,20033 殷人昆. 實用軟件工程. 北京:清華大學出版社,2003指導教師 簽名日期 年 月 日系 主 任 審核日期 年 月 日目 錄1 前言42 需求分析52.1 功能分析52.2 方案分析53 概要設計63.1 數(shù)據(jù)結構63.2 邏輯結構與物理結構63.3 功能模塊劃分63.4抽象數(shù)據(jù)類定義94 詳細設計94.1 數(shù)據(jù)類型定義94.2
5、 主要模塊內(nèi)部設計10選擇歌曲功能模塊104.2.2 查看播放列表功能模塊134.2.3 歌曲播放功能模塊145 實現(xiàn)與調(diào)試分析165.1 實現(xiàn)環(huán)境165.2 語言選擇165.3 調(diào)試分析166 測試分析166.1 測試用例186.2 測試結果186.3 性能分析197用戶手冊20總 結20參考文獻201 前言迅速發(fā)展的計算機科學技術應用越來越廣泛,已經(jīng)滲透到了人類社會生產(chǎn)和生活的各個領域。 隨著生活水平的提高,人們除了注重衣食住行以外,越來越需要一些好的娛樂休閑方式,而卡拉OK起源于日本引入我國,這種娛樂方式很快被大家接受。這也促進了很多愛好者開發(fā)適用于不同應用場合的KTV點歌系統(tǒng),以便于顧
6、客在KTV中自由點歌而不受其他的影響,同時也節(jié)約了很大的成本。KTV點歌系統(tǒng)以滿足用戶需求,減輕工作人員的復旦為宗旨。隨著計算機技術的進一步發(fā)展和人們生活要求的不斷提高,KTV點歌管理系統(tǒng)一定會有更加廣闊的應用前景。在這里,主要實現(xiàn)KTV點歌管理系統(tǒng)的歌曲播放功能(包括歌曲管理和友好的點歌查詢界面和歌曲播放功能)。2 需求分析 2.1 功能分析 經(jīng)過綜合分析,確定了系統(tǒng)應該包括如下功能:該KTV點歌管理系統(tǒng)應該實現(xiàn)選擇歌曲,查看播放列表,以及簡單的播放歌曲功能。用戶可以完全按照菜單的提示對其進行操作,系統(tǒng)對用戶的指令做出相應的反應。l 選擇歌曲:通過顯示的界面選擇歌曲,其中歌曲的查找包括按語種
7、查找,按姓名查找,全部顯示。l 查看播放列表:通過該功能查看,刪除已選擇的歌曲,增添新的歌曲。l 歌曲播放:通過該功能實現(xiàn)歌曲的按順序播放和隨機播放。 2.2 方案分析該系統(tǒng)針對的是KTV點歌的用戶,用戶可以通過該系統(tǒng)對所提供的歌曲進行選擇,可惜查看刪除播放列表中的歌曲,實現(xiàn)歌曲的按順序播放和隨機播放功能。 圖13 概要設計 3.1 數(shù)據(jù)結構 數(shù)據(jù)元素:歌曲庫,播放列表,歌曲。歌曲屬性:歌曲編號,歌曲名,歌手名,時間,語種 圖23.2 邏輯結構與物理結構通過對上述數(shù)據(jù)結構的分析,根據(jù)課程設計自動選課系統(tǒng)的需求,將以上的E-R圖轉(zhuǎn)換為關系模式:歌曲(歌曲編號,歌曲名,歌手,時長,語種); 供選擇
8、的歌曲保存在歌曲庫musicbase.txt文件中,播放列表保存在playlist.txt文件中。3.3 功能模塊劃分3.3.1結構框圖 圖3 3.3.2程序流圖 圖43.3.3模塊功能分析及外部設計以下是對各功能模塊主要功能的描述u 選擇歌曲模塊: 通過顯示的界面選擇歌曲,用戶可以按幾種方式來選擇歌曲??梢园锤枨檎?,按語種選擇,按歌手名選擇,全部查看,選中的歌曲自動記錄至播放列表,以便用戶查看進行下一功能的使用。u 查看播放列表模塊: 用戶選擇該模塊即可查看播放列表,播放列表按用戶選擇順序默認排序,用戶可以在該模塊中自行選擇增添或者刪除播放列表中的歌曲,并可刷新播放列表。u 歌曲播放模塊
9、: 用戶選擇歌曲至播放列表后,可使用該模塊,實現(xiàn)歌曲的播放功能,該模塊包括順序播放和隨機播放歌曲兩種功能。外部設計u 主界面: 列出該系統(tǒng)的各大功能供用戶選擇,在各模塊內(nèi)部界面也設置有返回 鍵,基本實現(xiàn)良好的友好界面。3.4抽象數(shù)據(jù)類定義void parFile();void SelectMusics(); / 選擇歌曲子函數(shù)void SelectMusicsFrName(char name64);/ 從歌曲名來查找void SelectMusicsFrSinger(char singer64);/ 從歌手來查找void SelectAllMusics();/ 顯示全部歌曲void AddOn
10、eMusicToPList(char code64); / 增加一首歌曲到列表中void DelOneMusicToPList(char code64); / 增加一首歌曲到列表中void DispSelMusics(); / 查看播放列表自漢書void PlayMusics(); / 播放子函數(shù)void writePlist(char ch256); / 把選擇的歌曲寫入播放列表中(全局數(shù)組)void writePlistFile();/ 把選擇的歌曲寫入播放列表中(播放列表文件)void deletePlist(char ch256); / 把選擇的歌曲寫入播放列表中(全局數(shù)組)4 詳細設
11、計4.1 數(shù)據(jù)類型定義typedef structchar chcode64;char chname64;char chsinger64;char chtime64;char chlanguage64; music_info;4.2 主要模塊內(nèi)部設計選擇歌曲功能模塊4.2.1.1 模塊算法void SelectMusics()/int select;char chSelect;char chSel64;bool bSelFlag = true;printf("nttt_ n");printf("ttt| |n"); printf("ttt| a
12、.按照歌曲名查找歌曲 |n"); printf("ttt|_|n");printf("ttt| |n");printf("ttt| b.按歌手查找歌曲 |n");printf("ttt|_|n");printf("ttt| |n");printf("ttt| c.顯示全部歌曲供選擇 |n");printf("ttt|_|n");printf("ttt| |n");printf("ttt| d.返回上一級菜單 |n&q
13、uot;);printf("ttt|_|n");printf("請選擇查找歌曲的方式(a-d):");while(bSelFlag)/scanf("%d",&select);scanf("%s",&chSelect);switch(chSelect) case 'a': / 按照歌曲名查找歌曲memset(chSel,0,64);bSelFlag = false;printf("請輸入歌曲名稱:");scanf("%s",&chSel)
14、;SelectMusicsFrName(chSel);break;case 'b': /按歌手查找歌曲memset(chSel,0,64);bSelFlag = false;printf("請輸入歌手名:");scanf("%s",&chSel);SelectMusicsFrSinger(chSel);break; case 'c': /顯示全部歌曲供選擇bSelFlag = false;SelectAllMusics();break;case 'd': /顯示全部歌曲供選擇bSelFlag = f
15、alse;break;default:printf("選擇輸入錯誤!請重新輸入輸入(a-d):");break; 4.2.1.2 流程圖 圖54.2.2 查看播放列表功能模塊4.2.2.1模塊算法void DispSelMusics()char chSel;char cSel256;char chSelect;for(int i=0;i<nplistMusics;i+)printf("n編號:%s;歌名:%15s;歌手:%8s;時間:%s;語種:%s",nplistMusic_infoi.chcode,nplistMusic_infoi.chnam
16、e,nplistMusic_infoi.chsinger,nplistMusic_infoi.chtime,nplistMusic_infoi.chlanguage);printf("n是否刪除或增加歌曲(y/n)?");scanf("%s",&chSelect);if('y'=chSelect)printf("n刪除歌曲請輸入d,增加歌曲請輸入a:");scanf("%s",&chSel);if('d'=chSel)printf("n輸入刪除歌曲編號并以,
17、隔開:");memset(cSel,0,256);scanf("%s",&cSel);deletePlist(cSel);else if('a'=chSel)printf("n輸入增加歌曲編號并以,隔開:");memset(cSel,0,256);scanf("%s",&cSel);writePlist(cSel);4.2.2.2流程圖 圖64.2.3 歌曲播放功能模塊4.2.3.1 模塊算法void PlayMusics()char cSel;int nSec;/char chartmp;b
18、ool bQuit1 = false;bool bQuit2 = false;printf("n請選擇播放模式(1:順序播放;2:隨機播放):");scanf("%s",&cSel);if('1'=cSel) Play(1)if('2'=cSel) Play(2)4.2.3.2 流程圖 圖75 實現(xiàn)與調(diào)試分析5.1 實現(xiàn)環(huán)境Windows系列系統(tǒng)開發(fā)平臺:vc6.05.2 語言選擇C程序語言5.3 調(diào)試分析對于所有有返回值的函數(shù),都應該檢查返回值,除非你確信這個函數(shù)調(diào)用絕對不會出錯,或者不關心它是否出錯。 一些函數(shù)
19、返回錯誤,需要用其他函數(shù)獲得錯誤的具體信息。例如accept返回INVALID_SOCKET表示accept失敗,為了查明 具體的失敗原因,應該立刻用WSAGetLastError獲得錯誤碼,并針對性的解決問題。 有些函數(shù)通過異常機制拋出錯誤,應該用TRY-CATCH語句來檢查錯誤.程序員對于能處理的錯誤,應該自己在底層處理,對于不能處理的,應該報告給用戶讓他們決定怎么處理。如果程序出了異常, 卻不對返回值和其他機制返回的錯誤信息進行判斷,只能是加大了找錯誤的難度。 6 測試分析6.1 測試用例測試結果測試1:名稱:歌曲選擇功能模塊測試 目的:測試歌曲選擇功能。 內(nèi)容:進入主界面,按提示,選擇
20、1,進入選擇歌曲界面,選擇a,按歌曲名查找歌曲輸入數(shù)據(jù):歷史的天空。預期輸出結果:歷史的天空歌曲的相關信息; 測試結果測試2:名稱:歌曲選擇功能模塊測試 目的:測試歌曲選擇功能。 內(nèi)容:進入主界面,按提示,選擇1,進入選擇歌曲界面,選擇b,按歌手名查找歌曲輸入數(shù)據(jù):周杰倫。預期輸出結果:周杰倫的所有歌曲;測試結果測試3:名稱:歌曲選擇功能模塊測試 目的:測試歌曲選擇功能。 內(nèi)容:進入主界面,按提示,選擇1,進入選擇歌曲界面,選擇c,顯示全部歌曲。輸入數(shù)據(jù):c。預期輸出結果:顯示所有歌曲;測試結果測試4:名稱:查看播放列表功能模塊測試 目的:測試查看播放列表功能。 內(nèi)容:進入主界面,按提示,選擇
21、2,進入查看播放列表界面,選擇c,顯示全部歌曲。輸入數(shù)據(jù):2。預期輸出結果:已選擇的歌曲;測試結果測試5:名稱:播放歌曲功能模塊測試 目的:測試播放歌曲功能。 內(nèi)容:進入主界面,按提示,選擇3,進入查看播放列表界面,選擇1。輸入數(shù)據(jù):u,d,q。預期輸出結果:按順序播放歌曲,并且可以實現(xiàn)上一曲下一曲以及退出;測試結果測試6:名稱:播放歌曲功能模塊測試 目的:測試播放歌曲功能。 內(nèi)容:進入主界面,按提示,選擇3,進入查看播放列表界面,選擇2。輸入數(shù)據(jù):u,d,q。預期輸出結果:按隨機播放歌曲,并且可以實現(xiàn)上一曲下一曲以及退出;6.2 測試結果 圖8 圖9 圖10 圖11 圖126.3 性能分析
22、此處采用的是黑盒測試法,及主要測試系統(tǒng)的每個功能是否能正確運作。以下為接受測試的各個功能模塊描述:選擇歌曲: 實現(xiàn)了用戶對歌曲選擇的功能的需求。查看播放列表: 實現(xiàn)了查看,刪除已選擇的歌曲,增添新的歌曲。歌曲播放: 實現(xiàn)了歌曲的按順序播放和隨機播放,以及上一曲,下一曲。7用戶手冊此次開發(fā)的KTV點歌管理系統(tǒng)比較簡單,容易上手,用戶只需根據(jù)提示輸入自己的選擇即可,方便快捷???結 該KTV點歌管理系統(tǒng)我是完成的實現(xiàn)歌曲播放的功能,由于對可視化界面以及數(shù)據(jù)庫的不熟悉,所以采用了最原始的辦法完成了這個系統(tǒng),基本上實現(xiàn)了所要求的功能。為了對以后的實際開發(fā)有所幫助,總結一下本次課程設計:1,對基礎知識掌
23、握仍有欠缺,不能達到熟練運用。2,沒合理安排好時間,導致進度有所偏差。3珍惜每次課程設計,因為總的來說,收獲不小。參考文獻 編號 書 名 作 者 出 版 社出版日期1軟件工程導論張海藩清華大學出版社 20042實用軟件工程基礎陳 明清華大學出版社 20033 實用軟件工程殷人昆清華大學出版社 2003#include <stdio.h>#include <iostream.h>#include <windows.h>#include <iostream> #include <fstream> #include <time.h&g
24、t;#include <conio.h>/*/*1、歌曲存放在musicbase.txt文件中/*2、播放列表文件為playlist.txt*/ 定義結構typedef structchar chcode64;char chname64;char chsinger64;char chtime64;char chlanguage64; music_info;/ 函數(shù)定義void parFile();void SelectMusics(); / 選擇歌曲子函數(shù)void SelectMusicsFrName(char name64);/ 從歌曲名來查找void SelectMusicsF
25、rSinger(char singer64);/ 從歌手來查找void SelectAllMusics();/ 顯示全部歌曲void AddOneMusicToPList(char code64); / 增加一首歌曲到列表中void DelOneMusicToPList(char code64); / 增加一首歌曲到列表中void DispSelMusics(); / 查看播放列表自漢書void PlayMusics(); / 播放子函數(shù)void writePlist(char ch256); / 把選擇的歌曲寫入播放列表中(全局數(shù)組)void writePlistFile();/ 把選擇的歌
26、曲寫入播放列表中(播放列表文件)void deletePlist(char ch256); / 把選擇的歌曲寫入播放列表中(全局數(shù)組)/ 全局變量定義music_info nMusic_info1000; / 歌曲庫中的歌曲信息數(shù)組int nMusics;/ 歌曲庫總共的歌曲數(shù)music_info nplistMusic_info1000; / 播放列表中的歌曲信息數(shù)組int nplistMusics;/ 播放列表中的歌曲數(shù)/ 主函數(shù)void main()int select;bool exitFlag = false; / 退出標志位system("cls"); / 清屏
27、 parFile();/ 解析歌曲庫文件nplistMusics = 0;/ 最初播放列表中沒有歌曲while(1)printf("nttt _ n"); printf("ttt| |n"); printf("ttt| 點歌系統(tǒng) |n"); printf("ttt|_|n");printf("ttt| |n"); printf("ttt| 1.選擇歌曲 |n"); printf("ttt|_|n");printf("ttt| |n");
28、 printf("ttt| 2.查看播放列表 |n");printf("ttt|_|n");printf("ttt| |n"); printf("ttt| 3.播放 |n");printf("ttt|_|n");printf("ttt| |n"); printf("ttt| 4.退出 |n");printf("ttt|_|n"); printf("請您按菜單指示選擇(1-4):");scanf("%d&qu
29、ot;,&select);switch(select) case 1: SelectMusics();break;case 2:DispSelMusics();break; case 3:PlayMusics();break;case 4: printf("已退出點歌系統(tǒng)!n");exitFlag = true;break; default:printf("選擇輸入錯誤!請重新輸入(1-4)!"); if(exitFlag)break; / 退出主菜單循環(huán),進而退出點歌系統(tǒng)/選擇歌曲子函數(shù)void SelectMusics()/int selec
30、t;char chSelect;char chSel64;bool bSelFlag = true;printf("nttt_ n");printf("ttt| |n"); printf("ttt| a.按照歌曲名查找歌曲 |n"); printf("ttt|_|n");printf("ttt| |n");printf("ttt| b.按歌手查找歌曲 |n");printf("ttt|_|n");printf("ttt| |n");pr
31、intf("ttt| c.顯示全部歌曲供選擇 |n");printf("ttt|_|n");printf("ttt| |n");printf("ttt| d.返回上一級菜單 |n");printf("ttt|_|n");printf("請選擇查找歌曲的方式(a-d):");while(bSelFlag)/scanf("%d",&select);scanf("%s",&chSelect);switch(chSelect)
32、case 'a': / 按照歌曲名查找歌曲memset(chSel,0,64);bSelFlag = false;printf("請輸入歌曲名稱:");scanf("%s",&chSel);SelectMusicsFrName(chSel);break;case 'b': /按歌手查找歌曲memset(chSel,0,64);bSelFlag = false;printf("請輸入歌手名:");scanf("%s",&chSel);SelectMusicsFrSing
33、er(chSel);break; case 'c': /顯示全部歌曲供選擇bSelFlag = false;SelectAllMusics();break;case 'd': /顯示全部歌曲供選擇bSelFlag = false;break;default:printf("選擇輸入錯誤!請重新輸入輸入(a-d):");break; / 查看播放列表子函數(shù)void DispSelMusics()char chSel;char cSel256;char chSelect;for(int i=0;i<nplistMusics;i+)print
34、f("n編號:%s;歌名:%s;歌手:%s;時間:%s;語種:%s",nplistMusic_infoi.chcode,nplistMusic_infoi.chname,nplistMusic_infoi.chsinger,nplistMusic_infoi.chtime,nplistMusic_infoi.chlanguage);printf("n是否刪除或增加歌曲(y/n)?");scanf("%s",&chSelect);if('y'=chSelect)printf("n刪除歌曲請輸入d,增加歌
35、曲請輸入a:");scanf("%s",&chSel);if('d'=chSel)printf("n輸入刪除歌曲編號并以,隔開:");memset(cSel,0,256);scanf("%s",&cSel);deletePlist(cSel);else if('a'=chSel)printf("n輸入增加歌曲編號并以,隔開:");memset(cSel,0,256);scanf("%s",&cSel);writePlist(cSe
36、l);/ 播放子函數(shù)void PlayMusics()char cSel;int nSec;char chartmp;bool bQuit1 = false;bool bQuit2 = false;printf("n請選擇播放模式(1:順序播放;2:隨機播放):");scanf("%s",&cSel);if('1'=cSel)for(int i=0;i<nplistMusics;i+)printf("n播放第%d歌",i+1);nSec = atoi(nplistMusic_infoi.chtime);f
37、or(int j=0;j<nSec/20;j+)printf("n編號:%s;歌名:%s;歌手:%s;時間:%s;語種:%s",nplistMusic_infoi.chcode,nplistMusic_infoi.chname,nplistMusic_infoi.chsinger,nplistMusic_infoi.chtime,nplistMusic_infoi.chlanguage);Sleep(1000);if(0=(j/3)printf("n輸入q可以退出播放!輸入u播放上一首,d下一首。");if ( _kbhit() switch(_g
38、etch()case 'q':bQuit1 = true;bQuit2 = true;break;case 'u':i=i-2;bQuit1 = true;break;case 'd':bQuit1 = true;break;if(bQuit1)bQuit1=false;break;if(bQuit2)break;else if('2'=cSel)while(1)int i;srand(time(NULL); i=(rand()%nplistMusics);printf("n播放第%d歌",i+1);nSec
39、= atoi(nplistMusic_infoi.chtime);for(int j=0;j<nSec/20;j+)printf("n編號:%s;歌名:%s;歌手:%s;時間:%s;語種:%s",nplistMusic_infoi.chcode,nplistMusic_infoi.chname,nplistMusic_infoi.chsinger,nplistMusic_infoi.chtime,nplistMusic_infoi.chlanguage);Sleep(1000);if(0=(j/3)printf("n輸入q可以退出播放!");if
40、( _kbhit() switch(_getch()case 'q':bQuit1 = true;bQuit2 = true;break;case 'u':i=(i-2)>=0?(i-2):(nplistMusics-i+1);bQuit1 = true;break;case 'd':bQuit1 = true;break;if(bQuit1)bQuit1=false;break;if(bQuit2)break;/ 分析歌曲庫文件, 將歌曲信息寫入歌曲信息結構體變量指針pMusic_info中void parFile()music_info
41、 * pMusic_info = nMusic_info;int nCount = 0;FILE *fp;char buf256,buf164;int npre=5;int n,m,p;if(NULL = (fp=fopen("musicbase.txt","r") exit(-1); while(!feof(fp)memset(buf,0,256);memset(buf1,0,64);fgets(buf,256,fp);n=0,m=0,p=0;while(0!=bufn)if(','=bufn | ''=bufn)n+;
42、m=0;p+;switch(p)case 1:strcpy(pMusic_info->chcode,buf1);break;case 2:strcpy(pMusic_info->chname,buf1);break;case 3:strcpy(pMusic_info->chsinger,buf1);break;case 4:strcpy(pMusic_info->chtime,buf1);break;case 5:strcpy(pMusic_info->chlanguage,buf1);break;default:printf("歌曲庫格式不對!&quo
43、t;);break;memset(buf1,0,64);elseif(m<npre)n+;m+;elsebuf1m-npre=bufn+;m+;pMusic_info+;nCount+;fclose(fp);nMusics = nCount; / 歌曲庫總共的歌曲數(shù)void SelectMusicsFrName(char name64)/ 從歌曲名來查找char chSel256;for(int i=0;i<nMusics;i+)if(0=strcmp(name,nMusic_infoi.chname)printf("n編號:%s;歌名:%s;歌手:%s;時間:%s;語種
44、:%s",nMusic_infoi.chcode,nMusic_infoi.chname,nMusic_infoi.chsinger,nMusic_infoi.chtime,nMusic_infoi.chlanguage);printf("n輸入標號并以,隔開選擇歌曲:");memset(chSel,0,256);scanf("%s",&chSel);writePlist(chSel);void SelectMusicsFrSinger(char singer64)/ 從歌手來查找char chSel256;for(int i=0;i&
45、lt;nMusics;i+)if(0=strcmp(singer,nMusic_infoi.chsinger)printf("n編號:%s;歌名:%s;歌手:%s;時間:%s;語種:%s",nMusic_infoi.chcode,nMusic_infoi.chname,nMusic_infoi.chsinger,nMusic_infoi.chtime,nMusic_infoi.chlanguage);printf("n輸入標號并以,隔開選擇歌曲:");memset(chSel,0,256);scanf("%s",&chSel)
46、;writePlist(chSel);void SelectAllMusics()/ 顯示全部歌曲char chSel256;for(int i=0;i<nMusics;i+)printf("n編號:%s;歌名:%s;歌手:%s;時間:%s;語種:%s",nMusic_infoi.chcode,nMusic_infoi.chname,nMusic_infoi.chsinger,nMusic_infoi.chtime,nMusic_infoi.chlanguage);printf("n輸入標號并以,隔開選擇歌曲:");memset(chSel,0,2
47、56);scanf("%s",&chSel);writePlist(chSel);void writePlist(char ch256)char ccode64;memset(ccode,0,64);int i=0,j=0;while(0x00!=chi)if(','=chi )AddOneMusicToPList(ccode); memset(ccode,0,64);j=0;i+;elseccodej=chi;j+;i+;if(0x00!=ch0)AddOneMusicToPList(ccode);/ 更新播放列表文件writePlistFile();void deletePlist(char ch256)char ccode64;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東女子職業(yè)技術學院《微生物學(含實驗)》2023-2024學年第二學期期末試卷
- 山西電力職業(yè)技術學院《漢俄翻譯》2023-2024學年第二學期期末試卷
- 北海康養(yǎng)職業(yè)學院《財務管理案例分析》2023-2024學年第二學期期末試卷
- 云南水利水電職業(yè)學院《數(shù)據(jù)挖掘基礎》2023-2024學年第二學期期末試卷
- 山東財經(jīng)大學燕山學院《播音主持作品賞析與研究》2023-2024學年第二學期期末試卷
- 杭州電子科技大學信息工程學院《運動療法技術學》2023-2024學年第二學期期末試卷
- 鐘山職業(yè)技術學院《Java程序設計基礎》2023-2024學年第二學期期末試卷
- 貴州護理職業(yè)技術學院《粉末冶金材料原理》2023-2024學年第二學期期末試卷
- 動物世界美術課件
- 2024年工業(yè)縫制機械項目投資申請報告代可行性研究報告
- 藝術課程標準(2022年版)
- JGJ142-2004《地面輻射供暖技術規(guī)程》條文說明
- 信任五環(huán)(用友營銷技巧) PPT資料
- 錮囚鋒-備戰(zhàn)高考總復習地理專項突破
- 2022下半年漢中市事業(yè)單位招聘考試《綜合應用能力(醫(yī)療衛(wèi)生E類)》題庫含答案解析
- MT 181-1988煤礦井下用塑料管安全性能檢驗規(guī)范
- GB/T 193-2003普通螺紋直徑與螺距系列
- GB/T 11419-2008搪瓷炊具耐溫急變性測定方法
- 乳制品領域:燕塘乳業(yè)企業(yè)組織結構及部門職責
- 因納特工商管理綜合實訓軟件V4.00
- 助理社工師培訓講義課件
評論
0/150
提交評論