小型圖書管理系統(tǒng)c語言課程設(shè)計(jì)報(bào)告_第1頁
已閱讀1頁,還剩16頁未讀 繼續(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>  實(shí)習(xí)名稱 數(shù)據(jù)結(jié)構(gòu) </p><p>  設(shè)計(jì)題目 小型圖書管理系統(tǒng) </p><p>  實(shí)習(xí)時(shí)間 2011.1.3-2011.1.9 </p><p>  專業(yè)班級

2、 </p><p>  指導(dǎo)老師 </p><p>  教學(xué)單位(蓋章) </p><p><b>  二0一一年一月九日</b></p><p><b>  小型圖書管理系統(tǒng)</b></p><p><

3、b>  一、選題背景</b></p><p>  在學(xué)習(xí)了數(shù)據(jù)結(jié)構(gòu)課本理論知識后,為了檢驗(yàn)自己所學(xué)知識的牢固性,鞏固大家的理論知識,調(diào)動(dòng)大家的編程興趣;同時(shí)為大家提供一個(gè)實(shí)踐自己,檢驗(yàn)自己的平臺(tái),以增加大家對將來工作的適應(yīng)能力;也為了鍛煉大家的動(dòng)手實(shí)踐能力,遂在學(xué)期末進(jìn)行了本次課程設(shè)計(jì)。</p><p>  “數(shù)據(jù)結(jié)構(gòu)”在計(jì)算機(jī)科學(xué)中是一門綜合性的專業(yè)基礎(chǔ)課?!皵?shù)據(jù)結(jié)構(gòu)”

4、的研究不僅涉及到計(jì)算機(jī)硬件的研究范圍,而且和計(jì)算機(jī)軟件的研究有著密切的關(guān)系,無論是編譯程序還是操作系統(tǒng),都涉及到數(shù)據(jù)元素在存儲(chǔ)器中的分配問題。在研究信息檢索時(shí)也必須考慮如何組織數(shù)據(jù),以便查找和存取數(shù)據(jù)元素更為方便。因此,可以認(rèn)為“數(shù)據(jù)結(jié)構(gòu)”是介于數(shù)學(xué)、計(jì)算機(jī)硬件和計(jì)算機(jī)軟件三者之間的一門核心課程。在計(jì)算機(jī)科學(xué)中,“數(shù)據(jù)結(jié)構(gòu)”不僅是一般程序設(shè)計(jì)的基礎(chǔ),而且是設(shè)計(jì)和實(shí)現(xiàn)編譯程序、操作系統(tǒng)、數(shù)據(jù)庫系統(tǒng)及其他系統(tǒng)程序和大型應(yīng)用程序的重要基礎(chǔ)。&

5、lt;/p><p>  我們本著自己的興趣及挑戰(zhàn)自己的態(tài)度,也為檢驗(yàn)我們理論知識的熟練度,鍛煉我們動(dòng)手實(shí)踐能力,我們選擇了小型圖書管理系統(tǒng)的編寫。因?yàn)槲覀兩钤诖髮W(xué),圖書館是我們學(xué)習(xí)的天堂,借書和還書又是必不可少的,一個(gè)好的圖書管理系統(tǒng)對于我們學(xué)生和管理人員都會(huì)為大家提供很多便利。本著挑戰(zhàn)和創(chuàng)新的思想,我們進(jìn)行了此次課程設(shè)計(jì)程序編寫及報(bào)告撰寫。</p><p>  二、運(yùn)行環(huán)境(軟、硬件環(huán)境)

6、</p><p>  預(yù)裝了Windows XP操作系統(tǒng)的PC機(jī)、 Microsoft Visual C++ 6.0版編輯器。</p><p><b>  三、算法設(shè)計(jì)的思想</b></p><p>  通過對圖書管理系統(tǒng)內(nèi)的圖書進(jìn)行添加和刪除操作,實(shí)現(xiàn)同學(xué)借書和還書的記錄工作,通過對圖書的查找和按指定方式排序,更有利于同學(xué)們挑選自己所需要的圖

7、書,借閱借書所需時(shí)間。同時(shí),通過按需要的條件排序,也有助于圖書管理人員更加方便快捷的管理全部書庫圖書信息。</p><p>  遍歷查找和插入排序的功能,以及其它所有的算法操作都是為了方便快捷的利用圖書館資源,更大化的優(yōu)化操作流程和更好體現(xiàn)人機(jī)一體話的概念。</p><p><b>  設(shè)計(jì)程序框架圖:</b></p><p><b>

