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

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計報告書</b></p><p><b>  通信錄管理系統(tǒng)設(shè)計</b></p><p>  班 級: 方0953-1 </p><p>  學(xué) 號: 20097251 </p><p>  姓 名: 倪博 </p>&

2、lt;p>  指導(dǎo)教師: 楊子光 </p><p>  石 家 莊 鐵 道 大 學(xué) 四 方 學(xué) 院</p><p>  2010年7月15日</p><p><b>  1.選擇題目</b></p><p>  題目:通信錄管理系統(tǒng)設(shè)計</p><p><b>  2.內(nèi)容摘

3、要</b></p><p><b>  摘要:</b></p><p>  隨著科技的進步和信息產(chǎn)業(yè)的飛速發(fā)展,通訊錄成為了現(xiàn)代生活中一個重要的工具。此通訊錄管理系統(tǒng)為方便管通訊信息,幫助企業(yè)公司職員的聯(lián)系旨在服務(wù)社會。</p><p>  整個系統(tǒng)程序采用c語言來實現(xiàn)。c語言是目前國際上比較流行的計算機高級編程語言之一,因其簡潔、

4、使用方便且具備強大的功能而受到編程人員的普通青睞。它既適合作為系統(tǒng)描述語言,也可用來編寫系統(tǒng)軟件,還可用來編寫應(yīng)用軟件。用C/C++設(shè)計出模擬手機通信錄管理系統(tǒng),實現(xiàn)對手機中的通信錄進行管理。</p><p>  本文介紹課程設(shè)計課題的選題意義,說明了本系統(tǒng)提供的主要功能:查詢,修改,添加,刪除等,并畫出功能框圖,最后給出了作者在小學(xué)期設(shè)計過程的體會。</p><p><b> 

5、 3.索引關(guān)鍵字</b></p><p>  關(guān)鍵詞:通訊錄管理,查詢,添加,功能框圖</p><p>  4. 目錄</p><p>  題目要求---------------------------------4</p><p>  設(shè)計思想----------------------

6、-----------4</p><p>  系統(tǒng)完成功能及框圖-----------------------5</p><p>  界面設(shè)計---------------------------------6</p><p>  核心算法及說明---------------------------8</p><p>  結(jié)論--------

7、-----------------------------11</p><p>  后記-------------------------------------11</p><p>  參考資料---------------------------------12</p><p><b>  5.正文</b></p><p

8、>  5.1課程設(shè)計題目要求</p><p><b>  5.1.1實驗?zāi)康?lt;/b></p><p>  培養(yǎng)學(xué)生獨立分析問題、解決問題、查閱資料以及自學(xué)能力,以適應(yīng)信息管理行業(yè)日新月異的發(fā)展形勢;</p><p>  本次實驗是以學(xué)生獨立思考解決問題為主,教師指導(dǎo)為輔,結(jié)合上機操作,完成指定的任務(wù),作出設(shè)計報告。</p>

9、<p><b>  5.1.2設(shè)計要求</b></p><p> ?。ń⑼ㄓ嶄浶畔?,信息至少包含編號、姓名、年齡、電話、通訊地址、電子郵箱等;</p><p>  能夠提供添加、刪除和修改通訊錄信息的功能;</p><p>  能夠提供安不同方式查詢的功能;如按姓名或年齡、電話等查詢;</p><p>  將

10、通訊錄保存在文件中;</p><p>  能夠按表格方式輸出通訊錄信息。</p><p>  設(shè)計一個實用的通訊錄管理系統(tǒng),能以簡便高效的方式對通訊錄進行管理和檢索。</p><p><b>  5.2設(shè)計思想</b></p><p>  1.在設(shè)計時考慮以下幾個方面:</p><p>  操作簡

11、單。該系統(tǒng)要求設(shè)計的界面美觀,操作方便。便于使用人員快速上手。</p><p>  易于維護。一個軟件的好壞,關(guān)鍵在于產(chǎn)品的可靠,穩(wěn)定,便于維護。</p><p>  易于升級。隨著社會的發(fā)展,對系統(tǒng)的要求會越來越高。要求系統(tǒng)具有更高的安全性;更豐富的功能以及更快的操作速度。所以在設(shè)計時要考慮到到以后的升級問題。</p><p>  實用性。注重采用成熟而實用的技術(shù)

12、,使系統(tǒng)建設(shè)的投入產(chǎn)出比最高,</p><p><b>  能產(chǎn)生良好的反應(yīng)。</b></p><p><b>  2.開發(fā)語言的選擇</b></p><p>  本系統(tǒng)的編譯選擇的是C語言,作為一種計算機程序設(shè)計語言,C語言既具有高級語言的特點,又具有匯編語言的特點。它可以作為工作系統(tǒng)設(shè)計語言,編寫系統(tǒng)應(yīng)用程序,也可以作

