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

下載本文檔

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

文檔簡介

1、<p><b>  信息科學與工程學院</b></p><p>  高級語言課程設計(C) 課程設計報告 </p><p>  設 計 題 目 學生通訊錄 </p><p>  學生專業(yè)班級 </p>

2、<p>  學生姓名(學號) </p><p>  設計小組其他同學姓名(學號)</p><p>  指 導 教 師 </p><p>  完 成 時 間 2007-12-6 &

3、lt;/p><p>  實 習(設計)地點 </p><p>  2007年 12 月 6 日</p><p>  一、課程設計目的和任務    </p><p>  高級語言課程設計的目的在于加深對高級語言程序設計理論和基本知識的理解,掌握使用C語言

4、進行面向過程設計的基本方法,提高運用面向過程知識解決實際問題的能力。為畢業(yè)設計和以后的工程實踐打下良好的基礎。</p><p>  本次設計任務是使用C語言編寫一學生通訊錄。其具體要求如下:</p><p> ?。?)學生通訊錄包含學生姓名、電話、住址、郵編。</p><p>  (2)能增加新的學生通訊錄。</p><p> ?。?)能刪除

5、學生通訊錄。</p><p> ?。?)實現(xiàn)對某學生通訊錄的查找。</p><p><b>  二、分析與設計</b></p><p>  1.程序的基本功能:</p><p>  學生通訊錄程序的功能有:新學生的信息載入(包括:姓名、電話號碼、通信地址和郵政編碼)、插入學生的信息、查找學生的信息、增加和刪除學生的信息、

6、完成對學生信息的自動保存,并能成功退出程序運行。</p><p><b>  2.系統(tǒng)總框圖:</b></p><p>  3.定義的函數(shù)及說明:</p><p>  (1)main()主函數(shù) </p><p>  各模塊獨立,均由主函數(shù)控制調(diào)用。 利用輸出函數(shù)輸出字符串,在屏幕上顯示一個菜單。并顯示一個請用戶輸入選項的

7、提示,主函數(shù)根據(jù)用戶輸入的選項調(diào)用相應的功能函數(shù)。 </p><p> ?。?)new()輸入記錄函數(shù) </p><p>  輸入記錄時按一條記錄一行的格式輸入,每個記錄之間用空格分隔。設計輸入的循環(huán)語句前應考慮首先輸入準備輸入的記錄個數(shù)n,然后根據(jù)輸入的n的值來控制循環(huán)輸入n條記錄,n應小于等于M。</p><p> ?。?)insert()插入記錄函數(shù) <

8、/p><p>  輸入要插入記錄的信息,保存到臨時變量中,然后再輸入一個姓名s,確定新記錄插入在該姓名的記錄之前,調(diào)用find()函數(shù)查找姓名為s的記錄,得到該記錄所在的序號之后開始插入操作,由于添加了一條記錄,記錄數(shù)加1,返回記錄數(shù),程序結(jié)束。</p><p> ?。?)find()查找記錄函數(shù)</p><p>  本函數(shù)實現(xiàn)查找指定姓名的紀錄,要求輸入欲查找記錄的姓

9、名,然后順序查找有效元素,如找到則顯示找到紀錄的所有信息,如未找到則輸出沒有找到信息。 find函數(shù)功能是查找,若找到則返回記錄位置否則返回n。 </p><p>  (5)del()刪除記錄函數(shù)</p><p>  輸入要刪除記錄的姓名,調(diào)用find函數(shù),如果沒有該記錄,顯示沒找到信息;否則,調(diào)用print函數(shù),顯示記錄信息,接著顯示是否確實要刪除,請輸入確認信息整數(shù)0或1,1表示是,o

10、表示否。如果輸入了1,則系統(tǒng)刪除信息。由于刪除了一條記錄,記錄數(shù)減1,返回記錄數(shù),程序結(jié)束。</p><p> ?。?)display()顯示所有記錄函數(shù) </p><p>  本函數(shù)實現(xiàn)顯示所以記錄數(shù)據(jù),輸出時,為了效果美觀清晰,應設計一定的樣式輸出。 </p><p> ?。?)record()保存記錄到文件 </p><p>  前面數(shù)

