![](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/5/22/9ab9d4dd-4841-4675-bb33-c8160d40b480/9ab9d4dd-4841-4675-bb33-c8160d40b480pic.jpg)
![c語(yǔ)言課程設(shè)計(jì)---音頻信息管理_第1頁(yè)](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/5/22/9ab9d4dd-4841-4675-bb33-c8160d40b480/9ab9d4dd-4841-4675-bb33-c8160d40b4801.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 一 引言</b></p><p> 在現(xiàn)在的日常生活中,人們對(duì)娛樂(lè)的要求越來(lái)越高。因?yàn)殡S著科技的突飛猛進(jìn),娛樂(lè)形式、娛樂(lè)設(shè)備也越來(lái)越多。而聽(tīng)音樂(lè)則是其中一種十分重要而實(shí)現(xiàn)起來(lái)又十分簡(jiǎn)單的娛樂(lè)形式,所以說(shuō),音樂(lè)無(wú)處不在。因此,我們對(duì)音樂(lè)的管理就十分有必要了?,F(xiàn)在的生活節(jié)奏越來(lái)越快,人們想要更加方便而快捷的管理自己的音樂(lè),節(jié)省自己的時(shí)間。而目前我們學(xué)習(xí)過(guò)如何使C語(yǔ)
2、言來(lái)進(jìn)行編程,所以就有了這個(gè)簡(jiǎn)單的設(shè)計(jì)。</p><p> 隨著各種便攜式音樂(lè)播放器以及電子計(jì)算機(jī)的普及,人們所擁有的音樂(lè)越來(lái)越多,風(fēng)格,演唱者,各不相同,而人們?cè)诓煌男那椋煌奶鞖鈺r(shí)對(duì)音樂(lè)的愛(ài)好是不同的。人們需要更加快捷而方便的管理自己的音樂(lè),讓自己的音樂(lè)列表井然有序??梢愿鶕?jù)不同的場(chǎng)合,不同的心情快速的找到自己所需要的音樂(lè)。讓音樂(lè)匹配自己的心情,通過(guò)音樂(lè)來(lái)表達(dá)自己的感受是很多人習(xí)慣。音樂(lè)是一種娛樂(lè),同時(shí)
3、也是一種特別的表達(dá)方式。歌手通過(guò)歌曲來(lái)表達(dá)自己的某種情感,產(chǎn)生與聽(tīng)眾的共鳴。當(dāng)聽(tīng)眾想要表達(dá)相同的情感時(shí),直接就可以引用自己聽(tīng)過(guò)的歌。我們讓這種娛樂(lè),或者更著重于對(duì)自己情感的表達(dá)實(shí)現(xiàn)起來(lái)更加容易。</p><p> 運(yùn)用音樂(lè)管理程序可以更加方便而快捷的管理自己喜歡的音樂(lè),省去了繁瑣的過(guò)程,讓聽(tīng)音樂(lè)更加方便快捷,節(jié)省自己的寶貴時(shí)間。音樂(lè)管理是每個(gè)音樂(lè)播放器必須實(shí)現(xiàn)的功能之一。隨著各個(gè)電子廠商退出自己的便攜是播放器,
4、只有高效便捷的的音樂(lè)管理方式才能在競(jìng)爭(zhēng)中脫穎而出。好的音樂(lè)管理程序是對(duì)消費(fèi)者的負(fù)責(zé),更是對(duì)自己責(zé)任的負(fù)責(zé)。</p><p> 以前的操作系統(tǒng)等系統(tǒng)軟件主要是由匯編語(yǔ)言編寫(xiě)的(包括UNIX操作系統(tǒng)在內(nèi))。由于匯編語(yǔ)言指令時(shí)機(jī)器所不能直接識(shí)別、理解和執(zhí)行的,最好改用高級(jí)語(yǔ)言,但一般高級(jí)語(yǔ)言難以實(shí)現(xiàn)匯編語(yǔ)言的某些功能(匯編語(yǔ)言可以直接對(duì)硬件進(jìn)行操作,例如,對(duì)內(nèi)存地址的操作、位操作等)。人們?cè)O(shè)想能否找到一種既具有一般高
5、級(jí)語(yǔ)言特性,又具有低級(jí)語(yǔ)言特性的語(yǔ)言,集它們的優(yōu)點(diǎn)于一身。于是,C語(yǔ)言就在這種情況下應(yīng)運(yùn)而生了。本次課設(shè)我選擇歌曲管理程序的設(shè)計(jì),考察我對(duì)結(jié)構(gòu)體,數(shù)組的操作,以及C語(yǔ)言算法的掌握。從而讓我們把書(shū)上學(xué)習(xí)到的東西與實(shí)際情況聯(lián)系起來(lái),讓我們對(duì)用C語(yǔ)言進(jìn)行編程有進(jìn)一步的了解和深刻的認(rèn)識(shí)。</p><p> 課設(shè)要求要求使用C語(yǔ)言進(jìn)行編程,并且盡可能學(xué)習(xí)其他語(yǔ)言來(lái)穿插在程序中,使程序進(jìn)一步簡(jiǎn)單而實(shí)用、方便。要求在程序中使
6、用結(jié)構(gòu)體、數(shù)組等操作,并且能完整顯示出其各種功能。所以完成此道題目要求較強(qiáng)的設(shè)計(jì)能力,尤其是要有一種大局觀的意識(shí),這是對(duì)整體觀念的一種鍛煉。如何調(diào)程序也非常重要,通過(guò)這個(gè)程序可以學(xué)習(xí)到以前調(diào)試短程序沒(méi)有的的經(jīng)驗(yàn)。其主要實(shí)現(xiàn)錄入、修改、查找、刪除、顯示等功能。</p><p><b> 二 程序總體設(shè)計(jì)</b></p><p><b> 2.1程序功能&l
7、t;/b></p><p> (1)增加歌曲信息 (2)查看歌曲信息 (3)查找 (4)刪除 </p><p> (5)修改 (6)作者 (7)保存 (8)退出 </p><p><b> 2.2程序功能圖</b></p><p><b> 圖1 程
8、序功能圖</b></p><p><b> 2.3主函數(shù)流程圖</b></p><p><b> 0 </b></p><p><b> 0 </b></p><p> 非0
9、 </p><p><b> 0</b></p><p><b> 非0</b></p><p><b> 0</b></p><p><b> 0</b></p><p><b>
10、; 0</b></p><p><b> 非0</b></p><p><b> 0</b></p><p><b> 非0</b></p><p><b> 非0</b></p><p><
11、;b> 非0</b></p><p><b> 圖2 主函數(shù)流程圖</b></p><p><b> 主函數(shù)源代碼:</b></p><p> void main()</p><p><b> {</b></p><p>
12、 int choose=0;</p><p> FILE *fp=NULL;</p><p> char yesorno;</p><p> if((fp=fopen("C://list.dat","rb"))==NULL)</p><p><b> {</b></p
13、><p> printf("\n=========>文件不存在,是否要?jiǎng)?chuàng)建一個(gè)?(y/n)\n");</p><p> scanf("%c",&yesorno);</p><p> if(yesorno=='y'||yesorno=='Y')</p><p&g
14、t;<b> { </b></p><p> fp=fopen("C://list.dat","wb");</p><p> fclose(fp);</p><p><b> }</b></p><p><b> else</b>
15、;</p><p><b> exit(0);</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> Number=dq(st);
16、 //要是文件已經(jīng)有數(shù)據(jù) 將數(shù)據(jù)初始化到數(shù)組中</p><p><b> }</b></p><p> system("cls");</p><p><b> while(1) </b></p><p><b> { </b></p>
17、<p> display();</p><p> printf(" ========>請(qǐng)選擇:");</p><p> scanf("%d",&choose);</p><p> system("cls");</p>
18、;<p> switch(choose)</p><p><b> {</b></p><p> case 0: exit(0);</p><p><b> //退出 </b></p><p><b> break; </b></p>&l
19、t;p> case 1: add();</p><p> back();//增加曲目列表</p><p><b> break; </b></p><p> case 2: lookover();</p><p> back();//查看曲目列表</p><p><b>
20、 break; </b></p><p> case 3: find();</p><p> back();// 查找 </p><p><b> break;</b></p><p> case 4: del(); </p><p> back();//刪除 </p
21、><p><b> break;</b></p><p> case 5: change();</p><p> back();//修改</p><p><b> break; </b></p><p> case 6:author();</p><
22、p> back();//作者</p><p><b> break;</b></p><p> case 7:keepa();</p><p> back();//保存 </p><p><b> break;</b></p><p><b> d
23、efault:</b></p><p> if (choose<0||choose>7)</p><p> printf ("按回車(chē)?yán)^續(xù)");</p><p><b> break;</b></p><p><b> }</b></p>
24、<p> fflush(stdin); </p><p> getchar();</p><p> system("cls");</p><p><b> }</b></p><p><b> }</b></p><p> /*-
25、----------------------------------------------------------------------------------------保存*/</p><p> void keepa()</p><p><b> {</b></p><p> printf("\t=====程序在運(yùn)行時(shí)已
26、自動(dòng)保存.....\n");</p><p><b> }</b></p><p> /*-----------------------------------------------------------------------------------------返回*/</p><p> void back()</p
27、><p><b> {</b></p><p> printf("\t===>按Enter鍵返回主菜單\n");</p><p><b> }</b></p><p><b> 三 程序詳細(xì)設(shè)計(jì)</b></p><p>
28、3.1 增加歌曲信息函數(shù)的實(shí)現(xiàn)</p><p> 增加記錄前如圖3所示。</p><p> 圖3 增加記錄前效果圖</p><p> 輸入一條記錄信息:選擇1,回車(chē)。輸入記錄如圖4所示。</p><p> 圖4 輸入記錄效果圖</p><p><b> 增加后如圖5所示。</b><
29、/p><p> 圖5 增加記錄后效果圖</p><p> 增加函數(shù)代碼流程圖,如圖6所示。</p><p> 圖6 增加函數(shù)流程圖</p><p><b> 增加源代碼:</b></p><p><b> 增加函數(shù)源代碼:</b></p><p>
30、; void add()</p><p><b> {</b></p><p> int numberTemp=0;</p><p><b> int i=0;</b></p><p> struct list temp; //臨時(shí)保存信息</p><p> pr
31、intf("請(qǐng)輸入要增加歌曲信息的個(gè)數(shù):");</p><p> scanf("%d",&numberTemp);</p><p> for(i=0;i<numberTemp;i++)</p><p><b> {</b></p><p> printf(&q
32、uot;輸入第%d個(gè)歌曲信息\n",i+1);</p><p> printf("歌名:");</p><p> scanf("%s",temp.name);</p><p> printf("歌手:");</p><p> scanf("%s"
33、,temp.singer);</p><p> printf("風(fēng)格:");</p><p> scanf("%s",&temp.style);</p><p> st[Number++]=temp; //將剛添加的寫(xiě)入到數(shù)組</p><p> keep(&temp); //將剛
34、添加的寫(xiě)入到文件</p><p><b> }</b></p><p> printf("添加成功\n");</p><p><b> }</b></p><p> /*---------------------------------------------------
35、-------------------------------------保存*/</p><p> void keep(struct list *st)</p><p><b> {</b></p><p> FILE *fp=NULL;</p><p> fp=fopen("C://list.dat
36、","ab+");</p><p> fwrite(st,sizeof(struct list),1,fp);</p><p> fclose(fp);</p><p><b> }</b></p><p> 3.2 查看歌曲信息函數(shù)的實(shí)現(xiàn)</p><p>
37、 查看記錄前如圖7所示。</p><p> 圖7 查找記錄前效果圖</p><p> 輸入一條記錄信息:如圖8所示:</p><p> 圖8 輸入記錄效果圖</p><p> 查看記錄后如圖9所示。</p><p> 圖9 查找記錄后效果圖</p><p> 查看函數(shù)代碼流程圖,如圖
38、10所示。</p><p><b> 非0</b></p><p> 圖10 查看函數(shù)流程圖</p><p><b> 查看源代碼:</b></p><p> void lookover()</p><p><b> {</b></p&g
39、t;<p><b> int i=0;</b></p><p> printf("以下是歌曲列表\n");</p><p> printf("\t歌名\t歌手\t風(fēng)格\n");</p><p> for(i=0;i<Number;i++)</p><p>
40、;<b> {</b></p><p> printf("\t%s\t%s\t%s\n",st[i].name,st[i].singer,st[i].style);</p><p><b> }</b></p><p><b> }</b></p><p
41、> 3.3 查找函數(shù)的實(shí)現(xiàn)</p><p> 查找記錄前如圖11所示。</p><p> 圖11 查找記錄前效果圖</p><p> 輸入一條記錄信息:選擇3,回車(chē)</p><p><b> 如圖12所示。</b></p><p> 圖12 輸入記錄效果圖</p>
42、<p> 查找記錄后如圖13所示。</p><p> 圖13 查找記錄后效果圖</p><p> 查找函數(shù)代碼流程圖,如圖14所示。</p><p><b> 圖1</b></p><p> 圖14 查找函數(shù)流程圖</p><p><b> 查找源代碼:<
43、;/b></p><p> void find()</p><p><b> {</b></p><p><b> int n=0;</b></p><p> printf("1 按歌名查找\n");</p><p> printf(&qu
44、ot;2 按歌手查找\n"); </p><p> scanf("%d",&n);</p><p><b> switch(n)</b></p><p><b> {</b></p><p> case 1: findbyname();</p>
45、;<p><b> break;</b></p><p> case 2: findbysinger();</p><p><b> break;</b></p><p> default: printf("輸入有誤,結(jié)束!\n");</p><p><
46、;b> break;</b></p><p><b> } </b></p><p><b> }</b></p><p> void findbyname()//按歌名查找 </p><p><b> {</b></p><p&
47、gt; char name[60];</p><p><b> int i=0;</b></p><p> printf("請(qǐng)輸入要查找歌曲名稱:");</p><p> scanf("%s",name);</p><p> system("cls")
48、;</p><p> printf("\t歌名\t歌手\t風(fēng)格\n");</p><p> for (i=0;i<Number;i++)</p><p><b> {</b></p><p> if (strcmp(name,st[i].name)==0)</p><
49、p><b> {</b></p><p> printf("\t%s\t%s\t%s\n",st[i].name,st[i].singer,st[i].style); </p><p><b> }</b></p><p><b> }</b></p>
50、<p><b> }</b></p><p> void findbysinger()//按歌手查找 </p><p><b> { </b></p><p> char singer[60];</p><p><b> int i=0;</b></p
51、><p> printf("請(qǐng)輸入要查找的歌手:");</p><p> scanf("%s",singer);</p><p> system("cls");</p><p> printf("\t歌名\t歌手\t風(fēng)格\n");</p><
52、;p> for (i=0;i<Number;i++)</p><p><b> {</b></p><p> if (strcmp(singer,st[i].singer)==0)</p><p><b> {</b></p><p> printf("\t%s\t%
53、s\t%s\n",st[i].name,st[i].singer,st[i].style);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> 3.4 刪除函數(shù)的實(shí)現(xiàn)</p
54、><p> 刪除記錄前如圖15所示。</p><p> 圖15 刪除記錄前效果圖</p><p> 輸入一條記錄信息:選擇4,回車(chē)后, 如圖16所示:</p><p> 圖16 輸入記錄效果圖</p><p><b> 選擇1,如圖17</b></p><p> 圖
55、17 選擇刪除方法后效果圖</p><p> 未刪除前的列表,如圖18</p><p> 刪除后的列表,如圖19</p><p> 選擇其他刪除方法效果類似。</p><p> 刪除函數(shù)代碼流程圖,如圖20所示。</p><p> 圖20 刪除函數(shù)流程圖</p><p><b&g
56、t; 刪除源代碼:</b></p><p> void del()//刪除 </p><p><b> {</b></p><p><b> int n=0;</b></p><p> printf("1 按歌名刪除\n");</p><
57、p> printf("2 按歌手刪除\n");</p><p> printf("3 按風(fēng)格刪除\n");</p><p> scanf("%d",&n);</p><p><b> switch(n)</b></p><p><b&
58、gt; {</b></p><p> case 1: songdele();</p><p><b> break;</b></p><p> case 2: singerdele();</p><p><b> break;</b></p><p>
59、 case 3: styledele();</p><p><b> }</b></p><p><b> }</b></p><p> void songdele()//按歌名刪除 </p><p><b> {</b></p><p> F
60、ILE *fp=NULL;</p><p> char name[60];</p><p><b> int i=0;</b></p><p><b> int j=0;</b></p><p> printf("請(qǐng)輸入要?jiǎng)h除歌曲名稱:");</p><
61、;p> scanf("%s",name);</p><p> for(i=0;i<Number;i++)</p><p><b> {</b></p><p> if (strcmp(name,st[i].name)==0) //如果查找到就刪除</p><p><b>
62、 {</b></p><p> for (j=i;j<Number-1;j++)</p><p><b> {</b></p><p> st[j]=st[j+1];</p><p><b> }</b></p><p><b> Nu
63、mber--;</b></p><p><b> }</b></p><p><b> }</b></p><p> //將剩余數(shù)據(jù)寫(xiě)入文件 重新一寫(xiě)的方式打開(kāi)文件 把以前的數(shù)據(jù)擦除了</p><p> fp=fopen("C://list.dat",&quo
64、t;wb");</p><p> for (i=0;i<Number;i++)</p><p><b> {</b></p><p> fwrite(&st[i],sizeof(struct list),1,fp);</p><p><b> }</b></p&
65、gt;<p> fclose(fp);</p><p> printf("刪除成功;\n");</p><p><b> }</b></p><p> void singerdele()//按歌手刪除 </p><p><b> {</b></p&g
66、t;<p> FILE *fp=NULL;</p><p> char singer[60];</p><p><b> int i=0;</b></p><p><b> int j=0;</b></p><p> printf("請(qǐng)輸入要?jiǎng)h除歌手姓名:"
67、;);</p><p> scanf("%s",singer);</p><p> for(i=0;i<Number;i++)</p><p><b> {</b></p><p> if (strcmp(singer,st[i].singer)==0) //如果查找到就刪除</p
68、><p><b> {</b></p><p> for (j=i;j<Number-1;j++)</p><p><b> {</b></p><p> st[j]=st[j+1];</p><p><b> }</b></p>
69、<p><b> Number--;</b></p><p><b> }</b></p><p><b> }</b></p><p> //將剩余數(shù)據(jù)寫(xiě)入文件 重新一寫(xiě)的方式打開(kāi)文件 把以前的數(shù)據(jù)擦除了</p><p> fp=fopen("
70、;C://list.dat","wb");</p><p> for (i=0;i<Number;i++)</p><p><b> {</b></p><p> fwrite(&st[i],sizeof(struct list),1,fp);</p><p><b
71、> }</b></p><p> fclose(fp);</p><p> printf("刪除成功;\n");</p><p><b> }</b></p><p> void styledele()//按風(fēng)格刪除 </p><p><b&g
72、t; {</b></p><p> FILE *fp=NULL;</p><p> char style[60];</p><p><b> int i=0;</b></p><p><b> int j=0;</b></p><p> printf(
73、"請(qǐng)輸入要?jiǎng)h除的歌曲風(fēng)格:");</p><p> scanf("%s",style);</p><p> for(i=0;i<Number;i++)</p><p><b> {</b></p><p> if (strcmp(style,st[i].style)=
74、=0) //如果查找到就刪除</p><p><b> {</b></p><p> for (j=i;j<Number-1;j++)</p><p><b> {</b></p><p> st[j]=st[j+1];</p><p><b> }
75、</b></p><p><b> Number--;</b></p><p><b> }</b></p><p><b> }</b></p><p> //將剩余數(shù)據(jù)寫(xiě)入文件 重新一寫(xiě)的方式打開(kāi)文件 把以前的數(shù)據(jù)擦除了</p><p
76、> fp=fopen("C://list.dat","wb");</p><p> for (i=0;i<Number;i++)</p><p><b> {</b></p><p> fwrite(&st[i],sizeof(struct list),1,fp);</p
77、><p><b> }</b></p><p> fclose(fp);</p><p> printf("刪除成功;\n");</p><p><b> }</b></p><p> 3.5修改函數(shù)的實(shí)現(xiàn)</p><p>
78、 修改記錄前如圖21所示。</p><p> 圖21 修改記錄前效果圖</p><p> 輸入一條記錄信息:如圖22所示:</p><p> 圖22 輸入記錄效果圖</p><p> 修改記錄后如圖23所示。</p><p> 圖23 修改記錄后效果圖</p><p> 修改函數(shù)代碼
79、流程圖,如圖24所示。</p><p> 圖24 修改函數(shù)流程圖</p><p><b> 修改源代碼:</b></p><p> void change()</p><p><b> {</b></p><p> int way=0;</p><
80、;p> FILE *fp=NULL;</p><p> char name[60];</p><p><b> int i=0;</b></p><p> int changeIndex=0;</p><p> int index=0;</p><p> printf("
81、;請(qǐng)輸入要修改的歌曲名稱:");</p><p> scanf("%s",name);</p><p> for (i=0;i<Number;i++)</p><p><b> {</b></p><p> if (strcmp(name,st[i].name))</p&
82、gt;<p><b> {</b></p><p> changeIndex=i; //保存要修改的歌曲的下標(biāo)</p><p><b> }</b></p><p><b> }</b></p><p> printf("\t%s\t%s\t%
83、s\n\n",st[changeIndex].name,st[changeIndex].singer,st[changeIndex].style);</p><p> printf("請(qǐng)重新輸入此歌曲信息");</p><p> printf("歌名:");</p><p> scanf("%s&qu
84、ot;,st[changeIndex].name);</p><p> printf("歌手:");</p><p> scanf("%s",st[changeIndex].singer);</p><p> printf("風(fēng)格:");</p><p> scanf(&qu
85、ot;%s",st[changeIndex].style);</p><p> //信息修改后重新更新文件里面的數(shù)據(jù) 以保持?jǐn)?shù)據(jù)一致性</p><p> fp=fopen("C://list.dat","wb");</p><p> for (i=0;i<Number;i++)</p>&l
86、t;p><b> {</b></p><p> fwrite(&st[i],sizeof(struct list),1,fp);</p><p><b> }</b></p><p> fclose(fp);</p><p><b> }</b><
87、/p><p> 3.6作者函數(shù)的實(shí)現(xiàn)</p><p> 作者記錄前如圖25所示。</p><p> 圖25 作者記錄前效果圖</p><p> 輸入一條記錄信息:如圖26所示:</p><p> 圖26 輸入記錄效果圖</p><p> 作者記錄后如圖27所示。</p>&
88、lt;p> 圖27 作者記錄后效果圖</p><p><b> 作者源代碼:</b></p><p> void author()</p><p><b> {</b></p><p> printf("\t++++++++++++++++++++++++++++++++\
89、n\n");</p><p> printf("\t 唐山學(xué)院 \n\n");</p><p> printf("\t 信息工程系 \n\n");</p><p> printf("\t 通信工程
90、 \n\n");</p><p> printf("\t 歡迎交流 \n\n");</p><p> printf("\t 4080214228 王洪偉 \n\n"); </p><p> printf("\t+++++
91、+++++++++++++++++++++++++++\n\n");</p><p> }10保存函數(shù)的實(shí)現(xiàn)</p><p> 保存記錄前如圖28所示。</p><p> 圖28 保存記錄前效果圖</p><p><b> 輸入一條記錄信息:</b></p><p> 圖29
92、輸入記錄效果圖</p><p> 保存記錄后如圖30所示。</p><p> 圖30 保存記錄后效果圖</p><p><b> 保存源代碼:</b></p><p> /*----------------------------------------------------------------------
93、-------------------保存*/</p><p> void keepa()</p><p><b> {</b></p><p> printf("\t=====程序在運(yùn)行時(shí)已自動(dòng)保存.....\n");</p><p><b> }</b></p&
94、gt;<p> /*-----------------------------------------------------------------------------------------返回*/</p><p> void back()</p><p><b> {</b></p><p> printf(&q
95、uot;\t===>按Enter鍵返回主菜單\n");</p><p><b> }</b></p><p><b> 四 總結(jié)</b></p><p> 通過(guò)C語(yǔ)言程序課程設(shè)計(jì),是我對(duì)C語(yǔ)言有了更深一步的認(rèn)識(shí)。編程是一件十分鍛煉人的工作。編程要首先對(duì)所做的事有一個(gè)整體上的把握,編出的程序要有效率,有
96、更簡(jiǎn)單的代碼實(shí)現(xiàn)同樣的功能。編程是一件鍛煉人耐心的事情。編程遇到問(wèn)題時(shí)要謙虛的向別人請(qǐng)教。編程對(duì)于自己是毫無(wú)拘束的,但對(duì)于別人是要清晰明了的。這也是一種交流。</p><p> 課程設(shè)計(jì)是把我們所學(xué)的理論知識(shí)進(jìn)行系統(tǒng)的總結(jié)并運(yùn)用于實(shí)際的良好機(jī)會(huì),有利于我們運(yùn)用理論知識(shí)解決實(shí)際問(wèn)題的能力,進(jìn)而加強(qiáng)了我們對(duì)知識(shí)認(rèn)識(shí)的實(shí)踐能力,鞏固我們的理論知識(shí),加深我們對(duì)知識(shí)的認(rèn)識(shí)。這次課設(shè)我遇到了好多困難和麻煩,得到了老師的幫助
97、和指導(dǎo),才能使這次課設(shè)順利進(jìn)行下去。 </p><p> 通過(guò)本次論文設(shè)計(jì),我初步學(xué)會(huì)了論文設(shè)計(jì)的基本方法,學(xué)會(huì)了怎樣去借鑒別人的方法和經(jīng)驗(yàn),知道如何去查找資料和整合處理這些資料的能力,這為以后的大學(xué)畢業(yè)設(shè)計(jì)論文打下了一個(gè)初步的基礎(chǔ)。</p><p><b> 五 參考文獻(xiàn)</b></p><p> [1] 凱利(美),波爾A(美);.C
98、語(yǔ)言教程.機(jī)械工業(yè)出版社,2007</p><p> [2] 劉振安 劉燕君.C 程序設(shè)計(jì)教程.機(jī)械工業(yè)出版社,2008</p><p> [3] 徐寶文, 李志.C 程序設(shè)計(jì)語(yǔ)言.北京:機(jī)械工業(yè)出版社,2000</p><p><b> 附錄</b></p><p><b> 附程序源代碼</b
99、></p><p> #include <stdio.h></p><p> #include <stdlib.h></p><p> #include <string.h></p><p> struct list</p><p><b> {</b
100、></p><p> char name[60];</p><p> char singer[60];</p><p> char style[60];</p><p><b> };</b></p><p> /*---------------------------------
101、----------------------------------------------*/</p><p> int dq(struct list st[]);</p><p> void display();//顯示</p><p> void keep(struct list st[]);</p><p> void ad
102、d(); /*增加*/</p><p> void lookover(); /*查看*/</p><p> void find();/*查找*/</p><p> void findbyname(); /*歌名查找*/</p><p> void findbysinger(); /*歌手查找*/</p><p&
103、gt; void del(); /*刪除*/</p><p> void songdele();/*按歌名刪除*/</p><p> void singerdele();/*按歌手刪除*/</p><p> void styledele();/*按歌曲風(fēng)格刪除*/</p><p> void change(); /*修改*/&
104、lt;/p><p> void keepa();</p><p> void back();</p><p> void author();</p><p> struct list st[300]; //這個(gè)數(shù)組用來(lái)保存所有的歌曲信息 和文件里面的一致</p><p> int Number=0; //記錄總的
105、歌曲數(shù)目 也就是數(shù)組/文件里面的歌曲數(shù)目</p><p> /*-----------------------------------------------------------------------------主函數(shù)*/</p><p> void main()</p><p><b> {</b></p><
106、p> int choose=0;</p><p> FILE *fp=NULL;</p><p> char yesorno;</p><p> if((fp=fopen("C://list.dat","rb"))==NULL)</p><p><b> {</b>
107、</p><p> printf("\n=========>提示:文件不存在,是否要?jiǎng)?chuàng)建一個(gè)?(y/n)\n");</p><p> scanf("%c",&yesorno);</p><p> if(yesorno=='y'||yesorno=='Y')</p>
108、<p><b> { </b></p><p> //這里僅為了建立文件</p><p> fp=fopen("C://list.dat","wb");</p><p> fclose(fp);</p><p><b> }</b>&l
109、t;/p><p><b> else</b></p><p><b> exit(0);</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {<
110、/b></p><p> Number=dq(st); //要是文件已經(jīng)有數(shù)據(jù) 將數(shù)據(jù)初始化到數(shù)組中</p><p><b> }</b></p><p> system("cls");</p><p><b> while(1) </b></p>&
111、lt;p><b> { </b></p><p> display();</p><p> printf(" ========>請(qǐng)選擇:");</p><p> scanf("%d",&choose);</p>&
112、lt;p> system("cls");</p><p> switch(choose)</p><p><b> {</b></p><p> case 0: exit(0);</p><p><b> //退出 </b></p><p>
113、;<b> break; </b></p><p> case 1: add();</p><p> back();//增加歌曲信息</p><p><b> break; </b></p><p> case 2: lookover();</p><p> ba
114、ck();//查看歌曲信息</p><p><b> break; </b></p><p> case 3: find();</p><p> back();// 查找 </p><p><b> break;</b></p><p> case 4: del()
115、; </p><p> back();//刪除 </p><p><b> break;</b></p><p> case 5: change();</p><p> back();//修改</p><p><b> break; </b></p>
116、<p> case 6:author();</p><p> back();//作者</p><p><b> break;</b></p><p> case 7:keepa();</p><p> back();//保存 </p><p><b> break;
117、</b></p><p><b> default:</b></p><p> if (choose<0||choose>7)</p><p> printf ("錯(cuò)誤的選擇也可能有美麗的邂逅,但這次不是,回車(chē)吧");</p><p><b> break;&
118、lt;/b></p><p><b> }</b></p><p> fflush(stdin);//不懂</p><p> getchar();//不懂</p><p> system("cls");</p><p><b> }</b>
119、</p><p><b> }</b></p><p> /*-----------------------------------------------------------------------------------------保存*/</p><p> void keepa()</p><p><
120、;b> {</b></p><p> printf("\t=====程序在運(yùn)行時(shí)已自動(dòng)保存.....\n");</p><p><b> }</b></p><p> /*----------------------------------------------------------------
121、-------------------------返回*/</p><p> void back()</p><p><b> {</b></p><p> printf("\t===>按Enter鍵返回主菜單\n");</p><p><b> }</b><
122、/p><p> /*-----------------------------------------------------------------------------------------修改*/</p><p> void change()</p><p><b> {</b></p><p> int
123、way=0;</p><p> FILE *fp=NULL;</p><p> char name[60];</p><p><b> int i=0;</b></p><p> int changeIndex=0;</p><p> int index=0;</p>&l
124、t;p> printf("請(qǐng)輸入要修改的歌曲名稱:");</p><p> scanf("%s",name);</p><p> for (i=0;i<Number;i++)</p><p><b> {</b></p><p> if (strcmp(nam
125、e,st[i].name)==0)</p><p> {changeIndex=i; //保存要修改的歌曲的下標(biāo)</p><p><b> }</b></p><p><b> break;</b></p><p><b> }</b></p><p
126、> printf("\t%16s\t%16s%16s\n\n",st[changeIndex].name,st[changeIndex].singer,st[changeIndex].style);</p><p> printf("請(qǐng)重新輸入此歌曲信息");</p><p> printf("歌名:");</p
127、><p> scanf("%s",st[changeIndex].name);</p><p> printf("歌手:");</p><p> scanf("%s",st[changeIndex].singer);</p><p> printf("風(fēng)格:"
128、);</p><p> scanf("%s",st[changeIndex].style);</p><p> //信息修改后重新更新文件里面的數(shù)據(jù) 以保持?jǐn)?shù)據(jù)一致性</p><p> fp=fopen("C://list.dat","wb");</p><p> for (
129、i=0;i<Number;i++)</p><p><b> {</b></p><p> fwrite(&st[i],sizeof(struct list),1,fp);</p><p><b> }</b></p><p> fclose(fp);</p>&
130、lt;p><b> }</b></p><p> /*------------------------------------------------------------------------------------------刪除*/</p><p> void del()//刪除 </p><p><b> {
131、</b></p><p><b> int n=0;</b></p><p> printf("1 按歌名刪除\n");</p><p> printf("2 按歌手刪除\n");</p><p> printf("3 按風(fēng)格刪除\n");&
132、lt;/p><p> scanf("%d",&n);</p><p><b> switch(n)</b></p><p><b> {</b></p><p> case 1: songdele();</p><p><b> b
133、reak;</b></p><p> case 2: singerdele();</p><p><b> break;</b></p><p> case 3: styledele();</p><p><b> }</b></p><p><b&
134、gt; }</b></p><p> void songdele()//按歌名刪除 </p><p><b> {</b></p><p> FILE *fp=NULL;</p><p> char name[60];</p><p><b> int i=0;&
135、lt;/b></p><p><b> int j=0;</b></p><p> printf("請(qǐng)輸入要?jiǎng)h除歌曲名稱:");</p><p> scanf("%s",name);</p><p> for(i=0;i<Number;i++)</p>
136、;<p><b> {</b></p><p> if (strcmp(name,st[i].name)==0) //如果查找到就刪除</p><p><b> {</b></p><p> for (j=i;j<Number-1;j++)</p><p><b&g
137、t; {</b></p><p> st[j]=st[j+1];</p><p><b> }</b></p><p><b> Number--;</b></p><p><b> }</b></p><p><b>
138、 }</b></p><p> //將剩余數(shù)據(jù)寫(xiě)入文件 重新一寫(xiě)的方式打開(kāi)文件 把以前的數(shù)據(jù)擦除了</p><p> fp=fopen("C://list.dat","wb");</p><p> for (i=0;i<Number;i++)</p><p><b>
139、 {</b></p><p> fwrite(&st[i],sizeof(struct list),1,fp);</p><p><b> }</b></p><p> fclose(fp);</p><p> printf("刪除成功;\n");</p>&
140、lt;p><b> }</b></p><p> void singerdele()//按歌手刪除 </p><p><b> {</b></p><p> FILE *fp=NULL;</p><p> char singer[60];</p><p>&l
141、t;b> int i=0;</b></p><p><b> int j=0;</b></p><p> printf("請(qǐng)輸入要?jiǎng)h除歌手姓名:");</p><p> scanf("%s",singer);</p><p> for(i=0;i<
142、Number;i++)</p><p><b> {</b></p><p> if (strcmp(singer,st[i].singer)==0) //如果查找到就刪除</p><p><b> {</b></p><p> for (j=i;j<Number-1;j++)<
143、/p><p><b> {</b></p><p> st[j]=st[j+1];</p><p><b> }</b></p><p><b> Number--;</b></p><p><b> }</b></p&
144、gt;<p><b> }</b></p><p> //將剩余數(shù)據(jù)寫(xiě)入文件 重新一寫(xiě)的方式打開(kāi)文件 把以前的數(shù)據(jù)擦除了</p><p> fp=fopen("C://list.dat","wb");</p><p> for (i=0;i<Number;i++)</p&
145、gt;<p><b> {</b></p><p> fwrite(&st[i],sizeof(struct list),1,fp);</p><p><b> }</b></p><p> fclose(fp);</p><p> printf("刪除成功
146、;\n");</p><p><b> }</b></p><p> void styledele()//按風(fēng)格刪除 </p><p><b> {</b></p><p> FILE *fp=NULL;</p><p> char style[60];&
147、lt;/p><p><b> int i=0;</b></p><p><b> int j=0;</b></p><p> printf("請(qǐng)輸入要?jiǎng)h除的歌曲風(fēng)格:");</p><p> scanf("%s",style);</p>&l
148、t;p> for(i=0;i<Number;i++)</p><p><b> {</b></p><p> if (strcmp(style,st[i].style)==0) //如果查找到就刪除</p><p><b> {</b></p><p> for (j=i;j&
149、lt;Number-1;j++)</p><p><b> {</b></p><p> st[j]=st[j+1];</p><p><b> }</b></p><p><b> Number--;</b></p><p><b>
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c語(yǔ)言課程設(shè)計(jì)--學(xué)生信息管理
- c語(yǔ)言課程信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- c語(yǔ)言課程設(shè)計(jì)--職工信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)--學(xué)生信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)--- 學(xué)生信息管理系統(tǒng)
- 職工信息管理系統(tǒng)c語(yǔ)言課程設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)--學(xué)生信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)——學(xué)生信息管理系統(tǒng)
- 教師信息管理系統(tǒng)(c語(yǔ)言課程設(shè)計(jì))
- c語(yǔ)言課程設(shè)計(jì)---學(xué)生信息管理系統(tǒng)
- 學(xué)生信息管理系統(tǒng)-c語(yǔ)言課程設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)——歌曲信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)職工信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)報(bào)告課程信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)---學(xué)生信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)--學(xué)生信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)---職工信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)——職工信息管理系統(tǒng)
- 教師信息管理系統(tǒng)(c語(yǔ)言課程設(shè)計(jì))
- c語(yǔ)言課程設(shè)計(jì)-學(xué)生信息管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論