C++圖書管理系統(tǒng)_第1頁
C++圖書管理系統(tǒng)_第2頁
C++圖書管理系統(tǒng)_第3頁
C++圖書管理系統(tǒng)_第4頁
C++圖書管理系統(tǒng)_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、學 號: 面向?qū)ο蟪绦蛟O計大作業(yè)題 目圖書管理系統(tǒng)學 院信息工程學院專 業(yè)通信工程班 級姓 名ZXY指導教師鄢紅國2015年12月20日一、需求分析 圖書館管理系統(tǒng)是我國大部分院?;蚱渌块T不可缺少的部分,書籍是人類精神食糧,尤其對一些學校,圖書館來說,非常重要。在軟件開發(fā)中,以計算機圖書為主,稱“計算機圖書管理系統(tǒng)”。計算機圖書管理系統(tǒng)能夠為用戶實現(xiàn)借閱圖書、管理等,隨著科學技術的不斷提高,計算機科學日漸成熟,其強大的功能已為人們深刻認識,它已進入人類社會的各個領域并發(fā)揮著越來越重要的作用。作為計算機應用的一部分,使用計算機對圖書資源信息進行管理,具有著手工管理所無法比擬的優(yōu)點.例如:查閱迅

2、速、安全性高、可靠性高、存儲量大、保密性好、成本低等。這些優(yōu)點能夠極大地提高圖書館管理的效率。因此,開發(fā)這樣一套管理軟件是很有必要. 并且,通過此課題,能使我們熟練掌握文件、數(shù)組、指針的各種操作,以及一些算法思想的應用。(一) 系統(tǒng)總體功能需求 圖書館可以為借閱者提供借還書、查詢書目等服務。借閱者每次最多能借5本書。借書員主要負責借還及新增更改書目讀者,查詢等工作,圖書管理員負責圖書信息的增減及讀者信息的維護。所有人員都可以瀏覽和查詢圖書信息。經(jīng)過初步分析,圖書館管理系統(tǒng)應該具有以下幾個模塊:1)借書模塊2)還書模塊3)圖書維護模塊4)讀者維護模塊5)統(tǒng)計分析模塊6)提示7)離開(二)圖書借書

3、模塊功能分析 圖書借閱功能需要完成借閱者對相應圖書的借閱。借閱者的借閱數(shù)量是有限定的,系統(tǒng)會自動檢查是超過限定借閱的數(shù)量,若超過限定數(shù)量則不允許借閱。若當前要借閱的圖書已經(jīng)被其他人預約,讀者也無法完成借閱。 輸出:是否允許借閱處理:系統(tǒng)進行分析比較借閱數(shù)量及是否預約輸入:借閱者的編號及圖書的編號輸入:圖書的編號 (三)圖書還書模塊功能分析圖書歸還功能需要完成圖書的歸還工作。(四)圖書維護模塊功能的需求實現(xiàn)對圖書的描述,圖書的編號,書名,借出,還入等,需要實現(xiàn)的功能為:圖書編目,圖書注冊,更新書目,圖書刪除。1、圖書的新增:首先給圖書編號,在給圖書編號之前先判斷是否有圖書為該編號,如果有則編號不

4、成功重新輸入編號,如果沒有則編號成功,繼續(xù)添加圖書的其他信息,包括書名、作者、出版社、出版時間、價格等信息。 2、圖書的刪除:輸入圖書的編號,刪除該編號圖書的所有信息,并提示刪除成功信息,若輸入無效的編號則提示刪除不成功。3、圖書的查找:輸入要查找圖書的編號,輸出該編號圖書的所有信息,若輸入無效的編號則提示查找失敗。 4、圖書的顯示:按照出版時間的先后順序輸出圖書館所有書籍的信息。 5、圖書的全刪:刪除圖書館所有書籍的所有信息。(五) 讀者維護模塊功能的需求對讀者信息描述,建立讀者個人資料,借閱者管理需要實現(xiàn)的功能包括:借閱者注冊,借閱者信息更新,借閱者注銷,借閱者信息的查詢。1、讀者的新增:

5、先給讀者編號,如果該編號已經(jīng)有人,則提示錯誤,否則繼續(xù)輸入讀者的其他信息,包括讀者的名字和初始密碼輸出添加成功提示。 2、讀者的更改:輸入讀者的編號,更改讀者的名字,若輸入的編號無效則更該失敗。 3、讀者的刪除:輸入要刪除讀者的編號,判斷該編號是否有人,有則刪除該讀者的所有信息,沒有則提示刪除失敗。 4、讀者的查找:輸入要查找的讀者編號,編號正確則輸出讀者的信息,否則查找失敗。 5、讀者的顯示:顯示圖書館里所有讀者的信息。 6、讀者的刪除:刪除圖書館里所有讀者的信息。(六)統(tǒng)計分析功能 隨時可以進行統(tǒng)計分析,以便及時了解當前的借閱情況和相關的資料狀態(tài)。(七) 提示功能當出現(xiàn)庫存查無此書或讀者時

