版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
C程序設(shè)計(jì)實(shí)習(xí)報(bào)告題目:歌曲信息管理系統(tǒng)目錄目錄需求分析 3概要設(shè)計(jì) 3詳細(xì)設(shè)計(jì) 4主函數(shù) 5各功能模塊要求 7(1)輸入模塊 7(2)刪除歌曲模塊 9(3)按作者分組顯示 14(4)查詢模塊 15(5)瀏覽模塊 17(6).公共函數(shù) 18運(yùn)行結(jié)果 19(1)主菜單函數(shù): 19(2)輸入模塊: 19(3)刪除模塊 21(4)按作者分組顯示歌曲 26(5)瀏覽所有歌曲 26(6)退出 27總結(jié) 28參考文獻(xiàn) 28附錄 29需求分析根據(jù)題目要求,由于歌曲信息是存放在文件中,所以應(yīng)提供文件的輸入﹑輸出等操作;在程序中需要瀏覽歌曲的信息,應(yīng)提供顯示,查找等操作;另外還應(yīng)提供鍵盤(pán)式選擇菜單實(shí)現(xiàn)功能選擇。概要設(shè)計(jì)`歌曲信息管理系統(tǒng)數(shù)據(jù)輸入歌曲信息管理系統(tǒng)數(shù)據(jù)輸入數(shù)據(jù)顯示數(shù)據(jù)查詢數(shù)據(jù)刪除數(shù)據(jù)讀取詳細(xì)設(shè)計(jì)歌曲管理流程圖輸入歌曲界面輸入歌曲界面主界面主界面刪除歌曲界面刪除歌曲界面連接數(shù)據(jù)庫(kù)連接數(shù)據(jù)庫(kù)按作者分組顯示界面按作者分組顯示界面按鍵選擇按鍵選擇退出主界面查詢歌曲界面退出主界面查詢歌曲界面 瀏覽所有歌曲界面瀏覽所有歌曲界面YY開(kāi)始顯示一系列功能選項(xiàng)根據(jù)n的值調(diào)用個(gè)功能模塊結(jié)束N輸入n,判斷是否是1~6?圖2主函數(shù)主函數(shù)一般設(shè)計(jì)得比較簡(jiǎn)潔,只提供輸入,處理和輸出部分的函數(shù)調(diào)用。其中各功能模塊用菜單方式選擇。其流程圖如圖2所示。[程序]/***********主函數(shù)**********/main(){intn;printf("\t****************************菜單****************************\n\n");printf("\t\t\t1.輸入歌曲\n");printf("\t\t\t2.刪除歌曲\n");printf("\t\t\t3.按作者分組顯示歌曲\n");printf("\t\t\t4.查詢歌曲信息\n");printf("\t\t\t5.讀取歌曲\n");printf("\t\t\t6.退出\n");printf("\n\n\t*********************************************************\n");printf("\n請(qǐng)選擇數(shù)字(1-6):"); scanf("%d",&n); if(n<1||n>6) {printf("您輸入的數(shù)據(jù)不符合要求,請(qǐng)重新輸入!!!");exit(0);}switch(n){case1:enter();break; case2:del();break; case3:group();break; case4:search();break; case5:read();break; case6:exit(0);}}以上是最初的想法。但經(jīng)過(guò)自己的考慮后,發(fā)現(xiàn)這個(gè)主函數(shù)的容錯(cuò)功能有點(diǎn)缺點(diǎn):就是當(dāng)用戶輸入不符合要求的數(shù)字時(shí)(如輸入數(shù)字7),這時(shí)就會(huì)退出程序,給用戶帶來(lái)不便,不符合程序設(shè)計(jì)的要求。同時(shí)發(fā)現(xiàn)將主函數(shù)搞成一個(gè)獨(dú)立函數(shù),可以為自己在后面調(diào)用函數(shù)時(shí)更直觀的檢查程序,從而不易出錯(cuò);故作了如下修改,修改后的程序:menu()//輸入菜單{intn,m;do{printf("\t****************************菜單****************************\n\n");printf("\t\t\t1.輸入歌曲\n");printf("\t\t\t2.刪除歌曲\n");printf("\t\t\t3.按作者分組顯示歌曲\n");printf("\t\t\t4.查詢歌曲信息\n");printf("\t\t\t5.讀取歌曲\n");printf("\t\t\t6.退出\n");printf("\n\n\t*********************************************************\n");printf("\n請(qǐng)選擇數(shù)字(1-6):"); scanf("%d",&n); if(n<1||n>6)/**對(duì)選擇的數(shù)字做判斷**/ {m=1;printf("您輸入的數(shù)據(jù)不符合要求,請(qǐng)重新輸入!!!\n\n");getchar();} elsem==0;}while(m==1);switch(n){case1:enter();break; case2:del();break; case3:group();break; case4:search();break; case5:read();break; case6:exit(0);}}/***********主函數(shù)**********/main(){menu();}各功能模塊要求(1)輸入模塊【分析】把歌曲信息存放在文件中,一條記錄對(duì)應(yīng)一首歌曲,這樣做既符合習(xí)慣也方便信息管理。把歌曲的歌曲名,作者,歌手,發(fā)行年月作為結(jié)構(gòu)體的成員。要存放歌曲信息就用結(jié)構(gòu)體structsong{charname[25];charwriter[25];charsinger[25];charyear[25];}s[N];s[N]中的N為歌曲數(shù)目,程序中采用宏定義的方式,可以隨時(shí)在源程序宏定義中修改,本程序采用#define N100,輸入模塊的流程圖如下圖所示:·開(kāi)始開(kāi)始按提示輸入歌曲信息調(diào)用保存函數(shù)save()主菜單01是否保存(1/0)【程序】voidenter(){inti,m;printf("輸入歌曲名:\n");scanf("%s",s[i].name);printf("輸入作者:\n");scanf("%s",s[i].writer);printf("輸入歌手:\n");scanf("%s",s[i].singer);printf("輸入年分:\n");scanf("%s",s[i].year);printf("\n");printf("%s,%s,%s,%s\n",s[i].name,s[i].writer,s[i].singer,s[i].year);printf("\n");printf("是否保存?(1/0):");scanf("%d",&m);switch(m){case0:break;case1:save();break;}menu();}其中需要調(diào)用的save函數(shù)如下:voidsave(){inti; FILE*fp; if((fp=fopen("歌曲4.txt","a+"))==NULL) { printf("不能打開(kāi)文件\n"); exit(0); }fprintf(fp,"\n%s%s%s%s\n",s[i].name,s[i].writer,s[i].singer,s[i].year);fclose(fp); printf("**********保存成功**********\n");}(2)刪除歌曲模塊流程圖如下:1010開(kāi)始選擇刪除方式歌曲名作者歌手發(fā)現(xiàn)年月輸入要?jiǎng)h除的歌曲名主菜單執(zhí)行刪除操作并將數(shù)據(jù)存到文件輸入要?jiǎng)h除的作者名輸入要?jiǎng)h除發(fā)行年月輸入要?jiǎng)h除的歌手名是否刪除【程序】voiddel(){inti,p,j,m,n,k,l; FILE*fp;n=load();printf("\n要?jiǎng)h除的內(nèi)容:\n");printf("\n1.歌曲名");printf("\n2.作者");printf("\n3.歌手");printf("\n4.發(fā)行年月"); printf("\n5.返回\n");do{ printf("請(qǐng)選擇數(shù)字(1-5):"); scanf("%d",&p);}while(p<1||p>5);switch(p){case1:printf("請(qǐng)輸入要?jiǎng)h除的歌曲名:"); scanf("%s",); for(i=0;i<n;i++) {if(strcmp(,s[i].name)==0) {printf("\n");printf("%s,%s,%s,%s\n",s[i].name,s[i].writer,s[i].singer,s[i].year); printf("\n");break;}} printf("\n你確定要?jiǎng)h除嗎?(1/0):"); scanf("%d",&m); if(m==1) { if((fp=fopen("歌曲4.txt","r+"))==NULL) { printf("不能打開(kāi)文件\n"); exit(0); }for(j=0;j<n;j++)fscanf(fp,"\n%s%s%s%s\n",s[j].name,s[j].writer,s[j].singer,s[j].year);fclose(fp); for(k=i+1;k<n;k++) { strcpy(s[k-1].name,s[k].name); strcpy(s[k-1].writer,s[k].writer); strcpy(s[k-1].singer,s[k].singer); strcpy(s[k-1].year,s[k].year); }printf("信息已刪除"); } elsebreak; if((fp=fopen("歌曲4.txt","w+"))==NULL) { printf("不能打開(kāi)文件\n"); exit(0); }for(l=0;l<n-1;l++)fprintf(fp,"\n%s%s%s%s\n",s[l].name,s[l].writer,s[l].singer,s[l].year); fclose(fp);printf("**********保存成功**********\n"); break;case2:printf("請(qǐng)輸入要?jiǎng)h除的作者:"); scanf("%s",s3.writer); for(i=0;i<n;i++) {if(strcmp(s3.writer,s[i].writer)==0) {printf("\n");printf("%s,%s,%s,%s\n",s[i].name,s[i].writer,s[i].singer,s[i].year); printf("\n");break;}} printf("\n你確定要?jiǎng)h除嗎?(1/0):"); scanf("%d",&m); if(m==1) { if((fp=fopen("歌曲4.txt","r+"))==NULL) { printf("不能打開(kāi)文件\n"); exit(0); }for(j=0;j<n;j++)fscanf(fp,"\n%s%s%s%s\n",s[j].name,s[j].writer,s[j].singer,s[j].year);fclose(fp); for(k=i+1;k<n;k++) { strcpy(s[k-1].name,s[k].name); strcpy(s[k-1].writer,s[k].writer); strcpy(s[k-1].singer,s[k].singer); strcpy(s[k-1].year,s[k].year); }printf("信息已刪除");} elsebreak; if((fp=fopen("歌曲4.txt","w+"))==NULL) { printf("不能打開(kāi)文件\n"); exit(0); }for(l=0;l<n-1;l++)fprintf(fp,"\n%s%s%s%s\n",s[l].name,s[l].writer,s[l].singer,s[l].year); fclose(fp);printf("**********保存成功**********\n"); break; case3:printf("請(qǐng)輸入要?jiǎng)h除的歌手:"); scanf("%s",s3.singer); for(i=0;i<n;i++) {if(strcmp(s3.singer,s[i].singer)==0) {printf("\n");printf("%s,%s,%s,%s\n",s[i].name,s[i].writer,s[i].singer,s[i].year); printf("\n");break;}} printf("\n你確定要?jiǎng)h除嗎?(1/0):"); scanf("%d",&m); if(m==1) { if((fp=fopen("歌曲4.txt","r+"))==NULL) { printf("不能打開(kāi)文件\n"); exit(0); }for(j=0;j<n;j++)fscanf(fp,"\n%s%s%s%s\n",s[j].name,s[j].writer,s[j].singer,s[j].year);fclose(fp); for(k=i+1;k<n;k++) { strcpy(s[k-1].name,s[k].name); strcpy(s[k-1].writer,s[k].writer); strcpy(s[k-1].singer,s[k].singer); strcpy(s[k-1].year,s[k].year);}printf("信息已刪除");} elsebreak; if((fp=fopen("歌曲4.txt","w+"))==NULL) { printf("不能打開(kāi)文件\n"); exit(0); }for(l=0;l<n-1;l++)fprintf(fp,"\n%s%s%s%s\n",s[l].name,s[l].writer,s[l].singer,s[l].year); fclose(fp);printf("**********保存成功**********\n"); break; case4:printf("請(qǐng)輸入要?jiǎng)h除的歌曲發(fā)行年月:"); scanf("%s",s3.year); for(i=0;i<n;i++) {if(strcmp(s3.year,s[i].year)==0) {printf("\n");printf("%s,%s,%s,%s\n",s[i].name,s[i].writer,s[i].singer,s[i].year); printf("\n");break;}} printf("\n你確定要?jiǎng)h除嗎?(1/0):"); scanf("%d",&m); if(m==1) { if((fp=fopen("歌曲4.txt","r+"))==NULL) { printf("不能打開(kāi)文件\n"); exit(0); }for(j=0;j<n;j++)fscanf(fp,"\n%s%s%s%s\n",s[j].name,s[j].writer,s[j].singer,s[j].year);fclose(fp); for(k=i+1;k<n;k++) { strcpy(s[k-1].name,s[k].name); strcpy(s[k-1].writer,s[k].writer); strcpy(s[k-1].singer,s[k].singer); strcpy(s[k-1].year,s[k].year);} printf("信息已刪除");} elsebreak; if((fp=fopen("歌曲4.txt","w+"))==NULL) { printf("不能打開(kāi)文件\n"); exit(0); }for(l=0;l<n-1;l++)fprintf(fp,"\n%s%s%s%s\n",s[l].name,s[l].writer,s[l].singer,s[l].year); fclose(fp);printf("**********保存成功**********\n");break; case5:break;} menu();}(3)按作者分組顯示流程圖如下:輸入作者輸入作者顯示記錄結(jié)束開(kāi)始【程序】voidgroup(){inti,n;n=load(); printf("請(qǐng)輸入作者:");scanf("%s",s3.writer);for(i=0;i<n;i++) {if(strcmp(s3.writer,s[i].writer)==0) { printf("\n");printf("%s,%s,%s,%s\n",s[i].name,s[i].writer,s[i].singer,s[i].year);printf("\n");} }menu();}(4)查詢模塊流程圖如下:開(kāi)始開(kāi)始選擇查詢歌曲方式歌曲名作者歌手發(fā)現(xiàn)年月輸入要查詢的歌曲名主菜單輸入要查詢的作者名輸入要查詢的發(fā)行年月輸入要查詢的歌手名顯示查找到的記錄[程序]voidsearch(){inti,p,j,m,n;n=load();printf("\n要查詢的內(nèi)容:\n");printf("\n1.歌曲名");printf("\n2.作者");printf("\n3.歌手");printf("\n4.發(fā)行年月"); printf("\n5.返回\n");do{printf("請(qǐng)選擇數(shù)字(1-5):"); scanf("%d",&p);}while(p<1||p>5);switch(p){case1:printf("請(qǐng)輸入要查詢的歌曲名:");scanf("%s",);for(i=0;i<N;i++) {if(strcmp(,s[i].name)==0){printf("\n\n\n");printf("%s,%s,%s,%s\n",s[i].name,s[i].writer,s[i].singer,s[i].year);printf("\n\n");}}break;case2:printf("請(qǐng)輸入要查詢的作者:");scanf("%s",s3.writer);for(i=0;i<N;i++) {if(strcmp(s3.writer,s[i].writer)==0) {printf("\n\n\n");printf("%s,%s,%s,%s\n",s[i].name,s[i].writer,s[i].singer,s[i].year);printf("\n\n");}}break;case3:printf("請(qǐng)輸入要查詢的歌手:");scanf("%s",s3.singer);for(i=0;i<N;i++) {if(strcmp(s3.singer,s[i].singer)==0){printf("\n\n\n");printf("%s,%s,%s,%s\n",s[i].name,s[i].writer,s[i].singer,s[i].year);printf("\n\n");} }break; case4:printf("請(qǐng)輸入要?jiǎng)h除的歌曲發(fā)行年月:");scanf("%s",s3.year);for(i=0;i<N;i++) {if(strcmp(s3.year,s[i].year)==0){printf("\n\n\n");printf("%s,%s,%s,%s\n",s[i].name,s[i].writer,s[i].singer,s[i].year);printf("\n\n");}} break; case5:break;}menu();}(5)瀏覽模塊流程圖如下:開(kāi)始開(kāi)始打開(kāi)文件退出主界面顯示記錄主菜單關(guān)閉文件Null[程序]:intread(){inti; FILE*fp; if((fp=fopen("歌曲4.txt","r"))==NULL) { printf("不能打開(kāi)文件\n"); returnNULL; } printf("\n歌曲名作者歌手發(fā)行年月\n"); printf("\n\n");for(i=0;!feof(fp);i++) { fscanf(fp,"%s%s%s%s\n",&s[i].name,&s[i].writer,&s[i].singer,&s[i].year); printf("\n\n%s%s%s%s\n\n",s[i].name,s[i].writer,s[i].singer,s[i].year); }printf("\n\n");fclose(fp); printf("\n\n\n已正確讀取文件!\n\n\n"); menu();}(6).公共函數(shù)intload(){inti; FILE*fp; if((fp=fopen("歌曲4.txt","r"))==NULL) { printf("不能打開(kāi)文件\n"); returnNULL; }for(i=0;!feof(fp);i++) fscanf(fp,"%s%s%s%s\n",&s[i].name,&s[i].writer,&s[i].singer,&s[i].year);fclose(fp);returni;}運(yùn)行結(jié)果下面是各個(gè)模塊的界面圖:(1)主菜單函數(shù):效果如下圖所示。(2)輸入模塊:在主界面出現(xiàn)后輸入1并按【enter】鍵,結(jié)果如下圖所示。按提示輸入歌曲信息。選擇保存后的效果圖如下:選擇不保存時(shí)的效果圖如下:(3)刪除模塊在主界面出現(xiàn)后輸入2并按【enter】鍵,結(jié)果如下圖所示。進(jìn)入刪除菜單后,選擇1并按【enter】鍵。選擇刪除時(shí)的效果圖如下:選擇不刪除時(shí)的效果圖如下:進(jìn)入刪除菜單后,選擇2并按【enter】鍵。選擇刪除時(shí)的效果圖如下:選擇不刪除時(shí)的效果圖如下:進(jìn)入刪除菜單后,選擇3并按【enter】鍵。選擇刪除時(shí)的效果圖如下:選擇不刪除時(shí)的效果圖如下:進(jìn)入刪除菜單后,選擇4并按【enter】鍵。選擇刪除時(shí)的效果圖如下:進(jìn)入刪除菜單后,選擇4并按【enter】鍵。選擇不刪除時(shí)的效果圖如下:進(jìn)入刪除菜單后,選擇5并按【enter】鍵效果圖如下:(4)按作者分組顯示歌曲進(jìn)入在主界面出現(xiàn)后輸入3并按【enter】鍵,按提示輸入信息,結(jié)果如下圖所示。(5)瀏覽所有歌曲進(jìn)入在主界面出現(xiàn)后輸入5并按【enter】鍵,結(jié)果如下圖所示。與文件里信息一樣(6)退出進(jìn)入在主界面出現(xiàn)后輸入6并按【enter】鍵,結(jié)果如下圖所示??偨Y(jié)在這次的C課程設(shè)計(jì)的實(shí)習(xí)當(dāng)中,我收獲很多,在知識(shí)上,我掌握了模塊化設(shè)計(jì)方法,能夠深入的理解結(jié)構(gòu)化程序設(shè)計(jì)思想,熟練運(yùn)用結(jié)構(gòu)化程序設(shè)計(jì)方法,提高了運(yùn)用C語(yǔ)言進(jìn)行程序設(shè)計(jì)的能力;在學(xué)習(xí)方法上,我更加深刻的明白了,遇到了問(wèn)題不要著急,自己先靜下心來(lái)好好想一下,不能解決時(shí),我們可以向老師請(qǐng)教,你會(huì)發(fā)現(xiàn)你可以從老師那你學(xué)到很多,同時(shí)也可以和同學(xué)討論。這次C課程設(shè)計(jì)讓我最深刻的是寫(xiě)程序一定要有一個(gè)好的習(xí)慣。寫(xiě)程序時(shí)先確定要分幾個(gè)模塊,然后再分模塊去設(shè)計(jì)。本程序的設(shè)計(jì)不足之處是本程序用了宏定義,可能會(huì)給用戶帶來(lái)一定的麻煩。可能的解決方案是定義一個(gè)子函數(shù),進(jìn)行函數(shù)調(diào)用。謝謝老師在這次實(shí)習(xí)當(dāng)中的耐心指導(dǎo)?。?!參考文獻(xiàn)1.譚浩強(qiáng),C程序設(shè)計(jì)第三版,清華大學(xué)出版社,2005.72.張冬梅,劉遠(yuǎn)興,程晶,王媛妮C語(yǔ)言課程設(shè)計(jì)與學(xué)習(xí)指導(dǎo),中國(guó)鐵道出版社,2008,7附錄歌曲信息管理系統(tǒng)原程序:#include<stdio.h>#include<stdlib.h>#include<string.h>#define N100structsong{charname[25];charwriter[25];charsinger[25];charyear[25];}s[N],s3;/****************************追加模塊****************************/voidsave(){inti; FILE*fp; if((fp=fopen("歌曲4.txt","a+"))==NULL) { printf("不能打開(kāi)文件\n"); exit(0); }fprintf(fp,"\n%s%s%s%s\n",s[i].name,s[i].writer,s[i].singer,s[i].year);fclose(fp); printf("**********保存成功**********\n");}/****************************加載模塊****************************/intload(){inti; FILE*fp; if((fp=fopen("歌曲4.txt","r"))==NULL) { printf("不能打開(kāi)文件\n"); returnNULL; }for(i=0;!feof(fp);i++)fscanf(fp,"%s%s%s%s\n",&s[i].name,&s[i].writer,&s[i].singer,&s[i].year);fclose(fp);returni;}/****************************讀取模塊****************************/intread(){inti; FILE*fp; if((fp=fopen("歌曲4.txt","r"))==NULL) { printf("不能打開(kāi)文件\n"); returnNULL; } printf("\n歌曲名作者歌手發(fā)行年月\n"); printf("\n\n");for(i=0;!feof(fp);i++) { fscanf(fp,"%s%s%s%s\n",&s[i].name,&s[i].writer,&s[i].singer,&s[i].year);printf("\n\n%s%s%s%s\n\n",s[i].name,s[i].writer,s[i].singer,s[i].year); }printf("\n\n");fclose(fp); printf("\n\n\n已正確讀取文件!\n\n\n"); menu();}/****************************輸入模塊****************************/voidenter(){inti,m;printf("輸入歌曲名:\n");scanf("%s",s[i].name);printf("輸入作者:\n");scanf("%s",s[i].writer);printf("輸入歌手:\n");scanf("%s",s[i].singer);printf("輸入年分:\n");scanf("%s",s[i].year);printf("\n");printf("%s,%s,%s,%s\n",s[i].name,s[i].writer,s[i].singer,s[i].year);printf("\n");printf("是否保存?(1/0):");scanf("%d",&m);switch(m){case0:break;case1:save();break;}menu();}/****************************刪除模塊****************************/voiddel(){inti,p,j,m,n,k,l;FILE*fp;n=load();printf("\n要?jiǎng)h除的內(nèi)容:\n");printf("\n1.歌曲名");printf("\n2.作者");printf("\n3.歌手");printf("\n4.發(fā)行年月"); printf("\n5.返回\n");do{ printf("請(qǐng)選擇數(shù)字(1-5):"); scanf("%d",&p);}while(p<1||p>5);switch(p){case1:printf("請(qǐng)輸入要?jiǎng)h除的歌曲名:"); scanf("%s",); for(i=0;i<n;i++) {if(strcmp(,s[i].name)==0) {printf("\n");printf("%s,%s,%s,%s\n",s[i].name,s[i].writer,s[i].singer,s[i].year);printf("\n");break;}} printf("\n你確定要?jiǎng)h除嗎?(1/0):"); scanf("%d",&m); if(m==1) { if((fp=fopen("歌曲4.txt","r+"))==NULL) { printf("不能打開(kāi)文件\n"); exit(0); }for(j=0;j<n;j++)fscanf(fp,"\n%s%s%s%s\n",s[j].name,s[j].writer,s[j].singer,s[j].year);fclose(fp); for(k=i+1;k<n;k++) { strcpy(s[k-1].name,s[k].name); strcpy(s[k-1].writer,s[k].writer); strcpy(s[k-1].singer,s[k].singer); strcpy(s[k-1].year,s[k].year); }printf("信息已刪除"); } elsebreak; if((fp=fopen("歌曲4.txt","w+"))==NULL) { printf("不能打開(kāi)文件\n"); exit(0); }for(l=0;l<n-1;l++)fprintf(fp,"\n%s%s%s%s\n",s[l].name,s[l].writer,s[l].singer,s[l].year); fclose(fp); printf("**********保存成功**********\n"); break;case2:printf("請(qǐng)輸入要?jiǎng)h除的作者:"); scanf("%s",s3.writer); for(i=0;i<n;i++) {if(strcmp(s3.writer,s[i].writer)==0) {printf("\n");printf("%s,%s,%s,%s\n",s[i].name,s[i].writer,s[i].singer,s[i].year);printf("\n");break;}}printf("\n你確定要?jiǎng)h除嗎?(1/0):");scanf("%d",&m); if(m==1) { if((fp=fopen("歌曲4.txt","r+"))==NULL) { printf("不能打開(kāi)文件\n"); exit(0); }for(j=0;j<n;j++)fscanf(fp,"\n%s%s%s%s\n",s[j].name,s[j].writer,s[j].singer,s[j].year);fclose(fp); for(k=i+1;k<n;k++) { strcpy(s[k-1].name,s[k].name); strcpy(s[k-1].writer,s[k].writer); strcpy(s[k-1].singer,s[k].singer); strcpy(s[k-1].year,s[k].year); }printf("信息已刪除"); } elsebreak; if((fp=fopen("歌曲4.txt","w+"))==NULL) { printf("不能打開(kāi)文件\n"); exit(0); }for(l=0;l<n-1;l++)fprintf(fp,"\n%s%s%s%s\n",s[l].name,s[l].writer,s[l].singer,s[l].year); fclose(fp); printf("**********保存成功**********\n"); break; case3:printf("請(qǐng)輸入要?jiǎng)h除的歌手:"); scanf("%s",s3.singer); for(i=0;i<n;i++) {if(strcmp(s3.singer,s[i].singer)==0) {printf("\n");printf("%s,%s,%s,%s\n",s[i].name,s[i].writer,s[i].singer,s[i].year);printf("\n");break;}} printf("\n你確定要?jiǎng)h除嗎?(1/0):"); scanf("%d",&m); if(m==1) { if((fp=fopen("歌曲4.txt","r+"))==NULL) { printf("不能打開(kāi)文件\n"); exit(0); }for(j=0;j<n;j++)fscanf(fp,"\n%s%s%s%s\n",s[j].name,s[j].writer,s[j].singer,s[j].year);fclose(fp); for(k=i+1;k<n;k++) { strcpy(s[k-1].name,s[k].name); strcpy(s[k-1].writer,s[k].writer); strcpy(s[k-1].singer,s[k].singer); strcpy(s[k-1].year,s[k].year); }printf("信息已刪除"); } elsebreak; if((fp=fopen("歌曲4.txt","w+"))==NULL) { printf("不能打開(kāi)文件\n"); exit(0); }for(l=0;l<n-1;l++)fprintf(fp,"\n%s%s%s%s\n",s[l].name,s[l].writer,s[l].singer,s[l].year); fclose(fp); printf("**********保存成功**********\n"); break; case4:printf("請(qǐng)輸入要?jiǎng)h除的歌曲發(fā)行年月:"); scanf("%s",s3.year); for(i=0;i<n;i++) {if(strcmp(s3.year,s[i].year)==0) {printf("\n");printf("%s,%s,%s,%s\n",s[i].name,s[i].writer,s[i].singer,s[i].year); printf("\n");break;}} printf("\n你確定要?jiǎng)h除嗎?(1/0):"); scanf("%d",&m); if(m==1) { if((fp=fopen("歌曲4.txt","r+"))==NULL) { printf("不能打開(kāi)文件\n"); exit(0); }for(j=0;j<n;j++)fscanf(fp,"\n%s%s%s%s\n",s[j].name,s[j].writer,s[j].singer,s[j].year);fclose(fp); for(k=i+1;k<n;k++) { strcpy(s[k-1].name,s[k].name); strcpy(s[k-1].writer,s[k].writer); strcpy(s[k-1].singer,s[k].singer); strcpy(s[k-1].year,s[k].year); }printf("信息已刪除"); } elsebreak; if((fp=fopen("歌曲4.txt","w+"))==NULL) { printf("不能打開(kāi)文件\n"); exit(0); }for(l=0;l<n-1;l++)fprintf(fp,"\n%s%s%s%s\n",s[l].name,s[l].writer,s[l].singer,s[l].year);fclose(fp); printf("**********保存成功**********\n"); break; case5:break;} menu();}/****************************按作者分組顯示模塊****************************/voidgroup(){inti,n;n=load(); printf("請(qǐng)輸入作者:");scanf("%s",s3.writer);for(i=0;i<n;i++) {if(strcmp(s3.writer,s[i].writer)==0) { printf("\n");printf("%s,%s,%s,%s\n",s[i].name,s[i].writer,s[i].singer,s[i].year);printf("\n");} } menu();}/****************************查詢模塊****************************/voidsearch(){inti,p,j,m,n;n=load();printf("\n要查詢的內(nèi)容:\n");printf("\n1.歌曲名");printf("\n2.作者");printf("\n3.歌手");printf("\n4.發(fā)行年月"); printf(
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療行業(yè)匯報(bào)的特殊要求
- 呼吸科醫(yī)院的市場(chǎng)分析與策略
- 江蘇省連云港市2023-2024學(xué)年高一上學(xué)期期末調(diào)研考試歷史試題(解析版)
- 湖北省荊門市2023-2024學(xué)年高一上學(xué)期期末考試歷史試題(解析版)
- 裝配式建筑EPC工程總承包項(xiàng)目管理-裝配式建筑工程技術(shù)專57課件講解
- 小學(xué)數(shù)學(xué)與生活相結(jié)合的教學(xué)實(shí)踐
- 猜想08 超重與失重、動(dòng)力學(xué)圖像、動(dòng)力學(xué)兩類基本問(wèn)題(解析版)-高一上期末物理考點(diǎn)大串(人教版)
- 幼兒園巡查工作記錄
- 四川電子機(jī)械職業(yè)技術(shù)學(xué)院《建筑制圖與AutoCAD》2023-2024學(xué)年第一學(xué)期期末試卷
- 四川電影電視學(xué)院《企業(yè)資源規(guī)劃》2023-2024學(xué)年第一學(xué)期期末試卷
- 營(yíng)銷渠道和營(yíng)銷渠道管理概述
- 夕會(huì)教案:養(yǎng)成課間文明的好習(xí)慣
- 精品在線開(kāi)放課程建設(shè)與評(píng)價(jià)標(biāo)準(zhǔn)
- 自主研究開(kāi)發(fā)項(xiàng)目計(jì)劃書(shū)
- 第二十章曲線積分-ppt課件
- 3Q模板IQOQPQ驗(yàn)證方案模版
- T∕CCOA 24-2020 棕櫚仁餅(粕)
- 聚酰亞胺基礎(chǔ)知識(shí)-1(橫田力男)
- 聚乙烯天然氣管道施工技術(shù)交底(完整版)
- 小學(xué)四年級(jí)奧數(shù)-變化規(guī)律(一)
- 萬(wàn)達(dá)集團(tuán)薪酬管理制度
評(píng)論
0/150
提交評(píng)論