《面向?qū)ο蟪绦蛟O(shè)計(C++)》圖書管理系統(tǒng)設(shè)計_第1頁
《面向?qū)ο蟪绦蛟O(shè)計(C++)》圖書管理系統(tǒng)設(shè)計_第2頁
《面向?qū)ο蟪绦蛟O(shè)計(C++)》圖書管理系統(tǒng)設(shè)計_第3頁
《面向?qū)ο蟪绦蛟O(shè)計(C++)》圖書管理系統(tǒng)設(shè)計_第4頁
《面向?qū)ο蟪绦蛟O(shè)計(C++)》圖書管理系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、面向?qū)ο蟪绦蛟O(shè)計(C+項目名稱:圖書管理系統(tǒng)設(shè)計一、問題分析與功能定義二十一世紀是信息的社會,信息作為社會最主要的資源,將成為戰(zhàn)略資源 引起人們廣泛的關(guān)注。如何獲取信息?圖書是我們最好的獲取信息的方式,但由于圖書館圖書收藏量大大增加,使傳統(tǒng)的圖書管理員的工作日益繁重起來。 迫使 人們起用新的管理方法來管理圖書,但如何把圖書管理員從繁重的工作中解脫出 來呢?科學(xué)技術(shù)日新月異的進步,讓人類生活發(fā)生了巨大的變化,計算機技術(shù)的 飛速發(fā)展,使各行各業(yè)在計算機技術(shù)應(yīng)用方面得到了廣泛的普及和使用。 信息化 時代的到來成為不可抗拒的潮流, 人類文明正在進入一個嶄新的時代。 因此,圖 書管理系統(tǒng)也以方便、快捷、

2、費用低的優(yōu)點正慢慢地進入人們的生活,將傳統(tǒng)的 圖書管理方式徹底的解脫出來, 提高效率,減輕工人人員以往繁忙的工作,減小 出錯的概率,使讀者可以花更多的時間在選擇書和看書上。 從而使人們有更多時 間來獲取信息、了解信息、掌握信息 。1、設(shè)計內(nèi)容及要求設(shè)計一個圖書館管理系統(tǒng),完成圖書管理和讀者管理的功能, 并能對借閱信 息進行管理,要求完成一下功能,圖書資料管理,可以添加、修改、刪除、查詢 書籍信息,讀者資料管理,可以添加、修改、刪除、查詢讀者信息;借書管理, 可以進行添加借書信息;還書管理,可以進行還書信息;該項目是在Visual C+ 6.0 的平臺下用C+語言實現(xiàn),創(chuàng)建對象,程序運 行開始,

3、打開文件并將其分別鏈入鏈表之中; 程序結(jié)束關(guān)閉并保存文件。整體系 統(tǒng)功能全部由鏈表實現(xiàn)。2、模塊圖借書還書圖書維護圖書館管理 系統(tǒng)讀者維 護離開二、對象(類)設(shè)計及實現(xiàn)1、概要設(shè)計Reader讀者類、RDatabase讀者庫類、Book圖書類、BDatabase圖書庫類2、詳細設(shè)計1) 類的原型描述class Reade/ 讀者類int tag;/刪除標記1:已刪0:未 刪int no;/讀者編號char name10;瀆者姓名int borbookMaxbor; 所借圖書 Reader() char *get name() /獲取姓名 int gettag() 獲取刪除標記 in t get

4、 no() /獲取讀者編號 void set name(char n a)/ 設(shè)置姓 名void delbook() /設(shè)置刪除標記 void addreader(int n,char *na); 增加讀者void borrowbook(int bookid); /class RDatabase/讀者庫類int top;/讀者記錄指針 Reader readMaxr;/ 讀者記錄 RDatabase() ;/構(gòu)造函數(shù),將 reader.txt讀至U read中 void clear(); 刪除所有讀者信息 int addreader(int n,char *na);/增 添讀者信息Reader