6、,給予相應提示。(八) 離開功能實現(xiàn)管理后的系統(tǒng)退出。 二、總體設計1.基本思路:采用面向?qū)ο蠓治龇椒ǎ岩粋€系統(tǒng)分成多個類進行處理。主要是運用到類和對象,還有帶參數(shù)的構(gòu)造函數(shù)以及析構(gòu)函數(shù)以及數(shù)組來實現(xiàn)本程序,并在主函數(shù)對各個功能模塊就行調(diào)用。即:1)讀者類,實現(xiàn)對讀者信息的描述 2)讀者庫類,實現(xiàn)建立讀者的個人資料 3)圖書類,實現(xiàn)對圖書的描述,圖書的編號,書名,借出,還入等 4)圖書庫類,實現(xiàn)對圖書的維護,查找,刪除等 最后用main函數(shù)做界面的引導。4.讀者維護3.圖書維護0.離開2.還書1.借書 2.遇到的問題及解決方法 1)用戶密碼驗證的問題:怎么讓用戶在輸入密碼時用號覆蓋密碼解決辦

7、法:通過翻閱之前的C語言教材,發(fā)現(xiàn)書中有類似的例子,即getch()輸入密碼時屏幕上不顯示,然后用putch(*)就可以輸出*覆蓋密碼。 2)用getch()函數(shù) 編譯時出現(xiàn)問題。解決辦法:通過仔細檢查代碼,發(fā)現(xiàn)忘記添加頭文件 conio.h 。添加后,即可編譯。 3)問題三:指針的操作問題:如果定義char a4=1,2,3,4;char *p=a; 然后輸出p指向的字符串,coutdelbook();Case4:輸出讀者信息break3. 圖書類,實現(xiàn)對圖書的描述,圖書的編號,書名,借出,還入等函數(shù)清單:char *getname()/獲取姓名,int getno()/獲取圖書編號,int

8、 gettag()/獲取刪除標記,void setname(char na)/設置書名,char*Book:getwriter()/獲取書籍作者,char*Book:getconcem() return concem; /獲取書籍出版社,char* Book:gettime() return Time; ,float Book:getprice() return price; /獲取書籍價格,void delbook()/刪除圖書,void Book:addbook(int n,char *na, char *wri, char *con, char* tm,float pr) /增加圖書形參

9、為書名,編號,作者,出版社,出版時間,價格,int borrowbook()/借書操作,void retbook()/還書操作,void disp()/輸出圖書。4. 圖書庫類,實現(xiàn)對圖書的維護,查找,刪除等函數(shù)清單:BDatabase()/構(gòu)造函數(shù),將book.txt讀到book中,void clear()/全刪,nt BDatabase:addbook(int n,char *na, char *wri, char *con,char *tm, float pr) /增加圖書形參為書名,編號,作者,出版社,出版時間,價格,Book* BDatabase:query(int bookid)/

10、查找圖書形參為圖書編號,int BDatabase:qname(char* nm),void bookdata();/圖書庫維護,void disp()顯示函數(shù)。 四、程序運行結(jié)果測試與分析運行結(jié)果: 分析:由于時間有限,程序在顯示上仍有小問題,待改進。五、程序源代碼#include #include #include #include #include #include #includeusing namespace std;const int Maxr=100;/最多的讀者const int Maxb=100;/最多的圖書const int Maxbor=5;/每位讀者最多借五本書/*讀者

11、類,實現(xiàn)對讀者信息的描述*/class Readerprivate:int tag ;int no ;char name10 ;/讀者姓名int borbookMaxbor;/所借圖書char mima6; public:Reader()char *getname()return name;/獲取姓名int gettag()return tag;/獲取刪除標記int getno()return no;/獲取讀者編號void setname(char na)strcpy(name,na);/設置姓名void delbook()tag=1;/設置刪除標記 1:已刪 0:未刪char* getmim

