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

下載本文檔

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

文檔簡介

目錄第一章 需求分析3(一) 系統(tǒng)總體功能需求3(二)圖書借書模塊功能分析4(四)圖書維護模塊功能的需求5(七) 離開功能7第二章 圖書管理系統(tǒng)界面設計8(一) 初始界面8(二) 圖書維護8(三) 讀者維護界面9(四) 圖書借還10(五)不存在提示10(六) 離開11第三章 圖書管理系統(tǒng)應用程序代碼11(一) 讀者模塊121)讀者類,實現(xiàn)對讀者的信息的描述122)讀者類庫,實現(xiàn)建立讀者的個人資料13(二) 圖書模塊161)圖書類,實現(xiàn)對圖書的描述,圖書的編號,書名,借出,還入等172)圖書庫類,實現(xiàn)對圖書的維護,查找,刪除等18(三) 主程序模塊21main() 函數(shù)的實現(xiàn),程序的主界面的引導21(四)完整程序23第四章 結束語32第五章 參考文獻32*圖書館管理系統(tǒng)運用面向對象方法對圖書館管理系統(tǒng)進行分析圖書館管理系統(tǒng)是我國大部分院?;蚱渌块T不可缺少的部分,書籍是人類精神食糧,尤其對一些學校,圖書館來說,非常重要。在軟件開發(fā)中,以計算機圖書為主,稱“計算機圖書管理系統(tǒng)”。計算機圖書管理系統(tǒng)能夠為用戶實現(xiàn)借閱圖書、管理等,隨著科學技術的不斷提高,計算機科學日漸成熟,其強大的功能已為人們深刻認識,它已進入人類社會的各個領域并發(fā)揮著越來越重要的作用。作為計算機應用的一部分,使用計算機對圖書資源信息進行管理,具有著手工管理所無法比擬的優(yōu)點.例如:查閱迅速、安全性高、可靠性高、存儲量大、保密性好、成本低等。計算機圖書管理系統(tǒng)能夠單一定向計算機圖書方面,具有實用,精簡功能等效率,這些優(yōu)點能夠極大地提高圖書館管理的效率,也是企業(yè)、學校的科學化、正規(guī)化管理,與世界接軌的重要條件。因此,開發(fā)這樣一套管理軟件是很有必要. 本案例開發(fā)的是“計算機圖書管理系統(tǒng)” =第一章 需求分析(一) 系統(tǒng)總體功能需求圖書館可以為借閱者提供借還書、查詢書目等服務。借閱者每次最多能借5本書。借書員主要負責借還及新增更改書目讀者,查詢等工作,圖書管理員負責圖書信息的增減及讀者信息的維護。所有人員都可以瀏覽和查詢圖書信息。經過初步分析,圖書館管理系統(tǒng)應該具有以下幾個模塊:1)借書模塊2)還書模塊3)圖書維護模塊4)讀者維護模塊5)提示6)離開圖書管理系統(tǒng)借書模塊還書模塊圖書維護模塊讀者維護模塊提示離開(二)圖書借書模塊功能分析圖書借閱功能需要完成借閱者對相應圖書的借閱。借閱者的借閱數(shù)量是有限定的,系統(tǒng)會自動檢查是超過限定借閱的數(shù)量,若超過限定數(shù)量則不允許借閱。若當前要借閱的圖書已經被其他人預約,讀者也無法完成借閱。輸入:借閱者的編號及圖書的編號處理:系統(tǒng)進行分析比較借閱數(shù)量及是否預約輸出:是否允許借閱借書模塊需求(三)圖書還書模塊功能分析圖書歸還功能需要完成圖書的歸還工作。輸入:圖書的編號處理:系統(tǒng)進行分析比較是否已超歸還期輸出:是否進行罰款還書模塊需求(四)圖書維護模塊功能的需求實現(xiàn)對圖書的描述,圖書的編號,書名,借出,還入等,需要實現(xiàn)的功能為:圖書編目,圖書注冊,更新書目,圖書刪除。1) 登記新書:將圖書的特征信息(書名、圖書編號等)存儲在數(shù)據庫中,圖書的借閱、圖書信息的查詢都是以其作為基礎的。2) 更新書目:當發(fā)現(xiàn)圖書信息錯誤時,可以進行圖書信息的修改。3) 圖書查找:對圖書館新引進的書進行編制唯一的號碼(圖書編號),以便于圖書的管理和查找。4) 圖書刪除:將廢舊的或丟失的圖書信息刪除,以減少數(shù)據庫中的無用信息,也會減少圖書查詢中的錯誤信息。輸入:圖書的相關信息(如:編號、名稱、作者等)處理:系統(tǒng)進行保存、更新、刪除等操作輸出:圖書變更的后的信息,操作是否成功圖書維護模塊需求(五) 讀者維護模塊功能的需求 對讀者信息描述,建立讀者個人資料,借閱者管理需要實現(xiàn)的功能包括:借閱者注冊,借閱者信息更新,借閱者注銷,借閱者信息的查詢。1) 讀者新增:借閱者作為圖書館流通的主體,其信息的注冊(將讀者的特征信息存儲在數(shù)據庫中)也是圖書館自動化必須完成的任務。2) 讀者信息更改:當發(fā)現(xiàn)借閱者信息錯誤或者當借閱者的某些信息發(fā)生變動時,可以對讀者信息進行修改。3) 讀者刪除:由于某些原因需要對該借閱者注銷,只有滿足條件的借閱者才能進行注銷。4)讀者查找:借閱者借閱書籍的歷史查詢。輸入:借閱者的相關信息處理:系統(tǒng)進行注冊、更新、注銷、查詢等操作輸出:借閱者信息維護后的結果,及修改是否成功讀者維護模塊需求(六) 提示功能當出現(xiàn)庫存查無此書或讀者時,給予相應提示。(七) 離開功能實現(xiàn)管理后的系統(tǒng)退出。=第二章 圖書管理系統(tǒng)界面設計(一) 初始界面鍵盤輸入相應數(shù)字進入相應界面。(二) 圖書維護選擇3,進入圖書維護界面,注冊圖書;1)圖書新增2)圖書更改3)圖書查找4)圖書刪除(三) 讀者維護界面選擇4,進入讀者維護界面,注冊讀者。1)讀者新增2)讀者更改3)讀者刪除4)讀者查找(四) 圖書借還1)圖書借閱,選擇1,進入借書界面。2)圖書歸還,選擇2,進入歸還界面。(五)不存在提示進入系統(tǒng)后,如果有不存在的書籍或讀者,給予提示。(六) 離開管理后的系統(tǒng)退出。=第三章 圖書管理系統(tǒng)應用程序代碼 程序一共分為3個模塊:讀者模塊,圖書模塊和主程序模塊。 讀者模塊是由劉鳴靜負責的,分為讀者類和讀者庫類。讀者類主要實現(xiàn)對讀者的信息的描述。讀者庫類主要實現(xiàn)建立讀者的個人資料。 圖書模塊是由李悅負責的,分為圖書類和圖書庫類。圖書類主要實現(xiàn)對圖書的描述,圖書的編號,書名,借出,還入等。圖書庫類主要實現(xiàn)對圖書的維護,查找,刪除等。主程序模塊是由馬春艷負責的,主要實現(xiàn)的是程序的主界面的引導。(一) 讀者模塊1)讀者類,實現(xiàn)對讀者的信息的描述class Reader private:int tag; /刪除標記 1:已刪 0:未刪int no; /讀者編號char name10; /讀者姓名int borbookMaxbor;/所借圖書 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:未刪void addreader(int n,char *na)/增加讀者 tag=0;no=n;strcpy(name,na);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)borbooki=0;return 1;return 0;void disp()/讀出讀者信息 cout setw(5) no setw(10) name借書編號:;for(int i=0;iMaxbor;i+)if(borbooki!=0)cout borbooki |;cout endl;2)讀者類庫,實現(xiàn)建立讀者的個人資料 class RDatabase private: int top; /讀者記錄指針 Reader readMaxr;/讀者記錄public:RDatabase() /構造函數(shù),將reader.txt讀到read中Reader s;top=-1;fstream file(reader.txt,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)/添加讀者時先查找是否存在Reader *p=query(n);if (p=NULL) top+; readtop.addreader(n,na); return 1;return 0; Reader *query(int readerid)/按編號查找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+) readi.disp();void readerdata();/讀者庫維護RDatabase() /析構函數(shù),將read寫到reader.txt文件中fstream file(reader.txt,ios:out); for (int i=0;i=top;i+)if (readi.gettag()=0)file.write(char *)&readi,sizeof(readi);file.close(); ;void RDatabase:readerdata() char choice;char rname20;int readerid;Reader *r;while (choice!=0) cout nnttt讀 者 維 護nnntt 1 新 增nntt 2 更 改nntt 3 刪 除nntt 4 查 找nntt 5 顯 示nntt 6 全 刪nntt 0 退 出 choice;switch (choice) case 1:cout readerid;cout rname;addreader (readerid,rname);break; case 2:cout readerid;r=query(readerid);if (r=NULL)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 該讀者不存在disp();break;case 5:disp();break;case 6:clear();break;default:cout輸入錯誤,請從新輸入:;break;(二) 圖書模塊1)圖書類,實現(xiàn)對圖書的描述,圖書的編號,書名,借出,還入等class Bookprivate: int tag;/刪除標記 1:已刪 0:未刪int no;/圖書編號char name20;/書名int onshelf;/是否再架 1:再架 2:已借public:Book()char *getname() return name; /獲取姓名int getno() return no; /獲取圖書編號int gettag() return tag; /獲取刪除標記void setname(char na)/設置書名strcpy(name,na);void delbook() tag=1;/刪除圖書void addbook(int n,char *na)/增加圖書tag=0;no=n;strcpy(name,na);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)(onshelf=1? 在架:已借) endl;2)圖書庫類,實現(xiàn)對圖書的維護,查找,刪除等class BDatabaseprivate: int top; /圖書記錄指針Book bookMaxb; /圖書記錄public:BDatabase()/構造函數(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+;booktop=b;file.close(); void clear()/全刪top=-1; int addbook(int n,char *na)/增加圖書Book *p=query(n);if (NULL=p)top+;booktop.addbook(n,na);return 1;return 0;Book *query(int bookid)/查找圖書for (int i=0;i=top;i+)if (booki.getno()=bookid &booki.gettag()=0)return &booki;return NULL;void bookdata();/圖書庫維護void disp() for (int i=0;i=top;i+) if (booki.gettag()=0) booki.disp();BDatabase()/析構函數(shù),將book寫到book.txt文件中fstream file(book.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;while (choice!=0)cout nnnttt圖 書 維 護 endlendl;couttt1 新 增n tt2 更 改ntt3 刪 除ntt4 查 找ntt5 顯 示ntt6 全 刪ntt0 退 出 choice;switch (choice) case 1:cout 輸入圖書編號: bookid; cout 輸入圖書書名: bname;addbook(bookid,bname);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;case 4:cout 讀入圖書編號: bookid;b=query(bookid);if (b=NULL)cout 該圖書不存在disp();break;case 5:disp();break;case 6:clear();break;default:cout輸入錯誤,請從新輸入:;(三) 主程序模塊main() 函數(shù)的實現(xiàn),程序的主界面的引導int main() char choice;int bookid,readerid;RDatabase ReaderDB;Reader *r;BDatabase BookDB;Book *b;while(choice!=0) cout endlendlttt 圖 書 管 理 系 統(tǒng)nnn; cout ttt1 借 書nnttt2 還 書 nnttt3 圖 書 維 護nnttt4 讀 者 維 護nnttt0 離 開 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=ReaderDB.query(readerid);if (r=NULL)cout 不存在該讀者,不能還書 endl;break;b=BookDB.query(bookid);if (b=NULL)cout 不存在該圖書,不能還書 retbook();r-retbook(b-getno();break;case 3:BookDB.bookdata();break;case 4: ReaderDB.readerdata(); break;default:cout輸入錯誤,請從新輸入:;(四)完整程序#include #include #include #include /輸入/輸出文件流類using namespace std;const int Maxr=100;/最多的讀者const int Maxb=100;/最多的圖書const int Maxbor=5;/每位讀者最多借五本書/讀者類,實現(xiàn)對讀者的信息的描述class Reader private:int tag; /刪除標記 1:已刪 0:未刪int no; /讀者編號char name10; /讀者姓名int borbookMaxbor;/所借圖書 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:未刪void addreader(int n,char *na)/增加讀者 tag=0;no=n;strcpy(name,na);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)borbooki=0;return 1;return 0;void disp()/讀出讀者信息 cout setw(5) no setw(10) name借書編號:;for(int i=0;iMaxbor;i+)if(borbooki!=0)cout borbooki |;cout endl;/讀者類庫,實現(xiàn)建立讀者的個人資料 class RDatabase private: int top; /讀者記錄指針 Reader readMaxr;/讀者記錄public:RDatabase() /構造函數(shù),將reader.txt讀到read中Reader s;top=-1;fstream file(reader.txt,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)/添加讀者時先查找是否存在Reader *p=query(n);if (p=NULL) top+; readtop.addreader(n,na); return 1;return 0; Reader *query(int readerid)/按編號查找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+) readi.disp();void readerdata();/讀者庫維護RDatabase() /析構函數(shù),將read寫到reader.txt文件中fstream file(reader.txt,ios:out); for (int i=0;i=top;i+)if (readi.gettag()=0)file.write(char *)&readi,sizeof(readi);file.close(); ;void RDatabase:readerdata() char choice;char rname20;int readerid;Reader *r;while (choice!=0) cout nnttt讀 者 維 護nnntt 1 新 增nntt 2 更 改nntt 3 刪 除nntt 4 查 找nntt 5 顯 示nntt 6 全 刪nntt 0 退 出 choice;switch (choice) case 1:cout readerid;cout rname;addreader (readerid,rname);break; case 2:cout readerid;r=query(readerid);if (r=NULL)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 該讀者不存在disp();break;case 5:disp();break;case 6:clear();break;default:cout輸入錯誤,請從新輸入:;break;/圖書類,實現(xiàn)對圖書的描述,圖書的編號,書名,借出,還入等class Bookprivate: int tag;/刪除標記 1:已刪 0:未刪int no;/圖書編號char name20;/書名int onshelf;/是否再架 1:再架 2:已借public:Book()char *getname() return name; /獲取姓名int getno() return no; /獲取圖書編號int gettag() return tag; /獲取刪除標記void setname(char na)/設置書名strcpy(name,na);void delbook() tag=1;/刪除圖書void addbook(int n,char *na)/增加圖書tag=0;no=n;strcpy(name,na);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)(onshelf=1? 在架:已借) endl;/圖書庫類,實現(xiàn)對圖書的維護,查找,刪除等class BDatabaseprivate: int top; /圖書記錄指針Book bookMaxb; /圖書記錄public:BDatabase()/構造函數(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+;booktop=b;file.close(); void clear()/全刪top=-1; int addbook(int n,char *na)/增加圖書Book *p=query(n);if (NULL=p)top+;booktop.addbook(n,na);return 1;return 0;Book *query(int bookid)/查找圖書for (int i=0;i=top;i+)if (booki.getno()=bookid &booki.gettag()=0)return &booki;return NULL;void bookdata();/圖書庫維護void disp() for (int i=0;i=top;i+) if (booki.gettag()=0) booki.disp();BDatabase()/析構函數(shù),將book寫到book.txt文件中fstream file(book.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;while (choice!=0)cout nnnttt圖 書 維 護 endlendl;couttt1 新 增n tt2 更 改ntt3 刪 除ntt4 查 找ntt5 顯 示ntt6 全 刪ntt0 退 出 choice;switch (choice) case 1:cout 輸入圖書編號: bookid; cout 輸入圖書書名: bname;addbook(bookid,bname);break; case 2:cout 輸入圖書編號: bookid;b=query(bookid);if

溫馨提示

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

評論

0/150

提交評論