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

下載本文檔

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

文檔簡介

1、<p>  課 程 設(shè) 計 報 告</p><p>  課程名稱 面向?qū)ο蟪绦蛟O(shè)計 </p><p>  課題名稱 圖書管理系統(tǒng) </p><p>  專 業(yè) 計算機科學(xué)與技術(shù) </p><p>  一、設(shè)計內(nèi)容與設(shè)計要求</p>&

2、lt;p><b>  1.課程設(shè)計目的:</b></p><p>  面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計是集中實踐性環(huán)節(jié)之一,是學(xué)習(xí)完《面向?qū)ο蟪绦蛟O(shè)計》課程后進行的一次全面的綜合練習(xí)。要求學(xué)生達(dá)到熟練掌握C++語言的基本知識和技能;基本掌握面向?qū)ο蟪绦蛟O(shè)計的思想和方法;能夠利用所學(xué)的基本知識和技能,解決簡單的面向?qū)ο蟪绦蛟O(shè)計問題,從而提高動手編程解決實際問題的能力。</p>&l

3、t;p><b>  2.課題題目</b></p><p>  1)公司庫存管理系統(tǒng)</p><p>  2)高校學(xué)籍管理系統(tǒng)</p><p>  3)高校工資管理系統(tǒng)</p><p>  4)高校人事管理系統(tǒng)</p><p><b>  5)通訊錄程序設(shè)計</b><

4、;/p><p>  6)學(xué)生成績管理系統(tǒng)</p><p><b>  7) 圖書管理系統(tǒng)</b></p><p>  8)文本編輯器的設(shè)計與實現(xiàn)</p><p>  9)學(xué)生考勤管理系統(tǒng)</p><p>  10)公司人員管理系統(tǒng)</p><p><b>  3.設(shè)計

5、要求:</b></p><p> ?、?設(shè)計課題題目:每位同學(xué)根據(jù)自己學(xué)號除以9所得的余數(shù)加一選擇相應(yīng)題號的課題。換題者不記成績。(課題10只做為參考課題)</p><p>  ⑵ 根據(jù)自己對應(yīng)的課題完成以下主要工作:①完成系統(tǒng)需求分析:包括系統(tǒng)設(shè)計目的與意義;系統(tǒng)功能需求(系統(tǒng)流程圖);輸入輸出的要求。②完成系統(tǒng)總體設(shè)計:包括系統(tǒng)功能分析;系統(tǒng)功能模塊劃分與設(shè)計(系統(tǒng)功能模塊

6、圖)。③完成系統(tǒng)詳細(xì)設(shè)計:包括數(shù)據(jù)庫需求分析;數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(E-R圖);數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計;類層次圖;界面設(shè)計與各功能模塊實現(xiàn)。④系統(tǒng)調(diào)試:調(diào)試出現(xiàn)的主要問題,編譯語法錯誤及修改,重點是運行邏輯問題修改和調(diào)整。⑤使用說明書及編程體會:說明如何使用你編寫的程序,詳細(xì)列出每一步的操作步驟。⑥關(guān)鍵源程序(帶注釋)</p><p> ?、?按規(guī)定格式完成課程設(shè)計報告,將其打印稿(A4紙)上交給老師存檔。</p

7、><p> ?、?不得抄襲他人程序、課程設(shè)計報告,每個人應(yīng)體現(xiàn)自己的個性設(shè)計。</p><p><b>  二、進度安排</b></p><p>  第 18 周 星期一 8:00——12:00</p><p>  星期二 8:00——12:00</p><p>  星期四 8:00——12:

8、00</p><p>  第 19 周 星期一 8:00——12:00</p><p>  星期二 14:00——18:00</p><p>  星期三 8:00——12:00</p><p><b>  三、參考書籍</b></p><p>  1.《C++程序設(shè)計課程設(shè)計》 劉振安編

9、著 TP312C563</p><p>  2.《C++ Builder和Delphi課程設(shè)計與系統(tǒng)開發(fā)案例》 伍俊良 清華大學(xué)出版社 7-302-06072-X </p><p>  3.Visual C++課程設(shè)計案例精編 嚴(yán)華峰 中國水利水電出版社 7-5084-2007-1 2004 </p><p>  4.Visual C++課程設(shè)計與系統(tǒng)

