版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 課 程 設(shè) 計(jì) 報(bào) 告</p><p> 課程名稱 面向?qū)ο蟪绦蛟O(shè)計(jì) </p><p> 課題名稱 圖書管理系統(tǒng) </p><p> 專 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) </p><p> 一、設(shè)計(jì)內(nèi)容與設(shè)計(jì)要求</p>&
2、lt;p><b> 1.課程設(shè)計(jì)目的:</b></p><p> 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)是集中實(shí)踐性環(huán)節(jié)之一,是學(xué)習(xí)完《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程后進(jìn)行的一次全面的綜合練習(xí)。要求學(xué)生達(dá)到熟練掌握C++語言的基本知識(shí)和技能;基本掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的思想和方法;能夠利用所學(xué)的基本知識(shí)和技能,解決簡單的面向?qū)ο蟪绦蛟O(shè)計(jì)問題,從而提高動(dòng)手編程解決實(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è)計(jì)</b><
4、;/p><p> 6)學(xué)生成績管理系統(tǒng)</p><p><b> 7) 圖書管理系統(tǒng)</b></p><p> 8)文本編輯器的設(shè)計(jì)與實(shí)現(xiàn)</p><p> 9)學(xué)生考勤管理系統(tǒng)</p><p> 10)公司人員管理系統(tǒng)</p><p><b> 3.設(shè)計(jì)
5、要求:</b></p><p> ?、?設(shè)計(jì)課題題目:每位同學(xué)根據(jù)自己學(xué)號(hào)除以9所得的余數(shù)加一選擇相應(yīng)題號(hào)的課題。換題者不記成績。(課題10只做為參考課題)</p><p> ?、?根據(jù)自己對(duì)應(yīng)的課題完成以下主要工作:①完成系統(tǒng)需求分析:包括系統(tǒng)設(shè)計(jì)目的與意義;系統(tǒng)功能需求(系統(tǒng)流程圖);輸入輸出的要求。②完成系統(tǒng)總體設(shè)計(jì):包括系統(tǒng)功能分析;系統(tǒng)功能模塊劃分與設(shè)計(jì)(系統(tǒng)功能模塊
6、圖)。③完成系統(tǒng)詳細(xì)設(shè)計(jì):包括數(shù)據(jù)庫需求分析;數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(jì)(E-R圖);數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì);類層次圖;界面設(shè)計(jì)與各功能模塊實(shí)現(xiàn)。④系統(tǒng)調(diào)試:調(diào)試出現(xiàn)的主要問題,編譯語法錯(cuò)誤及修改,重點(diǎn)是運(yùn)行邏輯問題修改和調(diào)整。⑤使用說明書及編程體會(huì):說明如何使用你編寫的程序,詳細(xì)列出每一步的操作步驟。⑥關(guān)鍵源程序(帶注釋)</p><p> ?、?按規(guī)定格式完成課程設(shè)計(jì)報(bào)告,將其打印稿(A4紙)上交給老師存檔。</p
7、><p> ?、?不得抄襲他人程序、課程設(shè)計(jì)報(bào)告,每個(gè)人應(yīng)體現(xiàn)自己的個(gè)性設(shè)計(jì)。</p><p><b> 二、進(jìn)度安排</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è)計(jì)課程設(shè)計(jì)》 劉振安編
9、著 TP312C563</p><p> 2.《C++ Builder和Delphi課程設(shè)計(jì)與系統(tǒng)開發(fā)案例》 伍俊良 清華大學(xué)出版社 7-302-06072-X </p><p> 3.Visual C++課程設(shè)計(jì)案例精編 嚴(yán)華峰 中國水利水電出版社 7-5084-2007-1 2004 </p><p> 4.Visual C++課程設(shè)計(jì)與系統(tǒng)
10、開發(fā)案例 伍俊良 清華大學(xué)出版社 7-302-05968-3 2002</p><p> 5.Visual C++語言課程設(shè)計(jì) : 案例精選與編程指導(dǎo) 陳清華朱紅 東南大學(xué)出版社 7-81089-275-4 2003 </p><p> 6.VisualC++課程設(shè)計(jì)案例精編 中國水利水電出版社 7-5084-1004-1 2002 </p>&
11、lt;p> 7.數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)案例精編 : 用C/C++描述 李建學(xué)李光元吳春芳 清華大學(xué)出版社 7-302-14536-9 2007 </p><p> ?。ň幊唐脚_(tái)不限,vc++, c++ Builder等等。)</p><p> 課題8:圖書管理系統(tǒng)</p><p> ?。ㄒ唬⒄n程設(shè)計(jì)題目:</p><p>&
12、lt;b> 圖書管理系統(tǒng)</b></p><p> ?。ǘ?、目的與要求: </p><p><b> 1、目的: </b></p><p> ?。?)要求學(xué)生達(dá)到熟練掌握C++語言的基本知識(shí)和技能; </p><p> ?。?)基本掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思路和方法; </p>&
13、lt;p> ?。?)能夠利用所學(xué)的基本知識(shí)和技能,解決簡單的面向?qū)ο蟪绦蛟O(shè)計(jì)問題。 </p><p><b> 2、基本要求: </b></p><p> ?。?)要求利用面向?qū)ο蟮姆椒ㄒ约癈++的編程思想來完成系統(tǒng)的設(shè)計(jì); </p><p> ?。?)要求在設(shè)計(jì)的過程中,建立清晰的類層次; </p><p>
14、?。?)在系統(tǒng)中至少要定義四個(gè)類,每個(gè)類中要有各自的屬性和方法; </p><p> (4)在系統(tǒng)的設(shè)計(jì)中,至少要用到面向?qū)ο蟮囊环N機(jī)制。 </p><p><b> 3、創(chuàng)新要求: </b></p><p> 在基本要求達(dá)到后,可進(jìn)行創(chuàng)新設(shè)計(jì),如根據(jù)查找結(jié)果進(jìn)行修改的功能。 </p><p> 4、寫出設(shè)計(jì)說明
15、書 </p><p> ?。ㄈ?、設(shè)計(jì)方法和基本原理: </p><p> 1、問題描述(功能要求): </p><p> 在圖書管理系統(tǒng)中,要為每個(gè)借閱者建立一個(gè)賬戶,并給借閱者發(fā)放借閱卡(借閱卡可以提供借閱卡號(hào)、借閱者名),賬戶中存儲(chǔ)借閱者的個(gè)人信息、借閱信息以及預(yù)定信息。持有借閱卡的借閱者可以借閱書刊、返還書刊、查詢書刊信息、預(yù)定書刊并取消預(yù)定,但這些操作
16、都是通過圖書管理員進(jìn)行的,也即借閱者不直接與系統(tǒng)交互,而是圖書管理員充當(dāng)借閱者的代理與系統(tǒng)交互。在借閱書刊時(shí),需要輸入所借閱的書刊名,書刊的ISBN/ISSN號(hào),然后輸入借閱者的圖書卡號(hào)和借閱者名,完成后提交所填表格,系統(tǒng)驗(yàn)證借閱者是否有效(在系統(tǒng)中存在賬戶),若有效,借閱請(qǐng)求被接受,系統(tǒng)查詢數(shù)據(jù)庫系統(tǒng),看借閱者所借閱的書刊是否存在,若存在,則借閱者可借出書刊,建立并在系統(tǒng)中存儲(chǔ)借閱記錄。借閱者還書后,刪除關(guān)于所還書刊的借閱記錄。如果借
17、閱者所借的書刊已被借出,借閱者還可預(yù)定該書刊,一旦借閱者預(yù)定的書刊可以獲得,就將書刊直接寄給預(yù)定人(為了簡化系統(tǒng),預(yù)定書刊可獲得時(shí)就不通知借閱者了)。另外,為了簡化系統(tǒng),也不考慮書刊的最長借閱期限,假設(shè)借閱者可以無限期地保存所借閱的書刊。 </p><p> 2、問題的解決方案: </p><p> 根據(jù)系統(tǒng)功能要求,可以將問題解決分為以下步驟: </p><p&
18、gt; ?。?)應(yīng)用系統(tǒng)分析,建立該系統(tǒng)的功能模塊框圖以及界面的組織和設(shè)計(jì);</p><p> (2)分析系統(tǒng)中的各個(gè)實(shí)體及它們之間的關(guān)系包括屬性和行為; </p><p> ?。?)根據(jù)問題描述,設(shè)計(jì)系統(tǒng)的類層次; </p><p> ?。?)完成類層次中各個(gè)類的描述(包括屬性和方法); </p><p> (5)完成類中各個(gè)成員函數(shù)的
19、定義; </p><p> ?。?)完成系統(tǒng)的應(yīng)用模塊; </p><p><b> ?。?)功能調(diào)試; </b></p><p> ?。?)完成系統(tǒng)總結(jié)報(bào)告以及系統(tǒng)使用說明書</p><p><b> 目 錄</b></p><p> 1. 系統(tǒng)需求分析……………
20、………………………………….8</p><p> 1.1系統(tǒng)設(shè)計(jì)的目的與意義…………………………………………………….8</p><p> 1.2系統(tǒng)功能需求……………………………………..…………………………..8</p><p> 2. 總體設(shè)計(jì)………………...…………………………………..8</p><p> 2.1系統(tǒng)功
21、能分析………………………………………………..………………..8</p><p> 2.2系統(tǒng)功能模塊劃分與設(shè)計(jì)…………………………….……..…………….…8</p><p> 2.3系統(tǒng)功能模塊圖………………………………………….…...……………....9</p><p> 3. 詳細(xì)設(shè)計(jì)...…………………………………………………..9</p
22、><p> 3.1讀者類的設(shè)計(jì)……………………………………………………………....…9</p><p> 3.2讀者庫類的設(shè)計(jì)…………………………………………………………......10</p><p> 3.3圖書類的設(shè)計(jì)………………………………………………………..........10</p><p> 3.4圖書庫類的設(shè)計(jì)…………
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感想與體會(huì)……………………………………………………………….…..14</p><p> 7. 附錄……………………………………………………....…14 </p><p> 7.1源程序清單………………………………………………………..…...……...14</p><p><b> 系統(tǒng)需求分析<
25、;/b></p><p> 1.1系統(tǒng)設(shè)計(jì)的目的與意義:</p><p> 圖書系統(tǒng)在生活中運(yùn)用相當(dāng)廣泛,因此需要很多程序?qū)λM(jìn)行管理。</p><p> 1.2 系統(tǒng)功能需求:</p><p> 本系統(tǒng)有四個(gè)類,Book類,BDatebase類、Reader類、RDatebase類,存儲(chǔ)借閱者的個(gè)人信息、借閱信息以及預(yù)定信息。
26、持有借閱卡的借閱者可以借閱書刊、返還書刊、查詢書刊信息、預(yù)定書刊并取消預(yù)定等功能。</p><p><b> 總體設(shè)計(jì)</b></p><p> 2.1 系統(tǒng)功能分析:</p><p> 系統(tǒng)通過調(diào)用函數(shù)來實(shí)現(xiàn)刪除圖書、讀者信息,添加圖書、讀者信息等功能。delbook( )函數(shù)用于刪除圖書信息;addbook( )函數(shù)用于增加圖書信息;
27、borrowbook( )函數(shù)用于實(shí)現(xiàn)借書操作;returnbook( )函數(shù)用于實(shí)現(xiàn)還書操作等等;主函數(shù)用于掉用這些函數(shù)。</p><p> 2.2系統(tǒng)功能模塊劃分與設(shè)計(jì)</p><p> 本系統(tǒng)定義了Book類、BDatebase類、Reader類、RDatebase類這四個(gè)類,定義了addbook ( )、addreader( )、borrowbook ( )、setname(
28、)等函數(shù)來實(shí)現(xiàn)系統(tǒng)所需功能。</p><p> 2.3 系統(tǒng)功能模塊圖:</p><p><b> 詳細(xì)設(shè)計(jì)</b></p><p> 3.1 讀者類的設(shè)計(jì)</p><p> 該類定義了借書操作,還書操作,設(shè)置讀者姓名等功能。</p><p><b> 圖 3.1</b&
29、gt;</p><p> 3.2 讀者庫類類的設(shè)計(jì)</p><p> 該類實(shí)現(xiàn)了建立讀者的個(gè)人資料,刪除讀者信息,輸出讀者信息等功能。</p><p><b> 圖 3.2</b></p><p> 3.3 圖書類的設(shè)計(jì)</p><p> 圖書類,可以實(shí)現(xiàn)對(duì)圖書的描述,圖書的編號(hào),書名,
30、借出,還入等操作。</p><p><b> 圖 3.3</b></p><p> 3.4 圖書庫類的設(shè)計(jì)</p><p><b> 圖 3.4</b></p><p><b> 系統(tǒng)調(diào)試</b></p><p> 在調(diào)試過程中,出現(xiàn)了一些錯(cuò)誤
31、。</p><p> 1、輸入數(shù)據(jù)時(shí),輸錯(cuò)了數(shù)據(jù)的類型會(huì)造成死循環(huán),因此輸入時(shí)需要注意。</p><p> 2、一開始主界面輸入非正確數(shù)字時(shí),沒有提示錯(cuò)誤。容易造成用戶誤解</p><p><b> 圖4.1</b></p><p> 在主函數(shù)的switch語句結(jié)束處加上default:cout<<&
32、quot;輸入錯(cuò)誤,請(qǐng)從新輸入:";就可以了,修改后:</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> 圖書維護(hù)</b></p><p><b> 圖4.4</b></p><p><b> 讀者維護(hù)</b></p><p><b> 圖4.1</b></p><p><b> 5.結(jié)果
34、分析</b></p><p> 本程序總共設(shè)計(jì)了四個(gè)類,滿足了課題對(duì)類的要求,在設(shè)計(jì)的過程中,建立了較為清晰的類層次,也利用了面向?qū)ο蟮姆椒ㄒ约癈++的編程思想來完成系統(tǒng)的設(shè)計(jì),做到了每個(gè)借閱者建立一個(gè)賬戶,賬戶中存儲(chǔ)借閱者的個(gè)人信息、借閱信息等要求。而且界面美觀,容易操作。但是程序太長,不夠簡練,導(dǎo)致出現(xiàn)錯(cuò)誤很難發(fā)現(xiàn)和修改。</p><p><b> 總結(jié)<
35、;/b></p><p> 6.1 感想和體會(huì):</p><p> 通過這次的課程設(shè)計(jì),讓我充分的感覺到了要自己設(shè)計(jì)一個(gè)程序是多么的難,以及學(xué)習(xí)好c++是多么的重要。</p><p> 在這個(gè)程序的設(shè)計(jì)過程中,我清楚的意識(shí)到自己的水平有多么的薄弱,課程的知識(shí)學(xué)得有多么的不扎實(shí)。看網(wǎng)上的例子好像覺得也沒那么難,自己一上機(jī)實(shí)際操作就出現(xiàn)了很多問題,調(diào)試的時(shí)候
36、系統(tǒng)總是在報(bào)錯(cuò),還有很多警告,每增加一個(gè)函數(shù)就要調(diào)試好久,有時(shí)候應(yīng)為少了一個(gè)大括號(hào)或是分號(hào),導(dǎo)致要找很久很久。雖然系統(tǒng)可以運(yùn)行,也具有了一些基本的功能,但我意識(shí)到了自己有太多的不足。</p><p> 以后還會(huì)有很多的課程設(shè)計(jì),一定要吸取這次的教訓(xùn),把知識(shí)學(xué)懂學(xué)透學(xué)精,真正的為我所用,這樣走上社會(huì)我才能真正的發(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<<"借書編號(hào):["; </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讀 者 維 護(hù)\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 << "輸入讀者編號(hào):"; </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;< "輸入讀者編號(hào):"; </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 << " 輸入讀者編號(hào):"; </
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 << "讀入讀者編號(hào):"; </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<<"輸入錯(cuò)誤,請(qǐng)從新輸入:";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圖 書 維 護(hù) "<<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 << "輸入圖書編號(hào):"<<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 << "輸入圖書編號(hào):"&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 <<" 讀入圖書編號(hào):"<<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 << " 讀入圖書編號(hào):"<<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<<"輸入錯(cuò)誤,請(qǐng)從新輸入:"; </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 圖 書 維 護(hù)\n\n\t\t\t4 讀 者 維 護(hù)\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 <<" 借書 讀者編號(hào):"; </p><p> cin >>readerid; </p><p> cout <<" 圖書編號(hào): "; </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 讀者編號(hào):"; <
123、/p><p> cin >>readerid; </p><p> cout << " 圖書編號(hào):"; </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<<"輸入錯(cuò)誤,請(qǐng)從新輸入:"; </p><p><b> } </b></p><p><b> } </b></p><p&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 圖書管理系統(tǒng)c++課程設(shè)計(jì)
- c++圖書管理系統(tǒng)課程設(shè)計(jì)
- c++圖書管理系統(tǒng)課程設(shè)計(jì)
- c++圖書管理系統(tǒng)課程設(shè)計(jì)
- c++課程設(shè)計(jì)圖書管理系統(tǒng)
- c++課程設(shè)計(jì)報(bào)告-圖書管理系統(tǒng)
- c++課程設(shè)計(jì)--圖書管理系統(tǒng)的設(shè)計(jì)
- c++課程設(shè)計(jì)圖書管理
- c&c++課程設(shè)計(jì)-圖書管理系統(tǒng)
- c++課程設(shè)計(jì)報(bào)告--小型圖書管理系統(tǒng)
- c++課程設(shè)計(jì)圖書管理系統(tǒng) (2)
- c++課程設(shè)計(jì)報(bào)告書---圖書管理系統(tǒng)
- c++課程設(shè)計(jì)(簡易圖書管理系統(tǒng))實(shí)習(xí)報(bào)告
- c課程設(shè)計(jì)---圖書管理系統(tǒng)課程設(shè)計(jì)
- c語言課程設(shè)計(jì)--圖書管理系統(tǒng)
- c++課程設(shè)計(jì)---圖書銷售管理系統(tǒng)
- c語言課程設(shè)計(jì)--圖書管理系統(tǒng)
- c課程設(shè)計(jì)報(bào)告-- 圖書管理系統(tǒng)
- c語言課程設(shè)計(jì)(圖書管理系統(tǒng))
- c#-圖書管理系統(tǒng)-課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論