13、為應(yīng)用程序設(shè)計語言,編寫不依賴計算機硬件的應(yīng)用程序。因此,它的應(yīng)用范圍廣泛,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語言,具體應(yīng)用比如單片機以及嵌入式系統(tǒng)開發(fā)。</p><p>  C語言具有簡介緊湊、靈活方便、運算符豐富、數(shù)據(jù)結(jié)構(gòu)豐富、語法限制不太嚴格、程序自由度大、程序執(zhí)行效率高、可移植性好等優(yōu)點。它既能用來編寫不依賴計算機硬件的應(yīng)用程序,又能用來編寫各種系統(tǒng)程序,它是一種受歡迎、應(yīng)用廣泛的程序設(shè)計語言

14、。</p><p>  綜上所述,選擇C語言作為本系統(tǒng)的編譯時非常適合的。</p><p>  5.3系統(tǒng)完成功能及功能框圖</p><p>  添加:可以添加通訊錄記錄,依次輸入編號、姓名、年齡、電話號碼、通訊地址、電子郵箱后,會提示是否繼續(xù)添加。</p><p>  顯示:可以以表格形式輸出所有通訊錄里的記錄</p><

15、;p>  刪除:輸入欲刪除的那個人的名字后,會自動刪除他(她)的記錄內(nèi)容</p><p>  查詢:可以選擇用姓名、電話、地址三種方式查詢</p><p>  修改:輸入欲修改的那個人的名字后,再依次輸入編號、姓名、年齡、電話號碼、通訊地址、電子郵箱即可完成修改</p><p>  保存:,輸入文件名(帶后綴名)后,即可將通訊錄信息保存到文件</p>

16、;<p><b>  5.4界面設(shè)計</b></p><p>  本系統(tǒng)針對,信息查詢和修改做了5個界面,下面舉例說明部分界面得設(shè)計。</p><p>  5.4.1建立一個登錄界面</p><p>  建立一個界面做登錄界面,包括信息錄入和信息查詢</p><p>  5.4.2添加通訊錄信息</p

17、><p>  5.4.3保存記錄界面</p><p>  5.5核心算法及說明</p><p>  1、 運用順序程序設(shè)計結(jié)構(gòu),考查getchar,printf,scanf的知識點,例如:</p><p>  printf("請輸入便條的數(shù)量:"); </p><p>  scanf("

18、%d",&num);</p><p>  2、 運用循環(huán)設(shè)計結(jié)構(gòu),考查for,if……else循環(huán)的知識點,例如:</p><p>  for(j=i;j<n-1;j++)</p><p><b>  { </b></p><p>  strcpy(per[j].num,per[j+1].n

19、um); </p><p>  strcpy(per[j].name,per[j+1].name); </p><p>  strcpy(per[j].age,per[j+1].age);</p><p>  strcpy(per[j].adds,per[j+1].adds);</p><p>  strcpy(per[j].email,pe

20、r[j+1].email);</p><p>  per[j].score=per[j+1].score; </p><p><b>  } </b></p><p><b>  運用數(shù)組知識,</b></p><p><b>  運用函數(shù)知識,</b></p>

21、<p>  運用指針,文件,結(jié)構(gòu)體等知識點。</p><p><b>  核心代碼</b></p><p><b>  通訊錄:</b></p><p>  typedef struct </p><p><b>  { </b></p><p&g

22、t;  char score; /*編號*/</p><p>  char name[10]; /*姓名*/ </p><p>  char num[15]; /*號碼*/ </p><p>  char email[20];/*郵箱*/</p><p>  char

23、 age[8];/*年齡*/</p><p>  char adds[20];/*住址*/</p><p><b>  }Person;</b></p><p>  void main() /*主函數(shù)*/ </p><p>&