5、 *query(i nt readerid);/按編 號查找void disp();/輸出所有讀者信息 int Readernum();/記錄讀者信息 void readerdata();/讀者庫維護 RDatabase();/析構(gòu)函數(shù),將 read寫入 reader.txt 文件中三、核心控制設(shè)計1、在主函數(shù)中我們要做的操作包括: 建立1個Reader讀者類、1個RDatabase讀者庫類、1個Book圖書類、1 個BDatabase圖書庫類(2) 建立菜單界面。完成以下內(nèi)容: 進入功能必須打開菜單,然后用戶根據(jù)菜單選擇相應(yīng)的操作方式,如查看數(shù)據(jù)、編輯圖書數(shù)據(jù)以及修改圖書數(shù)據(jù)、維護圖書的采購

6、信息。添加、刪除、查看讀者個人信息,瀏覽圖書信息。 能夠?qū)D書基本信息、圖書采購信息、圖書的借閱人信息進行統(tǒng)計,統(tǒng) 計的結(jié)果能夠以表格的形式來表示。(3) 將圖書基本信息、圖書采購信息、圖書的借閱人信息存儲在相應(yīng)的文件中。(4) 系統(tǒng)界面友好,易操作。2、本程序應(yīng)具備的功能:A. 添加、借閱、還書功能:(1) 添加讀者和圖書信息。(2) 借閱尚在架的圖書。(3) 讀者歸還的圖書。B. 查找功能(1) 根據(jù)圖書的編號查找圖書信息。(2) 根據(jù)讀者的編號查找讀者的信息。C. 系統(tǒng)的操作(1) 系統(tǒng)在進入時,要有菜單提示;(2) 系統(tǒng)在用戶退出時,有一定的提示。3、算法分析1 )添加操作:(讀者信息

7、的添加與圖書信息的添加類似)包括兩個部分,先通過輸入設(shè)備輸入信息,系統(tǒng)獲?。蝗缓筇砑尤胱x者數(shù)據(jù) 庫read.txt文件中。獲取信息void Reader:addreader(i nt n, char *na)tag=O;no=n;strcpy( name, na);for (int i=0;iMaxbor;i+) borbooki=0;II增加讀者II增添讀者信息int RDatabase:addreader(i nt n, char *na)der *p=query (n);if (p=NULL)top+; readtop.addreader( n,n a);cout讀者添加成功endl;r

8、eturn 1; return 0;return 0;流程圖:析構(gòu)函數(shù)寫入新讀者的編號跟姓名RDatabase:RDatabase()fstream file(reader.txt,ios:out);for (int i=0;i=top;i+)if(readi.gettag()=0)file.write(char *)&readi,sizeof(readi); elsefile.close();流程圖:fstream file(reader.txt,ios:out);int i=0當(dāng) i=topj;gadi.gettag()=0_r丫 Nfile.write(char*)&readi,size

9、of(rea di);file.close();i+2)借書操作:利用for語句和if語句,通過判斷圖書的borbook的編號是否為0, 來判斷圖書是否未被借走或還沒有被借完。void Reader:borrowbook(i nt bookid) / 借書操作 for (int i=0;iMaxbor;i+)if (borbooki=0)borbooki=bookid;return;流程圖:int i=0當(dāng) iMaxborborbooki=0Y Nborbooki=bookid; return;i+3) 還書操作:利用for語句和if語句,通過判斷圖書的borbook的編號是否為 要還書的編號

10、,來判斷是否借出此書。int Reader:retbook(i nt bookid)還書操作for(i nt i=0;iMaxbor;i+)if(borbooki=bookid)流程圖:borbooki=0; return 1;int i=0當(dāng) iMaxbor*porbooki=bookidYNborbooki=0; return 1;con ti nuei+elsecon ti nue;(4) 查找功能:利用for語句和if語句,尋找與要查詢的編號相同的讀者編號或圖 書編號,如果找到,向系統(tǒng)返回相應(yīng)的編號,輸出相應(yīng)的信息。(讀者的查找與圖書查找類似)Reader *query(i nt re

11、aderid)/ 按編號查找for (int i=0;i=top;i+)if(readi.get no()=readerid&readi.gettag()=0) return & readi;return NULL;流程圖:四、測試分析int i=0當(dāng) i=topeadi.getno()=readeridY -&greadi.gettag()=0-rirJ Nreturn & readi;i+;return NULL;(一)、此系統(tǒng)存在問題1)未設(shè)登錄密碼保護系統(tǒng),是整個圖書管理系統(tǒng)失去了一定的安全性;2)程序運行界面:據(jù)保存到磁盤維冠材菜車吊事蠶字兩瓦趣君:圖書管理系統(tǒng)設(shè)計者*童安蓉巖楊丹巖

