圖書館管理系統(tǒng)課程設(shè)計_第1頁
已閱讀1頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  軟件設(shè)計報告</b></p><p>  題 目:圖 書 館 管 理 系 統(tǒng)</p><p><b>  三、需求分析</b></p><p>  可以實(shí)現(xiàn)圖書館圖書數(shù)據(jù)的錄入,保存,瀏覽,查找,添加,刪除,修改排序,使圖書信息一目了然。</p><p><b&

2、gt;  三、課程設(shè)計目的</b></p><p>  加深對C語言課程所學(xué)知識的理解,進(jìn)一步鞏固C語言語法規(guī)則。學(xué)會編制結(jié)構(gòu)清晰、風(fēng)格良好、數(shù)據(jù)結(jié)構(gòu)適當(dāng)?shù)腃語言程序,從而具備解決綜合性實(shí)際問題的能力,使學(xué)生通過系統(tǒng)分析、系統(tǒng)設(shè)計、編程調(diào)試、,寫實(shí)驗報告等環(huán)節(jié),初步掌握軟件系統(tǒng)設(shè)計的方法和步驟,訓(xùn)練靈活運(yùn)用程序設(shè)計語言進(jìn)行軟件開發(fā)的能力,提高分析問題和解決問題的能力,提高程序設(shè)計水平,培養(yǎng)必要的工程實(shí)

3、踐動手能力。</p><p><b>  四、程序內(nèi)容</b></p><p>  數(shù)據(jù)的錄入 數(shù)據(jù)存儲、數(shù)據(jù)讀寫 數(shù)據(jù)添加</p><p>  數(shù)據(jù)刪除 數(shù)據(jù)查詢 數(shù)據(jù)修改 </p><p&

4、gt;  數(shù)據(jù)排序 數(shù)據(jù)打印</p><p>  五、詳細(xì)設(shè)計及運(yùn)行結(jié)果</p><p><b>  功能模塊的說明</b></p><p>  輸入信息模塊:函數(shù)名為input,分為三個小的模塊,即在程序目錄下創(chuàng)建文件保存數(shù)據(jù)。</p><p> ?、跒g覽模塊:函數(shù)名為scan,分別打印

5、出輸入的:圖書號,圖書名,作者,出版社,出版時間,價格。</p><p> ?、鄄樵兡K:函數(shù)名為search,分為兩個小的模塊,即分別以圖書號(search_num)或圖書名(search_name)查詢。</p><p> ?、芴砑有畔⒛K:函數(shù)名為add,讀出信息,讀入結(jié)構(gòu)體,插入信息后,覆蓋寫入源文件。</p><p> ?、輨h除細(xì)細(xì)模塊:函數(shù)名為del,打

6、開文件讀出信息至結(jié)構(gòu)體后,先查詢并確認(rèn),然后跳過該信息覆蓋寫入源文件。</p><p> ?、扌薷男畔⒛K:函數(shù)名為change,通過strcmp(number,library.book[i].number)檢索出要修改的圖書號,通過scanf分別輸入各成員的值,在通過strcpy將各值覆蓋到原成員的值上,就完成了修改。</p><p>  ⑦ 排序模塊:函數(shù)名為sort,通過比較pric

