版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
歌曲信息管理系統(tǒng)——C語言歌曲信息管理系統(tǒng)——C語言歌曲信息管理系統(tǒng)——C語言V:1.0精細(xì)整理,僅供參考歌曲信息管理系統(tǒng)——C語言日期:20xx年X月歌曲信息管理系統(tǒng)[要求]制作一個(gè)歌曲信息管理系統(tǒng)功能:歌曲信息包括歌曲名,作者,演唱者,發(fā)行年月等??梢詫Ω枨畔⑦M(jìn)行輸入,刪除,瀏覽??梢圆樵兏鶕?jù)歌曲名,作者,演唱者歌曲信息??梢蕴峁┌醋髡叻纸M顯示功能。用文件存儲信息。我的設(shè)計(jì)思路根據(jù)題目要求,由于歌曲信息數(shù)據(jù)以文本文件的方式存放,所以應(yīng)提供文件的輸入、輸出等操作;在程序中需要瀏覽歌曲的信息,應(yīng)提供顯示、查詢等操作,按照一般的思路,我采用的是按照歌曲名進(jìn)行查找的方式。并且要提供可以按作者進(jìn)行分組的方法。整體設(shè)計(jì)思路是首先以一個(gè)主函數(shù)為主,將各個(gè)功能諸如瀏覽,刪除等分別設(shè)計(jì)成函數(shù),通過主函數(shù)的調(diào)用從而實(shí)現(xiàn)其功能。由于程序中經(jīng)常要用到一些函數(shù),諸如加載函數(shù),顯示函數(shù)等,如果重復(fù)輸入,會嚴(yán)重增加工作量,所以可以將這些函數(shù)作為公共函數(shù)編寫出來,以被隨時(shí)調(diào)用。分析一下整個(gè)系統(tǒng),根據(jù)上面的需求分析,可以將系統(tǒng)設(shè)計(jì)分為以下六大模塊。退出瀏覽刪除輸入歌曲信息管理 退出瀏覽刪除輸入歌曲信息管理查找分組查找分組 詳細(xì)設(shè)計(jì)#include<>#include<>#include<>#include<>#defineN100上面這些是整個(gè)程序要用到的文件包含命令和宏定義structsong{charname[20];charcreater[20];charsinger[20];chardate[6];}so[N];將下面所要編寫的函數(shù)分別聲明出來voidshu_ru();voidshan_chu();voidliu_lan();voidcha_zhao();voidfz(inti,intn);voidfen_zu();voidfname();voidprintf_one(inti);voidinput(inti);voidsave(intn);voidprintf_back();intload();voidprintf_face();intshan_chue_data(intj,intn);首先是設(shè)計(jì)主函數(shù),設(shè)計(jì)主函數(shù)一般應(yīng)該做到簡潔,主函數(shù)主要是提供函數(shù)調(diào)用等方面的功能,各功能函數(shù)以菜單的形式在主函數(shù)中列出來,通過主函數(shù)的調(diào)用從而實(shí)現(xiàn)各功能函數(shù)的功能。其用流程圖可表示為:根據(jù)n的值調(diào)用各功能模塊函數(shù)輸入n,判斷n是否是1-6顯示一系列功能選項(xiàng) N Y Y 根據(jù)n的值調(diào)用各功能模塊函數(shù)輸入n,判斷n是否是1-6顯示一系列功能選項(xiàng) 菜單界面voidmenu(){intk,w1;do{printf("\t\t******************目錄**********************\n\n");printf("1.輸入\n");printf("2.刪除\n");printf("3.瀏覽\n");printf("4.查找\n");printf(“5.分組\n”)printf("6.退出\n");對選擇的數(shù)字作判斷printf("\n\n\t請選擇(1-6):");scanf("%d",&k);if(k<1||k>6){w1=1;getchar();}elsew1=0;根據(jù)選擇調(diào)用功能函數(shù)}while(w1==1); switch(k) {case1:shu_ru();break; case2:shan_chu();break; case3:liu_lan();break; case4:cha_zhao();break; case5:fen_zu();break;case6exit(0); }}主函數(shù)voidmain(){ menu();}設(shè)計(jì)輸入功能函數(shù)模塊數(shù)據(jù)信息存放在文件中,為方便管理,一條記錄對應(yīng)一個(gè)歌曲,自然的我們可以想到用結(jié)構(gòu)體數(shù)組的形式存放多首歌曲信息。structsong{charname[20];/*歌曲名*/charcreater[20];/*作者*/charsinger[20];/*演唱者*/chardate[6];/*發(fā)行年月*/}so[N];該結(jié)構(gòu)體中包含了歌曲所需的各項(xiàng)信息,so[N]中的N為歌曲數(shù)目,程序中采用宏定義方式,可以隨時(shí)對N進(jìn)行修該。輸入模塊的設(shè)計(jì)思想是根據(jù)所要輸入的歌曲數(shù)目,循環(huán)調(diào)用輸入函數(shù),然后調(diào)用保存函數(shù)。voidshu_ru(){ inti,n; printf("要輸入幾首歌:",N-1); scanf("%d",&n); printf("\n開始輸入\n\n"); for(i=0;i<n;i++) { printf("\n輸入第%d首歌.\n",i+1); input(i); } if(i!=0)save(n); printf_back();}設(shè)計(jì)刪除函數(shù)模塊其思想是在顯示所有歌曲信息后,這時(shí)用到加載函數(shù)等,用戶輸入要?jiǎng)h除的歌曲的歌名,根據(jù)歌名查找記錄并予以刪除。其中,刪除的數(shù)據(jù)是從文件中刪除,刪除數(shù)據(jù)后面的記錄即歌曲信息往前移。其流程圖可表示為:是否找到此歌曲記錄輸入要?jiǎng)h除的歌曲名顯示所有歌曲記錄,看用戶需要?jiǎng)h除哪個(gè) 是否找到此歌曲記錄輸入要?jiǎng)h除的歌曲名顯示所有歌曲記錄,看用戶需要?jiǎng)h除哪個(gè) YN 顯示找到的記錄,調(diào)用刪除函數(shù)顯示沒有找到顯示找到的記錄,調(diào)用刪除函數(shù)顯示沒有找到Y(jié)詢問是否繼續(xù)刪除詢問是否繼續(xù)刪除返回主菜單返回主菜單Nvoidshan_chu(){ structsongs; inti,n,k,w0=1,w1,w2=0; n=load(); do { k=-1; printf_face(); for(i=0;i<n;i++) { if((i!=0)&&i%10==0) {printf("\n\n,按任意鍵鍵繼續(xù)");getchar();printf("\n\n"); } printf_one(i); }do { printf("\n\n請輸入你要?jiǎng)h除的歌的歌名!Name:");scanf("%s",&;for(i=0;i<n;i++) { if(strcmp,so[i].name)==0) { k=i; s=so[i]; break; } } if(k==-1){printf("\n\nNOexit!Areyouagain\n\n\t1).again2).noandback!");scanf("%d",&n);if(n==1)shan_chu();elsemenu(); }} while(k==-1); printf_face(); printf_one(k); w1=shan_chue_data(i,n); if(w1==1) {printf("\n成功.\n\nAreyouagain\n\n\t1).again2).noandback!"); scanf("%d",&w0); w2=1; } else { w0=0; if(w2==1)so[k]=s; } } while(w0==1); menu();}設(shè)計(jì)瀏覽函數(shù)模塊所謂瀏覽,其思想就是顯示所有的歌曲信息,因?yàn)橛袝r(shí)歌曲信息較多,這時(shí)可以通過設(shè)計(jì)一個(gè)循環(huán),將歌曲信息以十個(gè)一屏的形式顯示出來,這其中仍需調(diào)用加載函數(shù)及一些顯示函數(shù),最后按任意鍵返回主菜單。voidliu_lan(){ inti,n; n=load(); printf_face(); for(i=0;i<n;i++) { if((i!=0)&&(i%10==0)) { printf("\n\n按任意鍵繼續(xù)\n"); getchar(); printf("\n\n"); } printf_one(i); } printf("\tThereare%drecord.\n",n); printf("\nPassanykeytoback\n"); getchar(); menu();}設(shè)計(jì)查找函數(shù)模塊該模塊設(shè)計(jì)主要是通過歌曲名來進(jìn)行查找,如果文件中存在所要查找的歌曲,則顯示出該歌曲的所有信息,包括歌曲名,作者,演唱者及日期。查找結(jié)束后提示用戶是繼續(xù)查找還是返回主菜單。其流程圖可表示為:提示沒有找到是否找到該歌曲記錄輸入歌曲名提示沒有找到是否找到該歌曲記錄輸入歌曲名詢問是否繼續(xù)查找顯示找到的記錄 是 否詢問是否繼續(xù)查找顯示找到的記錄 是返回主菜單 否返回主菜單voidcha_zhao(){ intc,m=0; printf("\n\n通過何種方式查找=>\n\n1).name2).back\n"); printf("Whichyouneed:"); do { scanf("%d",&c); if(c>2||c<1) { printf("\nChoiceerror!Pleaseagain!");m=1; } }while(m!=0);switch(c) { case1:fname();break; } printf_back();}下面是根據(jù)歌曲名茶找函數(shù),其思想是首先輸入歌曲名,然后調(diào)用加載函數(shù),通過strcmp函數(shù)找出該歌曲信息,如果存在則顯示出歌曲信息,如果不存在則顯示NotFound,并提示用戶是繼續(xù)查找還是返回主菜單。voidfname()/*根據(jù)歌曲名查找*/{ inti,n;intk=-1; charname[20]; printf("\n\nname:"); scanf("%s",&name); n=load(); for(i=0;i<n;i++) if(strcmp(so[i].name,name)==0){k=i;printf_one(k);}if(k==-1){printf("\nNotFound\n"); printf("\n\nAreyouagain\n\t1).again2).noandback[]\b\b");scanf("%d",&n);if(n==1)fname();elsemenu();}}設(shè)計(jì)按作者分組功能該模塊的功能是將所有歌曲信息按照作者名一樣的進(jìn)行分組,然后從新顯示所有分組后的歌曲信息。其操作過程是加載歌曲作者名稱,將所有歌曲作者進(jìn)行比較,一致的放在一起,然后顯示分組后的所有歌曲信息。voidfz(inti,intn){ intj; structsongs; for(j=i+1;j<n;j++) { if(strcmp(so[i].creater,so[j].creater)==0) { if(j==i+1) { i++; fz(i,n); } else { s=so[i+1]; so[i+1]=so[j]; so[j]=s; } } else { if(j==n-1) { i++; fz(i,n); } } } save(n);}voidfen_zu()ame,so[i].creater,so[i].singer,so[i].date); }輸入一個(gè)完整記錄函數(shù)該函數(shù)的作用是分別提示用戶來輸入一首歌的各個(gè)信息,包括歌曲名,作者,演唱者,日期。用到的是scanfprintf函數(shù)。voidinput(inti){printf("\nname:");scanf("%s",so[i].name);printf("\ncreater:");scanf("%s",so[i].creater);printf("\nsinger:");scanf("%s",so[i].singer);printf("\ndate:");scanf("%s",so[i].date);}保存函數(shù)該函數(shù)是首先打開文件,如果沒有就新建一個(gè),以只寫的方式,通過循環(huán)向文件中寫入歌曲信息。voidsave(intn){ FILE*fp; inti; if((fp=fopen("","w"))==NULL) { printf("\nCannotopenfile\n"); exit(1); } for(i=0;i<n;i++) { fprintf(fp,"%s%s%s%s\n",so[i].name,so[i].creater,so[i].singer,so[i].date); } fclose(fp);}返回上一級函數(shù)該函數(shù)就是向用戶提示一個(gè)成功并調(diào)用menu()函數(shù)返回主菜單。voidprintf_back(){ voidmenu(); printf("\n\n\t成功\n\n");
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《教學(xué)課件急性胃炎》課件
- 初中數(shù)學(xué)解題方法-配方法課件
- 提升外部合作伙伴關(guān)系的管理措施計(jì)劃
- 水資源保護(hù)與社區(qū)發(fā)展的融合計(jì)劃
- 節(jié)水型城市的建設(shè)標(biāo)準(zhǔn)計(jì)劃
- 長期項(xiàng)目跟進(jìn)的秘書工作計(jì)劃
- 帶式壓榨過濾機(jī)相關(guān)項(xiàng)目投資計(jì)劃書
- 醫(yī)療儀器設(shè)備制造相關(guān)行業(yè)投資方案
- 智慧城市相關(guān)行業(yè)投資規(guī)劃報(bào)告范本
- 《液壓與氣動》課件 3徑向柱塞泵的結(jié)構(gòu)和工作原理
- 靜脈治療課件
- 社會學(xué)理論復(fù)習(xí)資料
- 艱苦邊遠(yuǎn)地區(qū)范圍和類別表
- 經(jīng)方論治冠心病(一)課件
- Matlab程序設(shè)計(jì)與應(yīng)用(第3版劉衛(wèi)國主編)課后習(xí)題參考答案
- 模具移交管理辦法
- 漢語拼音過關(guān)分類檢測(直接打印)
- 司美格魯肽CVOT解讀
- 安防監(jiān)控驗(yàn)收報(bào)告(詳細(xì)版)
- 國際標(biāo)準(zhǔn)ISO-10816是ISO-2372的升級版
- 妊娠劇吐的診斷及臨床處理專家共識培訓(xùn)課件
評論
0/150
提交評論