數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-通迅錄_第1頁
已閱讀1頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計(jì)報(bào)告書</b></p><p>  題 目: 通迅錄 </p><p>  專 業(yè): 計(jì)算機(jī)計(jì)算機(jī)科學(xué)與技術(shù) </p><p>  班 級: 12級<4>班 </p><p>  姓 名

2、: </p><p>  學(xué) 號: </p><p>  指導(dǎo)老師: </p><p>  成 績: </p><p><b>  需求分析&

3、lt;/b></p><p>  整個(gè)通訊錄一共6個(gè)部分,分別為預(yù)選準(zhǔn)備,增加聯(lián)系人,刪除聯(lián)系人,顯示聯(lián)系人,修改聯(lián)系人,以及退出系統(tǒng)。</p><p>  0.預(yù)選準(zhǔn)備:首先調(diào)用定義的read_func函數(shù),查詢是否有預(yù)先保存的數(shù)據(jù),如果有則載入沒有則先調(diào)用insert_func函數(shù)輸入一個(gè)數(shù)據(jù)然后進(jìn)入主菜單</p><p>  1.增加聯(lián)系人:在主菜單中鍵

4、入1則進(jìn)入增加聯(lián)系人部分。通過調(diào)用insert_func函數(shù)輸入名字與電話。由于系統(tǒng)的原因,名字和電話的字符長度為20,超過20則出錯(cuò),但由于國內(nèi)的實(shí)際情況20字符幾乎可以滿足所有非特殊的電話用途。</p><p>  2.刪除聯(lián)系人:在主菜單中鍵入2則進(jìn)入刪除聯(lián)系人部分。通過調(diào)用delete_func()函數(shù),查找需要刪除聯(lián)系人的名字進(jìn)行刪除。</p><p>  3.顯示聯(lián)系人:在主菜

5、單中鍵入3則進(jìn)入顯示聯(lián)系人部分。通過調(diào)用display_func()函數(shù),顯示并按照電話號碼的大小排列顯示并統(tǒng)計(jì)所有的聯(lián)系人個(gè)數(shù)。</p><p>  4.修改聯(lián)系人:在主菜單中鍵入4則進(jìn)入修改聯(lián)系人部分。通過調(diào)用modify_func()函數(shù),查找需要刪除聯(lián)系人的名字進(jìn)行修改號碼。</p><p>  5.退出系統(tǒng):在主菜單中鍵入5則進(jìn)入退出系統(tǒng)部分。通過調(diào)用write_func()函數(shù)

6、,保存已輸入的電話號碼,并退出系統(tǒng)。</p><p><b>  概要設(shè)計(jì):</b></p><p><b>  詳細(xì)設(shè)計(jì)</b></p><p>  /* file name: slist.c */</p><p>  /* 單鏈表,插入、刪除使用排序 */</p><p>

7、;  #include <stdio.h></p><p>  #include <stdlib.h></p><p>  #include <string.h></p><p>  #include <conio.h></p><p>  void read_func(void);</p

8、><p>  void write_func(void);</p><p>  void insert_func(void);</p><p>  void tel_func(void);</p><p>  void delete_func(void);</p><p>  void display_func(void)