7、e的大小排序,用for循環(huán)將小的放在前面。</p><p> ?、?main函數(shù):調(diào)用以上各功能模塊,實(shí)現(xiàn)程序功能。</p><p>  六、調(diào)試情況,設(shè)計技巧及體會</p><p> ?、僬{(diào)試情況:經(jīng)過若干次調(diào)試,程序已基本達(dá)到設(shè)計功能要求。</p><p>  ②設(shè)計技巧:通過數(shù)組及字符串的比較實(shí)現(xiàn)函數(shù)功能。</p><

8、;p>  ③心得體會:通過這次課程設(shè)計,我對C語言有了更深刻的了解,增強(qiáng)了程序的編寫能力,鞏固了專業(yè)知識,對程序的模塊化觀念也又模糊逐漸變的清晰了。在程序的運(yùn)行與調(diào)試過程中出現(xiàn)了很多錯誤,通過反復(fù)地復(fù)習(xí)課本上的相關(guān)知識,不停地修改與調(diào)試,我終于完成了這段程序。在調(diào)試過程中,我認(rèn)識到了C語言的靈活性與嚴(yán)謹(jǐn)性,同一個功能可以由不同的語句來實(shí)現(xiàn),但編寫程序時要特別注意細(xì)節(jié)方面的問題,因為一個小小的疏忽就能導(dǎo)致整個程序不能運(yùn)行。當(dāng)然我也認(rèn)

9、識到了自己的薄弱之處,如對鏈表相關(guān)知識的欠缺,文件運(yùn)用的不熟練,在以后的學(xué)習(xí)中我要集中精力,爭取把知識學(xué)得更扎實(shí)、更全面。</p><p> ?、懿蛔慵案倪M(jìn):沒有用到指針及鏈表,是本程序最大的不足,程序也存在其他缺點(diǎn),比如排序是不能按字符進(jìn)行排序,是功能有局限性;使用數(shù)組使程序結(jié)構(gòu)簡單,可用性不強(qiáng)。以后應(yīng)對程序進(jìn)行改進(jìn),比如部分功能用鏈表實(shí)現(xiàn),改進(jìn)排序方案等。</p><p><b&

10、gt;  八、附錄:源代碼</b></p><p>  #include<stdio.h></p><p>  #include<stdlib.h></p><p>  #include<string.h></p><p>  typedef struct </p><p&g

11、t;<b>  {</b></p><p>  char number[10]; /*圖書號*/</p><p>  char name[20]; /*書名*/</p><p>  char writer[20]; /*作者*/</p><p>  char pu

12、blish[50]; /*出版社*/</p><p>  char time[20]; /*出版時間*/</p><p>  float price; /*價格*/</p><p>  }mbook; /*圖書類型標(biāo)識符*/</p><p&

13、gt;  typedef struct </p><p><b>  {</b></p><p>  int count; /*數(shù)量統(tǒng)計*/</p><p>  mbook book[100]; </p><p>  }mlibrary;

14、 </p><p>  mlibrary library;</p><p>  void save()</p><p><b>  {</b></p><p><b>  FILE *fp;</b></p><p>  if((fp=fopen("library.

15、txt","w"))==NULL)</p><p><b>  {</b></p><p>  printf("\n不能保存圖書信息\n");</p><p><b>  return;</b></p><p><b>  }</b&

16、gt;</p><p>  fwrite(&library.count,sizeof(int),1,fp);</p><p>  fwrite(library.book,sizeof(library.book[0]),library.count,fp);</p><p><b>  }</b></p><p> 

17、 void input() /*輸入模塊*/</p><p><b>  { </b></p><p><b>  int y=1;</b></p><p>  system("cls");</p><p><b>  while(y)

18、</b></p><p><b>  { </b></p><p>  printf("\t請輸入您的書籍的書號:");</p><p>  scanf("%s",library.book[library.count].number);</p><p>  printf

19、("\t請輸入書名:");</p><p>  scanf("%s",library.book[library.count].name);</p><p>  printf("\t請輸入作者名:");</p><p>  scanf("%s",library.book[library.c

20、ount].writer);</p><p>  printf("\t請輸入出版社:");</p><p>  scanf("%s",library.book[library.count].publish);</p><p>  printf("\t請輸入出版時間:");</p><p&

21、gt;  scanf("%s",library.book[library.count].time);</p><p>  printf("\t請輸入該書的價格:");</p><p>  fflush(stdin);</p><p>  scanf("%f",&library.book[librar

22、y.count].price);</p><p>  library.count++;</p><p>  printf("\n是否繼續(xù)錄入(1.繼續(xù);0,退出錄入):");</p><p>  fflush(stdin);</p><p>  scanf("%d",&y);</p>

23、<p><b>  if (y!=1)</b></p><p><b>  {</b></p><p><b>  y=0;</b></p><p><b>  break;</b></p><p><b>  }</b>

24、;</p><p><b>  }</b></p><p><b>  save();</b></p><p><b>  }</b></p><p>  void scan() /*輸出模塊*/</p><p>

25、<b>  {</b></p><p><b>  int i;</b></p><p>  system("cls");</p><p>  printf("圖書號\t圖書名\t作者名\t出版社\t出版日期\t圖書價格\n");</p><p>  for

26、(i=0;i<library.count;i++)</p><p><b>  {</b></p><p>  printf("%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].writer,library.book

27、[i].publish,library.book[i].time,library.book[i].price);</p><p><b>  }</b></p><p>  fflush(stdin);</p><p>  getchar();</p><p><b>  }</b></p&g

28、t;<p>  void search() /*查詢模塊*/</p><p><b>  { </b></p><p><b>  int a;</b></p><p>  system("cls"); </p><p>

29、;  printf("\t\t****************************\n");</p><p>  printf("\t\t請輸入查詢方式\n");</p><p>  printf("\t\t1------------按書名查詢\n");</p><p>  printf("\

30、t\t2------------按書號查詢\n");</p><p>  printf("\t\t0------------退出\n");</p><p>  printf("\t\t****************************\n");</p><p>  scanf("%d",&a

31、mp;a);</p><p><b>  switch(a)</b></p><p><b>  {</b></p><p><b>  case 1:</b></p><p>  search_name();</p><p>  break;

32、 </p><p><b>  case 2:</b></p><p>  search_num();</p><p><b>  break;</b></p><p><b>  case 0:</b></p><p><b>  retur

33、n;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  int add() /*添加模塊*/</p><p><b>  {</b></p><p

34、>  int sum=0;</p><p><b>  char a;</b></p><p>  while(a=='y'||a=='Y')</p><p><b>  {</b></p><p>  printf("要添加本新書嗎?y/n\n&qu

35、ot;);</p><p>  scanf("%c",&a);</p><p>  if(a=='n'||a=='N')</p><p><b>  break;</b></p><p><b>  else </b></p>

36、<p>  if(a=='y'||a=='Y')</p><p><b>  {</b></p><p>  library.count++;</p><p><b>  }</b></p><p><b>  else</b><

37、;/p><p>  printf("\n輸入不正確,請重新輸入\n");</p><p><b>  }</b></p><p>  printf("\n新書信息:\n");</p><p><b>  scan();</b></p><p&g

38、t;<b>  input();</b></p><p>  return sum; </p><p><b>  } </b></p><p>  void del() /*刪除模塊*/</p><p><b>  { </

39、b></p><p><b>  int i;</b></p><p>  char number[10];</p><p>  system("cls"); </p><p>  printf("\n請輸入要刪除的圖書號:");</p><p>  

40、fflush(stdin);</p><p>  scanf("%s",number);</p><p>  for (i=0;i<library.count;i++)</p><p><b>  {</b></p><p>  if(strcmp(number,library.book[i].

41、number)==0)</p><p><b>  break;</b></p><p><b>  }</b></p><p>  if (i!=library.count)</p><p><b>  {</b></p><p>  for(;i&

42、lt;library.count-1;i++)</p><p><b>  {</b></p><p>  strcpy(library.book[i].name,library.book[i+1].name);</p><p>  strcpy(library.book[i].number,library.book[i+1].number);

43、</p><p>  strcpy(library.book[i].publish,library.book[i+1].publish);</p><p>  strcpy(library.book[i].writer,library.book[i+1].writer);</p><p>  strcpy(library.book[i].time,library.b

44、ook[i+1].time);</p><p>  library.book[i].price=library.book[i+1].price;</p><p><b>  }</b></p><p>  library.count--;</p><p><b>  }</b></p>

45、<p><b>  else</b></p><p>  printf("\n cannot found!\n");</p><p><b>  save();</b></p><p>  fflush(stdin);</p><p>  getchar();<

46、/p><p><b>  }</b></p><p>  void change() /*修改模塊*/</p><p><b>  {</b></p><p><b>  int i;</b></p><p> 

47、 char number[10];</p><p>  system("cls");</p><p>  printf("\n請輸入要修改的圖書號:");</p><p>  fflush(stdin);</p><p>  scanf("%s",number);</p>

48、<p>  for (i=0;i<library.count;i++)</p><p><b>  {</b></p><p>  if(strcmp(number,library.book[i].number)==0)</p><p><b>  {</b></p><p> 

49、 printf("圖書號\t圖書名\t作者名\t出版社\t出版日期\t圖書價格\n");</p><p>  printf("%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].writer,library.book[i].publish,libra

50、ry.book[i].time,library.book[i].price);</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if (i!=library.count)<

51、;/p><p><b>  {</b></p><p>  mbook book;</p><p>  printf("\n\t\t請輸入修改后此圖書的信息\n");</p><p>  printf("\t請輸入圖書號:");</p><p>  scanf(

52、"%s",book.number);</p><p>  printf("\t請輸入圖書名:");</p><p>  scanf("%s",book.name);</p><p>  printf("\t請輸入作者名:");</p><p>  scanf(&q

53、uot;%s",book.writer);</p><p>  printf("\t請輸入出版社:");</p><p>  scanf("%s",book.publish);</p><p>  printf("\t請輸入出版時間:");</p><p>  scanf(

54、"%s",book.time);</p><p>  printf("\t請輸入該書的價格:");</p><p>  fflush(stdin);</p><p>  scanf("%f",&book.price);</p><p>  strcpy(library.boo

55、k[i].name,book.name);</p><p>  strcpy(library.book[i].number,book.number);</p><p>  strcpy(library.book[i].publish,book.publish);</p><p>  strcpy(library.book[i].writer,book.writer)

56、;</p><p>  strcpy(library.book[i].time,book.time);</p><p>  library.book[i].price=book.price;</p><p><b>  save();</b></p><p><b>  }</b></p>

57、;<p><b>  else</b></p><p>  printf("\n cannot found!\n");</p><p>  fflush(stdin);</p><p>  getchar();</p><p><b>  }</b></p&g

58、t;<p>  void sort() /*排序模塊*/</p><p><b>  {</b></p><p><b>  mbook t;</b></p><p>  int i,j,k;</p><p>  printf(&q

59、uot;\n 圖書排行\(zhòng)n");</p><p>  printf("圖書號\t圖書名\t作者名\t出版社\t出版日期\t圖書價格\n");</p><p>  for(i=0;i<library.count;i++)</p><p><b>  {<

60、/b></p><p><b>  k=i;</b></p><p>  for(j=i+1;j<library.count;j++)</p><p>  if(library.book[i].price>library.book[j].price) k=j;</p><p><b>  if

61、(k!=i)</b></p><p><b>  {</b></p><p>  t=library.book[i];</p><p>  library.book[i]=library.book[k];</p><p>  library.book[k]=t;</p><p><

62、;b>  }</b></p><p><b>  }</b></p><p><b>  scan();</b></p><p><b>  }</b></p><p>  void password() /*密碼

63、*/</p><p><b>  {</b></p><p>  char a[10];</p><p><b>  int i;</b></p><p>  printf("\t\t\t****************************\n");</p>&

64、lt;p>  printf("\t\t\t \n");</p><p>  printf("\t\t\t\t請輸入密碼\n");</p><p>  printf("\t\t\t \n");</p>&l

65、t;p>  printf("\t\t\t****************************\n");</p><p>  printf("\t\t\t\t輸入(學(xué)號):");</p><p>  while(i<=3)</p><p><b>  {</b></p><

66、;p>  scanf("%s",a);</p><p>  if(strcmp(a,"05091043")==0)</p><p><b>  { </b></p><p>  printf("\t\t\t密碼正確\n");</p><p><b&g

67、t;  break;</b></p><p><b>  }</b></p><p><b>  else</b></p><p>  printf("\t\t\t密碼錯誤,請重新輸入:");</p><p><b>  i++;</b><

68、/p><p><b>  }</b></p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p><b>  int a;</b></p>&

69、lt;p><b>  FILE *fp;</b></p><p>  if((fp=fopen("library.txt","r"))==NULL)</p><p><b>  {</b></p><p>  printf("\n不能打開圖書信息庫\n");

70、</p><p>  fp=fopen("library.txt","w+");</p><p>  library.count=0;</p><p>  fwrite(&library.count,sizeof(int),1,fp);</p><p>  fclose(fp);</p&g

71、t;<p><b>  return;</b></p><p><b>  }</b></p><p>  fread(&library.count,sizeof(int),1,fp);</p><p>  fread(library.book,sizeof(library.book[0]),libr

72、ary.count,fp);</p><p>  fclose(fp);</p><p>  password();</p><p><b>  do</b></p><p><b>  {</b></p><p>  printf("\t\t■■■■■■■■■■■

73、■■■■■■■■■■■■■■\n");</p><p>  printf("\t\t┏━━━━━━━━━━━━━━━━━━━━━━━┓\n");</p><p>  printf("\t\t┃ 圖書管理系統(tǒng) ┃\n");</p><p>  printf

74、("\t\t┃ ┃\n");</p><p>  printf("\t\t┃-----------------1:輸入圖書信息---------------┃\n");</p><p>  printf("\t\t┃

75、 ┃\n");</p><p>  printf("\t\t┃-----------------2:查看圖書信息---------------┃\n");</p><p>  printf("\t\t┃ ┃\

76、n");</p><p>  printf("\t\t┃-----------------3:查找圖書-------------------┃\n");</p><p>  printf("\t\t┃ ┃\n");</p><p&g

77、t;  printf("\t\t┃-----------------4:刪除圖書信息---------------┃\n");</p><p>  printf("\t\t┃ ┃\n");</p><p>  printf("\t\t┃--------

78、---------5:添加圖書信息---------------┃\n");</p><p>  printf("\t\t┃ ┃\n");</p><p>  printf("\t\t┃-----------------6:修改圖書信息-------------

79、--┃\n");</p><p>  printf("\t\t┃ ┃\n");</p><p>  printf("\t\t┃-----------------7:圖書排序-------------------┃\n");</p><

80、;p>  printf("\t\t┃ ┃\n");</p><p>  printf("\t\t┃-----------------0:退出圖書信息系統(tǒng)-----------┃\n");</p><p>  printf("\t\t┃

81、 ┃\n");</p><p>  printf("\t\t┗━━━━━━━━━━━━━━━━━━━━━━━┛\n");</p><p>  printf("\t\t■■■■■■■■■■■■■■■■■■■■■■■■■\n");</p><p&g

82、t;  fflush(stdin);</p><p>  scanf("%d",&a);</p><p><b>  switch(a)</b></p><p><b>  {</b></p><p><b>  case 1:</b></p&

83、gt;<p><b>  input();</b></p><p><b>  break;</b></p><p><b>  case 2:</b></p><p><b>  scan();</b></p><p><b> 

84、 break;</b></p><p><b>  case 3:</b></p><p><b>  search();</b></p><p><b>  break;</b></p><p><b>  case 4:</b></p

85、><p><b>  del();</b></p><p><b>  break;</b></p><p><b>  case 5:</b></p><p><b>  add();</b></p><p><b>  b

86、reak;</b></p><p><b>  case 6:</b></p><p><b>  change();</b></p><p><b>  break;</b></p><p><b>  case 7:</b></p&g

87、t;<p><b>  sort();</b></p><p><b>  break;</b></p><p><b>  case 0:</b></p><p>  printf("\n\n退出\n\n");</p><p><b&g

88、t;  break;</b></p><p><b>  default:</b></p><p>  printf("\n序號不對\n");</p><p><b>  }</b></p><p>  }while(a!=0);</p><p&g

溫馨提示

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

評論

0/150

提交評論