2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩26頁(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>  課 程 設(shè) 計(jì) 任 務(wù) 書</p><p>  課程名稱 C課程設(shè)計(jì) </p><p>  課 題 通信錄管理系統(tǒng) </p><p><b>  任務(wù)書</b></p><p><b>  通信錄管理系統(tǒng)</b></p><p>  程序功

2、能:完成對(duì)若干(上限為1萬(wàn))人的通信信息進(jìn)行各種管理。</p><p><b>  設(shè)計(jì)內(nèi)容:</b></p><p>  1.確定能記錄通信信息的數(shù)據(jù)結(jié)構(gòu),至少要有編號(hào)、分組、姓名、固話、手機(jī)號(hào)、QQ號(hào)碼、E-mail、家庭住址等信息,它是本程序的核心數(shù)據(jù)結(jié)構(gòu),定義為如下的結(jié)構(gòu)體類型:</p><p>  struct comm_info

3、 { /* 定義通信信息結(jié)構(gòu)體類型 */</p><p>  long num; /* 編號(hào) */</p><p>  char group[16] /* 分組 */</p><p>  char name[16]; /* 姓名 */</p><p&

4、gt;  char hphone[16]; /* 固話home_phone */</p><p>  char mphone[16]; /* 手機(jī)號(hào)mobile_phone */</p><p>  char qq[16]; /* QQ號(hào)碼 */</p><p>  char email[2

5、0]; /* e-mail地址 */</p><p>  int len; /* 家庭住址或通信地址長(zhǎng)度 */</p><p>  char *addr; /* 家庭住址或通信地址 */</p><p>  struct comm_info *prev; /

6、* 前向鏈表指針 */</p><p>  struct comm_info *next; /* 后向鏈表指針 */</p><p><b>  };</b></p><p>  2.程序應(yīng)具有以下基本功能:</p><p>  添加:增加一個(gè)或幾個(gè)人的記錄,并可選擇繼續(xù)輸入或退出。</p>&l

7、t;p>  查詢:可按姓名查找某人記錄,也可查找某個(gè)組的所有記錄。若找到,則顯示所有人的記錄,否則提示未找到,無(wú)論查找成功否,應(yīng)還可選擇繼續(xù)查找或退出。</p><p>  刪除:刪除已輸入的記錄。輸入姓名查找要?jiǎng)h除的記錄,若找到,提示是否確定刪除,若選擇是,則刪除該人信息,若選擇否,則取消;若沒找到,提示無(wú)此人信息。</p><p>  修改:修改某人的記錄。輸入姓名并查找,若找到

8、,顯示該人的所有信息,并可進(jìn)行修改;否則提示無(wú)此人信息</p><p>  排序:可分別按分組、編號(hào)或姓名進(jìn)行排序。</p><p>  3.如有時(shí)間,可為程序增加以下功能:</p><p>  登錄模塊。該模塊在進(jìn)入主界面之前先執(zhí)行,用于對(duì)進(jìn)入系統(tǒng)的用戶進(jìn)行身份驗(yàn)證,若用戶輸入正確的用戶名及用戶密碼,則進(jìn)入主界面,否則輸入超過3次錯(cuò)誤則退出程序。處理方法:用戶名及

9、用戶密碼可保存在一文件中,校驗(yàn)時(shí)從文件中讀入數(shù)據(jù)進(jìn)行校驗(yàn)。在系統(tǒng)中應(yīng)增加一個(gè)用戶管理模塊,在其中可新增用戶,修改用戶信息等。</p><p>  系統(tǒng)幫助。顯示開發(fā)者姓名、班級(jí)、開發(fā)完成日期、版本號(hào)和指導(dǎo)老師等信息。</p><p><b>  目 錄</b></p><p>  需求分析………………………………………..6</p&

10、gt;<p>  二、總體設(shè)計(jì)…………………………………………7</p><p>  三、概要設(shè)計(jì)………………………………………….8</p><p>  四、詳細(xì)設(shè)計(jì)…………………………………………10</p><p>  五、調(diào)試分析…………………………………………14</p><p>  六、總結(jié)體會(huì)……………………………

11、……………15</p><p>  七、源程序清單……………………………………….15</p><p>  八、參考書目…………………………………………..26</p><p><b>  需求分析</b></p><p><b>  程序的功能</b></p><p>  