9、;</p><p>  void modify_func(void);</p><p>  void anykey_func(void);</p><p>  struct student {</p><p>  char name[20];</p><p>  char telephone[20];</p>

10、;<p>  struct student *next;</p><p><b>  };</b></p><p>  struct student *ptr, *head, *current, *prev;</p><p>  void main(void)</p><p><b>  {<

11、;/b></p><p>  char option1;</p><p>  system("cls");</p><p>  read_func();</p><p><b>  while(1)</b></p><p><b>  {</b>&l

12、t;/p><p>  printf("****************************************\n");</p><p>  printf(" 1.增加聯(lián)系人\n");</p><p>  printf(" 2.刪除聯(lián)系人\n");&l

13、t;/p><p>  printf(" 3.顯示聯(lián)系人\n");</p><p>  printf(" 4.修改聯(lián)系人\n");</p><p>  printf(" 5.退出系統(tǒng)\n");</p><p> 

14、 printf("****************************************\n");</p><p>  printf(" Please enter your choice (1-5)...");</p><p>  option1=getche();</p><p>  printf("

15、\n");</p><p>  switch(option1)</p><p><b>  {</b></p><p><b>  case '1':</b></p><p>  insert_func();</p><p><b>  b

16、reak;</b></p><p><b>  case '2':</b></p><p>  delete_func();</p><p><b>  break;</b></p><p><b>  case '3':</b>&l

17、t;/p><p>  display_func();</p><p><b>  break;</b></p><p><b>  case '4':</b></p><p>  modify_func();</p><p><b>  break;&l

18、t;/b></p><p><b>  case '5':</b></p><p>  write_func();</p><p><b>  exit(0);</b></p><p><b>  }</b></p><p><

19、;b>  }</b></p><p><b>  }</b></p><p>  void read_func(void)</p><p><b>  {</b></p><p>  FILE *fptr;</p><p>  head=(struct st

20、udent *) malloc(sizeof(struct student));</p><p>  head->next = NULL;</p><p>  /* 開始時(shí),若表中不存在數(shù)據(jù),則要求輸入第一筆數(shù)據(jù) */</p><p>  if((fptr=fopen("slist.dat","r")) == NULL)

21、</p><p><b>  {</b></p><p>  printf("表中數(shù)據(jù)不存在\n");</p><p>  printf(" 請按任意鍵輸出第一組數(shù)據(jù)...\n");</p><p><b>  getch();</b></p>

22、<p>  insert_func();</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  ptr=(struct student *) malloc(sizeof(str

23、uct student));</p><p>  while(fscanf(fptr, "%s %s", ptr->name, &ptr->telephone) != EOF)</p><p><b>  {</b></p><p>  tel_func();</p><p>  

24、ptr=(struct student *) malloc(sizeof(struct student));</p><p><b>  }</b></p><p>  fclose(fptr);</p><p><b>  }</b></p><p><b>  }</b>&

25、lt;/p><p>  void write_func(void)</p><p><b>  {</b></p><p>  FILE *fptr;</p><p>  fptr=fopen("slist.dat","w");</p><p>  curren

26、t=head->next;</p><p>  while(current != NULL)</p><p><b>  {</b></p><p>  fprintf(fptr, "%s %s\n", current->name, current->telephone);</p><p

27、>  current = current->next;</p><p><b>  }</b></p><p>  fclose(fptr);</p><p><b>  }</b></p><p>  void insert_func(void)</p><p>

28、;<b>  {</b></p><p>  ptr=(struct student *) malloc(sizeof(struct student));</p><p>  printf(" 名字 : ");</p><p>  gets(ptr->name);</p><p>  print

29、f(" 電話: ");</p><p>  gets(ptr->telephone); </p><p>  tel_func();</p><p><b>  }</b></p><p>  /*以電話高低由大到小排列*/</p><p>  void tel_func

30、(void)</p><p><b>  {</b></p><p><b>  //插入數(shù)據(jù)</b></p><p>  prev = head;</p><p>  current = head->next;</p><p>  while ((current !=

31、 NULL) && (current->telephone > ptr->telephone)) </p><p><b>  {</b></p><p>  prev = current;</p><p>  current = current->next;</p><p>&l

32、t;b>  }</b></p><p>  ptr->next = current;</p><p>  prev->next = ptr;</p><p><b>  }</b></p><p>  void delete_func(void)</p><p>&l

