C++圖書管理系統設計_第1頁
C++圖書管理系統設計_第2頁
C++圖書管理系統設計_第3頁
C++圖書管理系統設計_第4頁
C++圖書管理系統設計_第5頁
已閱讀5頁,還剩53頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、C+) 安徽工業大學面向對象程序設計語言課程設計報告圖書管理系統學號: 149074329姓名:李家景目錄問題分析與功能定義對象(類)設計及實現核心控制設計測試分析心得體會源程序代碼項目名稱:圖書管理系統設計一、 問題分析與功能定義二十一世紀是信息的社會, 信息作為社會最主要的資源, 將成為戰略資源引起人們廣泛的關注。 如何獲取信息?圖書是我們最好的獲取信息的方式, 但由于圖書館圖書收藏量大大增加, 使傳統的圖書管理員的工作日益繁重起來。 迫使人們起用新的管理方法來管理圖書, 但如何把圖書管理員從繁重的工作中解脫出來呢?科學技術日新月異的進步, 讓人類生活發生了巨大的變化, 計算機技術的飛速發

2、展, 使各行各業在計算機技術應用方面得到了廣泛的普及和使用。 信息化時代的到來成為不可抗拒的潮流, 人類文明正在進入一個嶄新的時代。 因此, 圖書管理系統也以方便、 快捷、 費用低的優點正慢慢地進入人們的生活, 將傳統的圖書管理方式徹底的解脫出來, 提高效率, 減輕工人人員以往繁忙的工作, 減小出錯的概率, 使讀者可以花更多的時間在選擇書和看書上。 從而使人們有更多時間來獲取信息、了解信息、掌握信息 。1 、設計內容及要求設計一個圖書館管理系統, 完成圖書管理和讀者管理的功能, 并能對借閱信息進行管理,要求完成一下功能,圖書資料管理,可以添加、修改、刪除、查詢書籍信息,讀者資料管理,可以添加、

3、修改、刪除、查詢讀者信息;借書管理,可以進行添加借書信息;還書管理,可以進行還書信息;該項目是在Visual C+ 6.0 的平臺下用C+語言實現,創建對象,程序運行開始, 打開文件并將其分別鏈入鏈表之中; 程序結束關閉并保存文件。 整體系統功能全部由鏈表實現2、模塊圖二、對象(類)設計及實現1、概要設計Reade讀者類、RDatabase讀者庫類、Book圖書類、BDatabase圖書庫類class RDatabase/ 讀者庫類 int top;/ 讀者記錄指針Reader readMaxr;/ 讀者記錄RDatabase(); 構造函數,將 reader.txtiU至U read中 vo

4、id clear( /刪除所有讀者信息 int addreader(int n,char *na);/增 添讀者信息2、詳細設計1)類的原型描述class Reade/ 讀者類int tag/刪除標記1:已刪0:未刪int no;/讀者編號char name10;讀者姓名int borbookMaxbor; / 所借圖書Reader() char *getname() /欲取姓名int gettag() /獲取刪除標記int getno() /獲取讀者編號void setname(charna)/ 設置姓名void delbook() /設置刪除標記void addreader(int n,c

5、har *na);/增加讀者void borrowbook(int bookid); /借書操作int retbook(int bookid); / 還書操Reader*query(int readerid);按編號查找void disp();/輸出所有讀者信息int Readernum();/記錄讀者信息void readerdata();/讀者庫維護 RDatabase();/ 析構函數,將readW入 reader.txt文件中void disp(); 輸出讀者信息tclass Book / 圖書類int tag; 刪除標記1:已刪0未刪int no; /圖書編號char name20;

6、/書名int onshelf;/是否在架1:在架0:已借Book() char *getname();/K 取姓名int getno();/獲取圖書編號int gettag(); /獲取刪除標記void setname(char na);/段置書名void delbook();/ 刪除圖書void addbook(int n,char *na);/ 增加圖書int borrowbook() ;/ 借書操作void retbook();/ 還書操作void disp();輸出圖書class BDatabase/ 圖書庫類int top;/圖書記錄指針Book bookMaxb;/ 圖書記錄BDa

7、tabase();/構造函數,將book.txt 讀到 book口 中void clear();/全刪int addbook(int n,char *na);/ 增加圖書Book *query(int bookid);/ 查找圖書void disp();/輸出所有圖書信息void bookdata(); 圖書庫維護BDatabase();/ 析構函數,將book寫入book.txt文件中三、核心控制設計1、在主函數中我們要做的操作包括: (1)建立1個Reader讀者類、1個RDatabase讀者庫類、1個Book圖書類、1 個BDatabase圖書庫類(2)建立菜單界面。完成以下內容:進入功