24、lt;b>  { </b></p><p><b>  int n=0; </b></p><p><b>  for(;;) </b></p><p><b>  { </b></p><p>  switch(menu_select()) </p&g

25、t;<p><b>  { </b></p><p><b>  case 1: </b></p><p>  printf("\n\t添加記錄到通訊錄\n"); /*添加記錄*/ </p><p>  n=Input(pe,n); <

26、/p><p><b>  break; </b></p><p><b>  case 2: </b></p><p>  printf("\n\t\t\t 通訊錄記錄表\n"); /*顯示記錄*/ </p><p>  Display

27、(pe,n); </p><p><b>  break;</b></p><p><b>  case 3: </b></p><p>  printf("\n\t從通訊錄中刪除記錄\n"); </p><p>  n=Delete_a_record(pe,n);

28、 /*刪除記錄*/ </p><p>  printf("\t"); </p><p>  system("pause"); </p><p><b>  break; </b></p><p><b>  case 4: </b></p>

29、<p>  printf("\n\t在通訊錄中查找記錄\n"); </p><p>  Query_a_record(pe,n); /*查找記錄*/ </p><p>  printf("\t"); </p><p>  system("pause"); </p>

30、<p><b>  break;</b></p><p><b>  case 5: </b></p><p>  printf("\n\t修改通訊錄中的記錄\n"); </p><p>  Change(pe,n); /*修改數(shù)據(jù)*/ </p><

31、p>  printf("\t"); </p><p>  system("pause"); </p><p><b>  break; </b></p><p><b>  case 6: </b></p><p>  printf("\n\t

32、保存功能\n"); </p><p>  WritetoText(pe,n); /*保存數(shù)據(jù)*/ </p><p>  printf("\t"); </p><p>  system("pause"); </p><p><b>  break; </

33、b></p><p><b>  case 0: </b></p><p>  printf("\n\t\t謝謝使用,再見!\n"); /*結(jié)束程序*/ </p><p>  printf("\n\t\t"); </p><p>

34、;  system("pause"); </p><p><b>  exit(0); </b></p><p><b>  } </b></p><p><b>  } </b></p><p><b>  }</b></p&g

35、t;<p><b>  5.6結(jié)論</b></p><p>  現(xiàn)在社會人與人之間的交往越來越頻繁,通訊錄成為生活的必須品,對通訊錄進行必要的管理,對通訊錄中的人進行快速查詢記錄提供了極大方便</p><p>  在以往學(xué)習(xí)的知識、參考課外資料和尋求老師的幫助下終于完成了一個簡單的軟件。這個軟件功能非常簡單,因而我想,在實際運用中,還有些不足。因為知識和

36、能力的不足,我們還無法做出滿足實際需求的優(yōu)秀軟件,許多功能還欠缺和不完善,如無法實現(xiàn)快速查詢。</p><p>  由于我的知識淺薄,經(jīng)驗不足及閱歷頗淺,因此,在該系統(tǒng)的設(shè)計方面還有很多不足,比如功能過少,界面不醒目等問題,我會在學(xué)習(xí)的使用過程中,根據(jù)學(xué)習(xí)的具體要求不斷的修改、完善,爭取使系統(tǒng)慢慢趨于完美。在具體操作中對這學(xué)期所學(xué)的C語言的理論知識得到鞏固,達到實訓(xùn)的基本目的,也發(fā)現(xiàn)自己的不足之出,在以后的上機中

37、應(yīng)更加注意,同時體會到C語言具有的語句簡潔,使用靈活,執(zhí)行效率高等特點。發(fā)現(xiàn)上機實訓(xùn)的重要作用,特別是對數(shù)組和循環(huán)有了深刻的理解。 </p><p><b>  6.后記</b></p><p>  這次實踐中我們學(xué)習(xí)到了以前在課本上無法理解和沒有見到過的知識,提高自身的知識面和實踐能力,收獲頗豐。</p><p>  因為我剛接觸編程不久,對

38、于數(shù)據(jù)結(jié)構(gòu)、軟件工程這些專業(yè)名詞知之甚少;甚至對于編程應(yīng)該如何開始都感覺茫然,不知該從哪里下手。但是我知道編寫程序不能急于求成,必須循序漸進。首先在動手以前,必須理解用戶對于程序的要求,從而明確所要編寫程序的功能,倘若不知道所要編的程序目的何在,那么編程時就會失去目標,程序自然編不好,也就是說要先進行“可行性分析”。然后,要明確編程思想,即在編程之前要對程序有一個總體的構(gòu)思、總體的框架;這樣編程時才能條理清晰,不致出現(xiàn)程序結(jié)構(gòu)混亂這樣的

39、大錯誤。完成了總體設(shè)計之后,再進行詳細設(shè)計、模塊設(shè)計,這樣編程時才能心中有數(shù)。我是通過把一些主要的函數(shù)、算法用筆先寫出來,這樣做是為了在真正編寫程序的時候不至于忙東忙西,把思路打斷。否則要是在上機時才進行構(gòu)思,往往只有看著屏幕發(fā)呆的份。設(shè)計大體完工之后,就可以敲上屏幕了。</p><p>  在我們的辛勤努力下,終于做出一個簡單的軟件,雖然這個軟件功能非常簡單,而且有很多不足,離實際應(yīng)用還有很大的距離,但是我們在

40、發(fā)現(xiàn)問題的過程中不斷去完善自己制作的軟件,力求把它作到趨于完美。</p><p>  在我們制作程序的過程中,老師和同學(xué)們都給與了我們很大的幫助,幫助我們查閱資料尋找知識點,指出我們的軟件的錯誤和不足,在我們遇到困難時給我們鼓勵和幫助,在這里,我向這些無私幫助我的人表示由衷的謝意。</p><p><b>  7、參考文獻:</b></p><p&

41、gt;  1.《c語言成語設(shè)計教程》</p><p>  2.王萍. C++面向?qū)ο蟪绦蛟O(shè)計. 北京:清華大學(xué)出版社,2002 </p><p>  3.譚浩強. C程序設(shè)計(第二版). 北京:清華大學(xué)出版社,1999 </p><p><b>  8、附錄</b></p><p>  #include <stdi