12、劉蕙娟豪鄧小偉-一-完成時I司r 201012月2 B11狗拼音- E:自輪程序圖書館SSOebug國書館管理系S.書者出 嚏豐-E 12 3 4 0匚x將數(shù)據(jù)保存到磁盤書者也 豐圖諛退 12 3 4 0迢書讀者編號:0904020228 囹韋編號詢丄書者也 遵圖整 12 3 4 0書書需矗保存到磁盤確十歡迎逬入圖書維護界面增改除找示刪岀 新更刪查顯全退翕入圖書編號二此界面運行時選擇4有時會出現(xiàn)內(nèi)存讀取錯誤;1 )當(dāng)輸入錯的數(shù)據(jù)類型時 可能導(dǎo)致內(nèi)存錯誤;2)讀者、圖書信息不完善;3 )命名不是很規(guī)范;4)信息存儲有限;謝謝您的使用?再見辛Piess anto cont inue五、心得體會通過

13、這次課程設(shè)計讓我逐步學(xué)會了如何運用 C+面向?qū)ο蟪绦蛟O(shè)計的設(shè)計 思想和方法來解決實際問題。比如這次設(shè)計圖書管理系統(tǒng),首先我考慮是在實際應(yīng)用時用戶一般進行什么 操作,對哪些對象進行操作。很顯然我需要建立兩個類,包括圖書類和讀者類, 同時考慮到圖書和讀者不止一個, 所以還需兩個類,圖書庫類和讀者庫類,這兩 個類分別將其信息傳遞給圖書類和讀者類。 確定了類之后,則需要對類的內(nèi)容進 行擴充。由于我需要這個系統(tǒng)完成對圖書管理和讀者管理的功能,并能對借閱信息進行管理,要求完成一下功能,圖書資料管理,可以添加、修改、刪除、查詢 書籍信息,讀者資料管理,可以添加、修改、刪除、查詢讀者信息;借書管理, 可以進行

14、添加借書信息;還書管理,可以進行還書信息。所以在對應(yīng)的類下建立 相應(yīng)功能函數(shù)。建立功能函數(shù)后就是構(gòu)造主函數(shù)。 主函數(shù)的作用就是通過向?qū)ο?發(fā)送信息、對象接受信息啟動相應(yīng)的方法來實現(xiàn)相應(yīng)的操作。當(dāng)然在這些過程中要保證面向?qū)ο蟪绦蛟O(shè)計的抽象、 封裝、多態(tài)和繼承的特 點。在設(shè)計本系統(tǒng)中雖然綜合考慮到了圖書管理的各個方面, 界面設(shè)計簡潔,數(shù) 據(jù)庫設(shè)計合理,但依然還有一些不足。為了能夠較好地完成本次課程設(shè)計, 我詳細閱讀教材,以及網(wǎng)上搜索,和到 圖書館查找相關(guān)資料等。在做課程設(shè)計的過程中,我在利用所學(xué)的知識同時,又 學(xué)到了很多實例化的理論知識和軟件工程的一些實踐,總結(jié)了一些經(jīng)驗和方法強 化了我的實際動手

15、能力,同時也找到自己的不足,我一定會繼續(xù)學(xué)習(xí)增加自己的編程能力和調(diào)試能力,在今后的學(xué)習(xí)中我將會更加的努力,增加自己的知識儲備, 拓寬自己的知識面,鍛煉自己的能力,使我的綜合素質(zhì)得到較大的提高。在這設(shè)計的過程中我也出現(xiàn)過一些比較嚴重的錯誤,后來在同學(xué)的指點下 我改正了自己的錯誤,并最終成功調(diào)試除了程序。當(dāng)程序調(diào)試出來的那一瞬間, 我感覺自己完成了一件非常了不起的事, 好有成就感。在以后的日子,我將會繼 續(xù)我的興趣繼續(xù)深入學(xué)習(xí)程序設(shè)計, 相信在越來越多的嘗試之后,自己會不斷進 步不斷提高的。最后感謝老師的指導(dǎo)與同學(xué)的幫助,使我能順利完成這次程序設(shè)計。六、源程序代碼#i nclude #i nclu