12、a()/獲取讀者的密碼return mima;void addreader(int n,char*na,char* mi)tag=0;no=n;strcpy(name,na);strcpy(mima,mi); for(int i=0;iMaxbor;i+)borbooki=0;/增加讀者void borrowbook(int bookid)for(int i=0;iMaxbor;i+)if(borbooki=0)borbooki=bookid;return;/借書操作int retbook(int bookid)for(int i=0;iMaxbor;i+)if(borbooki=bookid

13、)borbooki=0;return 1;return 0;/還書操作void disp()coutsetw(5)nosetw(10)name借書編號:;for(int i=0;iMaxbor;i+)if(borbooki!=0)coutborbooki|;coutendl;/*讀者庫類,實現(xiàn)建立讀者的個人資料*/class RDatabaseprivate:int top;/讀者記錄指針Reader readMaxr;/讀者記錄public:RDatabase() /構(gòu)造函數(shù),將reader.txt讀到read中Reader s;top=-1; fstream file(reader.txt

14、,ios:in);/打開一個輸入文件while (1)file.read(char *)&s,sizeof(s); if (!file)break;top+; readtop=s;file.close(); /關閉reader.txt void clear()/刪除所有讀者信息top=-1;int addreader(int n,char *na,char* mi) /添加讀者時先查找是否存在Reader *p=query(n); if (p=NULL)top+; readtop.addreader(n,na,mi); return 1;return 0;Reader *query(int r

15、eaderid)/按編號查找 for (int i=0;i=top;i+) if (readi.getno()=readerid & readi.gettag()=0)return &readi; return NULL; void disp() /輸出所有讀者信息 for (int i=0;i=top;i+)if (readi.gettag()=0) readi.disp(); void readerdata();/讀者庫維護RDatabase() /析構(gòu)函數(shù),將read寫到reader.txt文件中 fstream file(reader.txt,ios:out); for (int i=

16、0;i=top;i+) if (readi.gettag()=0)file.write(char *)&readi,sizeof(readi); file.close();void RDatabase:readerdata() char choice=1; char rname20; int readerid;char rmima6; Reader *r;while (choice!=0)cout ttt* 讀 者 維 護 *endl;cout ttt 1.新 增 endl; cout ttt 2.更 改 endl; cout ttt 3.刪 除 endl; cout ttt 4.查 找 en

17、dl; cout ttt 5.顯 示 endl; cout ttt 6.全 刪 endl; cout ttt 0.退 出 choice; int i=0; switch (choice) case 1:cout readerid; while(query(readerid)!=NULL); cout 輸入讀者密碼:; for(i;i6;i+) rmimai=getch(); putch(*); cout rname;addreader(readerid,rname,rmima); break;case 2:cout readerid;r=query(readerid); if (r=NULL)

18、 cout 該讀者不存在endl;break;cout rname;r-setname(rname); break;case 3: cout readerid;r=query(readerid); if (r=NULL)cout 該讀者不存在 delbook(); break;case 4:cout readerid; r=query(readerid); if (r=NULL) cout 該讀者不存在 endl;break;cout您所查找的讀者信息如下disp(); break; case 5: disp(); break; case 6: clear(); break; default:

19、cout輸入錯誤,請從新輸入;break; /*圖書類,實現(xiàn)對圖書的描述,圖書的編號,書名,借出,還入等*/class Book private: int tag;/刪除標記1:已刪0:未刪int no;/圖書編號char name20;/書名char writer10; /作者char concem30; /出版社char Time10; float price; int onshelf;/是否在架1:在架 2:已借public: Book() char *getname() return name; /獲取姓名int getno() return no; /獲取圖書編號int gettag

20、() return tag; /獲取刪除標記void setname(char na)/設置書名strcpy(name,na); char*Book:getwriter() return writer; /獲取書籍作者char*Book:getconcem() return concem; /獲取書籍出版社char* Book:gettime() return Time; float Book:getprice() return price; /獲取書籍價格void delbook() tag=1;/刪除圖書void Book:addbook(int n,char *na, char *wri

21、, char *con, char* tm,float pr) /增加圖書tag=0; no=n; strcpy(name,na); strcpy(writer,wri); strcpy(concem,con); strcpy(Time,tm); price=pr; onshelf=1;int borrowbook()/借書操作if (onshelf=1) onshelf=0; return 1; return 0; void retbook()/還書操作onshelf=1; void disp()/輸出圖書cout setw(6) no setw(18) name setw(10)conce

22、msetw(10)writersetw(12)Timesetw(6) (onshelf=1? 在架:已借) endl; ;/*圖書庫類,實現(xiàn)對圖書的維護,查找,刪除等*/class BDatabase private: int top; /圖書記錄指針Book bookMaxb; /圖書記錄public:BDatabase()/構(gòu)造函數(shù),將book.txt讀到book中Book b; top=-1; fstream file(book.txt,ios:in); while (1) file.read(char *)&b,sizeof(b); if (!file) break; top+; bo