12、對(duì)于M個(gè)人的學(xué)號(hào)num、姓名name、組別group、單位unit、固話telephone、qq、email進(jìn)行信息輸入,人數(shù)增加,刪除,按姓名、學(xué)號(hào)進(jìn)行查找,以及對(duì)信息建文件夾存檔、讀取。2、輸入輸出的要求</p><p>  ⑴、本系統(tǒng)顯示這樣的菜單:</p><p><b>  請(qǐng)選擇系統(tǒng)功能項(xiàng):</b></p><p><b>

13、;  信息錄入;</b></p><p><b>  信息顯示;</b></p><p><b>  按學(xué)號(hào)查找記錄;</b></p><p><b>  按姓名查找記錄;</b></p><p><b>  刪除記錄;</b></p&g

14、t;<p><b>  增加記錄;</b></p><p><b>  保存記錄;</b></p><p><b>  讀取記錄;</b></p><p><b>  按序號(hào)顯示記錄;</b></p><p><b>  排序;&l

15、t;/b></p><p>  文件另存為一個(gè)自建文件;</p><p><b>  退出系統(tǒng)。</b></p><p> ?、?、執(zhí)行一個(gè)具體的功能之后,按任意鍵,程序?qū)⒅匦嘛@示菜單。</p><p><b>  總體設(shè)計(jì)</b></p><p>  主要函數(shù)調(diào)用關(guān)系如

16、下</p><p><b>  子函數(shù)調(diào)用關(guān)系如下</b></p><p><b>  概要設(shè)計(jì)</b></p><p>  1、程序的抽象數(shù)據(jù)類型的定義</p><p><b>  信息數(shù)據(jù)結(jié)構(gòu)</b></p><p><b>  { 學(xué)號(hào);

17、</b></p><p><b>  姓名;</b></p><p><b>  組別;</b></p><p><b>  班級(jí);</b></p><p><b>  固話;</b></p><p><b>

18、  QQ;</b></p><p><b>  Email;</b></p><p><b>  }</b></p><p>  程序的模塊組成以及各個(gè)模塊的功能</p><p><b>  程序的模塊組成:</b></p><p>  a&

19、gt;主函數(shù) main();</p><p>  b>菜單函數(shù)int menu_select();</p><p>  c>信息輸入函數(shù)int enter(ADDRESS t[]);</p><p>  d>記錄顯示函數(shù)void list(ADDRESS t[],int n);</p><p>  e>學(xué)號(hào)查找函數(shù)v

20、oid search(ADDRESS t[],int n);</p><p>  f>輸出函數(shù)void print(ADDRESS temp);</p><p>  g>姓名查找子函數(shù)int find(ADDRESS t[],int n,char *s);</p><p>  h>學(xué)號(hào)查找子函數(shù)int finder(ADDRESS t[],int

21、n,char *s);</p><p>  i>記錄刪除函數(shù)int delete(ADDRESS t[],int n);</p><p>  j>記錄插入函數(shù)int add(ADDRESS t[],int n);</p><p>  k>保存函數(shù)void save(ADDRESS t[],int n);</p><p>  

22、l>讀入函數(shù)int load(ADDRESS t[]);</p><p>  m>按序號(hào)顯示記錄函數(shù)void display(ADDRESS t[]);</p><p>  n>排序函數(shù)void sort(ADDRESS t[],int n);</p><p>  o>姓名查找函數(shù)void qseek(ADDRESS t[],int n);&

23、lt;/p><p>  p>文件復(fù)制函數(shù)void copy();</p><p>  main函數(shù)通過switch語(yǔ)句調(diào)用menu_select()函數(shù)進(jìn)入各個(gè)菜單。</p><p>  各函數(shù)的主要功能描述如下:</p><p>  int enter(ADDRESS t[]); 輸入學(xué)生的各項(xiàng)信息。</p><p&g

24、t;  void list(ADDRESS t[],int n); 顯示學(xué)生的各項(xiàng)信息。</p><p>  void search(ADDRESS t[],int n); 按學(xué)號(hào)查找學(xué)生的信息。</p><p>  int delete(ADDRESS t[],int n); 按學(xué)生的姓名刪除該學(xué)生的記錄。</p><p>  int add(ADDRESS t

25、[],int n); 插入新的紀(jì)錄。</p><p>  void save(ADDRESS t[],int n); 把輸入的記錄保存在當(dāng)先文件夾內(nèi)。</p><p>  int load(ADDRESS t[]); 讀入先前保存的記錄。</p><p>  void display(ADDRESS t[]); 按序號(hào)查找記錄,序號(hào)為列表從上到下的循序。</p

