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

下載本文檔

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

文檔簡(jiǎn)介

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

2、 </p><p>  學(xué) 號(hào) </p><p>  系 、專 業(yè) 信息工程系、信息大類 </p><p>  指 導(dǎo) 教 師 </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任務(wù)2</b></p><p><b>  2.3運(yùn)行環(huán)境2</b></p><p><b>  2.4開發(fā)工具2</b></p><p><b>  3概要設(shè)計(jì)2</b></p><p>  3.1系統(tǒng)流程圖:3&l

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

6、計(jì)7</b></p><p>  4.1通信錄管理7</p><p>  4.2分析和設(shè)計(jì)7</p><p>  4.3具體代碼實(shí)現(xiàn)11</p><p>  5課程設(shè)計(jì)的總結(jié)與體會(huì)16</p><p><b>  參考文獻(xiàn)16</b></p><p&g

7、t;<b>  致謝16</b></p><p><b>  前言</b></p><p>  編寫一個(gè)程序,可以存入通信錄信息,并對(duì)其進(jìn)行管理??梢愿鶕?jù)不同的提示,對(duì)通信錄進(jìn)行各種不同的管理。</p><p><b>  需求分析</b></p><p><b>

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

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

10、;/p><p>  (5)刪除通信錄里某個(gè)人的信息。</p><p>  (6)保存通信錄的信息。</p><p><b>  2.3 運(yùn)行環(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>  概要設(shè)計(jì)</b></p><p>  3.1 系統(tǒng)流程圖(如圖3.1)</p><p>  圖3.1 系統(tǒng)流程圖</p><p>  3.

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

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

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

15、;p>  在程序的開頭部分是就宏定義了M#define M 50,隨著在主函數(shù)中又有ADDRESS adr[M]; 這就定義了50個(gè)用來存放通信錄的各種信息的結(jié)構(gòu)體變量。</p><p><b>  然后定義結(jié)構(gòu)體變量</b></p><p>  typedef struct /*定義數(shù)據(jù)結(jié)構(gòu)*/</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、定義了用來存放通信錄的各種信息的結(jié)構(gòu)體變量。可以將通信錄成員的姓名、單位、電話號(hào)碼存入文件之中。</p><p><b>  函數(shù)原型</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(); /*主菜單函數(shù)*/</p><p>  這就是程序中所有的子函數(shù),在這里起到一個(gè)函數(shù)聲明的作用。</p><p><b>  函數(shù)

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); /*輸入記錄數(shù)*/</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; /*返回記錄條數(shù)*/</p><p><b>  }</b></p><p>  /*顯示記錄,參數(shù)為記錄數(shù)組和記錄條數(shù)*/</p>&

25、lt;p>  這個(gè)函數(shù)表示的是調(diào)用的函數(shù)“輸入”。然后輸入記錄數(shù),再將通信錄成員的信息都輸入系統(tǒng),將其賦入結(jié)構(gòu)體中,當(dāng)輸入成員的信息等于記錄數(shù)時(shí),結(jié)束輸入。</p><p><b>  函數(shù)“顯示”</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) /*判斷輸出是否達(dá)到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>  這個(gè)函數(shù)表示的是調(diào)用的函數(shù)“顯示”。顯示通信錄里成員的信息。</p><p><b>  函數(shù)“查找”</b></p><p>  void search(ADDRESS t[],int n)</p><p>

31、<b>  {</b></p><p>  char s[20]; /*保存待查找姓名字符串*/</p><p>  int i; /*保存查找到結(jié)點(diǎn)的序號(hào)*/</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); /*調(diào)用find函數(shù),得到一個(gè)整數(shù)*/</p><p>  if(i>n-1) /*如果整數(shù)i值大于n-1,說明沒找到*/</p><p>  printf("not fo

33、und\n");</p><p><b>  else</b></p><p>  print(t[i]); /*找到,調(diào)用顯示函數(shù)顯示記錄*/</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>  /*查找函數(shù)

37、,參數(shù)為記錄數(shù)組和記錄條數(shù)以及姓名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; /*相等,則返回該記錄的下標(biāo)號(hào),程序提前結(jié)結(jié)束*/</p><p><b>  }&

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

40、。如果相等則顯示該成員信息,否則顯示沒有找到。</p><p><b>  函數(shù)“刪除”</b></p><p>  int delete(ADDRESS t[],int n)</p><p><b>  {</b></p><p>  char s[20]; /*要?jiǎng)h除記錄的姓名*/</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); /*調(diào)用find函數(shù)*/</p><p>  if(i>n-1) /*如果i>n-1超過了數(shù)組的長(zhǎng)度*/</p><p>  printf("no found not deleted\n"); /*顯示沒找到要?jiǎng)h除的記錄*/</p><p><

43、b>  else</b></p><p><b>  {</b></p><p>  print(t[i]); /*調(diào)用輸出函數(shù)顯示該條記錄信息*/</p><p>  printf("Are you sure delete it(1/0)\n"); /*確認(rèn)是否要?jiǎng)h除*/</p><

44、p>  scanf("%d",&ch); /*輸入一個(gè)整數(shù)0或1*/</p><p>  if(ch==1) /*如果確認(rèn)刪除整數(shù)為1*/</p><p><b>  {</b></p><p>  for(j=i+1;j<n;j++) /*刪除該記錄,實(shí)際后續(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--; /*記錄數(shù)減1*/</p><p><b>  }</b></p><p><b>  }</b></p><p> 

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

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

49、t i,j;</b></p><p>  char s[20]; /*確定插入在哪個(gè)記錄之前*/</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); /*調(diào)用find,確定插入位置*/</p><p>  for(j=n-1;j>=i;j--) /*從最后一個(gè)結(jié)點(diǎn)開始向后移動(dòng)一條*/</p><p&

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

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

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

