2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p><b>  一 引言</b></p><p>  在現(xiàn)在的日常生活中,人們對娛樂的要求越來越高。因為隨著科技的突飛猛進,娛樂形式、娛樂設(shè)備也越來越多。而聽音樂則是其中一種十分重要而實現(xiàn)起來又十分簡單的娛樂形式,所以說,音樂無處不在。因此,我們對音樂的管理就十分有必要了?,F(xiàn)在的生活節(jié)奏越來越快,人們想要更加方便而快捷的管理自己的音樂,節(jié)省自己的時間。而目前我們學(xué)習(xí)過如何使C語

2、言來進行編程,所以就有了這個簡單的設(shè)計。</p><p>  隨著各種便攜式音樂播放器以及電子計算機的普及,人們所擁有的音樂越來越多,風(fēng)格,演唱者,各不相同,而人們在不同的心情,不同的天氣時對音樂的愛好是不同的。人們需要更加快捷而方便的管理自己的音樂,讓自己的音樂列表井然有序??梢愿鶕?jù)不同的場合,不同的心情快速的找到自己所需要的音樂。讓音樂匹配自己的心情,通過音樂來表達自己的感受是很多人習(xí)慣。音樂是一種娛樂,同時

3、也是一種特別的表達方式。歌手通過歌曲來表達自己的某種情感,產(chǎn)生與聽眾的共鳴。當聽眾想要表達相同的情感時,直接就可以引用自己聽過的歌。我們讓這種娛樂,或者更著重于對自己情感的表達實現(xiàn)起來更加容易。</p><p>  運用音樂管理程序可以更加方便而快捷的管理自己喜歡的音樂,省去了繁瑣的過程,讓聽音樂更加方便快捷,節(jié)省自己的寶貴時間。音樂管理是每個音樂播放器必須實現(xiàn)的功能之一。隨著各個電子廠商退出自己的便攜是播放器,

4、只有高效便捷的的音樂管理方式才能在競爭中脫穎而出。好的音樂管理程序是對消費者的負責(zé),更是對自己責(zé)任的負責(zé)。</p><p>  以前的操作系統(tǒng)等系統(tǒng)軟件主要是由匯編語言編寫的(包括UNIX操作系統(tǒng)在內(nèi))。由于匯編語言指令時機器所不能直接識別、理解和執(zhí)行的,最好改用高級語言,但一般高級語言難以實現(xiàn)匯編語言的某些功能(匯編語言可以直接對硬件進行操作,例如,對內(nèi)存地址的操作、位操作等)。人們設(shè)想能否找到一種既具有一般高

5、級語言特性,又具有低級語言特性的語言,集它們的優(yōu)點于一身。于是,C語言就在這種情況下應(yīng)運而生了。本次課設(shè)我選擇歌曲管理程序的設(shè)計,考察我對結(jié)構(gòu)體,數(shù)組的操作,以及C語言算法的掌握。從而讓我們把書上學(xué)習(xí)到的東西與實際情況聯(lián)系起來,讓我們對用C語言進行編程有進一步的了解和深刻的認識。</p><p>  課設(shè)要求要求使用C語言進行編程,并且盡可能學(xué)習(xí)其他語言來穿插在程序中,使程序進一步簡單而實用、方便。要求在程序中使