26、><p>  void sort(ADDRESS t[],int n); 按姓名排序。</p><p>  void qseek(ADDRESS t[],int n); 按學(xué)生姓名查找記錄。</p><p>  void copy(); 把記錄報(bào)尋到另一指定的文件夾。</p><p>  int menu_select(); 顯示菜單界面,通向各

27、個(gè)菜單。</p><p><b>  詳細(xì)設(shè)計(jì)</b></p><p>  點(diǎn)擊編譯連接并運(yùn)行按鈕,出現(xiàn)字幕press any key enter menu……,按任意鍵出現(xiàn)如下界面</p><p>  0. Enter record</p><p>  選擇0. Enter record選項(xiàng)按回車鍵輸入3組記錄記錄&l

28、t;/p><p>  1.list the file</p><p>  回車進(jìn)入主菜單后,選擇1.list the file出現(xiàn)如下界面</p><p>  2. Search record on num</p><p>  按任意鍵進(jìn)入菜單后,選擇2. Search record on num出現(xiàn)如下界面</p><p&g

29、t;<b>  回車出現(xiàn)如下界面</b></p><p>  3. Search record on name</p><p>  按任意鍵進(jìn)入主菜單后,選擇3. Search record on name 輸入名字zhang后出現(xiàn)如下界面</p><p>  4. Delete a record</p><p>  按

30、任意鍵進(jìn)入主菜單后,選擇4. Delete a record選項(xiàng)后輸入li后出現(xiàn)如下界面</p><p>  輸入1、回車后,在在主菜單中選擇1. List the file選項(xiàng)后出現(xiàn)如下界面</p><p>  5. add record</p><p>  按任意鍵進(jìn)入主菜單后,選擇5. add record選項(xiàng),輸入如下信息后輸入zhang,再在主菜單中選擇1

31、. List the file選項(xiàng),出現(xiàn)如下界面</p><p>  6. Save the file</p><p>  按任意鍵進(jìn)入主菜單后,選擇6. Save the file,出現(xiàn)如下界面</p><p>  可以在當(dāng)前文件夾找到相應(yīng)文件</p><p><b>  相應(yīng)文件</b></p><

32、;p>  7. Load the file</p><p>  關(guān)閉運(yùn)行窗口,重新打開后,在主菜單中選擇7. Load the file選項(xiàng),按任意鍵進(jìn)入主菜單后選擇1. List the file出現(xiàn)如下界面</p><p>  8. display record on order</p><p>  按任意鍵進(jìn)入主菜單后,選擇8. display reco

33、rd on order選項(xiàng),輸入序號(hào)2,出現(xiàn)如下界面</p><p>  9. sort to make new file</p><p>  按任意鍵進(jìn)入主菜單后,選擇9. sort to make new file選項(xiàng),任意鍵后回到主菜單</p><p>  10. copy the file to new file</p><p>  

34、按任意鍵進(jìn)入主菜單后,選擇10. copy the file to new file選項(xiàng),輸入d:\file.txt:回車后出現(xiàn)如下界面</p><p>  在D盤可以找到相應(yīng)的文件</p><p><b>  相應(yīng)文件</b></p><p><b>  11. Quit</b></p><p>

35、  按任意鍵進(jìn)入主菜單后,選擇11. Quit選項(xiàng),退出程序</p><p><b>  調(diào)試分析</b></p><p>  在調(diào)試過程中,seach函數(shù)調(diào)用finder函數(shù),而delete函數(shù)和add函數(shù)都要調(diào)用find函數(shù),在整個(gè)程序中,find為最核心的函數(shù),所以要增加程序功能只,改動(dòng)find函數(shù)是非常麻煩的。所以在增加search函數(shù)是,沒有改動(dòng)find 而

36、是仿照find增加了一個(gè)finder函數(shù)。在其他功能的改動(dòng)和添加上,也是同樣的盡量不改動(dòng)find函數(shù)。整個(gè)調(diào)試過程是需要細(xì)心檢查和不斷修改的。</p><p><b>  總結(jié)體會(huì)</b></p><p>  此次課程設(shè)計(jì)使得我學(xué)會(huì)更細(xì)心的去做一件事。懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,才