8、能必須打開菜單,然后用戶根據菜單選擇相應的操作方式, 如查看數據、編輯圖書數據以及修改圖書數據、維護圖書的采購信息。添加、刪除、查看讀者個人信息,瀏覽圖書信息。 能夠對圖書基本信息、圖書采購信息、圖書的借閱人信息進行統計,統計的結果能夠以表格的形式來表示。將圖書基本信息、 圖書采購信息、 圖書的借閱人信息存儲在相應的文件中。系統界面友好,易操作。2、本程序應具備的功能:添加、借閱、還書功能:添加讀者和圖書信息。借閱尚在架的圖書。讀者歸還的圖書。查找功能根據圖書的編號查找圖書信息。根據讀者的編號查找讀者的信息。系統的操作系統在進入時,要有菜單提示;系統在用戶退出時,有一定的提示。3、算法分析1

9、)添加操作:(讀者信息的添加與圖書信息的添加類似)包括兩個部分,先通過輸入設備輸入信息,系統獲取;然后添加入讀者數據庫read.txt文件中。獲取信息void Reader:addreader(int n,char *na) / 增加讀者tag=0;no=n;strcpy(name,na);for (int i=0;iMaxbor;i+) borbooki=0;輸入n和natag=0; no=n;q 口亡jstrcpy(name,na);int i=0iMaxborint RDatabase:addreader(int n,char *na) / 增添讀者信息 der *p=query(n);

10、if (p=NULL)top+;readtop.addreader(n,na);cout讀者添加成功endl;return 1;return 0;流程圖:析構函數寫入新讀者的編號跟姓名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();流程圖:2)借書操作:利用for語句和if語句,通過判斷圖書的borbook的編號是否為0, 來判斷圖書是否未被

11、借走或還沒有被借完ovoid Reader二borrowbook(int bookid) / 借書操作for (int i=0;iMaxbor;i+)if (borbooki=0)borbooki=bookid;return;流程圖:int i=0當 iMaxbor-borbook=0 borbooki=bookid;Nreturn;3)還書操作:利用for語句和if語句,通過判斷圖書的borbook的編號是否為要還書的編號,來判斷是否借出此書。int Reader:retbook(int bookid) / 還書操作for(int i=0;iMaxbor;i+)if(borbooki=boo

12、kid)流程圖:書編號,如果找到,向系統返回相應的編號,輸出相應的信息。(讀者的查找與圖書查找類似)Reader *query(int readerid) / 按編號查找for (int i=0;i=top;i+)if(readi.getno()=readerid&readi.gettag()=0)return &readi;return NULL; int i=0流程圖:當 i=toplreadi.getno()=readeridY、&readi.gettag()=0fr Nreturn &readi;i+;return NULL;四、測試分析(一)、此系統存在問題1)未設登錄密碼保護系統,

13、是整個圖書管理系統失去了一定的安全性;2)程序運行界面圖書管理系統 自要程用%圖書館者理系iiMEq,圖書館昔理索繞片-|Dx|書者也 /圖讀退 12 3 4 0書書if瘠薪括俁存到諼盤請選擇菜單中的數字以便處昵數據:1,普書i轉編號網04口叫鬻!U量書編苗01模圖書已借出.不能借書成”一-瑤企完“ 強地-電般失4S 1八4.0.,J二 H中書苓蠢保存到磁盤#-書者此一 告任圖讀.限一元0-&言二-一書- 8 一 書者注一 0-國12 3 4-0歡迎走入圖書維護界面增改除找示刪出新更刪查昂全退1 Z 3 4 5 6 0譴者編號瞪H22B 南書照號血輸入圄書編號二此界面運行時選擇4有時會出現內存

14、讀取錯誤;1 )當輸入錯的數據類型時可能導致內存錯誤;2)讀者、圖書信息不完善;3 )命名不是很規范;4)信息存儲有限;且謝您的使用,再見,Press any k白y to continue五、心得體會通過這次課程設計讓我逐步學會了如何運用 C+胸向對象程序設計的設計 思想和方法來解決實際問題。比如這次設計圖書管理系統,首先我考慮是在實際應用時用戶一般進行什么 操作,對哪些對象進行操作。很顯然我需要建立兩個類,包括圖書類和讀者類, 同時考慮到圖書和讀者不止一個, 所以還需兩個類,圖書庫類和讀者庫類,這兩 個類分別將其信息傳遞給圖書類和讀者類。 確定了類之后,則需要對類的內容進 行擴充。由于我需