23、oktop=b; file.close(); void clear()/全刪top=-1; int BDatabase:addbook(int n,char *na, char *wri, char *con,char *tm, float pr) /增加圖書Book *p=query(n); if (NULL=p) top+; booktop.addbook(n,na,wri,con,tm,pr); return 1; return 0; Book* BDatabase:query(int bookid)/查找圖書for (int i=0;i=top;i+) if (booki.getno(

24、)=bookid &booki.gettag()=0) return &booki; return NULL; int BDatabase:qname(char* nm) int j=0; for(int i=0;i=top;i+) if(strcmp(booki.getname(),nm)=0)&booki.gettag()=0) j+; if(j=0) return 0; else return j; Book* BDatabase:Qname(char* nm) int j=0; Book b100; for (int i=0;i=top;i+) if (strcmp(booki.get

25、name(),nm)=0) & booki.gettag()=0) bj+=booki; if(j=0) return NULL; else return b; int BDatabase:qzuozhe(char *wr) int e=0; for (int i=0;i=top;i+) if (strcmp(booki.getwriter(),wr)=0) & booki.gettag()=0) e+; if(e=0) return 0; else return e; Book* BDatabase:Qzuozhe(char *wr) int f=0; Book b100; for (int

26、 i=0;i=top;i+) if (strcmp(booki.getwriter(),wr)=0) & booki.gettag()=0) bf+=booki; if(f=0) return NULL; else return b; int BDatabase:qchuban(char *cb) int g=0; for (int i=0;i=top;i+) if (strcmp(booki.getconcem(),cb)=0) & booki.gettag()=0)g+; if(g=0) return NULL; else return g;Book* BDatabase:Qchuban(

27、char *cb) int h=0; Book b100; for (int i=0;i=top;i+) if (strcmp(booki.getconcem(),cb)=0) & booki.gettag()=0) bh+=booki; if(h=0) return NULL; else return b; void bookdata();/圖書庫維護void disp() for (int i=0;i=top;i+) if (booki.gettag()=0) booki.disp(); BDatabase()/析構(gòu)函數(shù),將book寫到book.txt文件中fstream file(boo

28、k.txt,ios:out); for (int i=0;i=top;i+) if (booki.gettag()=0) file.write(char *)&booki,sizeof(booki); file.close(); ;void BDatabase:bookdata() char choice; char bname40; int bookid; Book *b; char bwriter15; char bconcem15; char btime15; float bprice; int r=0; while (choice!=0) cout nnnttt* 圖 書 維 護 *e

29、ndlendl; cout ttt 1.新 增 endl; cout ttt 2.更 改 endl; cout ttt 3.刪 除 endl; cout ttt 4.查 找 endl; cout ttt 5.顯 示 endl; cout ttt 6.全 刪 endl; cout ttt 0.退 出 choice; switch (choice) case 1: cout 輸入圖書編號: bookid; cout 輸入圖書書名: bname; cout 輸入圖書作者: bwriter; cout 輸入圖書出版社: bconcem; cout 輸入圖書出版時間:btime; cout 輸入圖書價格

30、:bprice; addbook(bookid,bname,bwriter,bconcem,btime,bprice); cout圖書添加成功endl; break; case 2: cout 輸入圖書編號: bookid; b=query(bookid); if (b=NULL) cout 該圖書不存在endl; break; cout 輸入新的書名: bname; b-setname(bname); break; case 3:cout 讀入圖書編號: bookid; b=query(bookid); if (b=NULL) cout 該圖書不存在 delbook(); break; ca

31、se 4: cout 讀入圖書編號: bookid; b=query(bookid); if (b=NULL) cout 該圖書不存在 endl; break; cout您所查找的圖書信息如下disp(); break; case 5: disp(); break; case 6: clear();cout所有圖書已刪除endl; break; default:cout輸入錯誤,請從新輸入:; /*main() 函數(shù)的實現(xiàn),程序的主界面的引導*/void main() char choice; int bookid,readerid; RDatabase ReaderDB; Reader *r

32、; BDatabase BookDB; Book *b; while(choice!=0) cout endlendl; cout tttendl; cout ttt endl;cout ttt 圖書管理系統(tǒng) endl;cout ttt endl; cout ttt 1 借 書 endl; cout ttt 2 還 書 endl; cout ttt 3 圖 書 維 護 endl; cout ttt 4 讀 者 維 護 endl; cout ttt 0 離 開 endl; cout ttt choice; switch (choice) case 1: cout readerid; cout bookid; r=ReaderDB.query(readerid);/按編號查找if (NULL=r) cout 不存在該讀者,不能借書 endl; break; b=BookDB.query(bookid);if (b=NULL) cout 不存在該圖書,不能借書borrowbook()=0) cout 該圖書有借出,不能借書borrowbook(b-getno(); break; case 2: coutreaderid; cout bookid; r=R

溫馨提示

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

評論

0/150

提交評論