37、能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在編寫過程中,我逐步的了解了程序模塊化設(shè)計(jì)的思想含義。在整個(gè)程序設(shè)計(jì)的過程中語(yǔ)法的錯(cuò)誤還是比較容易檢查的,但是對(duì)于那些邏輯思維的問題方面的缺陷不易查出,因此常常出現(xiàn)系統(tǒng)提示沒有錯(cuò)誤但是仍然不能夠正常運(yùn)行的境況,盡管有很多不足之處,但我在整個(gè)系統(tǒng)程序設(shè)計(jì)的過程中,我可以感受到自己對(duì)C語(yǔ)言有了一定的掌握,對(duì)整體的把握度也提高了很多。</p><p>  源

38、程序清單(帶注釋)</p><p>  #include "stdio.h" /*I/O函數(shù)*/</p><p>  #include "conio.h" /*屏幕操作函數(shù)*/</p><p>  #include "string.h"/*字符串函數(shù)*/</p><p>  

39、#include "ctype.h" /*字符操作函數(shù)*/</p><p>  #define M 50 /*定義常數(shù)表示記錄數(shù)*/</p><p>  typedef struct /*定義數(shù)據(jù)結(jié)構(gòu)*/</p><p><b>  {</b></p><p>  char name[20]; /*

40、姓名*/</p><p>  char units[30]; /*單位*/</p><p>  char tele[10]; /*電話*/</p><p>  char qq[10]; /*QQ*/</p><p>  char email[20] ;</p><p>  char num[10];

41、 /* 編號(hào) */</p><p>  char group[16]; /* 分組 */</p><p><b>  }ADDRESS;</b></p><p>  /******以下是函數(shù)原型*******/</p><p>  int enter(ADDRESS t[]); /*輸入記錄*/<

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

43、DDRESS t[],int n); /*插入記錄*/</p><p>  void save(ADDRESS t[],int n); /*記錄保存為文件*/</p><p>  int load(ADDRESS t[]); /*從文件中讀記錄*/</p><p>  void display(ADDRESS t[]); /*按序號(hào)查找顯示記錄*/</p&g

44、t;<p>  void sort(ADDRESS t[],int n); /*按姓名排序*/</p><p>  void qseek(ADDRESS t[],int n); /*快速查找記錄*/</p><p>  void copy(); /*文件復(fù)制*/</p><p>  void print(ADDRESS temp); /*顯示單條記錄

45、*/</p><p>  int find(ADDRESS t[],int n,char *s) ; /*查找函數(shù)*/</p><p>  int menu_select(); /*主菜單函數(shù)*/</p><p>  /******主函數(shù)開始*******/</p><p><b>  main()</b></p

