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

下載本文檔

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

文檔簡介

1、面向?qū)ο蟪绦蛟O(shè)計(jì)(c+)項(xiàng)目名稱:圖書管理系統(tǒng)設(shè)計(jì)學(xué)校:學(xué)院:班級: 姓名: 學(xué)號:同組成員者: 完成時間:2010年12月28日 成績:指導(dǎo)教師簽名: 時間:一、 問題分析與功能定義二十一世紀(jì)是信息的社會,信息作為社會最主要的資源,將成為戰(zhàn)略資源引起人們廣泛的關(guān)注。如何獲取信息?圖書是我們最好的獲取信息的方式,但由于圖書館圖書收藏量大大增加,使傳統(tǒng)的圖書管理員的工作日益繁重起來。迫使人們起用新的管理方法來管理圖書,但如何把圖書管理員從繁重的工作中解脫出來呢?科學(xué)技術(shù)日新月異的進(jìn)步,讓人類生活發(fā)生了巨大的變化,計(jì)算機(jī)技術(shù)的飛速發(fā)展,使各行各業(yè)在計(jì)算機(jī)技術(shù)應(yīng)用方面得到了廣泛的普及和使用。信息化時

2、代的到來成為不可抗拒的潮流,人類文明正在進(jìn)入一個嶄新的時代。因此,圖書管理系統(tǒng)也以方便、快捷、費(fèi)用低的優(yōu)點(diǎn)正慢慢地進(jìn)入人們的生活,將傳統(tǒng)的圖書管理方式徹底的解脫出來,提高效率,減輕工人人員以往繁忙的工作,減小出錯的概率,使讀者可以花更多的時間在選擇書和看書上。從而使人們有更多時間來獲取信息、了解信息、掌握信息 。1、設(shè)計(jì)內(nèi)容及要求設(shè)計(jì)一個圖書館管理系統(tǒng),完成圖書管理和讀者管理的功能,并能對借閱信息進(jìn)行管理,要求完成一下功能,圖書資料管理,可以添加、修改、刪除、查詢書籍信息,讀者資料管理,可以添加、修改、刪除、查詢讀者信息;借書管理,可以進(jìn)行添加借書信息;還書管理,可以進(jìn)行還書信息;該項(xiàng)目是在v

3、isual c+ 6.0的平臺下用c+語言實(shí)現(xiàn),創(chuàng)建對象,程序運(yùn)行開始,打開文件并將其分別鏈入鏈表之中;程序結(jié)束關(guān)閉并保存文件。整體系統(tǒng)功能全部由鏈表實(shí)現(xiàn)。 2、模塊圖圖書館管理系統(tǒng)借書讀者維護(hù)圖書維護(hù)還書離開二、對象(類)設(shè)計(jì)及實(shí)現(xiàn)1、概要設(shè)計(jì)reader讀者類、rdatabase 讀者庫類、book 圖書類、bdatabase 圖書庫類class rdatabase/讀者庫類int top;/ 讀者記錄指針reader readmaxr;/ 讀者記錄rdatabase();/構(gòu)造函數(shù),將reader.txt讀到read中void clear();/刪除所有讀者信息int addreader

4、(int n,char *na);/增添讀者信息reader *query(int readerid);/按編號查找void disp();/輸出所有讀者信息int readernum();/記錄讀者信息void readerdata();/讀者庫維護(hù)rdatabase();/析構(gòu)函數(shù),將read寫入reader.txt文件中2、詳細(xì)設(shè)計(jì)1)類的原型描述class reader/讀者類int tag;/刪除標(biāo)記1:已刪0:未刪 int no;/讀者編號 char name10;/讀者姓名 int borbookmaxbor;/所借圖書 reader() char *getname() /獲取姓

5、名 int gettag() /獲取刪除標(biāo)記 int getno() /獲取讀者編號 void setname(char na)/設(shè)置姓名 void delbook() /設(shè)置刪除標(biāo)記 void addreader(int n,char *na); /增加讀者 void borrowbook(int bookid); /借書操作int retbook(int bookid); /還書操作void disp(); /輸出讀者信息class bdatabase/圖書庫類int top;/圖書記錄指針book bookmaxb;/圖書記錄bdatabase();/構(gòu)造函數(shù),將book.txt讀到bo