8、;  四、算法的流程圖</b></p><p><b>  五、算法設(shè)計(jì)分析</b></p><p><b>  定義圖書結(jié)構(gòu)體</b></p><p>  struct book</p><p>  結(jié)構(gòu)體內(nèi)容:定義作者、書名、出版社、書號數(shù)組及浮點(diǎn)型價(jià)格數(shù)據(jù)。</p>

9、<p><b>  {</b></p><p>  char writer[20];//作者//</p><p>  char title[20];//書名//</p><p>  char publishinghouse[20];//出版社//</p><p>  char number[10];//書號//

10、</p><p>  float price;//價(jià)格//</p><p>  struct book * next;</p><p><b>  };</b></p><p>  定義書庫的結(jié)構(gòu)體指針:</p><p>  struct book * Create_Book();</p&

11、gt;<p><b>  插入圖書信息:</b></p><p>  void Insert(struct book * head);</p><p><b>  刪除圖書信息:</b></p><p>  void Delete(struct book * head);</p><p&g

12、t;<b>  刷新顯示書庫信息:</b></p><p>  void Print_Book(struct book * head);</p><p><b>  查找數(shù)目:</b></p><p>  void search_book(struct book * head);</p><p>&

13、lt;b>  更改圖書信息:</b></p><p>  void change_Book(struct book * head);</p><p><b>  對數(shù)據(jù)進(jìn)行保存工作</b></p><p>  void save(struct book * head);</p><p><b>

14、;  六、源代碼</b></p><p>  #include<stdio.h></p><p>  #include<string.h></p><p>  #include<stdlib.h></p><p>  struct book</p><p><b&g

15、t;  {</b></p><p>  char writer[20];</p><p>  char title[20];</p><p>  char publishinghouse[20];</p><p>  char number[10];</p><p>  float price;</

16、p><p>  struct book * next;</p><p><b>  };</b></p><p>  struct book * Create_Book();</p><p>  void Insert(struct book * head);</p><p>  void Delet

17、e(struct book * head);</p><p>  void Print_Book(struct book * head);</p><p>  void search_book(struct book * head);</p><p>  void change_Book(struct book * head);</p><p&g

18、t;  void save(struct book * head);</p><p>  struct book * Create_Book()</p><p><b>  {</b></p><p>  struct book * head;</p><p>  head=(struct book *)malloc(s

19、izeof(struct book));</p><p>  head->next=NULL;</p><p>  return head;</p><p><b>  }</b></p><p>  void save(struct book * head)</p><p><b&g

20、t;  {</b></p><p>  struct book *p;</p><p><b>  FILE *fp;</b></p><p><b>  p=head;</b></p><p>  fp=fopen("kucun.txt","w+"

21、;);</p><p>  fprintf(fp,"************************************************\n");</p><p>  fprintf(fp,"書號\t 書名\t 作者\(yùn)t 出版社\t 價(jià)格\t \n"); </p><p>  fprintf(

22、fp," \n");</p><p>  while(p->next!= NULL)</p><p><b>  {</b></p><p>  p=p->next;</p><p>  fpri

23、ntf(fp,"%s\t %s\t %s\t %s\t %.2f\t \n",p->number,p->title,p->writer,p->publishinghouse,p->price);</p><p><b>  }</b></p><p>  fprintf(fp,&quo

24、t;************************************************\n");</p><p>  fclose(fp);</p><p>  printf(" 已將圖書數(shù)據(jù)保存到 kucun.txt 文件\n");</p><p><b>  }</b>&

25、lt;/p><p><b>  //插入//</b></p><p>  void Insert(struct book *head)</p><p><b>  {</b></p><p>  struct book *s, *p,*p1,*swap;</p><p>  ch

26、ar flag='Y';</p><p>  swap=(struct book *)malloc(sizeof(struct book));</p><p><b>  p1=swap;</b></p><p><b>  p=head;</b></p><p>  while(f

27、lag=='Y'||flag=='y')</p><p><b>  {</b></p><p>  s=(struct book *)malloc(sizeof(struct book));</p><p>  printf("\n 請輸入圖書書號:")

28、;</p><p>  fflush(stdin);</p><p>  scanf("%s",s->number);</p><p>  printf("\n 請輸入圖書書名:");</p><p>  fflush(stdin);</p>&

29、lt;p>  scanf("%s",s->title);</p><p>  printf("\n 請輸入圖書作者名:");</p><p>  fflush(stdin);</p><p>  scanf("%s",s->writer);</p

30、><p>  printf("\n 請輸入圖書出版社:");</p><p>  fflush(stdin);</p><p>  scanf("%s",s->publishinghouse);</p><p>  printf("\n

31、 請輸入圖書價(jià)格:");</p><p>  fflush(stdin);</p><p>  scanf("%f",&s->price);</p><p>  printf("\n");</p><p><b>  //排序//</b>

32、</p><p>  p1=p->next;</p><p>  if(head->next!=NULL)</p><p><b>  do</b></p><p><b>  {</b></p><p>  if(strcmp((p1->number),(

33、s->number))>0)</p><p><b>  {</b></p><p>  strcpy(swap->number,p1->number);</p><p>  strcpy(swap->title,p1->title);</p><p>  strcpy(swap-&g

34、t;writer,p1->writer);</p><p>  strcpy(swap->publishinghouse,p1->publishinghouse);</p><p>  swap->price=p1->price;</p><p>  strcpy(p1->number,s->number);</p&g

35、t;<p>  strcpy(p1->title,s->title);</p><p>  strcpy(p1->writer,s->writer);</p><p>  strcpy(p1->publishinghouse,s->publishinghouse);</p><p>  p1->price=s-

36、>price;</p><p>  strcpy(s->number,swap->number);</p><p>  strcpy(s->title,swap->title);</p><p>  strcpy(s->writer,swap->writer);</p><p>  strcpy(s-

37、>publishinghouse,swap->publishinghouse);</p><p>  s->price=swap->price;</p><p><b>  }</b></p><p><b>  p=p1; </b></p><p>  p1=p-&g

38、t;next;</p><p>  }while(p1!=NULL);</p><p>  p->next=s;</p><p>  s->next=NULL;</p><p>  printf(" ******* 添加成功!*******");</p><

39、;p>  printf("\n 繼續(xù)添加?(Y/N):");</p><p>  fflush(stdin);</p><p>  scanf("%c",&flag);</p><p>  printf("\n");</p>&

40、lt;p>  if(flag=='N'||flag=='n')</p><p><b>  {break;}</b></p><p>  else if(flag=='Y'||flag=='y')</p><p>  {continue;}</p><p&

41、gt;<b>  }</b></p><p>  save(head);</p><p><b>  }</b></p><p><b>  //查找//</b></p><p>  void search_book(struct book *head)</p>

42、<p><b>  {</b></p><p>  struct book * p;</p><p>  char temp[20];</p><p><b>  p=head;</b></p><p>  if(head==NULL || head->next==NULL)<

43、/p><p><b>  {</b></p><p>  printf(" ******* 圖書庫為空!*******\n");</p><p><b>  }</b></p><p><b>  else</b><

44、;/p><p><b>  {</b></p><p>  printf("請輸入您要查找的書名: ");</p><p>  fflush(stdin);</p><p>  scanf("%s",temp);</p><p>  while(p->ne

45、xt!= NULL)</p><p><b>  {</b></p><p>  p=p->next;</p><p>  if(strcmp(p->title,temp)==0)</p><p><b>  {</b></p><p>  printf(&quo

46、t;\n圖書已找到!\n");</p><p>  printf("\n");</p><p>  printf("書號: %s\t\n",p->number);</p><p>  printf("書名: %s\t\n",p->title);</p><p>

47、  printf("作者名: %s\t\n",p->writer);</p><p>  printf("出版社: %s\t\n",p->publishinghouse);</p><p>  printf("價(jià)格: %.2f\t\n",p->price);</p><p><b&g

48、t;  }</b></p><p>  if(p->next==NULL)</p><p><b>  {</b></p><p>  printf("\n查詢完畢!\n");</p><p><b>  }</b></p><p>&l

49、t;b>  } </b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void Print_Book(struct book * head)</p><p><b>  {</b></p>

50、<p>  struct book * p;</p><p>  if(head==NULL || head->next==NULL)</p><p><b>  {</b></p><p>  printf("\n ******* 沒有圖書記錄! *******\n\n&

51、quot;);</p><p><b>  }</b></p><p><b>  p=head;</b></p><p>  printf("*************************************\n");</p><p>  printf(" 書

52、號\t書名\t作者\(yùn)t出版社\t價(jià)格\t\n");</p><p>  printf("*************************************\n");</p><p>  while(p->next!= NULL)</p><p><b>  {</b></p><p

53、>  p=p->next;</p><p>  printf("%s\t%s\t%s\t%s\t%.2f\t\n",p->number,p->title,p->writer,p->publishinghouse,p->price); </p><p><b>  }</b></p><p

54、>  printf("*************************************\n");</p><p>  printf("\n");</p><p><b>  }</b></p><p><b>  //更改//</b></p><p

55、>  void change_Book(struct book * head)</p><p><b>  {</b></p><p>  struct book * p;</p><p>  int panduan=0;</p><p>  char temp[20];</p><p>&

56、lt;b>  p=head;</b></p><p>  printf("請輸入要修改圖書的書號:");</p><p>  scanf("%s",temp);</p><p>  while(p->next!= NULL)</p><p>  {p=p->next;<

57、;/p><p>  if(strcmp(p->number,temp)==0)</p><p><b>  {</b></p><p>  printf("\n 請輸入圖書書名:");</p><p>  fflush(stdin);</p>&l

58、t;p>  scanf("%s",p->title);</p><p>  printf("\n 請輸入圖書作者名:");</p><p>  fflush(stdin);</p><p>  scanf("%s",p->writer);</p&

59、gt;<p>  printf("\n 請輸入圖書出版社:");</p><p>  fflush(stdin);</p><p>  scanf("%s",p->publishinghouse);</p><p>  printf("\n

60、 請輸入圖書價(jià)格:");</p><p>  fflush(stdin);</p><p>  scanf("%f",&p->price);</p><p>  printf("\n");</p><p>  panduan=1;}}</p>&l

61、t;p>  if(panduan==0)</p><p><b>  {</b></p><p>  printf(" \n******沒有圖書記錄!******\n\n");}</p><p><b>  }</b></p><p><b>  //刪除

62、//</b></p><p>  void Delete(struct book *head)</p><p><b>  {</b></p><p>  struct book *s,*p;</p><p>  char temp[20];</p><p>  int panduan

63、;</p><p>  panduan=0;</p><p><b>  p=s=head;</b></p><p>  printf(" [請輸入您要?jiǎng)h除的書名]:");</p><p>  scanf("%s",temp);</p&

64、gt;<p>  p=p->next;</p><p>  while(p!= NULL)</p><p><b>  {</b></p><p>  if(strcmp(p->title,temp)==0)</p><p><b>  {</b></p>&

65、lt;p>  panduan=1;</p><p><b>  break;</b></p><p><b>  }</b></p><p>  p=p->next;</p><p><b>  } </b></p><p>  if(pan

66、duan==1)</p><p><b>  {</b></p><p>  while(s->next!=p)</p><p><b>  {</b></p><p>  s=s->next;</p><p><b>  }</b><

67、/p><p>  s->next=p->next;</p><p><b>  free(p);</b></p><p>  printf("\n ******* 刪除成功!*******\n");</p><p>  save(head);</

68、p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  printf(" 您輸入的書目不存在,請確認(rèn)后輸入!\n");</p>

69、;<p><b>  }</b></p><p><b>  }</b></p><p><b>  //主函數(shù)//</b></p><p>  void main()</p><p><b>  { </b></p><

70、p>  struct book * head;</p><p>  int choice;</p><p>  head=NULL;</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  printf(&quo

71、t; *************************************************\n"); </p><p>  printf(" * 小型圖書管理系統(tǒng) *\n");</p><p>  printf("

72、 * *\n");</p><p>  printf(" * [1]圖書信息錄入 *\n");</p><p>  printf(" *

73、 *\n");</p><p>  printf(" * [2]圖書信息瀏覽 *\n");</p><p>  printf(" *

74、 *\n");</p><p>  printf(" * [3]圖書信息查詢 *\n");</p><p>  printf(" *

75、 *\n");</p><p>  printf(" * [4]圖書信息修改 *\n");</p><p>  printf(" *

76、 *\n");</p><p>  printf(" * [5]圖書信息刪除 *\n");</p><p>  printf(" *

77、 *\n");</p><p>  printf(" * [6]退出系統(tǒng) *\n");</p><p>  printf(" *************************************************\n&q

78、uot;);</p><p>  printf(" 請選擇:");</p><p>  fflush(stdin);</p><p>  scanf("%d",&choice);</p><p>  switch (choice)<

79、;/p><p><b>  {</b></p><p><b>  case 1:</b></p><p>  if(head==NULL)</p><p><b>  {</b></p><p>  head=Create_Book();</p>

80、;<p><b>  }</b></p><p>  Insert(head);</p><p><b>  break;</b></p><p><b>  case 2:</b></p><p>  Print_Book(head);</p>&

81、lt;p><b>  break;</b></p><p><b>  case 3:</b></p><p>  search_book(head);</p><p><b>  break;</b></p><p><b>  case 4:</b&g

82、t;</p><p>  change_Book(head);</p><p><b>  break;</b></p><p><b>  case 5:</b></p><p>  Delete(head);</p><p><b>  break;</b

83、></p><p><b>  case 6:</b></p><p>  printf("\n");</p><p>  printf(" ******* 感謝使用圖書管理系統(tǒng) ******\n");</p><p><b&g

84、t;  break;</b></p><p><b>  default:</b></p><p>  printf(" ******* 輸入錯(cuò)誤,請重新輸入!*******");</p><p><b>  break;</b></p>

85、<p><b>  }</b></p><p><b>  } </b></p><p><b>  }</b></p><p><b>  七、運(yùn)行結(jié)果分析</b></p><p>  主界面:顯示提示操作信息,按提示信息進(jìn)行操作,方便操作管理

86、。</p><p>  添加信息頁面:在主界面選擇1,分書號、書名等條目添加圖書信息,存檔到書庫,便于用戶查找和管理員管理所有圖書。在一次添加完成后可以根據(jù)提示進(jìn)行繼續(xù)添加圖書信息到書庫。</p><p>  查詢庫存所需圖書信息:在主界面選擇3,根據(jù)書名,從書庫中直接調(diào)用所查找圖書的全部信息。</p><p>  顯示瀏覽庫存圖書信息(排序功能):按提示操作在主界

87、面選擇2,展示現(xiàn)在書庫中所有圖書信息,并按書號大小排序,一目了然。</p><p>  更改庫存圖書信息:在主界面選擇4,對圖書信息進(jìn)行更改、存檔,更改后圖書信息將覆蓋原來圖書信息并存檔。并在修改完成后,在主界面選擇2,顯示更改后現(xiàn)存圖書信息。 </p><p>  在庫存中刪除外借圖書信息:在主界面選擇5,從書庫中直接刪除外借圖書,并做存檔kucun.txt文件工作。</p>

88、<p>  圖書存檔txt文件:圖書信息自動(dòng)存檔txt文件,方便借閱人查看全部庫存圖書信息,并幫助管理員做好圖書信息保存工作。</p><p>  分析:通過圖書管理系統(tǒng)流程截圖解析可知,圖書信息庫的存檔和管理都需要圖書管理人員的手動(dòng)操作,而且很機(jī)械化,信息更改方法古老繁瑣,雖然可以實(shí)現(xiàn)智能化的自我按書號排序和按圖書書名查找,但是程序還存在不足之處,開發(fā)程序還有待進(jìn)一步完善和提高。</p>

89、;<p><b>  八、收獲及體會(huì)</b></p><p>  經(jīng)過這次課程設(shè)計(jì),通過對程序的編制,調(diào)試和運(yùn)行,使我更好的掌握了鏈表基本性質(zhì)和有關(guān)小型數(shù)據(jù)系統(tǒng)問題的解決方法,熟悉了各種調(diào)用的數(shù)據(jù)類型,在調(diào)試和運(yùn)行過程中使我更加的了解和熟悉程序運(yùn)行的環(huán)境變量,提高了我對程序調(diào)試分析的能力和對錯(cuò)誤的糾正能力。這次數(shù)據(jù)結(jié)構(gòu)的程序設(shè)計(jì),對于我來說是一個(gè)挑戰(zhàn)。老師教導(dǎo)我們:課程設(shè)計(jì)是培

90、養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識、發(fā)現(xiàn)、提出、分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過程。通過這次課程設(shè)計(jì)我深有體會(huì)。</p><p>  在課程設(shè)計(jì)過程中程序編譯的同時(shí)我也發(fā)現(xiàn)自己對知識的掌握的不足之處。在編譯程序的過程中(例如:通過排序程序的嵌套一次次的修改編寫以及指針和數(shù)組的運(yùn)用),使我的編程能力有了很大程度的提高,對相關(guān)函數(shù)也可以做到熟練掌握了。在做這個(gè)課程設(shè)計(jì)的時(shí)候遇到許

91、多困難,一個(gè)小部分可能就會(huì)花掉很長時(shí)間編寫修改,雖然花費(fèi)了時(shí)間,但是學(xué)到了很多知識,同時(shí)通過查課本找資料,一點(diǎn)一點(diǎn)的補(bǔ)足學(xué)習(xí)課本知識時(shí)的漏洞,真正讓我體會(huì)到理論和實(shí)踐的差距,通過這次課程設(shè)計(jì),真正鍛煉了我的實(shí)踐能力,做到了理論和實(shí)踐相結(jié)合,實(shí)踐聯(lián)系理論的統(tǒng)一。</p><p>  通過這次的課程設(shè)計(jì),讓我深刻意識到自己在學(xué)習(xí)中的不足,同時(shí)也找到了克服這些弱點(diǎn)的方法,這也是一筆很大的資源財(cái)富。在以后的學(xué)習(xí)過程中,我

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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

提交評論