46、><p><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(); /*清屏

47、*/</p><p>  for(;;)/*無(wú)限循環(huán)*/</p><p><b>  {</b></p><p>  switch(menu_select()) /*調(diào)用主菜單函數(shù),返回值整數(shù)作開關(guān)語(yǔ)句的條件*/</p><p><b>  {</b></p><p> 

48、 case 0:length=enter(adr);break;/*輸入記錄*/</p><p>  case 1:list(adr,length);break; /*顯示全部記錄*/</p><p>  case 2:search(adr,length);break; /*查找記錄*/</p><p>  case 3:qseek(adr,length);brea

49、k; /*快速查找記錄*/</p><p>  case 4:length=delete(adr,length);break; /*刪除記錄*/</p><p>  case 5:length=add(adr,length); break; /*插入記錄*/</p><p>  case 6:save(adr,length);break; /*保存文件*/&l

50、t;/p><p>  case 7:length=load(adr); break; /*讀文件*/</p><p>  case 8:display(adr);break; /*按序號(hào)顯示記錄*/</p><p>  case 9:sort(adr,length);break; /*按姓名排序*/</p><p>  case 10:copy

51、();break; /*復(fù)制文件*/</p><p>  case 11:exit(0); /*如返回值為11則程序結(jié)束*/</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p

52、>  /*菜單函數(shù),函數(shù)返回值為整數(shù),代表所選的菜單項(xiàng)*/</p><p>  menu_select()</p><p><b>  {</b></p><p>  char *f[]=</p><p><b>  {</b></p><p>  "****

53、**********MENU*************",</p><p>  " 0. Enter record",</p><p>  " 1. List the file",</p><p>  " 2. Search record on num \n",</p><p&

54、gt;  " 3. Search record on name ",</p><p>  " 4. Delete a record",</p><p>  " 5. add record",</p><p>  " 6. Save the file",</p><p&

55、gt;  " 7. Load the file",</p><p>  " 8. display record on order",</p><p>  " 9. sort to make new file",</p><p>  " 10. copy the file to new file&q

56、uot;,</p><p>  " 11. Quit",</p><p><b>  };</b></p><p>  char s[80];</p><p><b>  int i;</b></p><p>  int key=0; /*記錄所壓鍵值*

57、/</p><p><b>  int c=0;</b></p><p>  gotoxy(1,25); /*移動(dòng)光標(biāo)*/</p><p>  printf("press any key enter menu......\n");/*壓任意鍵進(jìn)入主菜單*/</p><p><b>  get

58、ch();</b></p><p>  clrscr(); /*清屏*/</p><p>  textcolor(YELLOW); /*設(shè)置文本顏色為黃色*/</p><p>  textbackground(GREEN); /*設(shè)置背景顏色為蘭色*/</p><p>  gotoxy(10,2);</p>&l

59、t;p>  putch(0xda); /*輸出左上角邊框┏*/</p><p>  for(i=1;i<44;i++)</p><p>  putch(0xc4); /*輸出上邊框水平線*/</p><p>  putch(0xbf); /*輸出右上角邊框 ┓*/</p><p>  for(i=3;i<22;i++)/

60、*輸出左右兩邊的垂直線*/</p><p><b>  {</b></p><p>  gotoxy(10,i);putch(0xb3);</p><p>  gotoxy(54,i);putch(0xb3);</p><p><b>  }</b></p><p>  go

61、toxy(10,22);putch(0xc0); /*輸出左上角邊框┗*/</p><p>  for(i=1;i<44;i++)</p><p>  putch(0xc4); /*輸出下邊框水平線*/</p><p>  putch(0xd9); /*輸出右下角邊框┛*/</p><p>  window(11,3,53,21);

62、 /* 制作顯示菜單的窗口,大小根據(jù)菜單條數(shù)設(shè)計(jì)*/</p><p>  clrscr(); /*清屏*/</p><p>  for(i=0;i<13;i++)</p><p><b>  {</b></p><p>  gotoxy(10,i+1);</p><p>  cprint

63、f("%s",f[i]); /*輸出菜單項(xiàng)數(shù)組*/</p><p><b>  }</b></p><p><b>  i=1;</b></p><p>  gotoxy(10,2); /*設(shè)置默認(rèn)選項(xiàng)在第一項(xiàng)*/</p><p>  textbackground(LIGHTB

64、LUE);/*設(shè)置背景顏色為淺綠*/</p><p>  cprintf("%s",f[1]); /*輸出菜單項(xiàng),表示選中*/</p><p>  gotoxy(10,2); /*移動(dòng)光標(biāo)到菜單的第一項(xiàng)*/</p><p>  while(key!=13) /*所壓鍵不是回車鍵時(shí)*/</p><p><b&g

65、t;  {</b></p><p>  while(bioskey(1)==0); /*查詢是否壓下了一個(gè)鍵*/</p><p>  key=bioskey(0); /*返回下一個(gè)在鍵盤壓下的鍵*/</p><p>  key=key&0xff?key&0xff:key>>8; /*對(duì)所壓的鍵進(jìn)行判斷*/</p&g

66、t;<p>  gotoxy(10,i+1);</p><p>  textbackground(LIGHTGREEN);/*設(shè)置背景顏色為藍(lán)色*/</p><p>  cprintf("%s",f[i]); /*輸出菜單項(xiàng)*/</p><p>  if(key==72) i=i==1?12:i-1; /*如壓向上光標(biāo)鍵↑,i減1

67、,如已到第一行再上移,則到最后一行*/</p><p>  if(key==80)i=i==12?1:i+1; /*如壓向下光標(biāo)鍵↓,i加1,如已到最后一行再下移,則到第一行*/</p><p>  gotoxy(10,i+1); /*光標(biāo)移動(dòng)i的下一項(xiàng)*/</p><p>  textbackground(LIGHTBLUE); /*將背景顏色設(shè)為淺綠*/<

68、/p><p>  cprintf("%s",f[i]); /*輸出菜單項(xiàng)*/</p><p>  c=i-1; /*給代表菜單選項(xiàng)的整數(shù)賦值*/</p><p><b>  }</b></p><p>  textbackground(BLACK); /*設(shè)置背景顏色為黑色*/</p>

69、<p>  window(1,1,80,25); /*恢復(fù)原窗口大小*/</p><p>  clrscr(); /*清屏*/</p><p>  return c; /*返回代表菜單選項(xiàng)的整數(shù)值*/</p><p><b>  }</b></p><p>  /***輸入記錄,形參為結(jié)構(gòu)體數(shù)組,函數(shù)值

70、返回類型為整型表示記錄長(zhǎng)度*/</p><p>  int enter(ADDRESS t[])</p><p><b>  {</b></p><p><b>  int i,n;</b></p><p><b>  char *s;</b></p><

71、p>  clrscr(); /*清屏*/</p><p>  printf("\nplease input the num of student\n"); /*提示信息*/</p><p>  scanf("%d",&n); /*輸入記錄數(shù)*/</p><p>  printf("please inpu

72、t record \n"); /*提示輸入記錄*/</p><p>  printf("num name group unit telephone qq email \n");</p><p>  printf("--------------------------------------

73、-------------------------------------\n");</p><p>  for(i=0;i<n;i++)</p><p><b>  {</b></p><p>  scanf("%s%s%s%s%s%s%s",t[i].num,t[i].name,t[i].group,t[

74、i].units,t[i].tele,t[i].qq,t[i].email); /*輸入記錄*/</p><p>  printf("-------------------------------------------------------------------------\n");</p><p><b>  }</b></p>

75、;<p>  return n; /*返回記錄條數(shù)*/</p><p><b>  }</b></p><p>  /*顯示記錄,參數(shù)為記錄數(shù)組和記錄條數(shù)*/</p><p>  void list(ADDRESS t[],int n)</p><p><b>  {</b><

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

77、</p><p>  printf("num name group unit telephone qq email \n");</p><p>  printf("--------------------------------------------------------------------

78、-----------\n");</p><p>  for(i=0;i<n;i++)</p><p>  printf("%-8s%-10s%-10s%-10s%-12s%-12s%-20s\n",t[i].num,t[i].name,t[i].group,t[i].units,t[i].tele,t[i].qq,t[i].email);</p&

79、gt;<p>  if((i+1)%10==0) /*判斷輸出是否達(dá)到10條記錄*/</p><p><b>  {</b></p><p>  printf("Press any key continue...\n"); /*提示信息*/</p><p>  getch(); /*壓任意鍵繼續(xù)*/<

80、;/p><p><b>  }</b></p><p>  printf("***********************************end*****************************************\n");</p><p><b>  }</b></p>

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

82、存查找到結(jié)點(diǎn)的序號(hào)*/</p><p>  clrscr(); /*清屏*/</p><p>  printf("please press the num for seek\n");</p><p>  scanf("%s",s); /*輸入待查找姓名*/</p><p>  i=finder(t,

83、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]);