6、用結(jié)構(gòu)體、數(shù)組等操作,并且能完整顯示出其各種功能。所以完成此道題目要求較強的設(shè)計能力,尤其是要有一種大局觀的意識,這是對整體觀念的一種鍛煉。如何調(diào)程序也非常重要,通過這個程序可以學(xué)習(xí)到以前調(diào)試短程序沒有的的經(jīng)驗。其主要實現(xiàn)錄入、修改、查找、刪除、顯示等功能。</p><p><b>  二 程序總體設(shè)計</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=========>文件不存在,是否要創(chuàng)建一個?(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(" ========>請選擇:");</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 ("按回車繼續(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=====程序在運行時已

26、自動保存.....\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>  三 程序詳細設(shè)計</b></p><p>  

28、3.1 增加歌曲信息函數(shù)的實現(xiàn)</p><p>  增加記錄前如圖3所示。</p><p>  圖3 增加記錄前效果圖</p><p>  輸入一條記錄信息:選擇1,回車。輸入記錄如圖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; //臨時保存信息</p><p>  pr

31、intf("請輸入要增加歌曲信息的個數(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個歌曲信息\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; //將剛添加的寫入到數(shù)組</p><p>  keep(&temp); //將剛

34、添加的寫入到文件</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ù)的實現(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ù)的實現(xiàn)</p><p>  查找記錄前如圖11所示。</p><p>  圖11 查找記錄前效果圖</p><p>  輸入一條記錄信息:選擇3,回車</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("請輸入要查找歌曲名稱:");</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("請輸入要查找的歌手:");</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ù)的實現(xiàn)</p

54、><p>  刪除記錄前如圖15所示。</p><p>  圖15 刪除記錄前效果圖</p><p>  輸入一條記錄信息:選擇4,回車后, 如圖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("請輸入要刪除歌曲名稱:");</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ù)寫入文件 重新一寫的方式打開文件 把以前的數(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("請輸入要刪除歌手姓名:"

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ù)寫入文件 重新一寫的方式打開文件 把以前的數(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、"請輸入要刪除的歌曲風(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ù)寫入文件 重新一寫的方式打開文件 把以前的數(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ù)的實現(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、;請輸入要修改的歌曲名稱:");</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; //保存要修改的歌曲的下標</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("請重新輸入此歌曲信息");</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ù) 以保持數(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ù)的實現(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ù)的實現(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=====程序在運行時已自動保存.....\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>  通過C語言程序課程設(shè)計,是我對C語言有了更深一步的認識。編程是一件十分鍛煉人的工作。編程要首先對所做的事有一個整體上的把握,編出的程序要有效率,有

96、更簡單的代碼實現(xiàn)同樣的功能。編程是一件鍛煉人耐心的事情。編程遇到問題時要謙虛的向別人請教。編程對于自己是毫無拘束的,但對于別人是要清晰明了的。這也是一種交流。</p><p>  課程設(shè)計是把我們所學(xué)的理論知識進行系統(tǒng)的總結(jié)并運用于實際的良好機會,有利于我們運用理論知識解決實際問題的能力,進而加強了我們對知識認識的實踐能力,鞏固我們的理論知識,加深我們對知識的認識。這次課設(shè)我遇到了好多困難和麻煩,得到了老師的幫助

97、和指導(dǎo),才能使這次課設(shè)順利進行下去。 </p><p>  通過本次論文設(shè)計,我初步學(xué)會了論文設(shè)計的基本方法,學(xué)會了怎樣去借鑒別人的方法和經(jīng)驗,知道如何去查找資料和整合處理這些資料的能力,這為以后的大學(xué)畢業(yè)設(shè)計論文打下了一個初步的基礎(chǔ)。</p><p><b>  五 參考文獻</b></p><p>  [1] 凱利(美),波爾A(美);.C

98、語言教程.機械工業(yè)出版社,2007</p><p>  [2] 劉振安 劉燕君.C 程序設(shè)計教程.機械工業(yè)出版社,2008</p><p>  [3] 徐寶文, 李志.C 程序設(shè)計語言.北京:機械工業(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]; //這個數(shù)組用來保存所有的歌曲信息 和文件里面的一致</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=========>提示:文件不存在,是否要創(chuàng)建一個?(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(" ========>請選擇:");</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 ("錯誤的選擇也可能有美麗的邂逅,但這次不是,回車吧");</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=====程序在運行時已自動保存.....\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("請輸入要修改的歌曲名稱:");</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; //保存要修改的歌曲的下標</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("請重新輸入此歌曲信息");</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ù) 以保持數(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("請輸入要刪除歌曲名稱:");</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ù)寫入文件 重新一寫的方式打開文件 把以前的數(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("請輸入要刪除歌手姓名:");</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ù)寫入文件 重新一寫的方式打開文件 把以前的數(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("請輸入要刪除的歌曲風(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. 本站所有資源如無特殊說明,都需要本地電腦安裝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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論