c語言課程設計--通信錄管理_第1頁
已閱讀1頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  課程設計(論文)</b></p><p>  題 目 名 稱 通信錄管理 </p><p>  課 程 名 稱 C語言課程設計 </p><p>  學 生 姓 名

2、 </p><p>  學 號 </p><p>  系 、專 業(yè) 信息工程系、信息大類 </p><p>  指 導 教 師 </p><p>  200

3、8年 6 月 8 日</p><p><b>  目 錄</b></p><p><b>  1前言2</b></p><p><b>  2需求分析2</b></p><p><b>  2.1要求2</b></p><p

4、><b>  2.2任務2</b></p><p><b>  2.3運行環(huán)境2</b></p><p><b>  2.4開發(fā)工具2</b></p><p><b>  3概要設計2</b></p><p>  3.1系統(tǒng)流程圖:3&l

5、t;/p><p>  3.2函數“輸入”流程圖4</p><p>  3.3函數“顯示”流程圖4</p><p>  3.4函數“刪除”流程圖5</p><p>  3.5函數“增加”流程圖6</p><p>  3.6函數“保存”流程圖6</p><p><b>  4詳細設

6、計7</b></p><p>  4.1通信錄管理7</p><p>  4.2分析和設計7</p><p>  4.3具體代碼實現11</p><p>  5課程設計的總結與體會16</p><p><b>  參考文獻16</b></p><p&g

7、t;<b>  致謝16</b></p><p><b>  前言</b></p><p>  編寫一個程序,可以存入通信錄信息,并對其進行管理??梢愿鶕煌奶崾?,對通信錄進行各種不同的管理。</p><p><b>  需求分析</b></p><p><b>

8、  2.1 要求</b></p><p>  (1)用C語言實現程序設計。</p><p>  (2)利用結構體進行相關信息處理。</p><p>  (3)畫出主要流程圖。</p><p>  (4)系統(tǒng)的各個功能模塊要求用函數形式實現。</p><p>  (5)界面良好(良好的人機互交),流程要有注釋

9、。</p><p><b>  2.2 任務</b></p><p>  (1)錄入通信錄信息(包括姓名、單位、電話號碼)。</p><p>  (2)顯示通信錄里的所有成員的信息。</p><p>  (3)查詢通信錄中某個人的信息。</p><p>  (4)增加某個人的信息到通信錄中。<

10、;/p><p>  (5)刪除通信錄里某個人的信息。</p><p>  (6)保存通信錄的信息。</p><p><b>  2.3 運行環(huán)境</b></p><p>  (1)WINDOWS2000/XP系統(tǒng)</p><p>  (2)Turboc2.0編譯環(huán)境</p><p&

11、gt;<b>  2.4開發(fā)工具</b></p><p><b>  C語言</b></p><p><b>  概要設計</b></p><p>  3.1 系統(tǒng)流程圖(如圖3.1)</p><p>  圖3.1 系統(tǒng)流程圖</p><p>  3.

12、2函數“輸入”流程圖(如圖3.2)</p><p>  圖3.2 函數“輸入”流程圖</p><p>  3.3函數“顯示”流程圖(如圖3.3)</p><p>  圖3.3 函數“顯示”流程圖</p><p>  3.4函數“查找”流程圖(如圖3.4)</p><p>  圖3.4 函數“查找”流程圖</

13、p><p>  3.5函數“刪除”流程圖(如圖3.5)</p><p>  圖3.5 函數“刪除”流程圖</p><p>  3.6 函數“增加”流程圖(如圖3.6)</p><p>  圖3.6 函數“增加”流程圖</p><p>  3.7 函數“保存”流程圖(如圖3.7)</p><p>

14、  圖3.7 函數“保存”流程圖</p><p><b>  詳細設計</b></p><p><b>  4.1 通信錄管理</b></p><p>  根據提示,對通信錄進行不同的管理。</p><p><b>  4.2 分析和設計</b></p><

15、;p>  在程序的開頭部分是就宏定義了M#define M 50,隨著在主函數中又有ADDRESS adr[M]; 這就定義了50個用來存放通信錄的各種信息的結構體變量。</p><p><b>  然后定義結構體變量</b></p><p>  typedef struct /*定義數據結構*/</p><p><b>  