15、要這個系統完成對圖書管理和讀者管理的功能,并能對借閱信息進行管理,要求完成一下功能,圖書資料管理,可以添加、修改、刪除、查詢 書籍信息,讀者資料管理,可以添加、修改、刪除、查詢讀者信息;借書管理, 可以進行添加借書信息;還書管理,可以進行還書信息。所以在對應的類下建立 相應功能函數。建立功能函數后就是構造主函數。 主函數的作用就是通過向對象 發送信息、對象接受信息啟動相應的方法來實現相應的操作。當然在這些過程中要保證面向對象程序設計的抽象、 封裝、多態和繼承的特 點。在設計本系統中雖然綜合考慮到了圖書管理的各個方面, 界面設計簡潔,數 據庫設計合理,但依然還有一些不足。為了能夠較好地完成本次課

16、程設計, 我詳細閱讀教材,以及網上搜索,和到圖書館查找相關資料等。在做課程設計的過程中,我在利用所學的知識同時,又學到了很多實例化的理論知識和軟件工程的一些實踐, 總結了一些經驗和方法強化了我的實際動手能力,同時也找到自己的不足,我一定會繼續學習增加自己的編程能力和調試能力, 在今后的學習中我將會更加的努力, 增加自己的知識儲備,拓寬自己的知識面,鍛煉自己的能力,使我的綜合素質得到較大的提高。在這設計的過程中我也出現過一些比較嚴重的錯誤,后來在同學的指點下我改正了自己的錯誤,并最終成功調試除了程序。當程序調試出來的那一瞬間,我感覺自己完成了一件非常了不起的事, 好有成就感。 在以后的日子, 我

17、將會繼續我的興趣繼續深入學習程序設計, 相信在越來越多的嘗試之后, 自己會不斷進步不斷提高的。最后感謝老師的指導與同學的幫助,使我能順利完成這次程序設計。六、源程序代碼#include #include #include #include / 輸入 / 輸出文件流類using namespace std;const int Maxr=100;/ 最多的讀者const int Maxb=100;/ 最多的圖書const int Maxbor=5;/ 每位讀者最多借五本書/ 讀者類,實現對讀者的信息的描述 class Readerprivate:int tag; / 刪除標記1:已刪0:未刪int

18、 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;void addreader(int n,char *na); / 增加讀者void borrowbook(int bo

19、okid); / 借書操作 int retbook(int bookid);/ 還書操作void disp();/ 輸出讀者信息;void Reader:addreader(int n,char *na) / 增加讀者tag=0;no=n;strcpy(name,na);for (int i=0;iMaxbor;i+) borbooki=0;void Reader:borrowbook(int bookid) / 借書操作for (int i=0;iMaxbor;i+)if (borbooki=0)borbooki=bookid;return;int Reader:retbook(int bo

20、okid) / 還書操作for(int i=0;iMaxbor;i+)if(borbooki=bookid)borbooki=0;return 1;elsecontinue;return 0;void Reader:disp()/ 輸出讀者信息cout setw(5) no setw(10) name 借書編號 :;for (int i=0;iMaxbor;i+)if (borbooki!=0)cout borbooki |;coutendl;/ 讀者類庫,實現建立讀者的個人資料class RDatabaseprivate:int top; / 讀者記錄指針Reader readMaxr;/債

21、者記錄public:RDatabase();/ 構造函數,將 reader.txt讀到 read肝void clear()/ 刪除所有讀者信息top=-1;int addreader(int n,char *na);/ 增添讀者信息Reader *query(int readerid)/ 按編號查找for (int i=0;i=top;i+)if(readi.getno()=readerid&readi.gettag()=0)return &readi;return NULL;void disp();/ 輸出所有讀者信息int Readernum();/ 得到讀者編號void readerda

22、ta();/讀者庫維護RDatabase();/ 析構函數,將readW入reader.txt文件中;/ 構造函數,將reader.txt 讀到RDatabase:RDatabase()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();RDatabase二RDatabase()/ 析構函數,將 readW入 reader.txt文件中fstream file(reader.

23、txt,ios:out);for (int i=0;i=top;i+)if(readi.gettag()=0)file.write(char *)&readi,sizeof(readi);elsefile.close();int RDatabase:addreader(int n,char *na) / 增添讀者信息Reader *p=query(n);if (p=NULL)top+;readtop.addreader(n,na);cout 讀者添加成功 endl;return 1;return 0;/ 輸出所有讀者信息void RDatabase:disp()for (int i=0;i=t

24、op;i+)readi.disp();int RDatabase:Readernum()return top;void RDatabase:readerdata() / 讀者庫維護char choice;char rname100;/ 讀者姓名int readerid;Reader *r;docout nnttt 歡迎進入讀者維護界面nnnttnntt2更改nntt3刪除 nnttnntt5顯示nntt6全刪 nntt choice;switch (choice)case 1:cout readerid;cout rname;addreader (readerid,rname);break;c

