版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 面向?qū)ο蟪绦蛟O(shè)計(jì)</b></p><p><b> 課程設(shè)計(jì)</b></p><p> 題 目 圖書(shū)管理系統(tǒng)的設(shè)計(jì)</p><p> 計(jì)算機(jī)科學(xué)學(xué)院 計(jì)算機(jī)科學(xué)與技術(shù) 專(zhuān)業(yè)</p><p> 2011 級(jí) 計(jì)算科學(xué)與技術(shù)本科 班</p>&
2、lt;p> 一.問(wèn)題的分析與功能的定義:</p><p> 二十一世紀(jì)是信息的社會(huì),信息作為社會(huì)最主要的資源,將成為戰(zhàn)略資源引起人們廣泛的關(guān)注。如何獲取信息呢!圖書(shū)是我們最好的獲取信息的方式,但由于圖書(shū)館圖書(shū)收藏量大大增加,使傳統(tǒng)的圖書(shū)管理員的工作日益繁重起來(lái)。迫使人們起用新的管理方法來(lái)管理圖書(shū)。因此新的圖書(shū)管理系統(tǒng)也以方便、快捷、費(fèi)用低的優(yōu)點(diǎn)正慢慢地進(jìn)入人們的生活,將傳統(tǒng)的圖書(shū)管理方式徹底的解脫出來(lái),
3、提高效率,減輕工人人員以往繁忙的工作,減小出錯(cuò)的概率,使讀者可以花更多的時(shí)間在選擇書(shū)和看書(shū)上。從而使人們有更多時(shí)間來(lái)獲取信息、了解信息、掌握信息 。</p><p> 1、設(shè)計(jì)內(nèi)容及要求:</p><p> ?。?)設(shè)計(jì)一個(gè)圖書(shū)館管理系統(tǒng),完成圖書(shū)管理和讀者管理的功能,并能對(duì)借閱信息進(jìn)行管理,要求完成以下功能:圖書(shū)資料管理,可以添加、修改、刪除、查詢(xún)書(shū)籍信息;讀者資料管理,可以添加、修改
4、、刪除、查詢(xún)讀者信息;借書(shū)管理,可以進(jìn)行添加借書(shū)信息;還書(shū)管理,可以進(jìn)行還書(shū)信息。</p><p> ?。?)該項(xiàng)目是在Visual C++ 6.0的平臺(tái)下用c++語(yǔ)言實(shí)現(xiàn)。 </p><p><b> 2.模塊圖:</b></p><p> 二.對(duì)象(類(lèi))設(shè)計(jì)及實(shí)現(xiàn):</p><p><b> 1、概要
5、設(shè)計(jì):</b></p><p> Reader讀者類(lèi)、RDatabase 讀者庫(kù)類(lèi)、Book 圖書(shū)類(lèi)、BDatabase 圖書(shū)庫(kù)類(lèi)。</p><p><b> 2、詳細(xì)設(shè)計(jì):</b></p><p><b> ?。?)類(lèi)的原型描述</b></p><p><b> 三.核
6、心控制設(shè)計(jì)</b></p><p> 在主函數(shù)中我們要做的操作有:</p><p> (1)建立Reader讀者類(lèi),RDatabase 讀者庫(kù)類(lèi),Book 圖書(shū)類(lèi),BDatabase 圖書(shū)庫(kù)類(lèi)。</p><p> ?。?)建立菜單界面,從而完成以下內(nèi)容:</p><p> ?、龠M(jìn)入功能必須打開(kāi)菜單,然后用戶根據(jù)菜單選擇相應(yīng)的提
7、示進(jìn)行操作,如借書(shū),還書(shū),圖書(shū)維護(hù),讀者維護(hù),退出等。</p><p> ②從而進(jìn)入相應(yīng)的菜單中對(duì)相應(yīng)的信息進(jìn)行了解并進(jìn)行統(tǒng)計(jì)。</p><p> (3) 將圖書(shū)基本信息、圖書(shū)采購(gòu)信息、圖書(shū)的借閱人信息存儲(chǔ)下來(lái)。</p><p> (4) 系統(tǒng)界面簡(jiǎn)潔,易操作。</p><p> 2、本程序應(yīng)具備的功能:</p><
8、;p> A.添加、借閱、還書(shū)功能:</p><p> (1)添加讀者和圖書(shū)信息。</p><p> (2)借閱尚在架的圖書(shū)。</p><p> (3)讀者歸還的圖書(shū)。</p><p><b> B.查找功能</b></p><p> (1) 根據(jù)圖書(shū)的圖書(shū)號(hào)和編號(hào)查找圖書(shū)信息。&
9、lt;/p><p> (2)根據(jù)讀者的編號(hào)查找讀者的信息。</p><p><b> C.系統(tǒng)的操作</b></p><p> 系統(tǒng)在進(jìn)入時(shí),要有主菜單提示。</p><p> 系統(tǒng)在用戶退出時(shí),也要有一定的提示。</p><p><b> 3、算法分析</b><
10、/p><p><b> ?。?)添加操作:</b></p><p> 包括兩個(gè)部分,先通過(guò)輸入設(shè)備輸入信息,讓系統(tǒng)獲?。蝗缓筇砑尤胱x者數(shù)據(jù)庫(kù)read.txt文件中。</p><p><b> A.獲取信息</b></p><p> void Reader::addreader(int n,char
11、 *na) //增加讀者 </p><p><b> { </b></p><p><b> tag=0; </b></p><p><b> no=n; </b></p><p> strcpy(name,na); </p>&l
12、t;p> for (int i=0;i<Maxbor;i++) </p><p> borbook[i]=0; </p><p><b> } </b></p><p> int RDatabase::addreader(int n,char *na) //增添讀者信息</p><p&g
13、t;<b> {</b></p><p> der *p=query(n);</p><p> if (p==NULL)</p><p><b> {</b></p><p><b> top++;</b></p><p> read[top
14、].addreader(n,na);</p><p> cout<<"讀者添加成功"<<endl;</p><p><b> return 1;</b></p><p><b> }</b></p><p><b> return 0;&
15、lt;/b></p><p><b> }</b></p><p> B.析構(gòu)函數(shù)寫(xiě)入新讀者的編號(hào)跟姓名</p><p> RDatabase::~RDatabase()</p><p><b> {</b></p><p> fstream fil
16、e("reader.txt",ios::out);</p><p> for (int i=0;i<=top;i++)</p><p><b> { </b></p><p> if(read[i].gettag()==0)</p><p> file.write((char *)&
17、amp;read[i],sizeof(read[i]));</p><p><b> else</b></p><p> file.close();</p><p><b> }</b></p><p><b> }</b></p><p>
18、(2)借書(shū)操作:利用for語(yǔ)句和if語(yǔ)句,通過(guò)判斷圖書(shū)的borbook的編號(hào)是否為0,來(lái)判斷圖書(shū)是否未被借走或還沒(méi)有被借完。</p><p> void Reader::borrowbook(int bookid) //借書(shū)操作 </p><p><b> { </b></p><p> for (int i=0;i<M
19、axbor;i++) </p><p> if (borbook[i]==0) </p><p><b> { </b></p><p> borbook[i]=bookid; </p><p> return; </p><p><b> } &l
20、t;/b></p><p><b> } </b></p><p> ?。?)還書(shū)操作:利用for語(yǔ)句和if語(yǔ)句,通過(guò)判斷圖書(shū)的borbook的編號(hào)是否為要還書(shū)的編號(hào),來(lái)判斷是否借出此書(shū)。</p><p> int Reader::retbook(int bookid) //還書(shū)操作 </p><p>
21、;<b> { </b></p><p> for(int i=0;i<Maxbor;i++) </p><p><b> { </b></p><p> if(borbook[i]==bookid) </p><p><b> { </b>
22、</p><p> borbook[i]=0; </p><p> return 1; </p><p><b> } </b></p><p><b> else</b></p><p><b> continue;</b><
23、;/p><p><b> } </b></p><p> ?。?)查找功能:利用for語(yǔ)句和if語(yǔ)句,尋找與要查詢(xún)的編號(hào)相同的讀者編號(hào)或圖書(shū)編號(hào),如果找到,向系統(tǒng)返回相應(yīng)的編號(hào),輸出相應(yīng)的信息。</p><p> Reader *query(int readerid) //按編號(hào)查找</p><p>
24、<b> {</b></p><p> for (int i=0;i<=top;i++)</p><p> if(read[i].getno()==readerid&&read[i].gettag()==0)</p><p> return &read[i];</p><p> r
25、eturn NULL;</p><p><b> }</b></p><p><b> 四.測(cè)試分析</b></p><p><b> 1.此系統(tǒng)存在問(wèn)題</b></p><p> 未設(shè)置登錄密碼保護(hù)系統(tǒng),使整個(gè)圖書(shū)管理系統(tǒng)失去了一定的安全性。</p>&
26、lt;p> 2.程序運(yùn)行界面如下圖a所示:</p><p><b> 圖a如上所示</b></p><p> 3.此界面運(yùn)行時(shí)選擇4有時(shí)會(huì)出現(xiàn)內(nèi)存讀取錯(cuò)誤;</p><p> ?。?)當(dāng)輸入錯(cuò)的數(shù)據(jù)類(lèi)型時(shí) 可能導(dǎo)致內(nèi)存錯(cuò)誤;</p><p> ?。?)讀者、圖書(shū)信息不完善;</p><p
27、> (3)命名不是很規(guī)范;</p><p> (4)信息存儲(chǔ)有限;</p><p><b> 五.心得體會(huì)</b></p><p> 通過(guò)這次課程設(shè)計(jì)讓我逐步學(xué)會(huì)了如何運(yùn)用C++面向?qū)ο蟪绦蛟O(shè)計(jì)的設(shè)計(jì)思想和方法來(lái)解決實(shí)際問(wèn)題。如這次設(shè)計(jì)圖書(shū)管理系統(tǒng),首先我考慮是在實(shí)際應(yīng)用時(shí)用戶一般進(jìn)行什么操作,對(duì)哪些對(duì)象進(jìn)行操作。很顯然我需要建立
28、兩個(gè)類(lèi),包括圖書(shū)類(lèi)和讀者類(lèi),同時(shí)考慮到圖書(shū)和讀者不止一個(gè),所以還需兩個(gè)類(lèi),圖書(shū)庫(kù)類(lèi)和讀者庫(kù)類(lèi),這兩個(gè)類(lèi)分別將其信息傳遞給圖書(shū)類(lèi)和讀者類(lèi)。確定了類(lèi)之后,則需要對(duì)類(lèi)的內(nèi)容進(jìn)行擴(kuò)充。由于我需要這個(gè)系統(tǒng)完成對(duì)圖書(shū)管理和讀者管理的功能,并能對(duì)借閱信息進(jìn)行管理,要求完成一下功能,圖書(shū)資料管理,可以添加、修改、刪除、查詢(xún)書(shū)籍信息,讀者資料管理,可以添加、修改、刪除、查詢(xún)讀者信息;借書(shū)管理,可以進(jìn)行添加借書(shū)信息;還書(shū)管理,可以進(jìn)行還書(shū)信息。所以在對(duì)應(yīng)的
29、類(lèi)下建立相應(yīng)功能函數(shù)。建立功能函數(shù)后就是構(gòu)造主函數(shù)。主函數(shù)的作用就是通過(guò)向?qū)ο蟀l(fā)送信息、對(duì)象接受信息啟動(dòng)相應(yīng)的方法來(lái)實(shí)現(xiàn)相應(yīng)的操作。</p><p> 為了能夠較好地完成本次課程設(shè)計(jì),我詳細(xì)閱讀教材,以及網(wǎng)上搜索,和到圖書(shū)館查找相關(guān)資料等。在做課程設(shè)計(jì)的過(guò)程中,我在利用所學(xué)的知識(shí)同時(shí),又學(xué)到了很多實(shí)例化的理論知識(shí)??偨Y(jié)了一些經(jīng)驗(yàn)和方法強(qiáng)化了我的實(shí)際動(dòng)手能力,同時(shí)也找到自己的不足,我一定會(huì)繼續(xù)學(xué)習(xí)增加自己的編程能
30、力和調(diào)試能力,在今后的學(xué)習(xí)中我將會(huì)更加的努力,增加自己的知識(shí)儲(chǔ)備,拓寬自己的知識(shí)面,鍛煉自己的能力,使我的綜合素質(zhì)得到較大的提高。</p><p> 在這設(shè)計(jì)的過(guò)程中我也出現(xiàn)過(guò)一些比較嚴(yán)重的錯(cuò)誤,后來(lái)在同學(xué)的指點(diǎn)下我改正了自己的錯(cuò)誤,并最終成功調(diào)試了程序。當(dāng)程序調(diào)試出來(lái)的那一瞬間,我感覺(jué)自己完成了一件非常了不起的事,好有成就感。在以后的日子,我將會(huì)繼續(xù)我的興趣繼續(xù)深入學(xué)習(xí)程序設(shè)計(jì),相信在越來(lái)越多的嘗試之后,自己
31、會(huì)不斷進(jìn)步不斷提高的。</p><p> 最后感謝同學(xué)的幫助,使我能順利完成這次程序設(shè)計(jì)。</p><p><b> 六.源程序代碼:</b></p><p> #include "stdafx.h"</p><p> #include <iostream></p>
32、<p> #include <iomanip></p><p> #include <string></p><p> #include <fstream>//輸入/輸出文件流類(lèi)</p><p> using namespace std;</p><p> const int Maxr=
33、100;//最多的讀者</p><p> const int Maxb=100;//最多的圖書(shū)</p><p> const int Maxbor=5;//每位讀者最多借五本書(shū)</p><p> //讀者類(lèi),實(shí)現(xiàn)對(duì)讀者的信息的描述</p><p> class Reader </p><p><
34、;b> { </b></p><p><b> private:</b></p><p> int tag; //刪除標(biāo)記 1:已刪 0:未刪</p><p> int no; //讀者編號(hào)</p><p> char name[10]; //讀者姓名</p><
35、;p> int borbook[Maxbor];//所借圖書(shū)</p><p><b> public:</b></p><p> Reader() {} //構(gòu)造函數(shù)</p><p> char *getname() </p><p><b> { </b></p>
36、<p> return name; </p><p> } //獲取姓名 </p><p> int gettag() </p><p><b> { </b></p><p> return tag; </p><p> } /
37、/獲取刪除標(biāo)記 </p><p> int getno() </p><p><b> { </b></p><p> return no; </p><p> } //獲取讀者編號(hào) </p><p> void
38、 setname(char na[]) //設(shè)置姓名 </p><p><b> { </b></p><p> strcpy(name,na); </p><p><b> } </b></p><p> void delbook()
39、 //設(shè)置刪除標(biāo)記 </p><p><b> { </b></p><p><b> tag=1; </b></p><p><b> } </b></p><p> void addreader(int n,char *na); //增加
40、讀者 </p><p> void borrowbook(int bookid); //借書(shū)操作</p><p> int retbook(int bookid); //還書(shū)操作</p><p> void disp(); //輸出讀者信息</p><p><b>
41、; }; </b></p><p> void Reader::addreader(int n,char *na) //增加讀者 </p><p><b> { </b></p><p><b> tag=0; </b></p><p><b> n
42、o=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><p>
43、 void Reader::borrowbook(int bookid) //借書(shū)操作 </p><p><b> { </b></p><p> for (int i=0;i<Maxbor;i++) </p><p><b> { </b></p><p> i
44、f (borbook[i]==0) </p><p><b> { </b></p><p> borbook[i]=bookid; </p><p> return; </p><p><b> } </b></p><p><b>
45、 } </b></p><p><b> } </b></p><p> int Reader::retbook(int bookid) //還書(shū)操作 </p><p><b> { </b></p><p> for(int i=0;i<Maxbor
46、;i++) </p><p><b> { </b></p><p> if(borbook[i]==bookid) </p><p><b> { </b></p><p> borbook[i]=0; </p><p> return 1;
47、 </p><p><b> } </b></p><p><b> else</b></p><p><b> continue;</b></p><p><b> } </b></p><p> return
48、 0; </p><p><b> } </b></p><p> void Reader::disp() //輸出讀者信息 </p><p><b> { </b></p><p> cout << setw(5) &l
49、t;< no << setw(10) << name << " 借書(shū)編號(hào):["; </p><p> for (int i=0;i<Maxbor;i++) </p><p> if (borbook[i]!=0) </p><p> cout <<borbook[i]
50、<<"|"; </p><p> cout<<"]"<<endl; </p><p><b> } </b></p><p> //讀者類(lèi)庫(kù),實(shí)現(xiàn)建立讀者的個(gè)人資料</p><p> class RDatabase</p
51、><p><b> { </b></p><p><b> private:</b></p><p> int top; //讀者記錄指針</p><p> Reader read[Maxr];//讀者記錄</p><p><b> public
52、:</b></p><p> RDatabase();//構(gòu)造函數(shù),將reader.txt讀到read[]中</p><p> void clear()//刪除所有讀者信息</p><p><b> {</b></p><p><b> top=-1;</b&g
53、t;</p><p><b> }</b></p><p> int addreader(int n,char *na); //增添讀者信息</p><p> Reader *query(int readerid) //按編號(hào)查找</p><p><b> {</b>
54、;</p><p> for (int i=0;i<=top;i++)</p><p> if(read[i].getno()==readerid&&</p><p> read[i].gettag()==0)</p><p> return &read[i];</p><p>
55、 return NULL;</p><p><b> }</b></p><p> void disp();//輸出所有讀者信息</p><p> int Readernum(); //得到讀者編號(hào)</p><p> void readerdata();
56、//讀者庫(kù)維護(hù)</p><p> ~RDatabase();// 析構(gòu)函數(shù),將read[]寫(xiě)入reader.txt文件中</p><p><b> };</b></p><p> RDatabase::RDatabase()//構(gòu)造函數(shù),將reader.txt讀到read[]中</p><p&
57、gt;<b> {</b></p><p><b> Reader s;</b></p><p><b> top=-1;</b></p><p> fstream file("reader.txt",ios::in);</p><p><b&
58、gt; while (1)</b></p><p><b> {</b></p><p> file.read((char *)&s,sizeof(s));</p><p> if (!file) break;</p><p><b> top++;</b></p
59、><p> read[top]=s;</p><p><b> }</b></p><p> file.close();</p><p><b> }</b></p><p> RDatabase::~RDatabase()// 析構(gòu)函數(shù),將read[]寫(xiě)入
60、reader.txt文件中</p><p><b> {</b></p><p> fstream file("reader.txt",ios::out);</p><p> for (int i=0;i<=top;i++)</p><p> if(read[i].gettag()==0
61、)</p><p> file.write((char *)&read[i],sizeof(read[i]));</p><p><b> else</b></p><p> file.close();</p><p><b> }</b></p><p>
62、; int RDatabase::addreader(int n,char *na) //增添讀者信息</p><p><b> {</b></p><p> Reader *p=query(n);</p><p> if (p==NULL)</p><p><b> {</b>
63、</p><p><b> top++;</b></p><p> read[top].addreader(n,na);</p><p> cout<<"讀者添加成功"<<endl;</p><p><b> return 1;</b></p
64、><p><b> }</b></p><p><b> return 0;</b></p><p><b> }</b></p><p> void RDatabase::disp()//輸出所有讀者信息</p><p><b&
65、gt; {</b></p><p> for (int i=0;i<=top;i++)</p><p> read[i].disp();</p><p><b> }</b></p><p> int RDatabase::Readernum()</p><p><
66、;b> {</b></p><p> return top;</p><p><b> }</b></p><p> void RDatabase::readerdata() //讀者庫(kù)維護(hù)</p><p><b> {</b></p><
67、;p> char choice;</p><p> char rname[100]; //讀者姓名</p><p> int readerid;</p><p> Reader *r;</p><p><b> do </b></p><p><b&g
68、t; {</b></p><p> cout <<"\n\n\t\t\t歡迎進(jìn)入讀者維護(hù)界面\n\n\n\t\t1新 增\n\n\t\t2更 改\n\n\t\t3刪 除\n\n\t\t4查 找\n\n\t\t5顯 示\n\n\t\t6全 刪\n\n\t\t0退 出"<<endl;<
69、;/p><p> cin >> choice;</p><p> switch (choice)</p><p><b> {</b></p><p><b> case '1':</b></p><p> cout << &qu
70、ot;輸入讀者編號(hào):";</p><p> cin >> readerid;</p><p> cout << "輸入讀者姓名:";</p><p> cin >> rname;</p><p> addreader (readerid,rname);</p>
71、;<p><b> break;</b></p><p><b> case '2':</b></p><p> cout <<"輸入讀者編號(hào):";</p><p> cin >> readerid;</p><p>
72、 r=query(readerid);</p><p> if (r==NULL)</p><p><b> {</b></p><p> cout <<"該讀者不存在 "<<endl;</p><p><b> break;</b></p
73、><p><b> }</b></p><p> cout <<"輸入新的姓名:";</p><p> cin >> rname;</p><p> r->setname(rname);</p><p><b> break;<
74、;/b></p><p><b> case '3':</b></p><p> cout <<"輸入讀者編號(hào):";</p><p> cin >> readerid;</p><p> r=query(readerid);</p>
75、<p> if (r==NULL)</p><p><b> {</b></p><p> cout <<"該讀者不存在" << endl;</p><p><b> break;</b></p><p><b> }<
76、/b></p><p> r->delbook();</p><p><b> break;</b></p><p><b> case '4':</b></p><p> cout <<"讀入讀者編號(hào):";</p>
77、<p> cin >> readerid;</p><p> r=query(readerid);</p><p> if (r==NULL)</p><p><b> {</b></p><p> cout <<"該讀者不存在"<< endl;
78、</p><p><b> break;</b></p><p><b> }</b></p><p> r->disp();</p><p><b> break;</b></p><p><b> case '5
79、39;:</b></p><p><b> disp();</b></p><p><b> break;</b></p><p><b> case '6':</b></p><p><b> clear();</b>
80、</p><p><b> break;</b></p><p> default:if (choice!='0') cout<<"輸入錯(cuò)誤,請(qǐng)從新輸入:";break;</p><p><b> }</b></p><p> }while (
81、choice!='0');</p><p><b> }</b></p><p> //圖書(shū)類(lèi),實(shí)現(xiàn)對(duì)圖書(shū)的描述,圖書(shū)的編號(hào),書(shū)名,借出,還入等</p><p> class Book</p><p><b> {</b></p><p><b&
82、gt; private:</b></p><p> int tag;//刪除標(biāo)記 1:已刪 0:未刪</p><p> int no;//圖書(shū)編號(hào)</p><p> char name[20];//書(shū)名</p><p> int onshelf;//是否再架 1:再架 0:已借</p><p>&
83、lt;b> public:</b></p><p><b> Book(){}</b></p><p> char *getname() { return name; }//獲取姓名</p><p> int getno(){ return no; }//獲取圖書(shū)編號(hào)</p><p> int
84、 gettag(){ return tag; }//獲取刪除標(biāo)記</p><p> void setname(char na[])//設(shè)置書(shū)名</p><p><b> {</b></p><p> strcpy(name,na);</p><p><b> }</b></p>
85、<p> void delbook(){ tag=1;}//刪除圖書(shū)</p><p> void addbook(int n,char *na)//增加圖書(shū)</p><p><b> {</b></p><p><b> tag=0;</b></p><p><b>
86、 no=n;</b></p><p> strcpy(name,na);</p><p> onshelf=1;</p><p><b> }</b></p><p> int borrowbook()//借書(shū)操作</p><p><b> {</b>&
87、lt;/p><p> if (onshelf==1)</p><p><b> {</b></p><p> onshelf=0;</p><p><b> return 1;</b></p><p><b> }</b></p>&
88、lt;p><b> return 0;</b></p><p><b> }</b></p><p> void retbook()//還書(shū)操作</p><p><b> {</b></p><p> onshelf=1;</p><p>
89、;<b> }</b></p><p> void disp()//輸出圖書(shū)</p><p><b> {</b></p><p> cout << setw(6) << no << setw(18) << name << setw(10)</p&g
90、t;<p> <<(onshelf==1? "在架":"已借") <<endl;</p><p><b> }</b></p><p><b> };</b></p><p> //圖書(shū)庫(kù)類(lèi),實(shí)現(xiàn)對(duì)圖書(shū)的維護(hù),查找,刪除等</p&g
91、t;<p> class BDatabase</p><p><b> {</b></p><p><b> private:</b></p><p> int top; //圖書(shū)記錄指針</p><p> Book book[Maxb]; //圖書(shū)記錄<
92、;/p><p><b> public:</b></p><p> BDatabase()//構(gòu)造函數(shù),將book.txt讀到book[]中</p><p><b> { </b></p><p><b> Book b;</b></p><p>&
93、lt;b> top=-1;</b></p><p> fstream file("book.txt",ios::in);</p><p><b> while (1)</b></p><p><b> {</b></p><p> file.read(
94、(char *)&b,sizeof(b));</p><p> if (!file) break;</p><p><b> top++;</b></p><p> book[top]=b;</p><p><b> }</b></p><p> file.
95、close();</p><p><b> }</b></p><p> void clear()//全刪</p><p><b> {</b></p><p><b> top=-1;</b></p><p><b> }</
96、b></p><p> int addbook(int n,char *na);//增加圖書(shū)</p><p> Book *query(int bookid)//查找圖書(shū)</p><p><b> {</b></p><p> for (int i=0;i<=top;i++)</p>&
97、lt;p> if (book[i].getno()==bookid &&book[i].gettag()==0)</p><p><b> {</b></p><p> return &book[i];</p><p><b> }</b></p><p>
98、 return NULL;</p><p><b> }</b></p><p> void bookdata();//圖書(shū)庫(kù)維護(hù)</p><p> void disp() //輸出圖書(shū) </p><p><b> {</b></p><p> for (in
99、t i=0;i<=top;i++)</p><p> if (book[i].gettag()==0)</p><p> book[i].disp();</p><p><b> }</b></p><p> ~BDatabase();//析構(gòu)函數(shù),將book[]寫(xiě)到book.txt文件中</p>
100、;<p><b> };</b></p><p> int BDatabase::addbook(int n,char *na)//增加圖書(shū)</p><p><b> {</b></p><p> Book *p=query(n);</p><p> if (NULL==p)
101、</p><p><b> {</b></p><p><b> top++;</b></p><p> book[top].addbook(n,na);</p><p><b> return 1;</b></p><p><b>
102、 }</b></p><p><b> return 0;</b></p><p><b> }</b></p><p> BDatabase::~BDatabase()//析構(gòu)函數(shù),將book[]寫(xiě)到book.txt文件中</p><p><b> {</b&g
103、t;</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 *)&book[i]
104、,sizeof(book[i]));</p><p> file.close();</p><p><b> }</b></p><p> void BDatabase::bookdata()</p><p><b> {</b></p><p> char cho
105、ice;</p><p> char bname[40];</p><p> int bookid;</p><p><b> Book *b;</b></p><p><b> do </b></p><p><b> {</b></p
106、><p> cout <<"\n\n\n\t\t\t歡迎進(jìn)入圖書(shū)維護(hù)界面 "<<endl<<endl;</p><p> cout<<"\t\t1新 增\n \t\t2更 改\n\t\t3刪 除\n\t\t4查 找\n\t\t5顯 示\n\t\t6全 刪\n\t\t
107、0退 出"<<endl;</p><p> cin >> choice;</p><p> switch (choice)</p><p><b> {</b></p><p><b> case '1':</b></p>
108、<p> cout <<"輸入圖書(shū)編號(hào):"<<endl;</p><p> cin >> bookid;</p><p> cout <<"輸入圖書(shū)書(shū)名:"<<endl;</p><p> cin >> bname;</p>
109、;<p> addbook(bookid,bname);</p><p><b> break;</b></p><p><b> case '2':</b></p><p> cout <<"輸入圖書(shū)編號(hào):"<<endl;</p>
110、;<p> cin >> bookid;</p><p> b=query(bookid);</p><p> if (b==NULL)</p><p><b> {</b></p><p> cout <<"該圖書(shū)不存在"<<endl;&l
111、t;/p><p><b> break;</b></p><p><b> }</b></p><p> cout <<"輸入新的書(shū)名:"<<endl;</p><p> cin >> bname;</p><p>
112、 b->setname(bname);</p><p><b> break;</b></p><p><b> case '3':</b></p><p> cout <<"讀入圖書(shū)編號(hào):"<<endl;</p><p>
113、 cin >> bookid;</p><p> b=query(bookid);</p><p> if (b==NULL)</p><p><b> {</b></p><p> cout <<"該圖書(shū)不存在" << endl;</p>&
114、lt;p><b> break;</b></p><p><b> }</b></p><p> b->delbook();</p><p><b> break;</b></p><p><b> case '4':</b
115、></p><p> cout <<"讀入圖書(shū)編號(hào):"<<endl;</p><p> cin >> bookid;</p><p> b=query(bookid);</p><p> if (b==NULL)</p><p><b>
116、 {</b></p><p> cout <<"該圖書(shū)不存在"<< endl;</p><p><b> break;</b></p><p><b> }</b></p><p> b->disp();</p>&
117、lt;p><b> break;</b></p><p><b> case '5':</b></p><p><b> disp();</b></p><p><b> break;</b></p><p><b>
118、; case '6':</b></p><p><b> clear();</b></p><p><b> break;</b></p><p> default:if(choice!='0') cout<<"輸入錯(cuò)誤,請(qǐng)從新輸入:";&
119、lt;/p><p><b> }</b></p><p> }while (choice!='0');</p><p><b> }</b></p><p> void showmenu()</p><p><b> {</b>&l
120、t;/p><p> cout<<" ";</p><p> cout<<"|---------------*******歡迎光臨*******----------------|"<<endl;</p><p> cout<<" &quo
121、t;;</p><p> cout<<"|-----------------------圖書(shū)館------------------------|"<<endl;</p><p> cout<<" ";</p><p> cout<<"|------
122、----------圖 書(shū) 管 理 系 統(tǒng)---------------|"<<endl;</p><p> cout<<" ";</p><p> cout<<"|-----------------------------------------------------|"
123、<<endl;</p><p> cout<<" ";</p><p> cout<<"| 1.借 書(shū) |"<<endl;</p><p> cout<<&q
124、uot; ";</p><p> cout<<"| 2.還 書(shū) |"<<endl;</p><p> cout<<" ";</p><p> cout<
125、;<"| 3.圖 書(shū) 維 護(hù) |"<<endl;</p><p> cout<<" ";</p><p> cout<<"| 4.讀 者 維 護(hù)
126、 |"<<endl;</p><p> cout<<" ";</p><p> cout<<"| 0.退出:將數(shù)據(jù)保存 |"<<endl;</p><p> cout
127、<<" ";</p><p> cout<<"|-----------------------------------------------------|"<<endl;</p><p><b> }</b></p><p> void show
128、tip()</p><p><b> { </b></p><p> cout<<"\n\t\t------------------操作完成!-------------------"<<endl;</p><p> cout<<"\t\t-----------------
129、選擇0-5后繼續(xù)-----------------"<<endl;</p><p> cout<<" ";</p><p> cout<<"|-------------------###內(nèi)容如下###------------------|"<<endl;</p>
130、<p> cout<<" ";</p><p> cout<<"| 1.借 書(shū) |"<<endl;</p><p> cout<<" ";<
131、/p><p> cout<<"| 2.還 書(shū) |"<<endl;</p><p> cout<<" ";</p><p> cout<<"|
132、 3.圖 書(shū) 維 護(hù) |"<<endl;</p><p> cout<<" ";</p><p> cout<<"| 4.讀 者 維 護(hù) |"<<end
133、l;</p><p> cout<<" ";</p><p> cout<<"| 0.退出:將數(shù)據(jù)保存 |"<<endl;</p><p> cout<<" "
134、;;</p><p> cout<<"|****************************************************|"<<endl;</p><p><b> }</b></p><p> //main() 函數(shù)的實(shí)現(xiàn),程序的主界面的引導(dǎo)</p>&l
135、t;p> int main()</p><p><b> { </b></p><p> char choice;</p><p> int bookid,readerid; //圖書(shū)編號(hào),讀者編號(hào)</p><p> RDatabase ReaderDB; //讀者庫(kù)</
136、p><p> Reader *r; //讀者</p><p> BDatabase BookDB; //圖書(shū)庫(kù)</p><p> Book *b; //圖書(shū)</p><p> cout<<"正在打開(kāi)圖書(shū)管理系統(tǒng),請(qǐng)稍后........."
137、;<<endl;</p><p> showmenu(); //顯示菜單</p><p> cout<<"\t\t請(qǐng)你選擇菜單中的數(shù)字以便于用來(lái)處理數(shù)據(jù):";</p><p> cin >> choice;</p><p> while (choice!=&
138、#39;0')</p><p><b> {</b></p><p> switch (choice)</p><p><b> {</b></p><p> case '1': //輸入讀者編號(hào)和要借的圖書(shū)<
139、/p><p> cout <<"借書(shū)系統(tǒng)"<< endl;</p><p> cout <<"讀者的讀書(shū)號(hào):";</p><p> cin >>readerid;</p><p> cout <<"圖書(shū)的編號(hào):";<
140、;/p><p> cin >>bookid;</p><p> r=ReaderDB.query(readerid); //按編號(hào)查找</p><p> if (NULL==r)</p><p><b> {</b></p><p> cout <<"對(duì)
141、不起該讀者不存在,因此不能借書(shū)"<< endl;</p><p><b> break;</b></p><p><b> }</b></p><p> b=BookDB.query(bookid);</p><p> if (b==NULL)</p>&
142、lt;p><b> {</b></p><p> cout <<"對(duì)不起該圖書(shū)不存在,因此不能借書(shū)"<< endl;</p><p><b> break;</b></p><p><b> }</b></p><p>
143、 if (b->borrowbook()==0)</p><p><b> {</b></p><p> cout <<"對(duì)不起該圖書(shū)已借出,因此不能借書(shū)"<< endl;</p><p><b> break;</b></p><p>&l
144、t;b> }</b></p><p> r->borrowbook(b->getno());</p><p><b> break;</b></p><p> case '2': //還書(shū)操作</p><p> cout&l
145、t;<"還書(shū)系統(tǒng)\n讀者編號(hào):";</p><p> cin >>readerid;</p><p> cout << "圖書(shū)的編號(hào):";</p><p> cin >>bookid;</p><p> r=ReaderDB.query(readerid
146、);//按編號(hào)查找</p><p> if (r==NULL)</p><p><b> {</b></p><p> cout <<"你的書(shū)已成功歸還,謝謝使用。" << endl;</p><p><b> break;</b></p&g
147、t;<p><b> }</b></p><p> b=BookDB.query(bookid);</p><p> if (b==NULL)</p><p><b> {</b></p><p> cout <<"對(duì)不起該圖書(shū)不存在,因此不能還書(shū)&qu
148、ot; <<endl;</p><p><b> break;</b></p><p><b> }</b></p><p> b->retbook();</p><p> r->retbook(b->getno());</p><p>
149、<b> break;</b></p><p> case '3': //圖書(shū)維護(hù)</p><p> BookDB.bookdata();</p><p><b> break;</b></p><p> case '4
150、9;: //讀者維護(hù)</p><p> ReaderDB.readerdata();</p><p><b> break;</b></p><p> default:if ((choice!='0')) cout<<"輸入錯(cuò)誤,請(qǐng)你從新輸入,謝謝:"
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程設(shè)計(jì)報(bào)告---書(shū)店圖書(shū)管理系統(tǒng)
- c課程設(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì)圖書(shū)管理系統(tǒng)統(tǒng)
- 程序設(shè)計(jì)課程設(shè)計(jì)--圖書(shū)管理系統(tǒng)
- 《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程設(shè)計(jì)報(bào)告---圖書(shū)信息管理系統(tǒng)
- 【課程設(shè)計(jì)】面向?qū)ο蟪绦蛟O(shè)計(jì)
- 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)
- 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)
- 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)
- 《面向?qū)ο蟮某绦蛟O(shè)計(jì)》課程設(shè)計(jì)
- java面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)--學(xué)生信息管理系統(tǒng)程序設(shè)計(jì)
- 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)報(bào)告
- 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)報(bào)告
- 程序課程設(shè)計(jì)-圖書(shū)管理系統(tǒng)
- 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)--火車(chē)訂票系統(tǒng)
- 面向?qū)ο蟮某绦蛟O(shè)計(jì)課程設(shè)計(jì)報(bào)告
- 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)--校友錄管理系統(tǒng)
- c面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)-人事管理系統(tǒng)
- 圖書(shū)管理系統(tǒng)程序設(shè)計(jì)
- 《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程設(shè)計(jì)---科研經(jīng)費(fèi)管理系統(tǒng)的設(shè)計(jì)
- java課程設(shè)計(jì)--java面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論