16、{</b></p><p>  char name[20]; /*姓名*/</p><p>  char units[30]; /*單位*/</p><p>  char tele[10]; /*電話*/</p><p><b>  }ADDRESS;</b></p><p>  

17、定義了用來存放通信錄的各種信息的結構體變量??梢詫⑼ㄐ配洺蓡T的姓名、單位、電話號碼存入文件之中。</p><p><b>  函數原型</b></p><p>  int enter(ADDRESS t[]); /*輸入記錄*/</p><p>  void list(ADDRESS t[],int n); /*顯示記錄*/</p>

18、<p>  void search(ADDRESS t[],int n); /*按姓名查找顯示記錄*/</p><p>  int delete(ADDRESS t[],int n); /*刪除記錄*/</p><p>  int add(ADDRESS t[],int n); /*插入記錄*/</p><p>  void save(ADDRESS

19、 t[],int n); /*記錄保存為文件*/</p><p>  void print(ADDRESS temp); /*顯示單條記錄*/</p><p>  int menu_select(); /*主菜單函數*/</p><p>  這就是程序中所有的子函數,在這里起到一個函數聲明的作用。</p><p><b>  函數

20、“輸入”</b></p><p>  int enter(ADDRESS t[])</p><p><b>  {</b></p><p><b>  int i,n;</b></p><p><b>  char *s;</b></p><p

21、>  clrscr(); /*清屏*/</p><p>  printf("\nplease input num \n"); /*提示信息*/</p><p>  scanf("%d",&n); /*輸入記錄數*/</p><p>  printf("please input record \n&quo

22、t;); /*提示輸入記錄*/</p><p>  printf("name unit telephone\n");</p><p>  printf("------------------------------------------------\n");</p>&l

23、t;p>  for(i=0;i<n;i++)</p><p><b>  {</b></p><p>  scanf("%s%s%s",t[i].name,t[i].units,t[i].tele); /*輸入記錄*/</p><p>  printf("-----------------------

24、-----------------------\n");</p><p><b>  }</b></p><p>  return n; /*返回記錄條數*/</p><p><b>  }</b></p><p>  /*顯示記錄,參數為記錄數組和記錄條數*/</p>&

25、lt;p>  這個函數表示的是調用的函數“輸入”。然后輸入記錄數,再將通信錄成員的信息都輸入系統(tǒng),將其賦入結構體中,當輸入成員的信息等于記錄數時,結束輸入。</p><p><b>  函數“顯示”</b></p><p>  void list(ADDRESS t[],int n)</p><p><b>  {</b&

26、gt;</p><p><b>  int i;</b></p><p><b>  clrscr();</b></p><p>  printf("\n\n*******************ADDRESS******************\n");</p><p>  p

27、rintf("name unit telephone\n");</p><p>  printf("------------------------------------------------\n");</p><p>  for(i=0;i<n;i++)</p>

28、;<p>  printf("%-20s%-30s%-10s\n",t[i].name,t[i].units,t[i].tele);</p><p>  if((i+1)%10==0) /*判斷輸出是否達到10條記錄*/</p><p><b>  {</b></p><p>  printf("

29、Press any key continue...\n"); /*提示信息*/</p><p>  getch(); /*按任意鍵繼續(xù)*/</p><p><b>  }</b></p><p>  printf("************************end*******************\n"

30、);</p><p><b>  }</b></p><p>  這個函數表示的是調用的函數“顯示”。顯示通信錄里成員的信息。</p><p><b>  函數“查找”</b></p><p>  void search(ADDRESS t[],int n)</p><p>

31、<b>  {</b></p><p>  char s[20]; /*保存待查找姓名字符串*/</p><p>  int i; /*保存查找到結點的序號*/</p><p>  clrscr(); /*清屏*/</p><p>  printf("please search name\n&quo

32、t;);</p><p>  scanf("%s",s); /*輸入待查找姓名*/</p><p>  i=find(t,n,s); /*調用find函數,得到一個整數*/</p><p>  if(i>n-1) /*如果整數i值大于n-1,說明沒找到*/</p><p>  printf("not fo

33、und\n");</p><p><b>  else</b></p><p>  print(t[i]); /*找到,調用顯示函數顯示記錄*/</p><p><b>  }</b></p><p>  /*顯示指定的一條記錄*/</p><p>  void

34、print(ADDRESS temp)</p><p><b>  {</b></p><p><b>  clrscr();</b></p><p>  printf("\n\n********************************************\n");</p>&

35、lt;p>  printf("name unit telephone\n");</p><p>  printf("------------------------------------------------\n");</p><p>  printf("%-

36、20s%-30s%-10s\n",temp.name,temp.units,temp.tele);</p><p>  printf("**********************end***********************\n");</p><p><b>  }</b></p><p>  /*查找函數

37、,參數為記錄數組和記錄條數以及姓名s */</p><p>  int find(ADDRESS t[],int n,char *s)</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  for(i=0;i<n;i++)/*從第一條記錄

38、開始,直到最后一條*/</p><p><b>  {</b></p><p>  if(strcmp(s,t[i].name)==0) /*記錄中的姓名和待比較的姓名是否相等*/</p><p>  return i; /*相等,則返回該記錄的下標號,程序提前結結束*/</p><p><b>  }&

39、lt;/b></p><p>  return i; /*返回i值*/</p><p><b>  }</b></p><p>  這個函數表示的是調用的函數“查找”。按姓名方式查找某個人是否在通信錄里的成員。在search中調用了兩個函數,分別是顯示函數和查找函數,在查找函數中試應用比較函數,比較要查找的姓名和通信錄里面的姓名是否相等

40、。如果相等則顯示該成員信息,否則顯示沒有找到。</p><p><b>  函數“刪除”</b></p><p>  int delete(ADDRESS t[],int n)</p><p><b>  {</b></p><p>  char s[20]; /*要刪除記錄的姓名*/</p

41、><p><b>  int ch=0;</b></p><p><b>  int i,j;</b></p><p>  printf("please deleted name\n"); /*提示信息*/</p><p>  scanf("%s",s);/*輸入

42、姓名*/</p><p>  i=find(t,n,s); /*調用find函數*/</p><p>  if(i>n-1) /*如果i>n-1超過了數組的長度*/</p><p>  printf("no found not deleted\n"); /*顯示沒找到要刪除的記錄*/</p><p><

43、b>  else</b></p><p><b>  {</b></p><p>  print(t[i]); /*調用輸出函數顯示該條記錄信息*/</p><p>  printf("Are you sure delete it(1/0)\n"); /*確認是否要刪除*/</p><

44、p>  scanf("%d",&ch); /*輸入一個整數0或1*/</p><p>  if(ch==1) /*如果確認刪除整數為1*/</p><p><b>  {</b></p><p>  for(j=i+1;j<n;j++) /*刪除該記錄,實際后續(xù)記錄前移*/</p>&

45、lt;p><b>  {</b></p><p>  strcpy(t[j-1].name,t[j].name); /*將后一條記錄的姓名拷貝到前一條*/</p><p>  strcpy(t[j-1].units,t[j].units); /*將后一條記錄的單位拷貝到前一條*/</p><p>  strcpy(t[j-1].tele,

46、t[j].tele); /*將后一條記錄的電話拷貝到前一條*/</p><p><b>  }</b></p><p>  n--; /*記錄數減1*/</p><p><b>  }</b></p><p><b>  }</b></p><p> 

47、 return n; /*返回記錄數*/</p><p><b>  }</b></p><p>  這個函數表示的是調用的函數“刪除”。刪除某個成員的信息。首先是輸入要刪除人的姓名,然后調用find函數,如果沒找到該成員則顯示沒有找到,如果找到了該成員,程序采用的方法是刪除某位置的記錄,后面的記錄全部都往前一個位置。</p><p><

48、;b>  函數“增加”</b></p><p>  int add(ADDRESS t[],int n)/*插入函數,參數為結構體數組和記錄數*/</p><p><b>  {</b></p><p>  ADDRESS temp; /*新插入記錄信息*/</p><p><b>  in

49、t i,j;</b></p><p>  char s[20]; /*確定插入在哪個記錄之前*/</p><p>  printf("please input record\n");</p><p>  printf("************************************************\n&qu

50、ot;);</p><p>  printf("name unit telephone\n");</p><p>  printf("--------------------------------------------------\n");</p><p&

51、gt;  scanf("%s%s%s",temp.name,temp.units,temp.tele); /*輸入插入信息*/</p><p>  printf("------------------------------------------------\n");</p><p>  printf("please input loca

52、te name \n");</p><p>  scanf("%s",s); /*輸入插入位置的姓名*/</p><p>  i=find(t,n,s); /*調用find,確定插入位置*/</p><p>  for(j=n-1;j>=i;j--) /*從最后一個結點開始向后移動一條*/</p><p&

53、gt;<b>  {</b></p><p>  strcpy(t[j+1].name,t[j].name); /*當前記錄的姓名拷貝到后一條*/</p><p>  strcpy(t[j+1].units,t[j].units); /*當前記錄的單位拷貝到后一條*/</p><p>  strcpy(t[j+1].tele,t[j].tele

54、); /*當前記錄的電話拷貝到后一條*/</p><p><b>  }</b></p><p>  strcpy(t[i].name,temp.name); /*將新插入記錄的姓名拷貝到第i個位置*/</p><p>  strcpy(t[i].units,temp.units); /*將新插入記錄的單位拷貝到第i個位置*/</p>

55、;<p>  strcpy(t[i].tele,temp.tele); /*將新插入記錄的電話拷貝到第i個位置*/</p><p>  n++; /*記錄數加1*/</p><p>  return n; /*返回記錄數*/</p><p><b>  }</b></p><p>  這個函數表示的是調

56、用的函數“增加”。輸入要增加的成員的信息,然后系統(tǒng)提示把新增的成員放通信錄里的成員位置之前。調用find函數,找到位置,然后該位置開始所有的成員往后移一個位置。再將那個新紀錄放在該位置上。</p><p><b>  函數“保存”</b></p><p>  void save(ADDRESS t[],int n)</p><p><b&

57、gt;  {</b></p><p><b>  int i;</b></p><p>  FILE *fp; /*指向文件的指針*/</p><p>  if((fp=fopen("record.txt","wb"))==NULL) /*打開文件,并判斷打開是否正常*/</p>

58、;<p><b>  {</b></p><p>  printf("can not open file\n");/*沒打開*/</p><p>  exit(1); /*退出*/</p><p><b>  }</b></p><p>  printf(&quo

59、t;\nSaving file\n"); /*輸出提示信息*/</p><p>  fprintf(fp,"%d",n); /*將記錄數寫入文件*/</p><p>  fprintf(fp,"\r\n"); /*將換行符號寫入文件*/</p><p>  for(i=0;i<n;i++)</p>

60、;<p><b>  {</b></p><p>  fprintf(fp,"%-20s%-30s%-10s",t[i].name,t[i].units,t[i].tele);/*格式寫入記錄*/</p><p>  fprintf(fp,"\r\n"); /*將換行符號寫入文件*/</p><

61、p><b>  }</b></p><p>  fclose(fp);/*關閉文件*/</p><p>  printf("****save success***\n"); /*顯示保存成功*/</p><p><b>  }</b></p><p>  這個函數表示的是調

62、用的函數“保存”。打開文件,將信息存入文件中。</p><p>  4.3 具體代碼實現</p><p>  /******頭文件(.h)***********/</p><p>  #include "stdio.h" /*I/O函數*/</p><p>  #include "stdlib.h"

63、 /*標準庫函數*/</p><p>  #include "string.h"/*字符串函數*/</p><p>  #include "ctype.h" /*字符操作函數*/</p><p>  #define M 50 /*定義常數表示記錄數*/</p><p>  typedef struct

64、 /*定義數據結構*/</p><p><b>  {</b></p><p>  char name[20]; /*姓名*/</p><p>  char units[30]; /*單位*/</p><p>  char tele[10]; /*電話*/</p><p><b> 

65、 }ADDRESS;</b></p><p>  /******以下是函數原型*******/</p><p>  int enter(ADDRESS t[]); /*輸入記錄*/</p><p>  void list(ADDRESS t[],int n); /*顯示記錄*/</p><p>  void search(ADDR

66、ESS t[],int n); /*按姓名查找顯示記錄*/</p><p>  int delete(ADDRESS t[],int n); /*刪除記錄*/</p><p>  int add(ADDRESS t[],int n); /*插入記錄*/</p><p>  void save(ADDRESS t[],int n); /*記錄保存為文件*/</

67、p><p>  void print(ADDRESS temp); /*顯示單條記錄*/</p><p>  int menu_select(); /*主菜單函數*/</p><p>  /******主函數開始*******/</p><p><b>  main()</b></p><p>&l

68、t;b>  {</b></p><p><b>  int i;</b></p><p>  ADDRESS adr[M]; /*定義結構體數組*/</p><p>  int length; /*保存記錄長度*/</p><p>  clrscr(); /*清屏*/</p><

69、;p>  for(;;)/*無限循環(huán)*/</p><p><b>  {</b></p><p>  switch(menu_select()) /*調用主菜單函數,返回值整數作開關語句的條件*/</p><p><b>  {</b></p><p>  case 0:length=en

70、ter(adr);break;/*輸入記錄*/</p><p>  case 1:list(adr,length);break; /*顯示全部記錄*/</p><p>  case 2:search(adr,length);break; /*查找記錄*/</p><p>  case 3:length=delete(adr,length);break; /*刪除記錄

71、*/</p><p>  case 4:length=add(adr,length); break; /*插入記錄*/</p><p>  case 5:save(adr,length);break; /*保存文件*/</p><p>  case 6:exit(0); /*如返回值為6則程序結束*/</p><p><b>

72、  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /*菜單函數,函數返回值為整數,代表所選的菜單項*/</p><p>  menu_select()</p><p><b>  {<

73、;/b></p><p>  char s[80];</p><p><b>  int c;</b></p><p>  gotoxy(1,25);/*將光標定為在第25行,第1列*/</p><p>  printf("press any key enter menu......\n");/

74、*提示壓任意鍵繼續(xù)*/</p><p>  getch(); /*讀入任意字符*/</p><p>  clrscr(); /*清屏*/</p><p>  gotoxy(1,1);</p><p>  printf("********************MENU*********************\n\n");

75、</p><p>  printf(" 0. Enter record\n");</p><p>  printf(" 1. List the file\n");</p><p>  printf(" 2. Search record on name\n");</p><p>

76、  printf(" 3. Delete a record\n");</p><p>  printf(" 4. add record \n");</p><p>  printf(" 5. Save the file\n");</p><p>  printf(" 6. Quit\n&q

77、uot;);</p><p>  printf("***********************************************\n");</p><p><b>  do{</b></p><p>  printf("\n Enter you choice(0~6):"); /*提示輸

78、入選項*/</p><p>  scanf("%s",s); /*輸入選擇項*/</p><p>  c=atoi(s); /*將輸入的字符串轉化為整型數*/</p><p>  }while(c<0||c>6); /*選擇項不在0~6之間重輸*/</p><p>  return c; /*返回選擇項,主程序

79、根據該數調用相應的函數*/</p><p><b>  }</b></p><p>  /***輸入記錄,形參為結構體數組,函數值返回類型為整型表示記錄長度*/</p><p>  int enter(ADDRESS t[])</p><p><b>  {</b></p><

80、p><b>  int i,n;</b></p><p><b>  char *s;</b></p><p>  clrscr(); /*清屏*/</p><p>  printf("\nplease input num \n"); /*提示信息*/</p><p>  

81、scanf("%d",&n); /*輸入記錄數*/</p><p>  printf("please input record \n"); /*提示輸入記錄*/</p><p>  printf("name unit telephone\n");</p&

82、gt;<p>  printf("------------------------------------------------\n");</p><p>  for(i=0;i<n;i++)</p><p><b>  {</b></p><p>  scanf("%s%s%s",

83、t[i].name,t[i].units,t[i].tele); /*輸入記錄*/</p><p>  printf("----------------------------------------------\n");</p><p><b>  }</b></p><p>  return n; /*返回記錄條數*

84、/</p><p><b>  }</b></p><p>  /*顯示記錄,參數為記錄數組和記錄條數*/</p><p>  void list(ADDRESS t[],int n)</p><p><b>  {</b></p><p><b>  int i;

85、</b></p><p><b>  clrscr();</b></p><p>  printf("\n\n*******************ADDRESS******************\n");</p><p>  printf("name unit

86、 telephone\n");</p><p>  printf("------------------------------------------------\n");</p><p>  for(i=0;i<n;i++)</p><p>  printf("%-20s%-30s%-10

87、s\n",t[i].name,t[i].units,t[i].tele);</p><p>  if((i+1)%10==0) /*判斷輸出是否達到10條記錄*/</p><p><b>  {</b></p><p>  printf("Press any key continue...\n"); /*提示信

88、息*/</p><p>  getch(); /*按任意鍵繼續(xù)*/</p><p><b>  }</b></p><p>  printf("************************end*******************\n");</p><p><b>  }</b

89、></p><p><b>  /*查找記錄*/</b></p><p>  void search(ADDRESS t[],int n)</p><p><b>  {</b></p><p>  char s[20]; /*保存待查找姓名字符串*/</p><p&g

90、t;  int i; /*保存查找到結點的序號*/</p><p>  clrscr(); /*清屏*/</p><p>  printf("please search name\n");</p><p>  scanf("%s",s); /*輸入待查找姓名*/</p><p>  i=find

91、(t,n,s); /*調用find函數,得到一個整數*/</p><p>  if(i>n-1) /*如果整數i值大于n-1,說明沒找到*/</p><p>  printf("not found\n");</p><p><b>  else</b></p><p>  print(t[i]

92、); /*找到,調用顯示函數顯示記錄*/</p><p><b>  }</b></p><p>  /*顯示指定的一條記錄*/</p><p>  void print(ADDRESS temp)</p><p><b>  {</b></p><p><b>

93、  clrscr();</b></p><p>  printf("\n\n********************************************\n");</p><p>  printf("name unit telephone\n");<

94、/p><p>  printf("------------------------------------------------\n");</p><p>  printf("%-20s%-30s%-10s\n",temp.name,temp.units,temp.tele);</p><p>  printf("**

95、********************end***********************\n");</p><p><b>  }</b></p><p>  /*查找函數,參數為記錄數組和記錄條數以及姓名s */</p><p>  int find(ADDRESS t[],int n,char *s)</p>&

96、lt;p><b>  {</b></p><p><b>  int i;</b></p><p>  for(i=0;i<n;i++)/*從第一條記錄開始,直到最后一條*/</p><p><b>  {</b></p><p>  if(strcmp(s,t[i

97、].name)==0) /*記錄中的姓名和待比較的姓名是否相等*/</p><p>  return i; /*相等,則返回該記錄的下標號,程序提前結結束*/</p><p><b>  }</b></p><p>  return i; /*返回i值*/</p><p><b>  }</b&g

98、t;</p><p>  /*刪除函數,參數為記錄數組和記錄條數*/</p><p>  int delete(ADDRESS t[],int n)</p><p><b>  {</b></p><p>  char s[20]; /*要刪除記錄的姓名*/</p><p><b> 

99、 int ch=0;</b></p><p><b>  int i,j;</b></p><p>  printf("please deleted name\n"); /*提示信息*/</p><p>  scanf("%s",s);/*輸入姓名*/</p><p>

100、  i=find(t,n,s); /*調用find函數*/</p><p>  if(i>n-1) /*如果i>n-1超過了數組的長度*/</p><p>  printf("no found not deleted\n"); /*顯示沒找到要刪除的記錄*/</p><p><b>  else</b><

101、/p><p><b>  {</b></p><p>  print(t[i]); /*調用輸出函數顯示該條記錄信息*/</p><p>  printf("Are you sure delete it(1/0)\n"); /*確認是否要刪除*/</p><p>  scanf("%d&quo

102、t;,&ch); /*輸入一個整數0或1*/</p><p>  if(ch==1) /*如果確認刪除整數為1*/</p><p><b>  {</b></p><p>  for(j=i+1;j<n;j++) /*刪除該記錄,實際后續(xù)記錄前移*/</p><p><b>  {</

103、b></p><p>  strcpy(t[j-1].name,t[j].name); /*將后一條記錄的姓名拷貝到前一條*/</p><p>  strcpy(t[j-1].units,t[j].units); /*將后一條記錄的單位拷貝到前一條*/</p><p>  strcpy(t[j-1].tele,t[j].tele); /*將后一條記錄的電話拷貝

104、到前一條*/</p><p><b>  }</b></p><p>  n--; /*記錄數減1*/</p><p><b>  }</b></p><p><b>  }</b></p><p>  return n; /*返回記錄數*/<

105、/p><p><b>  }</b></p><p>  /*插入記錄函數,參數為結構體數組和記錄數*/</p><p>  int add(ADDRESS t[],int n)/*插入函數,參數為結構體數組和記錄數*/</p><p><b>  {</b></p><p> 

106、 ADDRESS temp; /*新插入記錄信息*/</p><p><b>  int i,j;</b></p><p>  char s[20]; /*確定插入在哪個記錄之前*/</p><p>  printf("please input record\n");</p><p>  print

107、f("************************************************\n");</p><p>  printf("name unit telephone\n");</p><p>  printf("-----------------

108、---------------------------------\n");</p><p>  scanf("%s%s%s",temp.name,temp.units,temp.tele); /*輸入插入信息*/</p><p>  printf("------------------------------------------------\n

109、");</p><p>  printf("please input locate name \n");</p><p>  scanf("%s",s); /*輸入插入位置的姓名*/</p><p>  i=find(t,n,s); /*調用find,確定插入位置*/</p><p>  f

110、or(j=n-1;j>=i;j--) /*從最后一個結點開始向后移動一條*/</p><p><b>  {</b></p><p>  strcpy(t[j+1].name,t[j].name); /*當前記錄的姓名拷貝到后一條*/</p><p>  strcpy(t[j+1].units,t[j].units); /*當前記錄的

111、單位拷貝到后一條*/</p><p>  strcpy(t[j+1].tele,t[j].tele); /*當前記錄的電話拷貝到后一條*/</p><p><b>  }</b></p><p>  strcpy(t[i].name,temp.name); /*將新插入記錄的姓名拷貝到第i個位置*/</p><p>  

112、strcpy(t[i].units,temp.units); /*將新插入記錄的單位拷貝到第i個位置*/</p><p>  strcpy(t[i].tele,temp.tele); /*將新插入記錄的電話拷貝到第i個位置*/</p><p>  n++; /*記錄數加1*/</p><p>  return n; /*返回記錄數*/</p>&l

113、t;p><b>  }</b></p><p>  /*保存函數,參數為結構體數組和記錄數*/</p><p>  void save(ADDRESS t[],int n)</p><p><b>  {</b></p><p><b>  int i;</b></

114、p><p>  FILE *fp; /*指向文件的指針*/</p><p>  if((fp=fopen("record.txt","wb"))==NULL) /*打開文件,并判斷打開是否正常*/</p><p><b>  {</b></p><p>  printf("

115、;can not open file\n");/*沒打開*/</p><p>  exit(1); /*退出*/</p><p><b>  }</b></p><p>  printf("\nSaving file\n"); /*輸出提示信息*/</p><p>  fprintf(fp

116、,"%d",n); /*將記錄數寫入文件*/</p><p>  fprintf(fp,"\r\n"); /*將換行符號寫入文件*/</p><p>  for(i=0;i<n;i++)</p><p><b>  {</b></p><p>  fprintf(fp,&

117、quot;%-20s%-30s%-10s",t[i].name,t[i].units,t[i].tele);/*格式寫入記錄*/</p><p>  fprintf(fp,"\r\n"); /*將換行符號寫入文件*/</p><p><b>  }</b></p><p>  fclose(fp);/*關閉文件*/

118、</p><p>  printf("****save success***\n"); /*顯示保存成功*/</p><p><b>  }</b></p><p>  課程設計的總結與體會</p><p>  通過這次課程設計使我充分掌握了本學期所學的有關C語言編程的相關知識,知道了該如何運用所學知

119、識來為自己服務。掌握了把各種編程的技巧糅合在一起的方法。班費管理系統(tǒng)的實現過程,使自己充分的認識到了自己的一些不足之處,并且使自己完善了自己的編程能力。通過自己動手編寫的程序,使自己的所立下目的達到,我感到非常有成就感,也鍛煉了我的編程能力。在剛開始編程的時候,錯誤百出,不知道怎么樣改正,但是通過自己的仔細的分析和老師的細心的指導,在認真分析了原程序后,終于認識并理解了自己錯誤的地方,使自己加以改正,汲取教訓。為以后知識水平的提高,做了

120、最好的準備。</p><p><b>  參考文獻</b></p><p>  [1]李麗娟,牛莉。C語言程序設計 第1版.中國鐵道出版社.2006年7月.</p><p>  [2]李麗娟,馬淑萍。C語言程序設計實驗教程。2006年8月,第一版。</p><p><b>  致 謝</b><

121、;/p><p>  在此我非常要感謝的是我們的指導老師zz老師,同時也要感謝我們的zz老師平時上課的教導,和編程時細心認真的輔導,教給我許多知識。這次課程設計能夠順利的完成,當然有我個人的努力,但同時更離不開指導老師的答疑解惑。</p><p><b>  附件2</b></p><p>  課程設計(論文)任務書</p><p

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論