25、ase 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 讀入讀者編號:;r=query(readerid);if (r=NULL)cout 該讀者不存在disp();break;case 5:disp();break;case 6:clear();break;bre

26、ak;default:if (choice!=0) cout輸入錯誤,請從新輸入:while (choice!=0);/ 圖書類,實現對圖書的描述,圖書的編號,書名,借出,還入等class Bookprivate:int tag;/ 刪除標記 1:已刪0:未刪int no;/ 圖書編號char name20;/書名int onshelf;/ 是否再架1:再架0:已借public:Book()char *getname() return name; /獲取姓名int getno() return no; / 獲取圖書編號int gettag() return tag; / 獲取刪除標記void

27、setname(char na)/S 置書名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? 在架 :

28、 已借 ) endl;/ 圖書庫類,實現對圖書的維護,查找,刪除等class BDatabaseprivate:int top;/ 圖書記錄指針Book bookMaxb; / 圖書記錄public:BDatabase()構造函數,將 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(i

29、nt n,char *na);/增加圖書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();/析構函數,將book寫到book.txt文件中;int BDatabase二addbook(int

30、n,char *na)/1 力口圖書Book *p=query(n);if (NULL=p)top+;booktop.addbook(n,na);return 1;return 0;BDatabase:BDatabase()淅構函數,將 book寫至U 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 choic

31、e;char bname40;int bookid;Book *b;docout 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;

32、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:if(choice!=0) cout輸入錯誤,請從新輸入:while (choice

33、!=0);void showmenu()cout;cout|endl;coutcout|-設計者:童安蓉,楊丹,劉蕙娟,鄧小偉-完成時間:2010年12月28 日-vvendl;coutcout|圖 書 管 理 系 統|endl;coutcout|endl;coutcout|1.借書|endl;coutcout|2.還書|endl;coutcout|3.圖 書維護|endl;coutcout|4.讀者維 護|endl;coutcout|0.退出:將數據保存到磁盤|endl;coutcout|endl;void showtipQcoutntt操作完成!endl;couttt 選擇 0-5 繼續e

34、ndl;coutcout|endl;coutcout|1.借書|endl;coutcout|2.還書|endl;coutcout|3.圖 書維護|endl;coutcout|4.讀者維護|endl;coutcout|0.退 出 : 將數 據保 存到 磁盤|endl;cout;cout|/main() 函數的實現,程序的主界面的引導int main()char choice;int bookid,readerid; / 圖書編號,讀者編號RDatabase ReaderDB; / 讀者庫Reader *r;/ 讀者BDatabase BookDB;/ 圖書庫Book *b;/ 圖書cout 正在

35、打開系統,請稍后.endl;showmenu();/ 顯示菜單cout choice;while (choice!=0)|endl;II.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

36、-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:if

37、 (choice!=0) cout choice;cout 謝謝您的使用!再見!m_ISBN, m_pSet);DDX_FieldText(pDX, IDC_EDIT2, m_pSet-m_name, m_pSet);DDX_FieldText(pDX, IDC_EDIT3, m_pSet-m_writer, m_pSet);DDX_FieldText(pDX, IDC_EDIT4, m_pSet-m_publish, m_pSet);DDX_FieldText(pDX, IDC_EDIT5, m_pSet-m_publish_time, m_pSet);DDX_FieldText(pDX,

38、IDC_EDIT6, m_pSet-m_price, m_pSet);/AFX_DATA_MAPBOOL CMyView:PreCreateWindow(CREATESTRUCT& cs)/ TODO: Modify the Window class or styles here by modifying/ the CREATESTRUCT csreturn CRecordView:PreCreateWindow(cs);void CMyView:OnInitialUpdate()m_pSet = &GetDocument()-m_mySet;CRecordView:OnInitialUpda

39、te();GetParentFrame()-RecalcLayout();ResizeParentToFit();/BOOL CMyView:OnPreparePrinting(CPrintInfo* pInfo)/ default preparationreturn DoPreparePrinting(pInfo);void CMyView:OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: add extra initialization before printingvoid CMyView:OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: add cleanup after printing/ CMyView diagnosti

溫馨提示

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

評論

0/150

提交評論