42、o.h></p><p>  #include <string.h></p><p>  #include <malloc.h></p><p>  #include <windows.h></p><p>  int n=0;//定義全局變量 存儲電話聯(lián)系人個數(shù)</p><p&

43、gt;  struct phone_info//定義結(jié)構(gòu)體 存儲聯(lián)系人信息</p><p><b>  {</b></p><p>  char name[20];//姓名</p><p>  char phone[20];//電話</p><p>  char type;//分類</p><

44、;p>  char email[20];//郵箱</p><p>  struct phone_info *next;//指向下一個節(jié)點的指針</p><p><b>  };</b></p><p>  /*-----錯誤函數(shù)-----*/</p><p><b>  //所需參數(shù):無</b&

45、gt;</p><p>  //函數(shù)功能:顯示錯誤信息</p><p><b>  //返回參數(shù):無</b></p><p>  void error()</p><p><b>  {</b></p><p>  printf("代碼錯誤\n\n");&

46、lt;/p><p>  system( "pause ");</p><p><b>  }</b></p><p>  /*-----輸出函數(shù)-----*/</p><p>  //所需參數(shù):鏈表頭指針</p><p>  //函數(shù)功能:輸出鏈表中的聯(lián)系人信息</p>

47、<p><b>  //返回參數(shù):無</b></p><p>  void output(struct phone_info *head)</p><p><b>  {</b></p><p>  struct phone_info *p1=head,*p2;</p><p>  s

48、ystem("cls");//清屏</p><p>  if(head==NULL)//如果當(dāng)前鏈表頭指針為空</p><p><b>  {</b></p><p>  printf("當(dāng)前沒有任何聯(lián)系人信息\n\n");</p><p>  system( "pa

49、use "); </p><p>  return;//返回</p><p><b>  }</b></p><p>  printf("電話聯(lián)系薄(共%d條信息)\n\n",n);</p><p><b>  for(;;)</b></p><p

50、><b>  {</b></p><p>  p2=p1->next;</p><p>  printf("姓名:%s\n",p1->name);</p><p>  printf("電話:%s\n",p1->phone);</p><p>  if(p1-

51、>type=='A'||p1->type=='a')</p><p>  printf("類別:辦公類\n");</p><p>  else if(p1->type=='B'||p1->type=='b')</p><p>  printf("類別

52、:個人類\n");</p><p><b>  else</b></p><p>  printf("類別:商務(wù)類\n");</p><p>  printf("郵箱:%s\n",p1->email);</p><p>  printf("\n"

53、);</p><p>  if(p1->next==NULL)//如果當(dāng)前指針所指向的結(jié)構(gòu)體中next指向空則鏈表輸出完畢</p><p>  break;//返回</p><p><b>  p1=p2;</b></p><p><b>  }</b></p><p&

54、gt;<b>  }</b></p><p>  /*-----新增函數(shù)-----*/</p><p>  //所需參數(shù):鏈表頭指針</p><p>  //函數(shù)功能:新增聯(lián)系人信息 并自動添加到鏈表末尾</p><p>  //返回參數(shù):鏈表頭指針</p><p>  struct phone

55、_info *new_info(struct phone_info *head)//新增</p><p><b>  {</b></p><p>  struct phone_info *p1,*p2,*p;</p><p><b>  char c;</b></p><p><b>  

56、int flag;</b></p><p>  system("cls");//清屏</p><p><b>  for(;;)</b></p><p><b>  {</b></p><p>  if(n==15)//判斷當(dāng)前聯(lián)系人數(shù)目是否超過系統(tǒng)限制</

57、p><p><b>  {</b></p><p>  printf("存儲空間已滿,不能再錄入新數(shù)據(jù)!\n\n");</p><p>  system( "pause");</p><p>  return head;</p><p><b>  }

58、</b></p><p>  if(n==0)//判斷當(dāng)前聯(lián)系人數(shù)目是否為0</p><p><b>  {</b></p><p>  head=p1=p2=(struct phone_info *)malloc(sizeof(struct phone_info));//新建結(jié)構(gòu)體 并將結(jié)構(gòu)體指針賦予鏈表頭指針</p&g

59、t;<p>  p1->next=NULL;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  p1=head;</b></p

60、><p>  p2=(struct phone_info *)malloc(sizeof(struct phone_info));//新建結(jié)構(gòu)體</p><p><b>  }</b></p><p>  printf("請輸入要新增的聯(lián)系人姓名:\n(如果輸入“0”則停止新增,并返回主菜單)\n");</p>