6、ok中void clear();/全刪 int addbook(int n,char *na);/增加圖書book *query(int bookid);/查找圖書void disp();/輸出所有圖書信息void bookdata();/圖書庫維護(hù)bdatabase();/析構(gòu)函數(shù),將book寫入book.txt文件中class book /圖書類 int tag;/刪除標(biāo)記1:已刪0:未刪 int no;/圖書編號 char name20;/書名 int onshelf;/是否在架1:在架0:已借 book() char *getname();/獲取姓名 int getno();/獲取圖書

7、編號 int gettag(); /獲取刪除標(biāo)記 void setname(char na);/設(shè)置書名 void delbook();/刪除圖書 void addbook(int n,char *na);/增加圖書 int borrowbook();/借書操作 void retbook();/還書操作 void disp();/輸出圖書 3、 核心控制設(shè)計(jì)1、 在主函數(shù)中我們要做的操作包括: (1)建立1個reader讀者類、1個rdatabase 讀者庫類、1個book 圖書類、1個bdatabase 圖書庫類(2)建立菜單界面。完成以下內(nèi)容: 進(jìn)入功能必須打開菜單,然后用戶根據(jù)菜單選擇相

8、應(yīng)的操作方式,如查看數(shù)據(jù)、編輯圖書數(shù)據(jù)以及修改圖書數(shù)據(jù)、維護(hù)圖書的采購信息。添加、刪除、查看讀者個人信息,瀏覽圖書信息。 能夠?qū)D書基本信息、圖書采購信息、圖書的借閱人信息進(jìn)行統(tǒng)計(jì),統(tǒng)計(jì)的結(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)在進(jìn)入時,要有菜單提示;(2) 系統(tǒng)在用戶

9、退出時,有一定的提示。3、算法分析1)添加操作:(讀者信息的添加與圖書信息的添加類似) 包括兩個部分,先通過輸入設(shè)備輸入信息,系統(tǒng)獲??;然后添加入讀者數(shù)據(jù)庫read.txt文件中。獲取信息void reader:addreader(int n,char *na) /增加讀者 int i=0imaxbor borbooki=0; i+;輸入n和natag=0; no=n; no=n; strcpy(name,na); tag=0; no=n; strcpy(name,na); for (int i=0;imaxbor;i+) borbooki=0; int rdatabase:addreader

10、(int n,char *na) /增添讀者信息der *p=query(n);if (p=null)top+;readtop.addreader(n,na);cout讀者添加成功endl;return 1;return 0;流程圖: der *p=query(n); p=nully return 0;top+;readtop.addreader(n,na);cout讀者添加成功endl;return 1; n 析構(gòu)函數(shù)寫入新讀者的編號跟姓名rdatabase:rdatabase() fstream file(reader.txt,ios:out); for (int i=0;i=top;i+

11、) if(readi.gettag()=0) file.write(char *)&readi,sizeof(readi); else file.close(); 流程圖:fstream file(reader.txt,ios:out);當(dāng)i=topi+ readi.gettag()=0y n int i=0file.close();file.write(char *)&readi,sizeof(readi);2) 借書操作:利用for語句和if語句,通過判斷圖書的borbook的編號是否為0,來判斷圖書是否未被借走或還沒有被借完。void reader:borrowbook(int book

12、id) /借書操作 for (int i=0;imaxbor;i+) if (borbooki=0) borbooki=bookid; return; int i=0當(dāng)imaxbor borbooki=0y n i+borbooki=bookid; return; 流程圖:3) 還書操作:利用for語句和if語句,通過判斷圖書的borbook的編號是否為要還書的編號,來判斷是否借出此書。int reader:retbook(int bookid) /還書操作 for(int i=0;imaxbor;i+) if(borbooki=bookid) borbooki=0; int i=0當(dāng)imax

13、bor borbooki=bookidy n i+continueborbooki=0; return 1; return 1; else continue; 流程圖:(4) 查找功能:利用for語句和if語句,尋找與要查詢的編號相同的讀者編號或圖書編號,如果找到,向系統(tǒng)返回相應(yīng)的編號,輸出相應(yīng)的信息。(讀者的查找與圖書查找類似)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流