16、de #in elude #i nclude /輸入/輸出文件流類 using n amespace std;const int Maxr=100; 最多的讀者const int Maxb=100;最多的圖書const int Maxbor=5;/每位讀者最多借五本書讀者類,實現(xiàn)對讀者的信息的描述class Reader1:已刪0:未刪 private: int tag; 刪除標記 int no;讀者編號char name10; /讀者姓名 int borbookMaxbor;/ 所借圖書public:Reader() char *get name() return n ame; int ge

17、ttag()return tag;int get no()return no; void set name(char n a) 構(gòu)造函數(shù)獲取姓名獲取刪除標記/獲取讀者編號/設(shè)置姓名strcpy (n ame ,n a);void delbook()設(shè)置刪除標記tag=1;void addreader(int n,char *na); 增加讀者 void borrowbook(i nt bookid);借書操作in t retbook(i nt bookid);還書操作void disp();輸出讀者信息;void Reader:addreader(i nt n, char *na) / 增加讀

18、者tag=0;no=n;strcpy( name, na);for (i nt i=O;iMaxbor;i+) borbooki=0;口void Reader:borrowbook(i nt bookid) / 借書操作for (i nt i=0;iMaxbor;i+)if (borbooki=0)borbooki=bookid; return;int Reader:retbook(i nt bookid)還書操作for(i nt i=0;iMaxbor;i+)if(borbooki=bookid)borbooki=0;return 1;elsecon ti nue;return 0;void

19、 Reader:disp()輸出讀者信息cout setw(5) no setw(10) n ame 借書編號:; for (i nt i=0;iMaxbor;i+)if (borbooki!=0)cout borbooki |; coute ndl;讀者類庫,實現(xiàn)建立讀者的個人資料class RDatabaseprivate:int top;/讀者記錄指針Reader readMaxr;/讀者記錄 public:RDatabase();void clear()top=-1;int addreader(i nt n, char *n a);Reader *query(i nt readerid

20、)for (int i=0;i=top;i+) if(readi.get no()=readerid& readi.gettag()=0) return & readi; return NULL;構(gòu)造函數(shù),將reader.txt讀到read中刪除所有讀者信息/增添讀者信息/按編號查找void disp(); int Reader num();void readerdata(); RDatabase();件中輸出所有讀者信息/得到讀者編號讀者庫維護/析構(gòu)函數(shù),將read寫入reader.txt文;RDatabase:RDatabase()read中Reader s;top=-1;fstream

21、file(reader.txt,ios:i n);while (1)file.read(char *)&s,sizeof(s);/構(gòu)造函數(shù),將reader.txt讀到if (!file) break;top+; readtop=s;file.close();RDatabase:RDatabase()/ 析構(gòu)函數(shù),將 read寫入 reader.txt文件中fstream file(reader.txt,ios:out);for (int i=0;i=top;i+)if(readi.gettag()=O)file.write(char *)&readi,sizeof(readi);elsefil

22、e.close();int RDatabase:addreader(i nt n,char *na)增添讀者信息Reader *p=query (n);if (p=NULL)top+;readtop.addreader( n,n a); cout讀者添加成功endl;return 1;return 0;void RDatabase:disp()輸出所有讀者信息for (int i=O;i=top;i+)readi.disp();int RDatabase:Reader num()return top;void RDatabase:readerdata()/ 讀者庫維護/讀者姓名char cho

23、ice;char rname100;int readerid;Reader *r;do 新 增 nntt找 nntt 5 顯cout nnttt歡迎進入讀者維護界面nnntt 1 2 更改 nntt 3 刪除 nntt 4 查示 nntt 6全 刪 nntt 0 退出 choice;switch (choice)case 1:cout readerid; cout rn ame;addreader (readerid,r name); break;case 2:cout readerid;r=query(readerid);if (r=NULL)cout 該讀者不存在e ndl;break;c