84、 /*找到,調(diào)用顯示函數(shù)顯示記錄*/</p><p><b>  }</b></p><p>  /*顯示指定的一條記錄*/</p><p>  void print(ADDRESS temp)</p><p><b>  {</b></p><p><b>  c

85、lrscr();</b></p><p>  printf("\n\n***************************************************************************\n");</p><p>  printf("num name group unit tel

86、ephone qq email \n");</p><p>  printf("-------------------------------------------------------------------------------\n");</p><p>  printf("%-8s%-10s%-10s%-10s%

87、-12s%-12s%-20s\n",temp.num,temp.name,temp.group,temp.units,temp.tele,temp.qq,temp.email);</p><p>  printf("*******************************************************************************\n");&

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

89、gt;  int i;</b></p><p>  for(i=0;i<n;i++)/*從第一條記錄開始,直到最后一條*/</p><p><b>  {</b></p><p>  if(strcmp(s,t[i].name)==0) /*記錄中的姓名和待比較的姓名是否相等*/</p><p>  

90、return i; /*相等,則返回該記錄的下標(biāo)號(hào),程序提前結(jié)結(jié)束*/</p><p><b>  }</b></p><p>  return i; /*返回i值*/</p><p><b>  }</b></p><p>  /*刪除函數(shù),參數(shù)為記錄數(shù)組和記錄條數(shù)*/</p>

91、<p>  int finder(ADDRESS t[],int n,char *s)</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  for(i=0;i<n;i++)/*從第一條記錄開始,直到最后一條*/</p><p&g

92、t;<b>  {</b></p><p>  if(strcmp(s,t[i].num)==0) /*記錄中的姓名和待比較的姓名是否相等*/</p><p>  return i; /*相等,則返回該記錄的下標(biāo)號(hào),程序提前結(jié)結(jié)束*/</p><p><b>  }</b></p><p> 

93、 return i; /*返回i值*/</p><p><b>  }</b></p><p>  /*刪除函數(shù),參數(shù)為記錄數(shù)組和記錄條數(shù)*/</p><p>  int delete(ADDRESS t[],int n)</p><p><b>  {</b></p><p&

94、gt;  char s[20]; /*要?jiǎng)h除記錄的姓名*/</p><p><b>  int ch=0;</b></p><p><b>  int i,j;</b></p><p>  printf("please deleted name\n"); /*提示信息*/</p><

95、;p>  scanf("%s",s);/*輸入姓名*/</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"); /*顯示

96、沒找到要?jiǎng)h除的記錄*/</p><p><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&