11、組數(shù)據(jù)的輸入和輸出是以終端為對象的,當程序關閉后,數(shù)據(jù)也就丟失了,所以為了能隨時查閱數(shù)據(jù),必須將數(shù)據(jù)輸出到磁盤文件上保存起來,使用時再從磁盤中讀入到內(nèi)存中,這就用到了磁盤文件的讀寫操作。 </p><p>  將文件名寫上它的絕對路徑,但要注意書寫方式,例如“c:\\tc\\record.txt”。打開文件之后先寫入記錄數(shù)n,然后用循環(huán)語句將記錄逐條寫入文件,每輸出一條記錄寫入一個換行符號。 </p>

12、<p>  (8)exit() 退出系統(tǒng)</p><p>  結(jié)束對通訊錄系統(tǒng)的操作,返回主界面。</p><p><b>  4.算法設計:</b></p><p>  實現(xiàn)對學生通訊錄的管理,重點掌握結(jié)構體數(shù)組的應用、數(shù)組作函數(shù)參數(shù)、文件讀寫、自定義函數(shù)等知識。本次程序設計應用到以下知識點:</p><p&

13、gt; ?。?)結(jié)構體的定義 </p><p>  (2)數(shù)組的定義及應用 </p><p> ?。?)順序查找方法 </p><p> ?。?)二分查找算法 </p><p> ?。?)函數(shù)調(diào)用、數(shù)組名作參數(shù) </p><p> ?。?)文件的讀寫操作 </p><p> ?。?)菜單項的制

14、作和選擇 </p><p><b>  三、系統(tǒng)實施</b></p><p>  1.源程序代碼#include<stdio.h></p><p>  #include<alloc.h></p><p>  #define LEN sizeof(struct student)/*定義一個學生

15、的結(jié)構體*/</p><p>  struct student</p><p><b>  {</b></p><p>  char name[20];</p><p>  char phone[20];</p><p>  char addr[40];</p>&

16、lt;p>  char post[20];</p><p>  struct student *next;</p><p>  }*head=NULL;</p><p>  void new() /*定義輸入新函數(shù)*/</p><p><b>  {</b></p><

17、p>  struct student *head,*p;</p><p><b>  insert();</b></p><p><b>  }</b></p><p>  insert() /*定義插入函數(shù)*/</p><p><b>  {</b&

18、gt;</p><p>  struct student *p;</p><p><b>  char c;</b></p><p><b>  int i;</b></p><p>  p=(struct student *)malloc(LEN);</p>

19、<p>  printf("\nplease input name:\n"); /*提示用戶輸入姓名*/</p><p>  scanf("%s",&p->name);</p><p>  printf("\nplease input phone:\n"); /*提示用戶輸入電話號碼*/<

20、;/p><p>  scanf("%s",&p->phone);</p><p>  printf("\nplease input address:\n"); /*提示用戶輸入地址*/</p><p>  scanf("%s",&p->addr);</p>

21、<p>  printf("\nplease input post:\n");/*提示用戶輸入郵編*/</p><p>  scanf("%s",&p->post);</p><p>  p->next=head;</p><p><b>  head=p;</b>&l

22、t;/p><p>  printf("\nDo you continue to insert Y or N\n");/*利用if函數(shù)來實現(xiàn)用戶的需要退出還是繼續(xù)輸入*/</p><p>  fflush(stdin);</p><p>  scanf("%c",&c);</p><p>  if

23、(c=='Y'||c=='y') insert();</p><p>  if( c=='N'||c=='n') main();</p><p><b>  }</b></p><p>  void display()/*定義列表函數(shù)*/</