10、開發(fā)案例 伍俊良 清華大學(xué)出版社 7-302-05968-3 2002</p><p>  5.Visual C++語言課程設(shè)計 : 案例精選與編程指導(dǎo) 陳清華朱紅 東南大學(xué)出版社 7-81089-275-4 2003 </p><p>  6.VisualC++課程設(shè)計案例精編 中國水利水電出版社 7-5084-1004-1 2002 </p>&

11、lt;p>  7.數(shù)據(jù)結(jié)構(gòu)課程設(shè)計案例精編 : 用C/C++描述 李建學(xué)李光元吳春芳 清華大學(xué)出版社 7-302-14536-9 2007 </p><p> ?。ň幊唐脚_不限,vc++, c++ Builder等等。)</p><p>  課題8:圖書管理系統(tǒng)</p><p>  (一)、課程設(shè)計題目:</p><p>&

12、lt;b>  圖書管理系統(tǒng)</b></p><p> ?。ǘ⒛康呐c要求: </p><p><b>  1、目的: </b></p><p> ?。?)要求學(xué)生達(dá)到熟練掌握C++語言的基本知識和技能; </p><p> ?。?)基本掌握面向?qū)ο蟪绦蛟O(shè)計的基本思路和方法; </p>&

13、lt;p> ?。?)能夠利用所學(xué)的基本知識和技能,解決簡單的面向?qū)ο蟪绦蛟O(shè)計問題。 </p><p><b>  2、基本要求: </b></p><p> ?。?)要求利用面向?qū)ο蟮姆椒ㄒ约癈++的編程思想來完成系統(tǒng)的設(shè)計; </p><p>  (2)要求在設(shè)計的過程中,建立清晰的類層次; </p><p> 

14、 (3)在系統(tǒng)中至少要定義四個類,每個類中要有各自的屬性和方法; </p><p> ?。?)在系統(tǒng)的設(shè)計中,至少要用到面向?qū)ο蟮囊环N機制。 </p><p><b>  3、創(chuàng)新要求: </b></p><p>  在基本要求達(dá)到后,可進行創(chuàng)新設(shè)計,如根據(jù)查找結(jié)果進行修改的功能。 </p><p>  4、寫出設(shè)計說明

15、書 </p><p> ?。ㄈ⒃O(shè)計方法和基本原理: </p><p>  1、問題描述(功能要求): </p><p>  在圖書管理系統(tǒng)中,要為每個借閱者建立一個賬戶,并給借閱者發(fā)放借閱卡(借閱卡可以提供借閱卡號、借閱者名),賬戶中存儲借閱者的個人信息、借閱信息以及預(yù)定信息。持有借閱卡的借閱者可以借閱書刊、返還書刊、查詢書刊信息、預(yù)定書刊并取消預(yù)定,但這些操作

16、都是通過圖書管理員進行的,也即借閱者不直接與系統(tǒng)交互,而是圖書管理員充當(dāng)借閱者的代理與系統(tǒng)交互。在借閱書刊時,需要輸入所借閱的書刊名,書刊的ISBN/ISSN號,然后輸入借閱者的圖書卡號和借閱者名,完成后提交所填表格,系統(tǒng)驗證借閱者是否有效(在系統(tǒng)中存在賬戶),若有效,借閱請求被接受,系統(tǒng)查詢數(shù)據(jù)庫系統(tǒng),看借閱者所借閱的書刊是否存在,若存在,則借閱者可借出書刊,建立并在系統(tǒng)中存儲借閱記錄。借閱者還書后,刪除關(guān)于所還書刊的借閱記錄。如果借

17、閱者所借的書刊已被借出,借閱者還可預(yù)定該書刊,一旦借閱者預(yù)定的書刊可以獲得,就將書刊直接寄給預(yù)定人(為了簡化系統(tǒng),預(yù)定書刊可獲得時就不通知借閱者了)。另外,為了簡化系統(tǒng),也不考慮書刊的最長借閱期限,假設(shè)借閱者可以無限期地保存所借閱的書刊。 </p><p>  2、問題的解決方案: </p><p>  根據(jù)系統(tǒng)功能要求,可以將問題解決分為以下步驟: </p><p&

