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

下載本文檔

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

文檔簡(jiǎn)介

1、 課 程 設(shè) 計(jì) 報(bào) 告課程名稱 c+課程設(shè)計(jì) 課題名稱 圖書管理系統(tǒng)設(shè)計(jì) 題目三:圖書管理系統(tǒng)設(shè)計(jì)(一)、課程設(shè)計(jì)題目:圖書管理系統(tǒng)設(shè)計(jì)(二)、要求: 使用二進(jìn)制文件方式存儲(chǔ)數(shù)據(jù),系統(tǒng)以菜單方式工作(三)、設(shè)計(jì)方法和基本原理: 1、功能描述: (1)新進(jìn)圖書基本信息的輸入。(2)圖書基本信息的查詢。(3)對(duì)撤消圖書信息的刪除。(4)為借書人辦理注冊(cè)。(5)辦理借書手續(xù)。(6)辦理還書手續(xù)。2、問(wèn)題的解決方案: 根據(jù)系統(tǒng)功能要求,可以將問(wèn)題解決分為以下步驟: (1)應(yīng)用系統(tǒng)分析,建立該系統(tǒng)的功能模塊框圖以及界面的組織和設(shè)計(jì);(2)分析系統(tǒng)中的各個(gè)實(shí)體及它們之間的關(guān)系包括屬性和行為; (3)根據(jù)

2、問(wèn)題描述,設(shè)計(jì)系統(tǒng)的類層次; (4)完成類層次中各個(gè)類的描述(包括屬性和方法); (5)完成類中各個(gè)成員函數(shù)的定義; (6)完成系統(tǒng)的應(yīng)用模塊; (7)功能調(diào)試; (8)完成系統(tǒng)總結(jié)報(bào)告以及系統(tǒng)使用說(shuō)明書一、設(shè)計(jì)內(nèi)容與設(shè)計(jì)要求1.課程設(shè)計(jì)目的:從課程設(shè)計(jì)的實(shí)踐活動(dòng)中獲得知識(shí)提高。要求學(xué)生達(dá)到熟練掌握c+語(yǔ)言的基本知識(shí)和技能;基本掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的思想和方法;能夠利用所學(xué)的基本知識(shí)和技能,解決簡(jiǎn)單的面向?qū)ο蟪绦蛟O(shè)計(jì)問(wèn)題,從而提高動(dòng)手編程解決實(shí)際問(wèn)題的能力。2.總體設(shè)計(jì)2.1 系統(tǒng)功能分析:系統(tǒng)通過(guò)調(diào)用函數(shù)來(lái)實(shí)現(xiàn)刪除圖書、讀者信息,添加圖書、讀者信息等功能。delbook( )函數(shù)用于刪除圖書

3、信息;addbook( )函數(shù)用于增加圖書信息;borrowbook( )函數(shù)用于實(shí)現(xiàn)借書操作;returnbook( )函數(shù)用于實(shí)現(xiàn)還書操作等等;主函數(shù)用于掉用這些函數(shù)。2.2系統(tǒng)功能模塊劃分與設(shè)計(jì)本系統(tǒng)定義了book類、bdatebase類、reader類、rdatebase類這四個(gè)類,定義了addbook ( )、addreader( )、borrowbook ( )、setname( )等函數(shù)來(lái)實(shí)現(xiàn)系統(tǒng)所需功能。2.3 系統(tǒng)功能模塊圖:圖書管理系統(tǒng)四個(gè)類程序?qū)崿F(xiàn)功能輸出顯示圖書類圖書庫(kù)類實(shí)驗(yàn)員讀者類行政人員讀者庫(kù)類文件錄入查詢信息刪除信息退出程序33.詳細(xì)設(shè)計(jì)3.1 讀者類的設(shè)計(jì)該類定

4、義了借書操作,還書操作,設(shè)置讀者姓名等功能。 reader+name20:char+no:int+tag:int+borbook:int+ getname():char+gettag():int+ getno():int+setname(char na):void+ delbook():void+ addreader(int n,char *na):void+ borrowbook(int bookid):void+ retbook(int bookid):int+ disp():void 圖 3.13.2 讀者庫(kù)類類的設(shè)計(jì)該類實(shí)現(xiàn)了建立讀者的個(gè)人資料,刪除讀者信息,輸出讀者信息等功能。 rd

5、atebase+ top:int+ rname20:char+readerid:int+readerdata():void+choice:char+addreader(int n,char *na):int+clear():void+disp():void 圖 3.23.3 圖書類的設(shè)計(jì)圖書類,可以實(shí)現(xiàn)對(duì)圖書的描述,圖書的編號(hào),書名,借出,還入等操作。 book+no:int+name20:char+onshelf:int+getname():char+getno():int+gettag():int+setname(char na):void+delbook():void+addbook()

