c語(yǔ)言課程設(shè)計(jì)---音頻信息管理_第1頁(yè)
已閱讀1頁(yè),還剩39頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論