18、gt; ?。?)應(yīng)用系統(tǒng)分析,建立該系統(tǒng)的功能模塊框圖以及界面的組織和設(shè)計;</p><p> ?。?)分析系統(tǒng)中的各個實體及它們之間的關(guān)系包括屬性和行為; </p><p>  (3)根據(jù)問題描述,設(shè)計系統(tǒng)的類層次; </p><p> ?。?)完成類層次中各個類的描述(包括屬性和方法); </p><p> ?。?)完成類中各個成員函數(shù)的

19、定義; </p><p> ?。?)完成系統(tǒng)的應(yīng)用模塊; </p><p><b> ?。?)功能調(diào)試; </b></p><p>  (8)完成系統(tǒng)總結(jié)報告以及系統(tǒng)使用說明書</p><p><b>  目 錄</b></p><p>  1. 系統(tǒng)需求分析……………

20、………………………………….8</p><p>  1.1系統(tǒng)設(shè)計的目的與意義…………………………………………………….8</p><p>  1.2系統(tǒng)功能需求……………………………………..…………………………..8</p><p>  2. 總體設(shè)計………………...…………………………………..8</p><p>  2.1系統(tǒng)功

21、能分析………………………………………………..………………..8</p><p>  2.2系統(tǒng)功能模塊劃分與設(shè)計…………………………….……..…………….…8</p><p>  2.3系統(tǒng)功能模塊圖………………………………………….…...……………....9</p><p>  3. 詳細(xì)設(shè)計...…………………………………………………..9</p

22、><p>  3.1讀者類的設(shè)計……………………………………………………………....…9</p><p>  3.2讀者庫類的設(shè)計…………………………………………………………......10</p><p>  3.3圖書類的設(shè)計………………………………………………………..........10</p><p>  3.4圖書庫類的設(shè)計…………

23、……………………………..…………...….....11</p><p>  4. 系統(tǒng)調(diào)試………………………………………………...……………………………..11</p><p>  5. 結(jié)果分析………………………………………...……..…..13</p><p>  6. 總結(jié)………………………………………………………....14</p&g

24、t;<p>  6.1感想與體會……………………………………………………………….…..14</p><p>  7. 附錄……………………………………………………....…14 </p><p>  7.1源程序清單………………………………………………………..…...……...14</p><p><b>  系統(tǒng)需求分析<

25、;/b></p><p>  1.1系統(tǒng)設(shè)計的目的與意義:</p><p>  圖書系統(tǒng)在生活中運用相當(dāng)廣泛,因此需要很多程序?qū)λM行管理。</p><p>  1.2 系統(tǒng)功能需求:</p><p>  本系統(tǒng)有四個類,Book類,BDatebase類、Reader類、RDatebase類,存儲借閱者的個人信息、借閱信息以及預(yù)定信息。

26、持有借閱卡的借閱者可以借閱書刊、返還書刊、查詢書刊信息、預(yù)定書刊并取消預(yù)定等功能。</p><p><b>  總體設(shè)計</b></p><p>  2.1 系統(tǒng)功能分析:</p><p>  系統(tǒng)通過調(diào)用函數(shù)來實現(xiàn)刪除圖書、讀者信息,添加圖書、讀者信息等功能。delbook( )函數(shù)用于刪除圖書信息;addbook( )函數(shù)用于增加圖書信息;

27、borrowbook( )函數(shù)用于實現(xiàn)借書操作;returnbook( )函數(shù)用于實現(xiàn)還書操作等等;主函數(shù)用于掉用這些函數(shù)。</p><p>  2.2系統(tǒng)功能模塊劃分與設(shè)計</p><p>  本系統(tǒng)定義了Book類、BDatebase類、Reader類、RDatebase類這四個類,定義了addbook ( )、addreader( )、borrowbook ( )、setname(

28、)等函數(shù)來實現(xiàn)系統(tǒng)所需功能。</p><p>  2.3 系統(tǒng)功能模塊圖:</p><p><b>  詳細(xì)設(shè)計</b></p><p>  3.1 讀者類的設(shè)計</p><p>  該類定義了借書操作,還書操作,設(shè)置讀者姓名等功能。</p><p><b>  圖 3.1</b&