24、out rn ame;r-set name(r name);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:;break;clear(); break;default:if (choice!=0) cout輸入錯誤,請從新輸入: while (choice!=0);圖書類,實

25、現(xiàn)對圖書的描述,圖書的編號,書名,借出,還入等 class Bookprivate:int tag;/刪除標記1:已刪0:未刪int no;/圖書編號char name20;/書名 inton shelf;/是否再架1:再架0:已借 public:Book()char *get name() return n ame; /獲取姓名in t get no () return n o; / 獲取圖書編號in t gettag() return tag; / 獲取刪除標記 void set name(char n a)/設(shè)置書名strcpy( name, na);void delbook() tag

26、=1;/ 刪除圖書void addbook(i nt n,char *n a) 增加圖書tag=0;no=n;strcpy( name, na);on shelf=1;int borrowbook() 借書操作if (on shelf=1)on shelf=O; return 1; return 0;void retbook() 還書操作on shelf=1;void disp() 輸出圖書cout setw(6) no setw(18) n ame setw(10) (onshelf=1?在架:已借)endl;圖書庫類,實現(xiàn)對圖書的維護,查找,刪除等class BDatabaseprivat

27、e:int top;/圖書記錄指針Book bookMaxb; / 圖書記錄public:BDatabase()/構(gòu)造函數(shù),將 book.txt 讀到 book中Book b;top=-1;fstream file(book.txt,ios:i n);while (1)file.read(char *)&b,sizeof(b);if (!file) break;top+; booktop=b;file.close();void clear() 全刪top=-1;int addbook(i nt n,char *n a);增加圖書Book *query(i nt bookid)/ 查找圖書for

28、 (int i=0;i=top;i+)if (booki.get no()=bookid &booki.gettag()=0)retur n &booki; return NULL;void bookdata(); 圖書庫維護void disp()輸出圖書for (int i=0;i=top;i+)if (booki.gettag()=0)booki.disp();BDatabase();/析構(gòu)函數(shù),將book寫到book.txt文件中;int BDatabase:addbook(i nt n,char *n a)/增加圖書Book *p=query (n);if (NULL=p)top+;b

29、ooktop.addbook (n,n a);return 1;return 0;BDatabase:BDatabase()析構(gòu)函數(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 bn ame40;int bookid;Book *b;docoutvvtt1 新

30、增 n tt2 更 改 ntt3 刪除 ntt4查找ntt5顯 示 ntt6 全刪ntt0退 出 choice;switch (choice)case 1:cout 輸入圖書編號: bookid;cout 輸入圖書書名: bn ame;addbook(bookid,b name);break;case 2:cout 輸入圖書編號: bookid;b=query(bookid);if (b=NULL)cout 該圖書不存在e ndl;break;cout 輸入新的書名: bn ame;b-set name(b name);break;case 3:cout 讀入圖書編號: bookid;b=qu

31、ery(bookid);if (b=NULL)cout 該圖書不存在delbook();break;case 4:cout 讀入圖書編號: bookid;b=query(bookid);if (b=NULL)cout break;該圖書不存在disp();break;case 5:disp();break;case 6:clear();break;default:if(choice!=0) cout輸入錯誤,請從新輸入:;while (choice!=0);void showme nu()cout;cout|e ndl;cout;cout|-設(shè)計者:童安蓉 楊丹,劉蕙娟,鄧小偉一完成時間:2010年12月28 日 Tendl;cout;cout|圖 書 管 理 系 統(tǒng)|endl;cout;cout|e ndl;cout;cout|1.借書|e ndl;cout;cout|2.還書|e ndl;cout;cout|3.圖 書 維護|e ndl;cout;cout|4.讀者 維 護|e ndl;cout;cout|0.退出:將數(shù)據(jù)保存到磁盤|e ndl;cout;cout|e ndl; void showtip()coutvnt

溫馨提示

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

評論

0/150

提交評論