6、:void+borrowbook():int+retbook():void+disp ():void 圖 3.33.4 圖書庫(kù)類的設(shè)計(jì) xingzhengrenyuan+top:int+clear():void+addbook(int n,char *na):int+bookdata():void+bookdata():void+ disp():void 圖 3.44.調(diào)試與測(cè)試:4.1系統(tǒng)調(diào)試在調(diào)試過(guò)程中,出現(xiàn)了一些錯(cuò)誤。1、輸入數(shù)據(jù)時(shí),輸錯(cuò)了數(shù)據(jù)的類型會(huì)造成死循環(huán),因此輸入時(shí)需要注意。 2、一開(kāi)始主界面輸入非正確數(shù)字時(shí),沒(méi)有提示錯(cuò)誤。容易造成用戶誤解 圖4.1在主函數(shù)的switch語(yǔ)句結(jié)束

7、處加上default:cout輸入錯(cuò)誤,請(qǐng)從新輸入:;就可以了,修改后: 圖4.2 具體調(diào)試過(guò)程。主界面 圖4.3圖書維護(hù) 圖4.4讀者維護(hù)圖4.15.結(jié)果分析本程序總共設(shè)計(jì)了四個(gè)類,滿足了課題對(duì)類的要求,在設(shè)計(jì)的過(guò)程中,建立了較為清晰的類層次,也利用了面向?qū)ο蟮姆椒ㄒ约癱+的編程思想來(lái)完成系統(tǒng)的設(shè)計(jì),做到了每個(gè)借閱者建立一個(gè)賬戶,賬戶中存儲(chǔ)借閱者的個(gè)人信息、借閱信息等要求。而且界面美觀,容易操作。但是程序太長(zhǎng),不夠簡(jiǎn)練,導(dǎo)致出現(xiàn)錯(cuò)誤很難發(fā)現(xiàn)和修改。6. 總結(jié)感想和體會(huì):通過(guò)這次的課程設(shè)計(jì),讓我們充分的感覺(jué)到了要自己設(shè)計(jì)一個(gè)程序是多么的難,以及學(xué)習(xí)好c+是多么的重要。在這個(gè)程序的設(shè)計(jì)過(guò)程中,我

8、們清楚的意識(shí)到自己的水平有多么的薄弱,課程的知識(shí)學(xué)得有多么的不扎實(shí)。看網(wǎng)上的例子好像覺(jué)得也沒(méi)那么難,自己一上機(jī)實(shí)際操作就出現(xiàn)了很多問(wèn)題,調(diào)試的時(shí)候系統(tǒng)總是在報(bào)錯(cuò),還有很多警告,每增加一個(gè)函數(shù)就要調(diào)試好久,有時(shí)候應(yīng)為少了一個(gè)大括號(hào)或是分號(hào),導(dǎo)致要找很久很久。雖然系統(tǒng)可以運(yùn)行,也具有了一些基本的功能,但我們意識(shí)到了自己有太多的不足。以后還會(huì)有很多的課程設(shè)計(jì),一定要吸取這次的教訓(xùn),把知識(shí)學(xué)懂學(xué)透學(xué)精,真正的為我所用,這樣走上社會(huì)我們才能真正的發(fā)揮所長(zhǎng)。我們?nèi)齻€(gè)人分工合作,組長(zhǎng)彭愛(ài)賢負(fù)責(zé)對(duì)程序的編譯,通過(guò)不斷的嘗試和學(xué)習(xí),最終制成程序的最初模式!謝經(jīng)緯負(fù)責(zé)對(duì)程序的修改。沈維健負(fù)責(zé)后期制作,總結(jié)組內(nèi)的制

9、作經(jīng)驗(yàn)!通過(guò)努力,得以在規(guī)定的時(shí)間內(nèi)完成任務(wù)。這一次的c+課程設(shè)計(jì)讓我們學(xué)到了很多知識(shí),懂得如何發(fā)現(xiàn)問(wèn)題,并解決!非常感謝老師及同學(xué)們的幫助,讓我們有這一個(gè)機(jī)會(huì)好好學(xué)習(xí)c+的更廣泛的知識(shí)。7、7.1 源程序清單:#include #include /定義控制符#include /包含string的頭文件#include /用來(lái)支持對(duì)磁盤文件的輸入輸出using namespace std; const int maxr=100;const int maxb=100;const int maxbor=5; /以上三行聲明maxr、maxb、maxbor為常數(shù)據(jù)成員class reader /聲明