29、gt;</p><p>  3.2 讀者庫類類的設(shè)計</p><p>  該類實現(xiàn)了建立讀者的個人資料,刪除讀者信息,輸出讀者信息等功能。</p><p><b>  圖 3.2</b></p><p>  3.3 圖書類的設(shè)計</p><p>  圖書類,可以實現(xiàn)對圖書的描述,圖書的編號,書名,

30、借出,還入等操作。</p><p><b>  圖 3.3</b></p><p>  3.4 圖書庫類的設(shè)計</p><p><b>  圖 3.4</b></p><p><b>  系統(tǒng)調(diào)試</b></p><p>  在調(diào)試過程中,出現(xiàn)了一些錯誤

31、。</p><p>  1、輸入數(shù)據(jù)時,輸錯了數(shù)據(jù)的類型會造成死循環(huán),因此輸入時需要注意。</p><p>  2、一開始主界面輸入非正確數(shù)字時,沒有提示錯誤。容易造成用戶誤解</p><p><b>  圖4.1</b></p><p>  在主函數(shù)的switch語句結(jié)束處加上default:cout<<&

32、quot;輸入錯誤,請從新輸入:";就可以了,修改后:</p><p><b>  圖4.2 </b></p><p><b>  具體調(diào)試過程。</b></p><p><b>  主界面</b></p><p><b>  圖4.3</b>

33、</p><p><b>  圖書維護</b></p><p><b>  圖4.4</b></p><p><b>  讀者維護</b></p><p><b>  圖4.1</b></p><p><b>  5.結(jié)果

34、分析</b></p><p>  本程序總共設(shè)計了四個類,滿足了課題對類的要求,在設(shè)計的過程中,建立了較為清晰的類層次,也利用了面向?qū)ο蟮姆椒ㄒ约癈++的編程思想來完成系統(tǒng)的設(shè)計,做到了每個借閱者建立一個賬戶,賬戶中存儲借閱者的個人信息、借閱信息等要求。而且界面美觀,容易操作。但是程序太長,不夠簡練,導(dǎo)致出現(xiàn)錯誤很難發(fā)現(xiàn)和修改。</p><p><b>  總結(jié)<

35、;/b></p><p>  6.1 感想和體會:</p><p>  通過這次的課程設(shè)計,讓我充分的感覺到了要自己設(shè)計一個程序是多么的難,以及學(xué)習(xí)好c++是多么的重要。</p><p>  在這個程序的設(shè)計過程中,我清楚的意識到自己的水平有多么的薄弱,課程的知識學(xué)得有多么的不扎實??淳W(wǎng)上的例子好像覺得也沒那么難,自己一上機實際操作就出現(xiàn)了很多問題,調(diào)試的時候

36、系統(tǒng)總是在報錯,還有很多警告,每增加一個函數(shù)就要調(diào)試好久,有時候應(yīng)為少了一個大括號或是分號,導(dǎo)致要找很久很久。雖然系統(tǒng)可以運行,也具有了一些基本的功能,但我意識到了自己有太多的不足。</p><p>  以后還會有很多的課程設(shè)計,一定要吸取這次的教訓(xùn),把知識學(xué)懂學(xué)透學(xué)精,真正的為我所用,這樣走上社會我才能真正的發(fā)揮所長。</p><p><b>  7、附錄</b>&

37、lt;/p><p>  7.1 源程序清單:</p><p>  #include <iostream> </p><p>  #include <iomanip> </p><p>  #include <string> </p><p>  #include <fstream&

38、gt;</p><p>  using namespace std; </p><p>  const int Maxr=100;</p><p>  const int Maxb=100;</p><p>  const int Maxbor=5;</p><p>  class Reader </p>

