![歌曲信息管理系統(tǒng)-C語言_第1頁](http://file4.renrendoc.com/view/34cc50ae31098f820dec3d1ffa735139/34cc50ae31098f820dec3d1ffa7351391.gif)
![歌曲信息管理系統(tǒng)-C語言_第2頁](http://file4.renrendoc.com/view/34cc50ae31098f820dec3d1ffa735139/34cc50ae31098f820dec3d1ffa7351392.gif)
![歌曲信息管理系統(tǒng)-C語言_第3頁](http://file4.renrendoc.com/view/34cc50ae31098f820dec3d1ffa735139/34cc50ae31098f820dec3d1ffa7351393.gif)
![歌曲信息管理系統(tǒng)-C語言_第4頁](http://file4.renrendoc.com/view/34cc50ae31098f820dec3d1ffa735139/34cc50ae31098f820dec3d1ffa7351394.gif)
![歌曲信息管理系統(tǒng)-C語言_第5頁](http://file4.renrendoc.com/view/34cc50ae31098f820dec3d1ffa735139/34cc50ae31098f820dec3d1ffa7351395.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、歌曲信息管理系統(tǒng)要求制作一個歌曲信息管理系統(tǒng)功能:1)歌曲信息包括歌曲名,作者,演唱者,發(fā)行年月等。2)可以對歌曲信息進行輸入,刪除,瀏覽。3)可以查詢根據(jù)歌曲名,作者,演唱者歌曲信息。4)可以提供按作者分組顯示功能。5)用文件存儲信息。我的設(shè)計思路根據(jù)題目要求,由于歌曲信息數(shù)據(jù)以文本文件的方式存放, 所以應(yīng)提供文件的輸入、輸出等操作;在程序中需要瀏覽歌曲的 信息,應(yīng)提供顯示、查詢等操作,按照一般的思路,我采用的是 按照歌曲名進行查找的方式。并且要提供可以按作者進行分組的 方法。整體設(shè)計思路是首先以一個主函數(shù)為主,將各個功能諸如 瀏覽,刪除等分別設(shè)計成函數(shù),通過主函數(shù)的調(diào)用從而實現(xiàn)其功 能。由
2、于程序中經(jīng)常要用到一些函數(shù),諸如加載函數(shù),顯示函數(shù) 等,如果重復(fù)輸入,會嚴重增加工作量,所以可以將這些函數(shù)作 為公共函數(shù)編寫出來,以被隨時調(diào)用。分析一下整個系統(tǒng),根據(jù)上面的需求分析,可以將系統(tǒng)設(shè)計 分為以下六大模塊。歌曲信息管理退 出瀏 覽查 找分 組輸 入刪 除四.詳細設(shè)計#include#include#include#include#define N 100上面這些是整個程序要用到的文件包含命令和宏定義 struct songchar name20;char creater20;char singer20;char date6;soN;將下面所要編寫的函數(shù)分別聲明出來void shu_r
3、u();void shan_chu();void liu_lan();void cha_zhao();void fz(int i,int n);void fen_zu ();void fname();void printf_one(int i);void input(int i);void save(int n);void printf_back();int load();void printf_face();int shan_chue_data(int j,int n);首先是設(shè)計主函數(shù),設(shè)計主函數(shù)一般應(yīng)該做到簡潔,主函數(shù)主要 是提供函數(shù)調(diào)用等方面的功能,各功能函數(shù)以菜單的形式在主函數(shù)中 列
4、出來,通過主函數(shù)的調(diào)用從而實現(xiàn)各功能函數(shù)的功能。其用流程圖 可表示為:顯示一系列功能選項vN輸入,判斷n是否是1-6 YY根據(jù)n的值調(diào)用各功能模塊函數(shù)菜單界面void menu()int k,w1;doprintf(tt*目錄*nn);printf( 1.輸入n);printf( 2.刪除n);printf( 3.瀏覽n);printf( 4.查找n);printf( 5.分組 n” )printf(6.退出n);對選擇的數(shù)字作判斷printf(nnt 請選擇(1-6):);scanf(%d,&k);if(k6)(w1=1;getchar();else w1=0;根據(jù)選擇調(diào)用功能函數(shù)while
5、(w1=1);switch(k)(case 1:shu_ru();break;case 2:shan_chu();break;case 3:liu_lan();break;case 4:cha_zhao();break;case 5:fen_zu();break;case 6 exit(0);主函數(shù)void main()menu();設(shè)計輸入功能函數(shù)模塊數(shù)據(jù)信息存放在文件中,為方便管理,一條記錄對應(yīng)一個歌曲, 自然的我們可以想到用結(jié)構(gòu)體數(shù)組的形式存放多首歌曲信息。struct songchar name20; /*歌曲名*/char creater20; /*作者*/char singer20
6、; /*演唱者*/char date6; /*發(fā)行年月*/soN;該結(jié)構(gòu)體中包含了歌曲所需的各項信息,soN中的N為歌曲數(shù) 目程序中采用宏定義方式,可以隨時對N進行修該。輸入模塊的設(shè)計思想是根據(jù)所要輸入的歌曲數(shù)目,循環(huán)調(diào)用輸入 函數(shù),然后調(diào)用保存函數(shù)。void shu_ru()int i,n;printf(要輸入幾首歌:,N-1);scanf(%d,&n);printf(n 開始輸入nn);for(i=0;in;i+)printf(n 輸入第 %d 首 歌.n”,i+1);input(i);if(i!=0) save(n);printf_back();設(shè)計刪除函數(shù)模塊其思想是在顯示所有歌曲信息
7、后,這時用到加載函數(shù)等,用戶輸 入要刪除的歌曲的歌名,根據(jù)歌名查找記錄并予以刪除。其中,刪除 的數(shù)據(jù)是從文件中刪除,刪除數(shù)據(jù)后面的記錄即歌曲信息往前移。其 流程圖可表示為:void shan_chu()struct song s; int i,n,k,w0=1,w1,w2=0; n=load(); dok=-1;printf_face();for(i=0;in;i+)if(i!=0)&i%10=0)printf(nn,按任意鍵鍵繼續(xù));getchar();printf(nn);printf_one(i);doprintf (-nn請輸入你要刪除的歌的歌名!Name:);scanf(s,&;fo
8、r(i=0;in;i+)if(strcmp,)=0)k=i;s=soi;break;if(k=-1)printf(nnNO exit! Are you againnnt1).again 2).no and back!);scanf(%d,&n);if(n=1)shan_chu();else menu();while(k=-1);printf_face();printf_one(k);w1=shan_chue_data(i,n);if(w1=1)printf(n 成功.nn Are you againnnt1).again 2).no and back!);scanf(d,&w0
9、);w2=1;elsew0=0;if(w2=1)sok=s;while(w0=1);menu();設(shè)計瀏覽函數(shù)模塊所謂瀏覽,其思想就是顯示所有的歌曲信息,因為有時歌曲信息 較多,這時可以通過設(shè)計一個循環(huán),將歌曲信息以十個一屏的形式顯 示出來,這其中仍需調(diào)用加載函數(shù)及一些顯示函數(shù),最后按任意鍵返 回主菜單。void liu_lan()int i,n;n=load();printf_face();for(i=0;inn 1).name2).backn);printf(Which you need:);doscanf(%d,&c);if(c2|c1)printf(nChoice error!Plea
10、se again!);m=1;while(m!=0);switch(c)case 1:fname();break;printf_back();下面是根據(jù)歌曲名茶找函數(shù),其思想是首先輸入歌曲名,然后調(diào) 用加載函數(shù),通過strcmp函數(shù)找出該歌曲信息,如果存在則顯示出 歌曲信息,如果不存在則顯示Not Found,并提示用戶是繼續(xù)查找還 是返回主菜單。void fname()/*根據(jù)歌曲名查找*/int i,n;int k=-1;char name20;printf(nn name :);scanf(s,&name);n=load();for(i=0;in;i+)if(strcmp(soi.nam
11、e,name)=0)k=i;printf_one(k);if(k=-1)printf(nNot Foundn);printf(nnAre you againnt1).again2).no and back bb);scanf(%d,&n);if(n=1)fname();else menu();設(shè)計按作者分組功能該模塊的功能是將所有歌曲信息按照作者名一樣的進行分組,然后從新顯示所有分組后的歌曲信息。其操作過程是加載歌曲作者 名稱,將所有歌曲作者進行比較,一致的放在一起,然后顯示分組后的所有歌曲信息。void fz(int i,int n)int j;struct song s;for (j=i+
12、1;jn;j+)if(strcmp(soi.creater,soj.creater)=0)if(j=i+1)i+;fz (i,n);elses=soi+1;soi+1=soj;soj=s;elseif(j=n-1)i+;fz(i,n);save(n);voidfen_zu()ame,soi.creater,soi.singer,soi.date);輸入一個完整記錄函數(shù)該函數(shù)的作用是分別提示用戶來輸入一首歌的各個信息,包括歌 曲名,作者,演唱者,日期。用到的是scanf printf函數(shù)。void input(int i)printf(nname:);scanf(s,);prin
13、tf(ncreater:);scanf(s,soi.creater);printf(nsinger:);scanf(s,soi.singer);printf(ndate:);scanf(s,soi.date);保存函數(shù)該函數(shù)是首先打開文件,如果沒有就新建一個,以只寫的方式, 通過循環(huán)向文件中寫入歌曲信息。void save(int n)FILE *fp;int i;if(fp二fopen(,w)=NULL)printf(nCannot open filen);exit(1);for(i=0;in;i+) fprintf(fp,s %s %s %sn,,soi.creater,s
14、oi.s inger,soi.date);fclose(fp);返回上一級函數(shù)該函數(shù)就是向用戶提示一個成功并調(diào)用menu()函數(shù)返回主菜單。void printf_back()void menu();printf(nnt 成功nn);menu();加載函數(shù)該函數(shù)的作用是首先打開文件,然后從文件中用fscanf函數(shù)調(diào)出歌曲信息,完成后用fclose關(guān)閉文件。int load()FILE *fp;int i;if(fp二fopen(,r)=NULL)printf(nCannot open filen);return 0;for(i=0;!feof(fp);i+)fscanf(fp,s%s%s%s,
15、,soi.creater,soi.singer,soi.date);fclose(fp);return(i);顯示數(shù)據(jù)結(jié)構(gòu)項目函數(shù)該函數(shù)的作用就是通過一個printf函數(shù)顯示出歌曲信息的表 頭。void printf_face()printf(nname creater singer daten);顯示刪除數(shù)據(jù)函數(shù)int shan_chue_data(int j,int n)FILE *fp;int i;if(fp二fopen(,w)=NULL)printf(nCannot open filen);exit(1);for(i=0;in;i+)if(i!=j)fprintf(fp
16、,s %s %s %sn,,soi.creater,soi.singer,soi.date);fclose(fp);return 1;程序運行下面是各個模塊的界面圖主菜單函數(shù)g cADocuments and 5ettingsuserffiDebugq.eKe心心心心心心心心心心心An出 12 3 4 5 6輸入模塊在主界面出現(xiàn)后輸入1按回車看到下圖:-Ini x目;X。X。X。X。HXXXXXXXXXXXXXAl .s富 12 3 4 5 6輸入要輸入的歌曲記錄數(shù)然后逐條增加,如下圖:輸入2后返回主菜單再輸入3進入瀏覽模塊Pass請選cveatep singer datec2Thereany key to backMX1CX1CX1CX1CX1CJJCJJCJJCJ 目 JCJ -name 2) - hacliWhich you need?:1name :ae d:,- C:Docu merits and Settingsuser15 Pebugq.eKe11入出杳 2 -1 2 3 4 5 6請選擇通過何神方式查找=入出 -*噫 12 3 4 5 6請選擇jjKG2There are 3 record.Pass any key to hackXN
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《13潔凈的水域》說課稿-2023-2024學(xué)年科學(xué)六年級下冊蘇教版
- Unit 2 Months of a Year Lesson Three(說課稿)-2024-2025學(xué)年重大版英語六年級上冊
- Unit 6 Chores Lesson 4 Let's spell(說課稿)-2024-2025學(xué)年人教新起點版英語五年級上冊001
- 2025水泥磚銷售合同范文
- 2024年七年級數(shù)學(xué)下冊 第10章 一元一次不等式和一元一次不等式組10.4一元一次不等式的應(yīng)用說課稿(新版)冀教版
- 中型臭氧設(shè)備購買合同范例
- 8 安全地玩(說課稿)-部編版道德與法治二年級下冊
- 農(nóng)業(yè)設(shè)備供貨合同范例
- 冷庫設(shè)備購銷合同范例
- 個人借還款合同范例
- 2025年中國山泉水市場前景預(yù)測及投資規(guī)劃研究報告
- GB/T 18109-2024凍魚
- 2025年八省聯(lián)考數(shù)學(xué)試題(原卷版)
- 重慶市2025屆高三第一次聯(lián)合診斷檢測英語試卷(含解析含聽力原文無音頻)
- 《榜樣9》觀后感心得體會二
- 天津市部分區(qū)2024-2025學(xué)年九年級(上)期末物理試卷(含答案)
- 一氧化碳中毒培訓(xùn)
- 初二上冊好的數(shù)學(xué)試卷
- 保潔服務(wù)質(zhì)量與服務(wù)意識的培訓(xùn)
- 突發(fā)公共衛(wèi)生事件衛(wèi)生應(yīng)急
- 《景觀設(shè)計》課件
評論
0/150
提交評論