24、p><p><b>  {</b></p><p>  struct student *p;/*運用指針來實現(xiàn)函數(shù)的輸出*/</p><p>  int n=0,i;</p><p><b>  char t;</b></p><p><b>  p=

25、head;</b></p><p>  while(p!=NULL)</p><p><b>  {</b></p><p>  printf("\n***********************************************");</p><p>

26、  printf("\n name phone addr post ");</p><p>  printf("\n%s %s %s %s\n",p->name,p->phone,p->addr,p->post);</p><p> 

27、 printf("\n***********************************************");</p><p>  p=p->next;</p><p><b>  n++;</b></p><p>  if(n%3==0)/*運用if函數(shù)來實現(xiàn)用戶對函數(shù)的需要*/</

28、p><p><b>  {</b></p><p>  printf("\nDo you continue to insert Y or N\n");/*利用if函數(shù)來實現(xiàn)用戶的需要退出還是繼續(xù)輸入*/</p><p>  fflush(stdin);</p><p>  scanf("%c

29、",&c);</p><p>  if(c=='Y'||c=='y') insert();</p><p>  if( c=='N'||c=='n') main();</p><p><b>  }</b></p><p><b&g

30、t;  }</b></p><p>  find() /*定義查找函數(shù)*/</p><p><b>  {</b></p><p>  struct student *p;</p><p><b>  char c;</b></p>

31、<p>  char name1[20];</p><p><b>  int i;</b></p><p><b>  p=head;</b></p><p>  printf("\nPlease input the name:\n"); /*提示用戶來輸入姓名*/<

32、/p><p>  scanf("%s",name1);</p><p>  while((strcmp(name1,p->name)!=0)&&(p!=NULL))</p><p>  p=p->next;</p><p>  if(p==NULL)</p><

33、p>  printf("\nIt is not existing in the list\n"); /*如果不存在則顯示不存在*/</p><p>  else/*如果存在則輸出學生信息*/</p><p>  { printf("\n############################################

34、");</p><p>  printf("\nphone:%s",p->phone);</p><p>  printf("\naddr:%s",p->addr);</p><p>  printf("\npost:%s",p->post);</p><p&

35、gt;  printf("\n###########################################");</p><p><b>  }</b></p><p>  printf("\nDo you continue to find Y or N\n");</p><p>  fflus

36、h(stdin);</p><p>  scanf("%c",&c);</p><p>  if(c=='Y'||c=='y')find (); /*利用if函數(shù)來實現(xiàn)繼續(xù)查找功能*/</p><p>  if(c=='N'||c=='n') return ;

37、 /*利用輸入字母n來實現(xiàn)返回的功能*/</p><p><b>  }</b></p><p>  delete() /*利用delet函數(shù)來實現(xiàn)刪除功能*/</p><p><b>  {</b></p><p>  struct student *p,*p1;&

38、lt;/p><p><b>  char c;</b></p><p>  char name2[20];</p><p><b>  p=head;</b></p><p>  printf("Please input a name:\n"); /*提示用戶輸入姓名*/&l

39、t;/p><p>  scanf("%s",name2);</p><p>  while((strcmp(name2,p->name)!=0)&&(p!=NULL))</p><p><b>  {</b></p><p><b>  p1=p;</b><

40、;/p><p>  p=p->next;</p><p><b>  }</b></p><p>  if(p==NULL)</p><p>  printf("\nIt is not exist in the list\n");</p><p><b>  els

41、e</b></p><p>  p1->next=p->next;</p><p>  printf("\nDo you continue to delete Y or N\n");</p><p>  fflush(stdin);</p><p>  scanf("%c",&a

42、mp;c);</p><p>  if(c=='Y'||c=='y') delete();</p><p>  if(c=='N'||c=='n') return;</p><p><b>  }</b></p><p>  save()

43、 /*利用save函數(shù)來實現(xiàn)*/</p><p><b>  {</b></p><p><b>  FILE *fp;</b></p><p>  struct student *p; /*通過指針來實現(xiàn)對輸入內(nèi)容的存儲*/</p><p>  fp=fop

44、en("C:\\tongxuelu.c","wb");</p><p><b>  p=head;</b></p><p>  if(p==NULL)</p><p>  {printf("\nThis is a null list!");/*如果所取到的地址不對或沒有內(nèi)容時顯示T

45、his is a null list!*/</p><p><b>  }</b></p><p>  else /*如果取址正確的話就進行儲存*/</p><p><b>  do</b></p><p>  {fwrite(p,LEN,1,fp);</

46、p><p>  p=p->next;</p><p>  }while(p!=NULL);</p><p>  fclose(fp);</p><p><b>  }</b></p><p>  exit () /*定義exit退出函數(shù)*/</

47、p><p><b>  { char c;</b></p><p>  printf("\n **************************\n");</p><p>  printf("\nDo you want to exit and save? Y or N\n");</p><

48、;p>  fflush(stdin);</p><p>  scanf("%c",&c);</p><p>  if(c=='y'||c=='Y') {save () ;exit(0);}/*利用if函數(shù)來決定是否退出函數(shù)到主菜單*/</p><p><b>  else<

49、;/b></p><p>  if(c=='n'||c=='N') main();</p><p><b>  }</b></p><p>  record()/*定義記錄函數(shù)來實現(xiàn)對所存函數(shù)的取值*/</p><p><b>  {</b>

50、</p><p><b>  FILE *fp;</b></p><p>  struct student *p;</p><p><b>  int i;</b></p><p><b>  p=head;</b></p><p>  if((fp=f

51、open("C:\\tongxuelu.c","wb"))==NULL)</p><p><b>  {</b></p><p>  printf("Can't open this file\n");</p><p><b>  return;</b>&l

52、t;/p><p><b>  }</b></p><p>  for(;fread(p,LEN,1,fp)!=0;)</p><p>  {printf("\n***********************************************");</p><p>  printf("

53、;\nphone:%s",p->phone);</p><p>  printf("\naddr:%s",p->addr);</p><p>  printf("\npost:%s",p->post);</p><p>  printf("\n***********************

54、************************");}</p><p><b>  }</b></p><p>  main()/*定義主函數(shù)來實現(xiàn)進入運行程序之后的菜單選項*/</p><p><b>  {</b></p><p><b>  int k;&l

55、t;/b></p><p>  printf("\n***********************************************");</p><p>  printf("\nWELCOME TO STUDENTS COMMUNICATION SYSTEM\n</p><p>  Produced by :Hu

56、Dingren,Wang Hongxia and Xue Aiyuan");</p><p>  printf("\n***********************************************");</p><p>  printf("\n------------------------------------------\n&q

57、uot;);</p><p>  printf("| input 1: new() |\n");</p><p>  printf("------------------------------------------\n");</p><p>  printf("| input 2: insert() |\n&qu

58、ot;);</p><p>  printf("------------------------------------------\n");</p><p>  printf("| input 3: find() |\n");</p><p>  printf("--------------------------

59、----------------\n");</p><p>  printf("| input 4: del() |\n");</p><p>  printf("------------------------------------------\n");</p><p>  printf("| inpu

60、t 5: display() |\n");</p><p>  printf("------------------------------------------\n");</p><p>  printf("| input 6: record() |\n");</p><p>  printf("---

61、---------------------------------------\n");</p><p>  printf("| input 0: exit() |\n");</p><p>  printf("------------------------------------------\n");</p><p&

62、gt;  printf("\n\nPlease Enter a Num to Select an Item\n");</p><p>  scanf("%d",&k);</p><p>  switch(k)/*用switch函數(shù)來實現(xiàn)對用戶的選擇進行轉(zhuǎn)化*/</p><p><b>  {<

63、;/b></p><p>  case 1: new ();break;</p><p>  case 2: insert();break;</p><p>  case 3: find();break;</p><p>  case 4: delete();break;</p><p>  case 5: di

64、splay(); break;</p><p>  case 6: record();break;</p><p>  case 0: exit();break;</p><p>  default :printf("\nIt is possible to make a mistake!");</p><p><b&

65、gt;  }</b></p><p><b>  }</b></p><p>  2.程序運行說明(包括結(jié)果說明)</p><p>  同時按快捷鍵Alt+R,彈出菜單,選擇Run選項,按Enter鍵,開始對程序的運行。其輸出如下:</p><p>  ****************************

66、*******************</p><p>  WELCOME TO STUDENTS COMMUNICATION SYSTEM</p><p>  Produced by :Hu Dingren,Wang Hongxia and Xue Aiyuan</p><p>  *****************************************

67、****</p><p>  ------------------------------------------</p><p>  input 1: new() </p><p>  -----------------------------------------</p><p>  input 2: insert()<

68、;/p><p>  ------------------------------------------</p><p>  input 3: find()</p><p>  ------------------------------------------</p><p>  input 4: del();</p>

69、;<p>  -----------------------------------------</p><p>  input 5: display() </p><p>  ------------------------------------------</p><p>  input 6: record();</p><p

70、>  ------------------------------------------</p><p>  input 0: exit();</p><p>  ------------------------------------------</p><p>  Please Enter a Num to Select an Item:</p&g

71、t;<p>  用戶可根據(jù)需要輸入0-6不同的數(shù)以實現(xiàn)對系統(tǒng)的不同操作。</p><p> ?。?)輸入1,可增加新的學生通訊錄。其運行如下:</p><p>  Plese input name:</p><p>  用戶根據(jù)實際輸入信息,之后按 enter 鍵,界面輸出依次如下:</p><p>  Plese input

72、phone:</p><p>  Plese input address:</p><p>  Plese input post:</p><p>  用戶輸入信息,按按enter 鍵,界面輸出如下:</p><p>  Do you continue to insert Y or N</p><p>  用戶根據(jù)需要

73、輸入Y或N。輸入Y,程序?qū)⒗^續(xù)運行。輸入N 系統(tǒng)會將所輸入信息保存,并返回源程序。</p><p>  (2)輸入2,可在原來基礎上插入新的學生通訊錄。其運行類似(1)中所述。</p><p>  (3)如輸入3,可實現(xiàn)對某特定學生通訊錄的查找。其運行如下:</p><p>  Plese input the name:</p><p>  

74、用戶輸入想要查找的學生姓名后,按enter鍵,則該同學的通訊方式會顯示在運行界面.同時界面會給予以下提示:</p><p>  Do you continue to find Y or N </p><p>  用戶根據(jù)需要作出選擇。如輸入Y,則繼續(xù)查找。如輸入N,系統(tǒng)會有如下提示:</p><p>  Do you want to exit and save ?

75、Y or N </p><p>  用戶如想退出并保存所查找的通訊錄,則輸入Y,并按enter 鍵。否則輸入N。</p><p>  (4)如輸入4,可實現(xiàn)對某特定學生通訊錄的刪除。其運行如下:</p><p>  Plese input a name :</p><p>  用戶輸入所要刪除的學生姓名,并按enter 鍵,系統(tǒng)會出現(xiàn)如下提示

76、:</p><p>  Do you continue to delect Y or N </p><p>  用戶如想繼續(xù)刪除某通訊錄,則輸入Y,否則輸入N。</p><p>  如用戶所輸入的姓名不存在或已被刪除,則系統(tǒng)會出現(xiàn)以下提示:</p><p>  It is not exist in the list </p>&

77、lt;p>  Do you continue to delect Y or N </p><p>  (5)如輸入5,則系統(tǒng)會將用戶所輸入的學生通訊錄全部顯示在運行界面。</p><p><b>  其形式如下:</b></p><p>  Name phone addr

78、 post</p><p>  Wang 15964979295 qindaonongyedaxue 266109</p><p>  同時系統(tǒng)會給予以下提示:</p><p>  Do you want to exit and save ? Y or N </p><p>  用戶根據(jù)需要進行不同的選擇。

79、</p><p>  (6)如輸入6,則系統(tǒng)會完成對數(shù)據(jù)保存記錄到文件, 同時系統(tǒng)提示:</p><p>  Do you want to exit and save? Y or N </p><p>  如該通訊錄內(nèi)容為空,系統(tǒng)會給予以下提示:</p><p>  This is a dull list </p><p&

80、gt;  (7)exit() 退出系統(tǒng)。界面出現(xiàn)如下提示:</p><p>  Do you want to exit and save? Y or N </p><p>  用戶根據(jù)需要進行選擇,以退出運行,回到主界面.</p><p>  3.存在的問題:    …</p><p>  這次課程設計

81、中,我們遇到了許多困難。通過查閱資料,詢問老師或同學等途徑,終于將大多數(shù)的困難解決了,但令我們不滿的是該程序仍存在一些小的問題,就是在推出運行之后再次運行時上次所輸入的內(nèi)容就沒有了,只能保存每次所運行的結(jié)果,只能查找每次所輸入的結(jié)果,而且在運行界面下不好退出程序,當輸入的值與所要求輸入的不一樣時程序有時會退出。這是我們的遺憾所在,希望此程序能得到完善。</p><p><b>  四、總結(jié)與體會<

82、/b></p><p>  課程設計是培養(yǎng)學生綜合運用所學知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學生實際工作能力的具體訓練和考察過程.隨著科學技術發(fā)展的日新日異,當今計算機應用在生活中可以說得是無處不在。因此作為二十一世紀的大學來說掌握計算機開發(fā)技術是十分重要的。</p><p>  對此次課程設計,感慨頗多,的確,從拿到題目到完成整個編程,從理論到實踐,

83、在兩周時間里,可以學到很多很多的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟是第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發(fā)現(xiàn)了自己的不

84、足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,比如自己在指法上還不行,經(jīng)常按錯字母,通過學習也有所改進;再有對C語言的一些標準庫函數(shù)不太了解,還有對函數(shù)調(diào)用的正確使用不夠熟悉,還有對C語言中經(jīng)常出現(xiàn)的錯誤也不了解,對于結(jié)構體……唉,還得不斷加強練習??傊ㄟ^這次課程設計之后,一定要把以前所學過的知識重新溫故。</p><p>  這次課程設計終于完成了,在設計中遇到了很多編程問題,最后在老師和同學的指

溫馨提示

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

評論

0/150

提交評論