39、<p><b>  { </b></p><p><b>  private: </b></p><p><b>  int tag; </b></p><p><b>  int no; </b></p><p>  char name[10

40、];</p><p>  int borbook[Maxbor]; </p><p><b>  public: </b></p><p>  Reader() {} </p><p>  char *getname() {return name;} </p><p>  int gettag()

41、 {return tag;} </p><p>  int getno() {return no;} </p><p>  void setname(char na[]) </p><p><b>  { </b></p><p>  strcpy(name,na); </p><p><

42、b>  } </b></p><p>  void delbook(){ tag=1; }</p><p>  void addreader(int n,char *na)</p><p><b>  { </b></p><p><b>  tag=0; </b></p&g

43、t;<p><b>  no=n; </b></p><p>  strcpy(name,na); </p><p>  for(int i=0;i<Maxbor;i++) </p><p>  borbook[i]=0; </p><p><b>  } </b></p&

44、gt;<p>  void borrowbook(int bookid)</p><p><b>  { </b></p><p>  for(int i=0;i<Maxbor;i++) </p><p><b>  { </b></p><p>  if (borbook[i]

45、==0) </p><p><b>  { </b></p><p>  borbook[i]=bookid; </p><p><b>  return; </b></p><p><b>  } </b></p><p><b>  } &

46、lt;/b></p><p><b>  } </b></p><p>  int retbook(int bookid)</p><p><b>  { </b></p><p>  for(int i=0;i<Maxbor;i++) </p><p><

47、b>  { </b></p><p>  if(borbook[i]==bookid) </p><p><b>  { </b></p><p>  borbook[i]=0; </p><p>  return 1; </p><p><b>  } </b&

48、gt;</p><p><b>  } </b></p><p>  return 0; </p><p><b>  } </b></p><p>  void disp()</p><p><b>  { </b></p><p&

49、gt;  cout << setw(5) << no <<setw(10) << name<<"借書編號:["; </p><p>  for(int i=0;i<Maxbor;i++) </p><p>  if(borbook[i]!=0) </p><p>  cout &l

50、t;< borbook[i] << "|"; </p><p>  cout << "]"<<endl; </p><p><b>  } </b></p><p><b>  }; </b></p><p>  cl