61、<p>  scanf("%s",p2->name);</p><p>  if(strcmp(p2->name,"0")==0)//判斷輸入的姓名是否為“0”</p><p><b>  {</b></p><p>  free(p2);//為“0”則釋放新開辟的空間</

62、p><p>  return head;//返回</p><p><b>  }</b></p><p>  printf("\n請輸入聯(lián)系人的電話號碼:\n");</p><p>  scanf("%s",p2->phone);</p><p>  f

63、or(flag=1,p=head;n!=0&&p!=NULL;)//判斷是否輸入了相同的聯(lián)系人電話</p><p><b>  {</b></p><p>  if(strcmp(p2->phone,p->phone)==0)</p><p><b>  {</b></p>&l

64、t;p>  printf("\n錄入了相同的聯(lián)系人電話\n\n");</p><p>  system( "pause ");</p><p>  flag=0;//標志位賦“0”</p><p><b>  free(p2);</b></p><p>  system(&

65、quot;cls");</p><p>  break;//退出循環(huán)</p><p><b>  }</b></p><p>  p=p->next;</p><p><b>  }</b></p><p>  if(flag==0)//判斷標志位是否為“

66、0”</p><p>  continue;//如果為“0”則進入下一次循環(huán)</p><p>  printf("\n請輸入聯(lián)系人的類別:\n(\"A\"為辦公類 \"B\"為個人類 \"C\"為商務(wù)類)\n");</p><p>  scanf("%c",&

67、;c);//保存上一次輸入的回車鍵</p><p>  scanf("%c",&p2->type);</p><p>  printf("\n請輸入聯(lián)系人的電子郵箱:\n");</p><p>  scanf("%s",p2->email);</p><p> 

68、 while(p1->next!=NULL)</p><p>  p1=p1->next;//找到鏈表的尾部</p><p>  p1->next=p2;//將鏈表的尾部指向新添加的聯(lián)系人</p><p>  p2->next=NULL;//新的鏈表尾部賦結(jié)束標記</p><p>  system("

69、cls");</p><p>  printf("新增成功\n\n");</p><p>  n++;//保存的聯(lián)系人數(shù)目加1</p><p><b>  }</b></p><p>  return head;</p><p><b>  }</

70、b></p><p>  /*-----刪除函數(shù)-----*/</p><p>  //所需參數(shù):鏈表頭指針</p><p>  //函數(shù)功能:在鏈表中刪除指定的聯(lián)系人信息</p><p>  //返回參數(shù):鏈表頭指針</p><p>  struct phone_info *del(struct phone_i