14、程圖:當(dāng)i=top readi.getno()=readerid y &readi.gettag()=0 nreturn &readi; i+; return null;四、測試分析(一)、此系統(tǒng)存在問題1) 未設(shè)登錄密碼保護(hù)系統(tǒng),是整個圖書管理系統(tǒng)失去了一定的安全性;2) 程序運(yùn)行界面 此界面運(yùn)行時選擇4有時會出現(xiàn)內(nèi)存讀取錯誤;1)當(dāng)輸入錯的數(shù)據(jù)類型時 可能導(dǎo)致內(nèi)存錯誤;2)讀者、圖書信息不完善; 3)命名不是很規(guī)范;4) 信息存儲有限;五、心得體會通過這次課程設(shè)計(jì)讓我逐步學(xué)會了如何運(yùn)用c+面向?qū)ο蟪绦蛟O(shè)計(jì)的設(shè)計(jì)思想和方法來解決實(shí)際問題。比如這次設(shè)計(jì)圖書管理系統(tǒng),首先我考慮是在實(shí)際應(yīng)用時用戶

15、一般進(jìn)行什么操作,對哪些對象進(jìn)行操作。很顯然我需要建立兩個類,包括圖書類和讀者類,同時考慮到圖書和讀者不止一個,所以還需兩個類,圖書庫類和讀者庫類,這兩個類分別將其信息傳遞給圖書類和讀者類。確定了類之后,則需要對類的內(nèi)容進(jìn)行擴(kuò)充。由于我需要這個系統(tǒng)完成對圖書管理和讀者管理的功能,并能對借閱信息進(jìn)行管理,要求完成一下功能,圖書資料管理,可以添加、修改、刪除、查詢書籍信息,讀者資料管理,可以添加、修改、刪除、查詢讀者信息;借書管理,可以進(jìn)行添加借書信息;還書管理,可以進(jìn)行還書信息。所以在對應(yīng)的類下建立相應(yīng)功能函數(shù)。建立功能函數(shù)后就是構(gòu)造主函數(shù)。主函數(shù)的作用就是通過向?qū)ο蟀l(fā)送信息、對象接受信息啟動相

16、應(yīng)的方法來實(shí)現(xiàn)相應(yīng)的操作。 當(dāng)然在這些過程中要保證面向?qū)ο蟪绦蛟O(shè)計(jì)的抽象、封裝、多態(tài)和繼承的特點(diǎn)。在設(shè)計(jì)本系統(tǒng)中雖然綜合考慮到了圖書管理的各個方面,界面設(shè)計(jì)簡潔,數(shù)據(jù)庫設(shè)計(jì)合理,但依然還有一些不足。 為了能夠較好地完成本次課程設(shè)計(jì),我詳細(xì)閱讀教材,以及網(wǎng)上搜索,和到圖書館查找相關(guān)資料等。在做課程設(shè)計(jì)的過程中,我在利用所學(xué)的知識同時,又學(xué)到了很多實(shí)例化的理論知識和軟件工程的一些實(shí)踐,總結(jié)了一些經(jīng)驗(yàn)和方法強(qiáng)化了我的實(shí)際動手能力,同時也找到自己的不足,我一定會繼續(xù)學(xué)習(xí)增加自己的編程能力和調(diào)試能力,在今后的學(xué)習(xí)中我將會更加的努力,增加自己的知識儲備,拓寬自己的知識面,鍛煉自己的能力,使我的綜合素質(zhì)得到

17、較大的提高。在這設(shè)計(jì)的過程中我也出現(xiàn)過一些比較嚴(yán)重的錯誤,后來在同學(xué)的指點(diǎn)下我改正了自己的錯誤,并最終成功調(diào)試除了程序。當(dāng)程序調(diào)試出來的那一瞬間,我感覺自己完成了一件非常了不起的事,好有成就感。在以后的日子,我將會繼續(xù)我的興趣繼續(xù)深入學(xué)習(xí)程序設(shè)計(jì),相信在越來越多的嘗試之后,自己會不斷進(jìn)步不斷提高的。 最后感謝老師的指導(dǎo)與同學(xué)的幫助,使我能順利完成這次程序設(shè)計(jì)。六、源程序代碼#include #include #include #include /輸入/輸出文件流類using namespace std;const int maxr=100;/最多的讀者const int maxb=100;/最