51、ass RDatabase </p><p><b>  { </b></p><p><b>  private: </b></p><p><b>  int top; </b></p><p>  Reader read[Maxr];</p><p&g

52、t;<b>  public: </b></p><p>  RDatabase() </p><p><b>  { </b></p><p>  Reader s; </p><p><b>  top=-1; </b></p><p>  fstr

53、eam file("reader.txt",ios::in); </p><p>  while (1) </p><p><b>  { </b></p><p>  file.read((char *)&s,sizeof(s)); </p><p>  if (!file)break; &

54、lt;/p><p><b>  top++; </b></p><p>  read[top]=s; </p><p><b>  } </b></p><p>  file.close(); </p><p><b>  } </b></p>

55、<p>  void clear()</p><p><b>  { </b></p><p><b>  top=-1; </b></p><p><b>  } </b></p><p>  int addreader(int n,char *na)</p

56、><p><b>  { </b></p><p>  Reader *p=query(n); </p><p>  if (p==NULL) </p><p><b>  { </b></p><p><b>  top++; </b></p>

57、<p>  read[top].addreader(n,na); </p><p>  return 1; </p><p><b>  } </b></p><p>  return 0; </p><p><b>  } </b></p><p>  Rea

58、der *query(int readerid)</p><p><b>  { </b></p><p>  for (int i=0;i<=top;i++) </p><p>  if (read[i].getno()==readerid && </p><p>  read[i].gettag

59、()==0) </p><p><b>  { </b></p><p>  return &read[i]; </p><p><b>  } </b></p><p>  return NULL; </p><p><b>  } </b>&

60、lt;/p><p>  void disp() </p><p><b>  { </b></p><p>  for (int i=0;i<=top;i++) </p><p>  read[i].disp(); </p><p><b>  } </b></p&g

61、t;<p>  void readerdata();</p><p>  ~RDatabase()</p><p><b>  { </b></p><p>  fstream file("reader.txt",ios::out); </p><p>  for (int i=0;i&

62、lt;=top;i++) </p><p>  if (read[i].gettag()==0) </p><p>  file.write((char *)&read[i],sizeof(read[i])); </p><p>  file.close(); </p><p><b>  } </b></

63、p><p><b>  }; </b></p><p>  void RDatabase::readerdata() </p><p><b>  { </b></p><p>  char choice; </p><p>  char rname[20]; </p>

64、;<p>  int readerid; </p><p>  Reader *r; </p><p>  while (choice!='0') </p><p><b>  { </b></p><p>  cout <<"\n\n\t\t\t讀 者 維 護\n\n

65、\n\t\t 1 新 增\n\n\t\t 2 更 改\n\n\t\t 3 刪 除\n\n\t\t 4 查 找\n\n\t\t 5 顯 示\n\n\t\t 6 全 刪\n\n\t\t 0 退 出"<<endl; </p><p>  cin >> choice; </p><p>  switch (choice) </p><p>

66、<b>  { </b></p><p>  case '1': </p><p>  cout << "輸入讀者編號:"; </p><p>  cin >> readerid; </p><p>  cout << "輸入讀者姓名:&q

67、uot;; </p><p>  cin >> rname; </p><p>  addreader (readerid,rname); </p><p><b>  break; </b></p><p>  case '2': </p><p>  cout &l

68、t;< "輸入讀者編號:"; </p><p>  cin >> readerid; </p><p>  r=query(readerid); </p><p>  if (r==NULL) </p><p><b>  { </b></p><p>  c

69、out << " 該讀者不存在 "<<endl; </p><p><b>  break; </b></p><p><b>  } </b></p><p>  cout << "輸入新的姓名:"; </p><p> 

70、 cin >> rname; </p><p>  r->setname(rname); </p><p><b>  break; </b></p><p>  case '3': </p><p>  cout << " 輸入讀者編號:"; </

71、p><p>  cin >> readerid; </p><p>  r=query(readerid); </p><p>  if (r==NULL) </p><p><b>  { </b></p><p>  cout <<" 該讀者不存在" &

72、lt;< endl; </p><p><b>  break; </b></p><p><b>  } </b></p><p>  r->delbook(); </p><p><b>  break; </b></p><p>  c

73、ase '4': </p><p>  cout << "讀入讀者編號:"; </p><p>  cin >> readerid; </p><p>  r=query(readerid); </p><p>  if (r==NULL) </p><p>

74、<b>  { </b></p><p>  cout <<"該讀者不存在"<< endl; </p><p><b>  break; </b></p><p><b>  } </b></p><p>  r->disp()

75、; </p><p><b>  break; </b></p><p>  case '5': </p><p><b>  disp(); </b></p><p><b>  break; </b></p><p>  case &

76、#39;6': </p><p><b>  clear(); </b></p><p><b>  break; </b></p><p>  default:cout<<"輸入錯誤,請從新輸入:";break; </p><p><b>  }

77、</b></p><p><b>  } </b></p><p><b>  } </b></p><p>  class Book </p><p><b>  { </b></p><p><b>  private: <

78、;/b></p><p><b>  int tag;</b></p><p><b>  int no;</b></p><p>  char name[20];</p><p>  int onshelf; </p><p><b>  public: &

79、lt;/b></p><p><b>  Book(){} </b></p><p>  char *getname() { return name; }</p><p>  int getno(){ return no; }</p><p>  int gettag(){ return tag; }</p&

80、gt;<p>  void setname(char na[]) </p><p><b>  { </b></p><p>  strcpy(name,na); </p><p><b>  } </b></p><p>  void delbook(){ tag=1;} </

81、p><p>  void addbook(int n,char *na)</p><p><b>  { </b></p><p><b>  tag=0; </b></p><p><b>  no=n; </b></p><p>  strcpy(nam

82、e,na); </p><p>  onshelf=1; </p><p><b>  } </b></p><p>  int borrowbook()</p><p><b>  { </b></p><p>  if (onshelf==1) </p>&

83、lt;p><b>  { </b></p><p>  onshelf=0; </p><p>  return 1; </p><p><b>  } </b></p><p>  return 0; </p><p><b>  } </b>&

84、lt;/p><p>  void retbook()</p><p><b>  { </b></p><p>  onshelf=1; </p><p><b>  } </b></p><p>  void disp()</p><p><b&g

85、t;  { </b></p><p>  cout << setw(6) << no << setw(18) << name << setw(10) </p><p>  <<(onshelf==1? "在架":"已借") <<endl; </p&g

86、t;<p><b>  } </b></p><p><b>  }; </b></p><p>  class BDatabase </p><p><b>  { </b></p><p><b>  private: </b></

87、p><p>  int top; </p><p>  Book book[Maxb]; </p><p><b>  public: </b></p><p>  BDatabase()</p><p><b>  { </b></p><p><

88、;b>  Book b; </b></p><p><b>  top=-1; </b></p><p>  fstream file("book.txt",ios::in); </p><p>  while (1) </p><p><b>  { </b>

89、</p><p>  file.read((char *)&b,sizeof(b)); </p><p>  if (!file) break; </p><p><b>  top++; </b></p><p>  book[top]=b; </p><p><b>  }

90、</b></p><p>  file.close(); </p><p><b>  } </b></p><p>  void clear()</p><p><b>  { </b></p><p><b>  top=-1; </b>

91、</p><p><b>  } </b></p><p>  int addbook(int n,char *na)</p><p><b>  { </b></p><p>  Book *p=query(n); </p><p>  if (NULL==p) </

92、p><p><b>  { </b></p><p><b>  top++; </b></p><p>  book[top].addbook(n,na); </p><p>  return 1; </p><p><b>  } </b></p&

93、gt;<p>  return 0; </p><p><b>  } </b></p><p>  Book *query(int bookid)</p><p><b>  { </b></p><p>  for (int i=0;i<=top;i++) </p>

94、;<p>  if (book[i].getno()==bookid &&book[i].gettag()==0) </p><p><b>  { </b></p><p>  return &book[i]; </p><p><b>  } </b></p><

95、;p>  return NULL; </p><p><b>  } </b></p><p>  void bookdata();</p><p>  void disp() </p><p><b>  { </b></p><p>  for (int i=0;i

96、<=top;i++) </p><p>  if (book[i].gettag()==0) </p><p>  book[i].disp(); </p><p><b>  } </b></p><p>  ~BDatabase()</p><p><b>  { </b

97、></p><p>  fstream file("book.txt",ios::out); </p><p>  for (int i=0;i<=top;i++) </p><p>  if (book[i].gettag()==0) </p><p>  file.write((char *)&bo

98、ok[i],sizeof(book[i])); </p><p>  file.close(); </p><p><b>  } </b></p><p><b>  }; </b></p><p>  void BDatabase::bookdata() </p><p>

99、;<b>  { </b></p><p>  char choice; </p><p>  char bname[40]; </p><p>  int bookid; </p><p><b>  Book *b; </b></p><p>  while (choic

100、e!='0') </p><p><b>  { </b></p><p>  cout <<"\n\n\n\t\t\t圖 書 維 護 "<<endl<<endl; </p><p>  cout<<"\t\t1 新 增\n \t\t2 更 改\n\t

101、\t3 刪 除\n\t\t4 查 找\n\t\t5 顯 示\n\t\t6 全 刪\n\t\t0 退 出"<<endl; </p><p>  cin >> choice; </p><p>  switch (choice) </p><p><b>  { </b></p><p> 

102、 case '1': </p><p>  cout << "輸入圖書編號:"<<endl; </p><p>  cin >> bookid; </p><p>  cout << "輸入圖書書名:"<<endl; </p><p

103、>  cin >> bname; </p><p>  addbook(bookid,bname); </p><p><b>  break; </b></p><p>  case '2': </p><p>  cout << "輸入圖書編號:"&l

104、t;<endl; </p><p>  cin >> bookid; </p><p>  b=query(bookid); </p><p>  if (b==NULL) </p><p><b>  { </b></p><p>  cout << "

105、該圖書不存在 "<<endl; </p><p><b>  break; </b></p><p><b>  } </b></p><p>  cout << "輸入新的書名:"<<endl; </p><p>  cin >

106、;> bname; </p><p>  b->setname(bname); </p><p><b>  break; </b></p><p>  case '3': </p><p>  cout <<" 讀入圖書編號:"<<endl; &l

107、t;/p><p>  cin >> bookid; </p><p>  b=query(bookid); </p><p>  if (b==NULL) </p><p><b>  { </b></p><p>  cout <<" 該圖書不存在" &l

108、t;< endl; </p><p><b>  break; </b></p><p><b>  } </b></p><p>  b->delbook(); </p><p><b>  break; </b></p><p>  ca

109、se '4': </p><p>  cout << " 讀入圖書編號:"<<endl; </p><p>  cin >> bookid; </p><p>  b=query(bookid); </p><p>  if (b==NULL) </p>&

110、lt;p><b>  { </b></p><p>  cout <<" 該圖書不存在"<< endl; </p><p><b>  break; </b></p><p><b>  } </b></p><p>  b-&

111、gt;disp(); </p><p><b>  break; </b></p><p>  case '5': </p><p><b>  disp(); </b></p><p><b>  break; </b></p><p>

112、;  case '6': </p><p><b>  clear(); </b></p><p><b>  break; </b></p><p>  default:cout<<"輸入錯誤,請從新輸入:"; </p><p><b> 

113、 } </b></p><p><b>  } </b></p><p><b>  } </b></p><p>  void main() </p><p><b>  { </b></p><p>  char choice; <

114、/p><p>  int bookid,readerid; </p><p>  RDatabase ReaderDB; </p><p>  Reader *r; </p><p>  BDatabase BookDB; </p><p><b>  Book *b; </b></p>

115、<p>  while(choice!='0') </p><p><b>  { </b></p><p>  cout <<endl<<endl<<"\t\t\t 圖 書 管 理 系 統(tǒng)\n\n\n"; </p><p>  cout <<&qu

116、ot;\t\t\t1 借 書\n\n\t\t\t2 還 書 \n\n\t\t\t3 圖 書 維 護\n\n\t\t\t4 讀 者 維 護\n\n\t\t\t0 離 開"<<endl; </p><p>  cin >> choice; </p><p>  switch (choice) </p><p><b>  {

117、</b></p><p>  case '1': </p><p>  cout <<" 借書 讀者編號:"; </p><p>  cin >>readerid; </p><p>  cout <<" 圖書編號: "; </p&g

118、t;<p>  cin >>bookid; </p><p>  r=ReaderDB.query(readerid);</p><p>  if (NULL==r) </p><p><b>  { </b></p><p>  cout <<" 不存在該讀者,不能借書&

119、quot;<< endl; </p><p><b>  break; </b></p><p><b>  } </b></p><p>  b=BookDB.query(bookid); </p><p>  if (b==NULL) </p><p><

120、;b>  { </b></p><p>  cout <<" 不存在該圖書,不能借書"<< endl; </p><p><b>  break; </b></p><p><b>  } </b></p><p>  if (b->

121、;borrowbook()==0) </p><p><b>  { </b></p><p>  cout << " 該圖書已借出,不能借書"<< endl; </p><p><b>  break; </b></p><p><b>  }

122、 </b></p><p>  r->borrowbook(b->getno()); </p><p><b>  break; </b></p><p>  case '2': </p><p>  cout<<"還書\n 讀者編號:"; <

123、/p><p>  cin >>readerid; </p><p>  cout << " 圖書編號:"; </p><p>  cin >>bookid; </p><p>  r=ReaderDB.query(readerid); </p><p>  if (r

124、==NULL) </p><p><b>  { </b></p><p>  cout <<" 不存在該讀者,不能還書" << endl; </p><p><b>  break; </b></p><p><b>  } </b>

125、;</p><p>  b=BookDB.query(bookid); </p><p>  if (b==NULL) </p><p><b>  { </b></p><p>  cout <<" 不存在該圖書,不能還書" <<endl; </p><p

126、><b>  break; </b></p><p><b>  } </b></p><p>  b->retbook(); </p><p>  r->retbook(b->getno()); </p><p><b>  break; </b>&l

127、t;/p><p>  case '3': </p><p>  BookDB.bookdata(); </p><p><b>  break; </b></p><p>  case '4': </p><p>  ReaderDB.readerdata(); <

128、;/p><p><b>  break; </b></p><p>  default:cout<<"輸入錯誤,請從新輸入:"; </p><p><b>  } </b></p><p><b>  } </b></p><p&

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論