




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、學(xué) 號(hào): 面向?qū)ο蟪绦蛟O(shè)計(jì)大作業(yè)題 目圖書管理系統(tǒng)學(xué) 院信息工程學(xué)院專 業(yè)通信工程班 級(jí)姓 名ZXY指導(dǎo)教師鄢紅國2015年12月20日一、需求分析 圖書館管理系統(tǒng)是我國大部分院?;蚱渌块T不可缺少的部分,書籍是人類精神食糧,尤其對(duì)一些學(xué)校,圖書館來說,非常重要。在軟件開發(fā)中,以計(jì)算機(jī)圖書為主,稱“計(jì)算機(jī)圖書管理系統(tǒng)”。計(jì)算機(jī)圖書管理系統(tǒng)能夠?yàn)橛脩魧?shí)現(xiàn)借閱圖書、管理等,隨著科學(xué)技術(shù)的不斷提高,計(jì)算機(jī)科學(xué)日漸成熟,其強(qiáng)大的功能已為人們深刻認(rèn)識(shí),它已進(jìn)入人類社會(huì)的各個(gè)領(lǐng)域并發(fā)揮著越來越重要的作用。作為計(jì)算機(jī)應(yīng)用的一部分,使用計(jì)算機(jī)對(duì)圖書資源信息進(jìn)行管理,具有著手工管理所無法比擬的優(yōu)點(diǎn).例如:查閱迅
2、速、安全性高、可靠性高、存儲(chǔ)量大、保密性好、成本低等。這些優(yōu)點(diǎn)能夠極大地提高圖書館管理的效率。因此,開發(fā)這樣一套管理軟件是很有必要. 并且,通過此課題,能使我們熟練掌握文件、數(shù)組、指針的各種操作,以及一些算法思想的應(yīng)用。(一) 系統(tǒng)總體功能需求 圖書館可以為借閱者提供借還書、查詢書目等服務(wù)。借閱者每次最多能借5本書。借書員主要負(fù)責(zé)借還及新增更改書目讀者,查詢等工作,圖書管理員負(fù)責(zé)圖書信息的增減及讀者信息的維護(hù)。所有人員都可以瀏覽和查詢圖書信息。經(jīng)過初步分析,圖書館管理系統(tǒng)應(yīng)該具有以下幾個(gè)模塊:1)借書模塊2)還書模塊3)圖書維護(hù)模塊4)讀者維護(hù)模塊5)統(tǒng)計(jì)分析模塊6)提示7)離開(二)圖書借書
3、模塊功能分析 圖書借閱功能需要完成借閱者對(duì)相應(yīng)圖書的借閱。借閱者的借閱數(shù)量是有限定的,系統(tǒng)會(huì)自動(dòng)檢查是超過限定借閱的數(shù)量,若超過限定數(shù)量則不允許借閱。若當(dāng)前要借閱的圖書已經(jīng)被其他人預(yù)約,讀者也無法完成借閱。 輸出:是否允許借閱處理:系統(tǒng)進(jìn)行分析比較借閱數(shù)量及是否預(yù)約輸入:借閱者的編號(hào)及圖書的編號(hào)輸入:圖書的編號(hào) (三)圖書還書模塊功能分析圖書歸還功能需要完成圖書的歸還工作。(四)圖書維護(hù)模塊功能的需求實(shí)現(xiàn)對(duì)圖書的描述,圖書的編號(hào),書名,借出,還入等,需要實(shí)現(xiàn)的功能為:圖書編目,圖書注冊(cè),更新書目,圖書刪除。1、圖書的新增:首先給圖書編號(hào),在給圖書編號(hào)之前先判斷是否有圖書為該編號(hào),如果有則編號(hào)不
4、成功重新輸入編號(hào),如果沒有則編號(hào)成功,繼續(xù)添加圖書的其他信息,包括書名、作者、出版社、出版時(shí)間、價(jià)格等信息。 2、圖書的刪除:輸入圖書的編號(hào),刪除該編號(hào)圖書的所有信息,并提示刪除成功信息,若輸入無效的編號(hào)則提示刪除不成功。3、圖書的查找:輸入要查找圖書的編號(hào),輸出該編號(hào)圖書的所有信息,若輸入無效的編號(hào)則提示查找失敗。 4、圖書的顯示:按照出版時(shí)間的先后順序輸出圖書館所有書籍的信息。 5、圖書的全刪:刪除圖書館所有書籍的所有信息。(五) 讀者維護(hù)模塊功能的需求對(duì)讀者信息描述,建立讀者個(gè)人資料,借閱者管理需要實(shí)現(xiàn)的功能包括:借閱者注冊(cè),借閱者信息更新,借閱者注銷,借閱者信息的查詢。1、讀者的新增:
5、先給讀者編號(hào),如果該編號(hào)已經(jīng)有人,則提示錯(cuò)誤,否則繼續(xù)輸入讀者的其他信息,包括讀者的名字和初始密碼輸出添加成功提示。 2、讀者的更改:輸入讀者的編號(hào),更改讀者的名字,若輸入的編號(hào)無效則更該失敗。 3、讀者的刪除:輸入要?jiǎng)h除讀者的編號(hào),判斷該編號(hào)是否有人,有則刪除該讀者的所有信息,沒有則提示刪除失敗。 4、讀者的查找:輸入要查找的讀者編號(hào),編號(hào)正確則輸出讀者的信息,否則查找失敗。 5、讀者的顯示:顯示圖書館里所有讀者的信息。 6、讀者的刪除:刪除圖書館里所有讀者的信息。(六)統(tǒng)計(jì)分析功能 隨時(shí)可以進(jìn)行統(tǒng)計(jì)分析,以便及時(shí)了解當(dāng)前的借閱情況和相關(guān)的資料狀態(tài)。(七) 提示功能當(dāng)出現(xiàn)庫存查無此書或讀者時(shí)
6、,給予相應(yīng)提示。(八) 離開功能實(shí)現(xiàn)管理后的系統(tǒng)退出。 二、總體設(shè)計(jì)1.基本思路:采用面向?qū)ο蠓治龇椒ǎ岩粋€(gè)系統(tǒng)分成多個(gè)類進(jìn)行處理。主要是運(yùn)用到類和對(duì)象,還有帶參數(shù)的構(gòu)造函數(shù)以及析構(gòu)函數(shù)以及數(shù)組來實(shí)現(xiàn)本程序,并在主函數(shù)對(duì)各個(gè)功能模塊就行調(diào)用。即:1)讀者類,實(shí)現(xiàn)對(duì)讀者信息的描述 2)讀者庫類,實(shí)現(xiàn)建立讀者的個(gè)人資料 3)圖書類,實(shí)現(xiàn)對(duì)圖書的描述,圖書的編號(hào),書名,借出,還入等 4)圖書庫類,實(shí)現(xiàn)對(duì)圖書的維護(hù),查找,刪除等 最后用main函數(shù)做界面的引導(dǎo)。4.讀者維護(hù)3.圖書維護(hù)0.離開2.還書1.借書 2.遇到的問題及解決方法 1)用戶密碼驗(yàn)證的問題:怎么讓用戶在輸入密碼時(shí)用號(hào)覆蓋密碼解決辦
7、法:通過翻閱之前的C語言教材,發(fā)現(xiàn)書中有類似的例子,即getch()輸入密碼時(shí)屏幕上不顯示,然后用putch(*)就可以輸出*覆蓋密碼。 2)用getch()函數(shù) 編譯時(shí)出現(xiàn)問題。解決辦法:通過仔細(xì)檢查代碼,發(fā)現(xiàn)忘記添加頭文件 conio.h 。添加后,即可編譯。 3)問題三:指針的操作問題:如果定義char a4=1,2,3,4;char *p=a; 然后輸出p指向的字符串,coutdelbook();Case4:輸出讀者信息break3. 圖書類,實(shí)現(xiàn)對(duì)圖書的描述,圖書的編號(hào),書名,借出,還入等函數(shù)清單:char *getname()/獲取姓名,int getno()/獲取圖書編號(hào),int
8、 gettag()/獲取刪除標(biāo)記,void setname(char na)/設(shè)置書名,char*Book:getwriter()/獲取書籍作者,char*Book:getconcem() return concem; /獲取書籍出版社,char* Book:gettime() return Time; ,float Book:getprice() return price; /獲取書籍價(jià)格,void delbook()/刪除圖書,void Book:addbook(int n,char *na, char *wri, char *con, char* tm,float pr) /增加圖書形參
9、為書名,編號(hào),作者,出版社,出版時(shí)間,價(jià)格,int borrowbook()/借書操作,void retbook()/還書操作,void disp()/輸出圖書。4. 圖書庫類,實(shí)現(xiàn)對(duì)圖書的維護(hù),查找,刪除等函數(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) /增加圖書形參為書名,編號(hào),作者,出版社,出版時(shí)間,價(jià)格,Book* BDatabase:query(int bookid)/
10、查找圖書形參為圖書編號(hào),int BDatabase:qname(char* nm),void bookdata();/圖書庫維護(hù),void disp()顯示函數(shù)。 四、程序運(yùn)行結(jié)果測(cè)試與分析運(yùn)行結(jié)果: 分析:由于時(shí)間有限,程序在顯示上仍有小問題,待改進(jìn)。五、程序源代碼#include #include #include #include #include #include #includeusing namespace std;const int Maxr=100;/最多的讀者const int Maxb=100;/最多的圖書const int Maxbor=5;/每位讀者最多借五本書/*讀者
11、類,實(shí)現(xiàn)對(duì)讀者信息的描述*/class Readerprivate:int tag ;int no ;char name10 ;/讀者姓名int borbookMaxbor;/所借圖書char mima6; public:Reader()char *getname()return name;/獲取姓名int gettag()return tag;/獲取刪除標(biāo)記int getno()return no;/獲取讀者編號(hào)void setname(char na)strcpy(name,na);/設(shè)置姓名void delbook()tag=1;/設(shè)置刪除標(biāo)記 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借書編號(hào):;for(int i=0;iMaxbor;i+)if(borbooki!=0)coutborbooki|;coutendl;/*讀者庫類,實(shí)現(xiàn)建立讀者的個(gè)人資料*/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);/打開一個(gè)輸入文件while (1)file.read(char *)&s,sizeof(s); if (!file)break;top+; readtop=s;file.close(); /關(guān)閉reader.txt void clear()/刪除所有讀者信息top=-1;int addreader(int n,char *na,char* mi) /添加讀者時(shí)先查找是否存在Reader *p=query(n); if (p=NULL)top+; readtop.addreader(n,na,mi); return 1;return 0;Reader *query(int r
15、eaderid)/按編號(hào)查找 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();/讀者庫維護(hù)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* 讀 者 維 護(hù) *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輸入錯(cuò)誤,請(qǐng)從新輸入;break; /*圖書類,實(shí)現(xiàn)對(duì)圖書的描述,圖書的編號(hào),書名,借出,還入等*/class Book private: int tag;/刪除標(biāo)記1:已刪0:未刪int no;/圖書編號(hào)char name20;/書名char writer10; /作者char concem30; /出版社char Time10; float price; int onshelf;/是否在架1:在架 2:已借public: Book() char *getname() return name; /獲取姓名int getno() return no; /獲取圖書編號(hào)int gettag
20、() return tag; /獲取刪除標(biāo)記void setname(char na)/設(shè)置書名strcpy(name,na); char*Book:getwriter() return writer; /獲取書籍作者char*Book:getconcem() return concem; /獲取書籍出版社char* Book:gettime() return Time; float Book:getprice() return price; /獲取書籍價(jià)格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; ;/*圖書庫類,實(shí)現(xiàn)對(duì)圖書的維護(hù),查找,刪除等*/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();/圖書庫維護(hù)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* 圖 書 維 護(hù) *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 輸入圖書編號(hào): bookid; cout 輸入圖書書名: bname; cout 輸入圖書作者: bwriter; cout 輸入圖書出版社: bconcem; cout 輸入圖書出版時(shí)間:btime; cout 輸入圖書價(jià)格
30、:bprice; addbook(bookid,bname,bwriter,bconcem,btime,bprice); cout圖書添加成功endl; break; case 2: cout 輸入圖書編號(hào): bookid; b=query(bookid); if (b=NULL) cout 該圖書不存在endl; break; cout 輸入新的書名: bname; b-setname(bname); break; case 3:cout 讀入圖書編號(hào): bookid; b=query(bookid); if (b=NULL) cout 該圖書不存在 delbook(); break; ca
31、se 4: cout 讀入圖書編號(hào): 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輸入錯(cuò)誤,請(qǐng)從新輸入:; /*main() 函數(shù)的實(shí)現(xiàn),程序的主界面的引導(dǎo)*/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 圖 書 維 護(hù) endl; cout ttt 4 讀 者 維 護(hù) endl; cout ttt 0 離 開 endl; cout ttt choice; switch (choice) case 1: cout readerid; cout bookid; r=ReaderDB.query(readerid);/按編號(hào)查找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等.壓縮文件請(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. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廢舊混凝土回收合同范本
- 魄羅皮膚管理項(xiàng)目介紹
- 雕塑保護(hù)方案模板范本
- 防爆柜使用規(guī)范
- 塑膠場地施工方案及合同
- 2025至2031年中國注射用氨芐西林舒巴坦鈉行業(yè)投資前景及策略咨詢研究報(bào)告
- 西安工商學(xué)院《商務(wù)談判與銷售管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 草原鷹巢安裝施工方案
- 《經(jīng)理的職責(zé)》課件
- 蘭州鋼結(jié)構(gòu)閣樓施工方案
- 【核心素養(yǎng)目標(biāo)】9.1壓強(qiáng) 教學(xué)設(shè)計(jì) 2023-2024學(xué)年教科版八年級(jí)下冊(cè)物理
- 【互聯(lián)網(wǎng)企業(yè)并購中的財(cái)務(wù)風(fēng)險(xiǎn)探析與防范:以阿里巴巴并購餓了么為例12000字(論文)】
- 第九屆全國大學(xué)生測(cè)井技能大賽備賽試題庫-下(判斷題)
- 2025屆江蘇省南京市六區(qū)初三第二學(xué)期期中考試英語試題試卷含答案
- icu手冊(cè)第一部分-常見病診療規(guī)范
- 腫瘤專科護(hù)士考試題附有答案
- 酒店工程部培訓(xùn)課件
- 省級(jí)一網(wǎng)統(tǒng)管網(wǎng)格化社會(huì)治理指揮手冊(cè)(含事項(xiàng)清單)
- 知道智慧網(wǎng)課《科技倫理》章節(jié)測(cè)試答案
- 工程居間合同范本電子版
- 中醫(yī)超聲霧化療法臨床應(yīng)用標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論