10、類類型為讀者 private: /聲明以下部分為私有的int tag; /int no; /定義編號(hào)為整型char name10; /定義長(zhǎng)度為10的名字?jǐn)?shù)組字符串int borbookmaxbor; /定義整型借書數(shù)組public: /聲明以下部分為公用的reader() /reader類構(gòu)造函數(shù)char *getname() return name; /虛函數(shù),返回nameint gettag() return tag; /虛函數(shù),返回tagint getno() return no; /虛函數(shù),返回no.void setname(char na) /設(shè)置讀者姓名函數(shù) strcpy(nam

11、e,na); /復(fù)制字符串 void delbook() tag=1; /刪去圖書信息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) /定義借書函數(shù),且借圖書編號(hào)為整型 for(int i=0;imaxbor;i+) if (borbooki=0) borbooki=bookid; return; int retbook(int bookid) for(int i=0;imaxb

12、or;i+) if(borbooki=bookid) borbooki=0; return 1; return 0; void disp() /成員函數(shù),輸出基類數(shù)據(jù)成員 cout setw(5) no setw(10) name借書編號(hào):; /*設(shè)置編號(hào)字段寬度為5位,設(shè)置名字字段寬度為10位*/for(int i=0;imaxbor;i+) if(borbooki!=0) cout borbooki |; cout endl; ; class rdatabase /定義rdatabase類 private: int top; reader readmaxr;public: rdatabas

13、e() /構(gòu)造函數(shù) reader s; top=-1; fstream file(reader.txt,ios:in); /在reader.txt以輸入方式打開(kāi)文件while (1) file.read(char *)&s,sizeof(s); if (!file)break; /如果非file,結(jié)束循環(huán)top+; readtop=s; file.close(); void clear() top=-1; int addreader(int n,char *na) reader *p=query(n); if (p=null) top+; readtop.addreader(n,na); re

14、turn 1; return 0; reader *query(int readerid) /定義query指針,且讀者編號(hào)為整型 for (int i=0;i=top;i+) if (readi.getno()=readerid & readi.gettag()=0) return &readi; /指向readi return null; void disp() for (int i=0;i=top;i+) readi.disp(); void readerdata();rdatabase() fstream file(reader.txt,ios:out); /使用文件與reader.t

15、xt文件建立關(guān)聯(lián)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讀 者 維 護(hù)nnntt 1 新 增nntt 2 更 改nntt 3 刪 除nntt 4 查 找nntt 5 顯 示nntt 6 全 刪nntt 0 退 出 choi

16、ce; switch (choice) case 1: cout readerid; /輸入讀者編號(hào)cout rname; /輸入讀者姓名addreader (readerid,rname); break; case 2: cout readerid; /輸入讀者編號(hào)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

17、(); break; case 4: cout readerid; r=query(readerid); if (r=null) cout 該讀者不存在disp(); break; case 5: disp(); break; case 6: clear(); break; default:cout輸入錯(cuò)誤,請(qǐng)重新輸入:;break; class book /定義book類 private: int price;char author10;int tag;int no;char name20;int onshelf; public: book() char *getname() return

18、name; int getno() return no; int gettag() return tag; char*getauthor()return author;char getprice()return price;void setname(char na) strcpy(name,na); void setauthor(char au)strcpy(author,au);void delbook() tag=1; void addbook(int n,char *na,char*au,int pr) tag=0; no=n; price=pr;strcpy(author,au); s

19、trcpy(name,na); onshelf=1; int borrowbook() if (onshelf=1) onshelf=0; return 1; return 0; void retbook() onshelf=1; void disp() cout setw(6) 圖書編號(hào): no setw(18) 圖書名: name setw(10) 作者名: authorsetw(18)圖書單價(jià): pricesetw(10)(onshelf=1? 在架:已借) endl; ; class bdatabase /定義bdatabase類 private: int top; book book

20、maxb; public: bdatabase() 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,char*au,int pr) book *p=query(n); if (null=p) top+; booktop.addbook(n,na,au,pr); return 1

21、; 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() fstream file(book.txt,ios:out); /使文件流與book.txt文件建立關(guān)聯(lián)for (int i=0;i=top

22、;i+) if (booki.gettag()=0) file.write(char *)&booki,sizeof(booki); file.close(); ; void bdatabase:bookdata() char choice; char bauthor10;int bprice;char bname40; int bookid; book *b; while (choice!=0) cout nnnttt圖 書 維 護(hù) endlendl; couttt1 新 增n tt2 更 改ntt3 刪 除ntt4 查 找ntt5 顯 示ntt6 全 刪ntt0 退 出 choice; s

23、witch (choice) case 1: cout 輸入圖書編號(hào): bookid; cout 輸入圖書書名: bname; coutbauthor;coutbprice;addbook(bookid,bname,bauthor,bprice);break; /結(jié)束循環(huán)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; case 4: cout 讀入圖書編號(hào): bookid; b=query(bookid); if (b=null) cout 該圖書不存在disp(); break; case 5: disp(); break; case 6: clear(); brea

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論