33、t;b>  {</b></p><p>  char del_name[20];</p><p>  printf(" 刪除名字: ");</p><p>  gets(del_name);</p><p>  prev = head;</p><p>  current = he

34、ad->next;</p><p>  while ((current != NULL) && (strcmp(current->name , del_name)!=0))</p><p><b>  {</b></p><p>  prev = current;</p><p>  curr

35、ent = current->next;</p><p><b>  }</b></p><p>  if (current != NULL)</p><p><b>  {</b></p><p>  prev->next = current->next;</p>

36、<p>  free(current);</p><p>  printf(" %s 檔案已刪除\n",del_name);</p><p><b>  }</b></p><p><b>  else</b></p><p>  printf(" 姓名 %s

37、 沒找到\n",del_name);</p><p>  anykey_func();</p><p><b>  }</b></p><p>  void modify_func(void)</p><p><b>  {</b></p><p>  char n

38、_temp[20];</p><p>  printf(" 需要修改信息的名字: ");</p><p>  gets(n_temp);</p><p>  current=head->next;</p><p>  while ((current != NULL) && (strcmp(curren

39、t->name , n_temp)!=0))</p><p><b>  {</b></p><p>  prev = current;</p><p>  current = current->next;</p><p><b>  }</b></p><p>

40、  if (current != NULL)</p><p><b>  {</b></p><p>  printf(" **************************\n");</p><p>  printf(" 名字 : %s\n",current->name);</p>

41、<p>  printf(" 電話: %s\n",current->telephone);</p><p>  printf(" **************************\n");</p><p>  printf(" 請輸入新的電話: ");</p><p>  gets(p

42、tr->telephone);</p><p>  printf(" %s 檔案修改\n",n_temp);</p><p><b>  }</b></p><p><b>  else</b></p><p>  printf(" 名字 %s 沒有被找到\n&q

43、uot;,n_temp);</p><p>  anykey_func();</p><p><b>  }</b></p><p>  void display_func(void)</p><p><b>  {</b></p><p>  int count=0;<

44、;/p><p>  system("cls");</p><p>  if(head->next == NULL) </p><p>  { printf(" No student record\n"); }</p><p><b>  else</b></p>

45、;<p><b>  {</b></p><p>  printf(" 名字 電話\n");</p><p>  printf(" ---------------------------\n");</p><p>  current=head->next

46、;</p><p>  while(current != NULL)</p><p><b>  {</b></p><p>  printf(" %-20s %3s\n", current->name, current->telephone);</p><p><b>  c

47、ount++;</b></p><p>  current=current->next;</p><p>  if(count % 20 == 0) getch();</p><p><b>  }</b></p><p>  printf(" ------------------------

48、---\n");</p><p>  printf(" 總共 %d 記錄被找到\n", count);</p><p><b>  }</b></p><p>  anykey_func();</p><p><b>  }</b></p><p&g

49、t;  void anykey_func(void)</p><p><b>  { </b></p><p>  printf(" 請輸入任意鍵以繼續(xù)");</p><p><b>  getch();</b></p><p>  printf("\n"

50、);</p><p><b>  }</b></p><p><b>  測試和結(jié)果分析:</b></p><p><b>  (一).測試</b></p><p>  開頭載入不成功輸入第一組數(shù)據(jù)以及顯示主菜單界面</p><p><b> 

51、 添加聯(lián)系人界面:</b></p><p><b>  刪除聯(lián)系人界面:</b></p><p>  4.顯示聯(lián)系人界面:</p><p>  5.修改聯(lián)系人界面:</p><p>  6.退出后保存的slist.dat文件</p><p><b>  (二)結(jié)果分析<

52、/b></p><p>  界面比較煩亂,或許應(yīng)該使用system(“cls”)來使系統(tǒng)更加簡潔,而且系統(tǒng)功能過于簡單,如果是顯示使用的通訊錄應(yīng)該包含多個(gè)電話號碼,包括固定電話幾個(gè)手機(jī),QQ,地址,郵箱等等數(shù)據(jù),而且開始時(shí)電話號碼的數(shù)據(jù)不能超過10位,否則就不能正常顯示,經(jīng)過修改現(xiàn)在能顯示20位以內(nèi),但是總覺得這樣的修改并不靈活,有待修改。</p><p><b>  課程

53、設(shè)計(jì)總結(jié)及心得</b></p><p>  通過這次的課程設(shè)計(jì),更加深了我對數(shù)據(jù)結(jié)構(gòu)這門課程的理解,特別是對數(shù)據(jù)結(jié)構(gòu)的靈活運(yùn)用有了很大進(jìn)步。這次的課程設(shè)計(jì)的題目很簡單,設(shè)計(jì)一個(gè)通訊錄的系統(tǒng),但是簡單的背后卻給我造成了不小的麻煩,這揭發(fā)出我的所學(xué)還不踏實(shí),而且學(xué)習(xí)和運(yùn)用也不能靈活的相連起來。數(shù)據(jù)結(jié)構(gòu)是一門很抽象化的課程,他難于理解,特別是在C語言的基礎(chǔ)不牢固的情況下。通過這次的課程設(shè)計(jì),使得我能夠?qū)⒄n程

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論