56、用的函數(shù)“增加”。輸入要增加的成員的信息,然后系統(tǒng)提示把新增的成員放通信錄里的成員位置之前。調(diào)用find函數(shù),找到位置,然后該位置開始所有的成員往后移一個(gè)位置。再將那個(gè)新紀(jì)錄放在該位置上。</p><p><b>  函數(shù)“保存”</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); /*將記錄數(shù)寫入文件*/</p><p>  fprintf(fp,"\r\n"); /*將換行符號(hào)寫入文件*/</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"); /*將換行符號(hào)寫入文件*/</p><

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

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

63、 /*標(biāo)準(zhǔn)庫(kù)函數(shù)*/</p><p>  #include "string.h"/*字符串函數(shù)*/</p><p>  #include "ctype.h" /*字符操作函數(shù)*/</p><p>  #define M 50 /*定義常數(shù)表示記錄數(shù)*/</p><p>  typedef struct

64、 /*定義數(shù)據(jù)結(jié)構(gòu)*/</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>  /******以下是函數(shù)原型*******/</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(); /*主菜單函數(shù)*/</p><p>  /******主函數(shù)開始*******/</p><p><b>  main()</b></p><p>&l

68、t;b>  {</b></p><p><b>  int i;</b></p><p>  ADDRESS adr[M]; /*定義結(jié)構(gòu)體數(shù)組*/</p><p>  int length; /*保存記錄長(zhǎng)度*/</p><p>  clrscr(); /*清屏*/</p><

69、;p>  for(;;)/*無限循環(huán)*/</p><p><b>  {</b></p><p>  switch(menu_select()) /*調(diào)用主菜單函數(shù),返回值整數(shù)作開關(guān)語句的條件*/</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則程序結(jié)束*/</p><p><b>

72、  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /*菜單函數(shù),函數(shù)返回值為整數(shù),代表所選的菜單項(xiàng)*/</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);/*將光標(biāo)定為在第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、入選項(xiàng)*/</p><p>  scanf("%s",s); /*輸入選擇項(xiàng)*/</p><p>  c=atoi(s); /*將輸入的字符串轉(zhuǎn)化為整型數(shù)*/</p><p>  }while(c<0||c>6); /*選擇項(xiàng)不在0~6之間重輸*/</p><p>  return c; /*返回選擇項(xiàng),主程序

79、根據(jù)該數(shù)調(diào)用相應(yīng)的函數(shù)*/</p><p><b>  }</b></p><p>  /***輸入記錄,形參為結(jié)構(gòu)體數(shù)組,函數(shù)值返回類型為整型表示記錄長(zhǎng)度*/</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); /*輸入記錄數(shù)*/</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; /*返回記錄條數(shù)*

84、/</p><p><b>  }</b></p><p>  /*顯示記錄,參數(shù)為記錄數(shù)組和記錄條數(shù)*/</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) /*判斷輸出是否達(dá)到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; /*保存查找到結(jié)點(diǎn)的序號(hào)*/</p><p>  clrscr(); /*清屏*/</p><p>  printf("please search name\n");</p><p>  scanf("%s",s); /*輸入待查找姓名*/</p><p>  i=find

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

92、); /*找到,調(diào)用顯示函數(shù)顯示記錄*/</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>  /*查找函數(shù),參數(shù)為記錄數(shù)組和記錄條數(shù)以及姓名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; /*相等,則返回該記錄的下標(biāo)號(hào),程序提前結(jié)結(jié)束*/</p><p><b>  }</b></p><p>  return i; /*返回i值*/</p><p><b>  }</b&g

98、t;</p><p>  /*刪除函數(shù),參數(shù)為記錄數(shù)組和記錄條數(shù)*/</p><p>  int delete(ADDRESS t[],int n)</p><p><b>  {</b></p><p>  char s[20]; /*要?jiǎng)h除記錄的姓名*/</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); /*調(diào)用find函數(shù)*/</p><p>  if(i>n-1) /*如果i>n-1超過了數(shù)組的長(zhǎng)度*/</p><p>  printf("no found not deleted\n"); /*顯示沒找到要?jiǎng)h除的記錄*/</p><p><b>  else</b><

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

102、t;,&ch); /*輸入一個(gè)整數(shù)0或1*/</p><p>  if(ch==1) /*如果確認(rèn)刪除整數(shù)為1*/</p><p><b>  {</b></p><p>  for(j=i+1;j<n;j++) /*刪除該記錄,實(shí)際后續(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--; /*記錄數(shù)減1*/</p><p><b>  }</b></p><p><b>  }</b></p><p>  return n; /*返回記錄數(shù)*/<

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

106、 ADDRESS temp; /*新插入記錄信息*/</p><p><b>  int i,j;</b></p><p>  char s[20]; /*確定插入在哪個(gè)記錄之前*/</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); /*調(diào)用find,確定插入位置*/</p><p>  f

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

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

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

113、t;p><b>  }</b></p><p>  /*保存函數(shù),參數(shù)為結(jié)構(gòu)體數(shù)組和記錄數(shù)*/</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); /*將記錄數(shù)寫入文件*/</p><p>  fprintf(fp,"\r\n"); /*將換行符號(hào)寫入文件*/</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"); /*將換行符號(hào)寫入文件*/</p><p><b>  }</b></p><p>  fclose(fp);/*關(guān)閉文件*/

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

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

120、最好的準(zhǔn)備。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1]李麗娟,牛莉。C語言程序設(shè)計(jì) 第1版.中國(guó)鐵道出版社.2006年7月.</p><p>  [2]李麗娟,馬淑萍。C語言程序設(shè)計(jì)實(shí)驗(yàn)教程。2006年8月,第一版。</p><p><b>  致 謝</b><

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論