97、quot;); /*確認(rèn)是否要?jiǎng)h除*/</p><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

98、++) /*刪除該記錄,實(shí)際后續(xù)記錄前移*/</p><p><b>  {</b></p><p>  strcpy(t[j-1].num,t[j].num);</p><p>  strcpy(t[j-1].name,t[j].name); /*將后一條記錄的姓名拷貝到前一條*/</p><p>  strcpy(

99、t[j-1].group,t[j].group);</p><p>  strcpy(t[j-1].units,t[j].units); /*將后一條記錄的單位拷貝到前一條*/</p><p>  strcpy(t[j-1].tele,t[j].tele); /*將后一條記錄的電話拷貝到前一條*/</p><p>  strcpy(t[j-1].qq,t[i].qq

100、);</p><p>  strcpy(t[j-1].email,t[i].email);</p><p><b>  }</b></p><p>  n--; /*記錄數(shù)減1*/</p><p><b>  }</b></p><p><b>  }</b

101、></p><p>  return n; /*返回記錄數(shù)*/</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>&l

102、t;p><b>  {</b></p><p>  ADDRESS temp; /*新插入記錄信息*/</p><p><b>  int i,j;</b></p><p>  char s[20]; /*確定插入在哪個(gè)記錄之前*/</p><p>  printf("please

103、 input record\n");</p><p>  printf("************************************************\n");</p><p>  printf("num name group unit telephone qq email

104、 \n");</p><p>  printf("--------------------------------------------------------------------------------\n");</p><p>  scanf("%s%s%s%s%s%s%s",temp.num,temp.name,temp.g

105、roup,temp.units,temp.tele,temp.qq,temp.email); /*輸入插入信息*/</p><p>  printf("--------------------------------------------------------------------------------\n");</p><p>  printf("p

106、lease input locate 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)一條*/&l

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

108、,t[j].units); /*當(dāng)前記錄的單位拷貝到后一條*/</p><p>  strcpy(t[j+1].tele,t[j].tele); /*當(dāng)前記錄的電話拷貝到后一條*/</p><p>  strcpy(t[j+1].qq,t[i].qq);</p><p>  strcpy(t[j+1].email,t[i].email);</p>&l

109、t;p><b>  }</b></p><p>  strcpy(t[i].num,temp.num);</p><p>  strcpy(t[i].name,temp.name); /*將新插入記錄的姓名拷貝到第i個(gè)位置*/</p><p>  strcpy(t[i].group,temp.group);</p><

110、p>  strcpy(t[i].units,temp.units); /*將新插入記錄的單位拷貝到第i個(gè)位置*/</p><p>  strcpy(t[i].tele,temp.tele); /*將新插入記錄的電話拷貝到第i個(gè)位置*/</p><p>  strcpy(t[i].qq,temp.qq);</p><p>  strcpy(t[i].email,

111、temp.email);</p><p>  n++; /*記錄數(shù)加1*/</p><p>  return n; /*返回記錄數(shù)*/</p><p><b>  }</b></p><p>  /*保存函數(shù),參數(shù)為結(jié)構(gòu)體數(shù)組和記錄數(shù)*/</p><p>  void save(ADDRESS

112、 t[],int n)</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  FILE *fp; /*指向文件的指針*/</p><p>  if((fp=fopen("record.txt","wb"

113、))==NULL) /*打開文件,并判斷打開是否正常*/</p><p><b>  {</b></p><p>  printf("can not open file\n");/*沒打開*/</p><p>  exit(1); /*退出*/</p><p><b>  }</b

114、></p><p>  printf("\nSaving file\n"); /*輸出提示信息*/</p><p>  fprintf(fp,"%d",n); /*將記錄數(shù)寫入文件*/</p><p>  fprintf(fp,"\r\n"); /*將換行符號(hào)寫入文件*/</p>&