18、多的圖書const int maxbor=5;/每位讀者最多借五本書/讀者類,實(shí)現(xiàn)對讀者的信息的描述class reader private:int tag; /刪除標(biāo)記 1:已刪 0:未刪int no; /讀者編號char name10; /讀者姓名int borbookmaxbor;/所借圖書 public:reader() /構(gòu)造函數(shù)char *getname() return name; /獲取姓名 int gettag() return tag; /獲取刪除標(biāo)記 int getno() return no; /獲取讀者編號 void setname(char na) /設(shè)置姓名 st

19、rcpy(name,na); void delbook() /設(shè)置刪除標(biāo)記 tag=1; void addreader(int n,char *na); /增加讀者 void borrowbook(int bookid); /借書操作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:borrowbo

20、ok(int bookid) /借書操作 for (int i=0;imaxbor;i+) if (borbooki=0) borbooki=bookid; return; int reader:retbook(int bookid) /還書操作 for(int i=0;imaxbor;i+) if(borbooki=bookid) borbooki=0; return 1; else continue; return 0; void reader:disp() /輸出讀者信息 cout setw(5) no setw(10) name 借書編號:; for (int i=0;imaxbor;

21、i+) if (borbooki!=0) cout borbooki |; coutendl; /讀者類庫,實(shí)現(xiàn)建立讀者的個人資料 class rdatabase private: int top; /讀者記錄指針 reader readmaxr;/讀者記錄public:rdatabase();/構(gòu)造函數(shù),將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(rea

22、di.getno()=readerid&readi.gettag()=0)return &readi;return null;void disp();/輸出所有讀者信息int readernum(); /得到讀者編號void readerdata();/讀者庫維護(hù)rdatabase();/ 析構(gòu)函數(shù),將read寫入reader.txt文件中;rdatabase:rdatabase()/構(gòu)造函數(shù),將reader.txt讀到read中reader s;top=-1;fstream file(reader.txt,ios:in);while (1)file.read(char *)&s,sizeof

23、(s);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()=0)file.write(char *)&readi,sizeof(readi);elsefile.close();int rdatabase:addreader(int n,char *na) /增添讀者信息reader *p=query(n);if (p=

24、null)top+;readtop.addreader(n,na);cout讀者添加成功endl;return 1;return 0;void rdatabase:disp()/輸出所有讀者信息for (int i=0;i=top;i+)readi.disp();int rdatabase:readernum()return top;void rdatabase:readerdata() /讀者庫維護(hù) char choice;char rname100; /讀者姓名int readerid;reader *r;do cout nnttt歡迎進(jìn)入讀者維護(hù)界面nnntt 1 新 增nntt 2 更

25、 改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=nu

26、ll) 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:if (choice!=0) cout輸入錯誤,請從新輸入:;break;while (choice!=0);/圖書類,實(shí)現(xiàn)對圖書的描述,圖書的編號,書名,借出,還入等class bookprivate: int tag;/刪除標(biāo)記 1:已刪 0:未刪int no;/圖書編號char na

27、me20;/書名int onshelf;/是否再架 1:再架 0:已借public:book()char *getname() return name; /獲取姓名int getno() return no; /獲取圖書編號int gettag() return tag; /獲取刪除標(biāo)記void setname(char na)/設(shè)置書名strcpy(name,na);void delbook() tag=1;/刪除圖書void addbook(int n,char *na)/增加圖書tag=0;no=n;strcpy(name,na);onshelf=1;int borrowbook()/借

28、書操作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;/圖書庫類,實(shí)現(xiàn)對圖書的維護(hù),查找,刪除等class bdatabaseprivate: int top; /圖書記錄指針book bookmaxb; /圖書記錄public:bdatabase()/構(gòu)造函數(shù),將book.txt讀到book中 book b;top=-1;fstream file

29、(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 *query(int bookid)/查找圖書for (int i=0;i=top;i+)if (booki.getno()=bookid &booki.gettag()=0)return &booki;return null;void bookdata();/圖書庫維

30、護(hù)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(int n,char *na)/增加圖書book *p=query(n);if (null=p)top+;booktop.addbook(n,na);return 1;return 0;bdatabase:bdatabase()/析構(gòu)函數(shù),將book寫到book.txt文件中fstream file(book.txt,ios:

31、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;do cout nnnttt歡迎進(jìn)入圖書維護(hù)界面 endlendl;couttt1 新 增n tt2 更 改ntt3 刪 除ntt4 查 找ntt5 顯 示ntt6 全 刪ntt0 退 出 choice;switch (choice) case 1:cout

32、 輸入圖書編號: 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=

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

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論