71、nfo *head)</p><p><b>  {</b></p><p>  struct phone_info *p1=head,*p2;</p><p>  char name[20];</p><p>  system("cls");</p><p><b>

72、;  for(;;)</b></p><p><b>  {</b></p><p>  if(n==0)//判斷當(dāng)前聯(lián)系人數(shù)目是否為0</p><p><b>  {</b></p><p>  printf("當(dāng)前沒有任何聯(lián)系人信息\n\n");</p&

73、gt;<p>  system("pause");</p><p>  return head;//返回</p><p><b>  }</b></p><p>  output(head);//調(diào)用輸出函數(shù) 顯示當(dāng)前所有聯(lián)系人的信息</p><p>  printf("請

74、輸入要刪除的聯(lián)系人的姓名:\n(如果輸入“0”則停止刪除,并返回主菜單)\n");</p><p>  scanf("%s",name);</p><p>  if(strcmp(name,"0")==0)//判斷輸入的姓名是否為0</p><p>  return head;//返回</p>&l

75、t;p><b>  else</b></p><p>  if(strcmp(name,head->name)==0)//找到指定的聯(lián)系人所在節(jié)點</p><p>  {</p><p>  if(head->next==NULL)//判斷指定的聯(lián)系人是否為鏈表中唯一的聯(lián)系人信息</p>

76、<p><b>  {</b></p><p>  printf("\n刪除成功\n\n");</p><p>  printf("當(dāng)前沒有任何學(xué)生信息\n\n");</p><p>  system("pause");</p><p>  free(

77、head);//釋放頭節(jié)點</p><p>  n--;//保存的聯(lián)系人數(shù)目減1</p><p>  return NULL;//返回空指針</p><p><b>  }</b></p><p>  head=p1->next;//指定的聯(lián)系人為鏈表的頭節(jié)點 將下一節(jié)點的地址賦予鏈表頭指針</p&g

78、t;<p>  free(p1);//釋放頭節(jié)點</p><p>  printf("刪除成功\n\n");</p><p>  system("pause");</p><p><b>  n--;</b></p><p><b>  }</b&g

79、t;</p><p>  else//指定的聯(lián)系人不是鏈表的頭節(jié)點</p><p><b>  {</b></p><p>  p1=p2=head;</p><p>  for(;;)//找到指定的聯(lián)系人所在節(jié)點</p><p><b>  {</b></p>

80、;<p>  if(strcmp(name,p1->name)==0)</p><p><b>  {</b></p><p>  p2->next=p1->next;</p><p>  free(p1);//釋放節(jié)點</p><p>  printf("刪除成功\n\n&

81、quot;);</p><p>  system("pause");</p><p>  n--;//保存的聯(lián)系人數(shù)目減1</p><p>  system("cls");//清屏</p><p>  break;//退出循環(huán)</p><p><b>  }

82、</b></p><p><b>  p2=p1;</b></p><p>  p1=p1->next;//指向下一節(jié)點</p><p>  if(p1==NULL)//節(jié)點為空</p><p><b>  {</b></p><p>  print

83、f("\n姓名為%s的聯(lián)系人不存在!\n\n",name);</p><p>  system("pause");</p><p>  system("cls");//清屏</p><p>  break;//退出循環(huán)</p><p><b>  }</b>

84、</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  return head;//返回</p><p><b>  }</b><

85、/p><p>  /*-----音樂函數(shù)-----*/</p><p>  //所需參數(shù):存儲數(shù)字的字符串指針</p><p>  //函數(shù)功能:依次顯示字符串里存儲的數(shù)字并放出指定聲音</p><p><b>  //返回參數(shù):無</b></p><p>  void music(char *p)&

86、lt;/p><p><b>  {</b></p><p>  int freq[]={300,400,523,587,659,698,784,880,988,1046};//定義音頻數(shù)組</p><p><b>  int i;</b></p><p>  printf("\n"

87、);</p><p>  for(i=0;*(p+i)!='\0';i++)</p><p><b>  {</b></p><p>  printf("%c",*(p+i));//顯示數(shù)字</p><p>  Beep(freq[*(p+i)-48],500);//調(diào)用揚聲器發(fā)出

88、指定頻率的聲響</p><p><b>  }</b></p><p>  printf("\n");</p><p><b>  }</b></p><p>  /*-----撥號函數(shù)-----*/</p><p>  //所需參數(shù):鏈表頭指針</

89、p><p>  //函數(shù)功能:在鏈表中查找指定的聯(lián)系人 并模擬撥號效果</p><p><b>  //返回參數(shù):無</b></p><p>  void diag(struct phone_info *head)</p><p><b>  {</b></p><p>  ch

90、ar name[20];</p><p>  struct phone_info *p1;</p><p>  system("cls");</p><p><b>  for(;;)</b></p><p><b>  {</b></p><p> 

91、 if(n==0)//判斷當(dāng)前聯(lián)系人數(shù)目是否為0</p><p><b>  {</b></p><p>  printf("當(dāng)前沒有任何聯(lián)系人信息\n\n");</p><p>  system("pause");</p><p><b>  return;</

92、b></p><p><b>  }</b></p><p>  system("cls");</p><p>  output(head);//調(diào)用輸出函數(shù) 顯示當(dāng)前所有聯(lián)系人的信息</p><p>  printf("請輸入要撥號的聯(lián)系人姓名:\n(如果輸入“0”則停止撥號,并返

93、回主菜單)\n");</p><p>  scanf("%s",name);</p><p>  if(strcmp(name,"0")==0)//判斷輸入的姓名是否為0</p><p>  return;//返回</p><p><b>  else</b><

94、;/p><p><b>  {</b></p><p><b>  p1=head;</b></p><p><b>  for(;;)</b></p><p><b>  {</b></p><p>  if(strcmp(name,

95、p1->name)==0)//找到指定聯(lián)系人所在節(jié)點</p><p><b>  {</b></p><p>  music(p1->phone);</p><p>  printf("\n撥號成功\n\n");</p><p>  system("pause");&

96、lt;/p><p><b>  break;</b></p><p><b>  }</b></p><p>  p1=p1->next;//找到下一節(jié)點</p><p>  if(p1==NULL)//指針為空</p><p><b>  {&

97、lt;/b></p><p>  printf("\n姓名為%s的聯(lián)系人不存在!\n\n",name);</p><p>  system("pause");</p><p><b>  break;</b></p><p><b>  }</b><

98、;/p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /*-----修改函數(shù)-----*/</p>

99、<p>  //所需參數(shù):鏈表頭指針</p><p>  //函數(shù)功能:在鏈表中修改指定聯(lián)系人的信息</p><p><b>  //返回參數(shù):無</b></p><p>  void revise(struct phone_info *head)</p><p><b>  {</b>

100、;</p><p><b>  int flag;</b></p><p><b>  int a;</b></p><p><b>  char c;</b></p><p>  char name[20];</p><p>  struct phon

101、e_info *p1;</p><p>  system("cls");</p><p><b>  for(;;)</b></p><p><b>  {</b></p><p>  if(n==0)//判斷當(dāng)前聯(lián)系人數(shù)目是否為0</p><p>&

102、lt;b>  {</b></p><p>  printf("當(dāng)前沒有任何聯(lián)系人信息\n\n");</p><p>  system("pause");</p><p><b>  return;</b></p><p><b>  }</b>

103、;</p><p>  output(head);//調(diào)用輸出函數(shù) 顯示當(dāng)前所有聯(lián)系人的信息</p><p>  printf("請輸入要修改的聯(lián)系人姓名:\n(如果輸入“0”則停止修改,并返回主菜單)\n");</p><p>  scanf("%s",name);</p><p>  if(str

104、cmp(name,"0")==0)//判斷輸入的姓名是否為0</p><p>  return;//返回</p><p><b>  else</b></p><p><b>  {</b></p><p><b>  p1=head;</b></

105、p><p><b>  for(;;)</b></p><p><b>  {</b></p><p>  if(strcmp(name,p1->name)==0)//找到指定聯(lián)系人所在節(jié)點</p><p><b>  {</b></p><p> 

106、 system("cls");</p><p>  for(a=0;;)</p><p><b>  {</b></p><p>  system("cls");</p><p><b>  if(a!=0)</b></p><p> 

107、 printf("修改成功\n\n");</p><p>  printf("姓名為%s的聯(lián)系人信息如下\n",p1->name);</p><p>  printf("電話:%s\n",p1->phone);</p><p>  if(p1->type=='A'||p1-

108、>type=='a')</p><p>  printf("類別:辦公類\n");</p><p>  else if(p1->type=='B'||p1->type=='b')</p><p>  printf("類別:個人類\n");</p>

109、<p><b>  else</b></p><p>  printf("類別:商務(wù)類\n");</p><p>  printf("郵箱:%s\n",p1->email);</p><p>  printf("\n");</p><p>  p

110、rintf("1.修改姓名\n");</p><p>  printf("2.修改電話\n");</p><p>  printf("3.修改類別\n");</p><p>  printf("4.修改郵箱\n");</p><p>  printf("

111、0.返回\n");</p><p>  printf("\n請輸入操作步驟代碼:\n");</p><p>  scanf("%d",&flag);</p><p>  printf("\n");</p><p>  switch(flag)</p>

112、<p><b>  {</b></p><p><b>  case 1:</b></p><p>  printf("請輸入新的姓名:\n");</p><p>  scanf("%s",p1->name);</p><p><b>

113、;  break;</b></p><p><b>  case 2:</b></p><p>  printf("請輸入新的電話:\n");</p><p>  scanf("%s",p1->phone);</p><p><b>  break;&l

114、t;/b></p><p><b>  case 3:</b></p><p>  printf("請輸入新的類別:\n(\"A\"為辦公類 \"B\"為個人類 \"C\"為商務(wù)類)\n");</p><p>  scanf("%c",&a

115、mp;c);//保存上一次輸入的回車</p><p>  scanf("%c",&p1->type);</p><p><b>  break;</b></p><p><b>  case 4:</b></p><p>  printf("請輸入新的郵

116、箱:\n");</p><p>  scanf("%s",p1->email);</p><p><b>  break;</b></p><p><b>  case 0:</b></p><p><b>  break;</b></

117、p><p><b>  default:</b></p><p><b>  error();</b></p><p><b>  }</b></p><p><b>  a=1;</b></p><p>  if(flag==0)&l

118、t;/p><p><b>  break;</b></p><p><b>  }</b></p><p>  if(flag==0)</p><p><b>  {</b></p><p>  system("cls");</p&

119、gt;<p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b><

120、/p><p>  p1=p1->next;//找到下一個節(jié)點</p><p>  if(p1==NULL)//指針為空</p><p><b>  {</b></p><p>  printf("\n姓名為%s的聯(lián)系人不存在!\n\n",name);</p><p>  

121、system("pause");</p><p>  system("cls");</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p>

122、<p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /*-----釋放函數(shù)-----*/</p><p

123、>  //所需參數(shù):鏈表頭指針</p><p>  //函數(shù)功能:釋放鏈表存儲空間的內(nèi)容</p><p><b>  //返回參數(shù):無</b></p><p>  void freelist(struct phone_info *head)</p><p><b>  {</b></p&

124、gt;<p>  struct phone_info *p1=head,*p2;</p><p><b>  for(;;)</b></p><p><b>  {</b></p><p>  if(p1->next==NULL)</p><p><b>  {<

125、;/b></p><p><b>  free(p1);</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><

126、b>  {</b></p><p>  p2=p1->next;</p><p><b>  free(p1);</b></p><p><b>  p1=p2;</b></p><p><b>  }</b></p><p>&

127、lt;b>  }</b></p><p><b>  }</b></p><p>  /*-----查看函數(shù)-----*/</p><p>  //所需參數(shù):鏈表頭指針</p><p>  //函數(shù)功能:顯示指定類別的聯(lián)系人信息</p><p><b>  //返回參數(shù)

128、:無</b></p><p>  void look(struct phone_info *head)</p><p><b>  {</b></p><p>  struct phone_info *p;</p><p><b>  int c;</b></p><

129、p><b>  int flag;</b></p><p>  char type;</p><p>  system("cls");</p><p>  if(n==0)//判斷當(dāng)前聯(lián)系人數(shù)目是否為0</p><p><b>  {</b></p><

130、;p>  printf("當(dāng)前沒有任何聯(lián)系人信息\n\n");</p><p>  system("pause");</p><p>  return;//返回</p><p><b>  }</b></p><p><b>  for(;;)</b>

131、</p><p><b>  {</b></p><p>  system("cls");</p><p>  printf("1.查看辦公類聯(lián)系人\n");</p><p>  printf("2.查看個人類聯(lián)系人\n");</p><p&

132、gt;  printf("3.查看商務(wù)類聯(lián)系人\n");</p><p>  printf("0.返回\n");</p><p>  printf("\n請輸入操作步驟的代碼:");</p><p>  scanf("%d",&c);</p><p>&l

133、t;b>  switch(c)</b></p><p><b>  {</b></p><p>  case 1:type='a';break;</p><p>  case 2:type='b';break;</p><p>  case 3:type='c&#

134、39;;break;</p><p>  case 0:return;</p><p>  default:error();</p><p><b>  }</b></p><p>  flag=0;//標志位賦予0</p><p><b>  p=head;</b><

135、;/p><p>  while(p!=NULL)</p><p><b>  {</b></p><p>  if(p->type==type||p->type==type-32)</p><p><b>  {</b></p><p>  if(flag==0)&l

136、t;/p><p><b>  {</b></p><p>  system("cls");</p><p>  if(type=='a')</p><p>  printf("--辦公類聯(lián)系人--\n\n");</p><p>  else if

137、(type=='b')</p><p>  printf("--個人類聯(lián)系人--\n\n");</p><p><b>  else</b></p><p>  printf("--商務(wù)類聯(lián)系人--\n\n");</p><p><b>  }</b

138、></p><p><b>  flag=1;</b></p><p>  printf("姓名:%s\n",p->name);</p><p>  printf("電話:%s\n",p->phone);</p><p>  printf("郵箱:%s\

139、n",p->email);</p><p>  printf("\n");</p><p><b>  }</b></p><p>  p=p->next;//找到下一節(jié)點</p><p><b>  }</b></p><p&g

140、t;  if(flag==0)</p><p>  if(type=='a')</p><p>  printf("\n當(dāng)前沒有辦公類聯(lián)系人信息\n\n");</p><p>  else if(type=='b')</p><p>  printf("\n當(dāng)前沒有個人類聯(lián)系人信息

141、\n\n");</p><p><b>  else</b></p><p>  printf("\n當(dāng)前沒有商務(wù)類聯(lián)系人信息\n\n");</p><p>  system("pause");</p><p><b>  }</b></p&g

142、t;<p><b>  }</b></p><p>  /*-----主函數(shù)-----*/</p><p>  void main()</p><p><b>  {</b></p><p>  struct phone_info *head=NULL;</p><

143、p><b>  int n;</b></p><p><b>  for(;;)</b></p><p><b>  {</b></p><p>  system("cls");</p><p>  printf("---手機通信錄管理系統(tǒng)-

144、--\n\n");</p><p>  printf("1.新增聯(lián)系人\n");</p><p>  printf("2.撥號聯(lián)系人\n");</p><p>  printf("3.刪除聯(lián)系人\n");</p><p>  printf("4.修改聯(lián)系人\n&q

145、uot;);</p><p>  printf("5.查看聯(lián)系人\n");</p><p>  printf("0.退出\n");</p><p>  printf("\n請輸入操作步驟的代碼:");</p><p>  scanf("%d",&n);&l

146、t;/p><p>  printf("\n");</p><p><b>  switch(n)</b></p><p><b>  {</b></p><p>  case 1: head=new_info(head);break;</p><p>  ca

147、se 2: diag(head);break;</p><p>  case 3: head=del(head);break;</p><p>  case 4: revise(head);break;</p><p>  case 5: look(head);break;</p><p>  case 0: if(head!=NULL)&l

148、t;/p><p>  freelist(head);</p><p><b>  break;</b></p><p>  default :error();break;</p><p><b>  }</b></p><p><b>  if(n==0)</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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論