115、lt;p>  for(i=0;i<n;i++)</p><p><b>  {</b></p><p>  fprintf(fp,"%-8s%-10s%-10s%-10s%-12s%-12s%-20s",t[i].num,t[i].name,t[i].group,t[i].units,t[i].tele,t[i].qq,t[i].ema

116、il);/*格式寫入記錄*/</p><p>  fprintf(fp,"\r\n"); /*將換行符號(hào)寫入文件*/</p><p><b>  }</b></p><p>  fclose(fp);/*關(guān)閉文件*/</p><p>  printf("****save success***

117、\n"); /*顯示保存成功*/</p><p><b>  }</b></p><p>  /*讀入函數(shù),參數(shù)為結(jié)構(gòu)體數(shù)組*/</p><p>  int load(ADDRESS t[])</p><p><b>  {</b></p><p><b>

118、;  int i,n;</b></p><p>  FILE *fp; /*指向文件的指針*/</p><p>  if((fp=fopen("record.txt","rb"))==NULL)/*打開文件*/</p><p><b>  {</b></p><p> 

119、 printf("can not open file\n"); /*不能打開*/</p><p>  exit(1); /*退出*/</p><p><b>  }</b></p><p>  fscanf(fp,"%d",&n); /*讀入記錄數(shù)*/</p><p>

120、  for(i=0;i<n;i++)</p><p>  fscanf(fp,"%8s%10s%10s%10s%12s%12s%20s",t[i].num,t[i].name,t[i].group,t[i].units,t[i].tele,t[i].qq,t[i].email); /*按格式讀入記錄*/</p><p>  fclose(fp); /*關(guān)閉文件*

121、/</p><p>  printf("You have success read data from file!!!\n"); /*顯示保存成功*/</p><p>  return n; /*返回記錄數(shù)*/</p><p><b>  }</b></p><p>  void display(AD

122、DRESS t[])</p><p><b>  {</b></p><p><b>  int id,n;</b></p><p>  FILE *fp; /*指向文件的指針*/</p><p>  if((fp=fopen("record.txt","rb"

123、;))==NULL) /*打開文件*/</p><p><b>  {</b></p><p>  printf("can not open file\n"); /*不能打開文件*/</p><p>  exit(1); /*退出*/</p><p><b>  }</b>&l

124、t;/p><p>  printf("Enter order number...\n"); /*顯示信息*/</p><p>  scanf("%d",&id); /*輸入序號(hào)*/</p><p>  fscanf(fp,"%d",&n); /*從文件讀入記錄數(shù)*/</p>&l

125、t;p>  if(id>=0&&id<n+2) /*判斷序號(hào)是否在記錄范圍內(nèi)*/</p><p><b>  {</b></p><p>  fseek(fp,(id-1)*sizeof(ADDRESS),1); /*移動(dòng)文件指針到該記錄位置*/</p><p>  print(t[id-1]); /*調(diào)用輸出

126、函數(shù)顯示該記錄*/</p><p>  printf("\r\n");</p><p><b>  }</b></p><p><b>  else</b></p><p>  printf("no %d number record!!!\n ",id); /

127、*如果序號(hào)不合理顯示信息*/</p><p>  fclose(fp); /*關(guān)閉文件*/</p><p><b>  }</b></p><p>  /*排序函數(shù),參數(shù)為結(jié)構(gòu)體數(shù)組和記錄數(shù)*/</p><p>  void sort(ADDRESS t[],int n)</p><p><

128、;b>  {</b></p><p>  int i,j,flag;</p><p>  ADDRESS temp; /*臨時(shí)變量做交換數(shù)據(jù)用*/</p><p>  for(i=0;i<n;i++)</p><p><b>  {</b></p><p>  flag=0

129、; /*設(shè)標(biāo)志判斷是否發(fā)生過交換*/</p><p>  for(j=0;j<n-1;j++)</p><p>  if((strcmp(t[j].name,t[j+1].name))>0) /*比較大小*/</p><p><b>  {</b></p><p><b>  flag=1;<

130、;/b></p><p>  strcpy(temp.num,t[j].num);</p><p>  strcpy(temp.name,t[j].name); /*交換記錄*/</p><p>  strcpy(temp.group,t[j].group);</p><p>  strcpy(temp.units,t[j].unit

131、s);</p><p>  strcpy(temp.tele,t[j].tele);</p><p>  strcpy(temp.qq,t[j].qq);</p><p>  strcpy(temp.email,t[j].email);</p><p>  strcpy(t[j].num,t[j+1].num);</p><

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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)論