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

下載本文檔

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

文檔簡介

1、. . . . 課 程 設(shè) 計 報 告課程名稱 面向?qū)ο蟪绦蛟O(shè)計 課題名稱 圖書管理系統(tǒng) 專 業(yè) 計算機(jī)科學(xué)與技術(shù) 班 級 計算機(jī)0981 學(xué) 號 8 姓 名 譚俐莎 指導(dǎo)教師 珍輝 鄧作杰 2010年 12 月 05 日工程學(xué)院工程學(xué)院課 程 設(shè) 計 任 務(wù) 書課程名稱 面向?qū)ο蟪绦蛟O(shè)計 課 題 圖書管理系統(tǒng) 專業(yè)班級 計算機(jī)0981 學(xué)生 譚俐莎 學(xué) 號 8 指導(dǎo)老師 珍輝 鄧作杰 審 批 珍輝 任務(wù)書下達(dá)日期 2010 年 12 月 05 日任務(wù)完成日期 2011 年 01 月 15 日一、設(shè)計容與設(shè)計要求1.課程設(shè)計目的:面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計是集中實(shí)踐性環(huán)節(jié)之一,是學(xué)習(xí)完面向?qū)ο蟪?/p>

2、序設(shè)計課程后進(jìn)行的一次全面的綜合練習(xí)。要求學(xué)生達(dá)到熟練掌握C+語言的基本知識和技能;基本掌握面向?qū)ο蟪绦蛟O(shè)計的思想和方法;能夠利用所學(xué)的基本知識和技能,解決簡單的面向?qū)ο蟪绦蛟O(shè)計問題,從而提高動手編程解決實(shí)際問題的能力。2.課題題目1)公司庫存管理系統(tǒng)2)高校學(xué)籍管理系統(tǒng)3)高校工資管理系統(tǒng)4)高校人事管理系統(tǒng)5)通訊錄程序設(shè)計6)學(xué)生成績管理系統(tǒng)7) 圖書管理系統(tǒng)8)文本編輯器的設(shè)計與實(shí)現(xiàn)9)學(xué)生考勤管理系統(tǒng)10)公司人員管理系統(tǒng)3設(shè)計要求:設(shè)計課題題目:每位同學(xué)根據(jù)自己學(xué)號除以9所得的余數(shù)加一選擇相應(yīng)題號的課題。換題者不記成績。(課題10只做為參考課題)根據(jù)自己對應(yīng)的課題完成以下主要工作:

3、完成系統(tǒng)需求分析:包括系統(tǒng)設(shè)計目的與意義;系統(tǒng)功能需求(系統(tǒng)流程圖);輸入輸出的要求。完成系統(tǒng)總體設(shè)計:包括系統(tǒng)功能分析;系統(tǒng)功能模塊劃分與設(shè)計(系統(tǒng)功能模塊圖)。完成系統(tǒng)詳細(xì)設(shè)計:包括數(shù)據(jù)庫需求分析;數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(ER圖);數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計;類層次圖;界面設(shè)計與各功能模塊實(shí)現(xiàn)。系統(tǒng)調(diào)試:調(diào)試出現(xiàn)的主要問題,編譯語法錯誤與修改,重點(diǎn)是運(yùn)行邏輯問題修改和調(diào)整。使用說明書與編程體會:說明如何使用你編寫的程序,詳細(xì)列出每一步的操作步驟。關(guān)鍵源程序(帶注釋) 按規(guī)定格式完成課程設(shè)計報告,將其打印稿(A4紙)上交給老師存檔。 不得抄襲他人程序、課程設(shè)計報告,每個人應(yīng)體現(xiàn)自己的個性設(shè)計。二、進(jìn)度安

4、排第 18 周 星期一 8:0012:00 星期二 8:0012:00 星期四 8:0012:00第 19 周 星期一 8:0012:00 星期二 14:0018:00 星期三 8:0012:00三、參考書籍1.C程序設(shè)計課程設(shè)計 振安編著 TP312C5632.C+ Builder和Delphi課程設(shè)計與系統(tǒng)開發(fā)案例 伍俊良 清華大學(xué) 7-302-06072-X 3.Visual C+課程設(shè)計案例精編 嚴(yán)華峰 中國水利水電 7-5084-2007-1 2004 4.Visual C+課程設(shè)計與系統(tǒng)開發(fā)案例 伍俊良 清華大學(xué) 7-302-05968-3 20025.Visual C+語言課程設(shè)

5、計 : 案例精選與編程指導(dǎo) 清華朱紅 東南大學(xué) 7-81089-275-4 2003 6.VisualC+課程設(shè)計案例精編 中國水利水電 7-5084-1004-1 2002 7.數(shù)據(jù)結(jié)構(gòu)課程設(shè)計案例精編 : 用C/C+描述 建學(xué)光元吳春芳 清華大學(xué) 7-302-14536-9 2007 (編程平臺不限,vc+, c+ Builder等等。)課題8:圖書管理系統(tǒng)(一)、課程設(shè)計題目:圖書管理系統(tǒng)(二)、目的與要求: 1、目的: (1)要求學(xué)生達(dá)到熟練掌握C+語言的基本知識和技能; (2)基本掌握面向?qū)ο蟪绦蛟O(shè)計的基本思路和方法; (3)能夠利用所學(xué)的基本知識和技能,解決簡單的面向?qū)ο蟪绦蛟O(shè)計問

6、題。 2、基本要求: (1)要求利用面向?qū)ο蟮姆椒ㄒ耘cC+的編程思想來完成系統(tǒng)的設(shè)計; (2)要求在設(shè)計的過程中,建立清晰的類層次; (3)在系統(tǒng)中至少要定義四個類,每個類中要有各自的屬性和方法; (4)在系統(tǒng)的設(shè)計中,至少要用到面向?qū)ο蟮囊环N機(jī)制。 3、創(chuàng)新要求: 在基本要求達(dá)到后,可進(jìn)行創(chuàng)新設(shè)計,如根據(jù)查找結(jié)果進(jìn)行修改的功能。 4、寫出設(shè)計說明書 (三)、設(shè)計方法和基本原理: 1、問題描述(功能要求): 在圖書管理系統(tǒng)中,要為每個借閱者建立一個賬戶,并給借閱者發(fā)放借閱卡(借閱卡可以提供借閱卡號、借閱者名),賬戶中存儲借閱者的個人信息、借閱信息以與預(yù)定信息。持有借閱卡的借閱者可以借閱書刊、返

7、還書刊、查詢書刊信息、預(yù)定書刊并取消預(yù)定,但這些操作都是通過圖書管理員進(jìn)行的,也即借閱者不直接與系統(tǒng)交互,而是圖書管理員充當(dāng)借閱者的代理與系統(tǒng)交互。在借閱書刊時,需要輸入所借閱的書刊名,書刊的ISBN/ISSN號,然后輸入借閱者的圖書卡號和借閱者名,完成后提交所填表格,系統(tǒng)驗(yàn)證借閱者是否有效(在系統(tǒng)中存在賬戶),若有效,借閱請求被接受,系統(tǒng)查詢數(shù)據(jù)庫系統(tǒng),看借閱者所借閱的書刊是否存在,若存在,則借閱者可借出書刊,建立并在系統(tǒng)中存儲借閱記錄。借閱者還書后,刪除關(guān)于所還書刊的借閱記錄。如果借閱者所借的書刊已被借出,借閱者還可預(yù)定該書刊,一旦借閱者預(yù)定的書刊可以獲得,就將書刊直接寄給預(yù)定人(為了簡化

8、系統(tǒng),預(yù)定書刊可獲得時就不通知借閱者了)。另外,為了簡化系統(tǒng),也不考慮書刊的最長借閱期限,假設(shè)借閱者可以無限期地保存所借閱的書刊。2、問題的解決方案: 根據(jù)系統(tǒng)功能要求,可以將問題解決分為以下步驟: (1)應(yīng)用系統(tǒng)分析,建立該系統(tǒng)的功能模塊框圖以與界面的組織和設(shè)計;(2)分析系統(tǒng)中的各個實(shí)體與它們之間的關(guān)系包括屬性和行為; (3)根據(jù)問題描述,設(shè)計系統(tǒng)的類層次; (4)完成類層次中各個類的描述(包括屬性和方法); (5)完成類中各個成員函數(shù)的定義; (6)完成系統(tǒng)的應(yīng)用模塊; (7)功能調(diào)試; (8)完成系統(tǒng)總結(jié)報告以與系統(tǒng)使用說明書34 / 28目 錄1. 系統(tǒng)需求分析.8 1.1系統(tǒng)設(shè)計的

9、目的與意義.8 1.2系統(tǒng)功能需求.82. 總體設(shè)計.8 2.1系統(tǒng)功能分析.8 2.2系統(tǒng)功能模塊劃分與設(shè)計.8 2.3系統(tǒng)功能模塊圖.93. 詳細(xì)設(shè)計.9 3.1讀者類的設(shè)計.9 3.2讀者庫類的設(shè)計.10 3.3圖書類的設(shè)計.10 3.4圖書庫類的設(shè)計.114. 系統(tǒng)調(diào)試.115. 結(jié)果分析.136. 總結(jié).14 6.1感想與體會.147. 附錄.14 7.1源程序清單.141. 系統(tǒng)需求分析1.1系統(tǒng)設(shè)計的目的與意義:圖書系統(tǒng)在生活中運(yùn)用相當(dāng)廣泛,因此需要很多程序?qū)λM(jìn)行管理。1.2 系統(tǒng)功能需求:本系統(tǒng)有四個類,Book類,BDatebase類、Reader類、RDatebase類,

10、存儲借閱者的個人信息、借閱信息以與預(yù)定信息。持有借閱卡的借閱者可以借閱書刊、返還書刊、查詢書刊信息、預(yù)定書刊并取消預(yù)定等功能。2. 總體設(shè)計2.1 系統(tǒng)功能分析:系統(tǒng)通過調(diào)用函數(shù)來實(shí)現(xiàn)刪除圖書、讀者信息,添加圖書、讀者信息等功能。delbook( )函數(shù)用于刪除圖書信息;addbook( )函數(shù)用于增加圖書信息;borrowbook( )函數(shù)用于實(shí)現(xiàn)借書操作;returnbook( )函數(shù)用于實(shí)現(xiàn)還書操作等等;主函數(shù)用于掉用這些函數(shù)。2.2系統(tǒng)功能模塊劃分與設(shè)計本系統(tǒng)定義了Book類、BDatebase類、Reader類、RDatebase類這四個類,定義了addbook ( )、addrea

11、der( )、borrowbook ( )、setname( )等函數(shù)來實(shí)現(xiàn)系統(tǒng)所需功能。2.3 系統(tǒng)功能模塊圖:圖書管理系統(tǒng)四個類程序?qū)崿F(xiàn)功能輸出顯示圖書類圖書庫類實(shí)驗(yàn)員讀者類行政人員讀者庫類文件錄入查詢信息刪除信息退出程序圖 2.33. 詳細(xì)設(shè)計3.1 讀者類的設(shè)計該類定義了借書操作,還書操作,設(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

12、,char *na):void+ borrowbook(int bookid):void+ retbook(int bookid):int+ disp():void 圖 3.13.2 讀者庫類類的設(shè)計該類實(shí)現(xiàn)了建立讀者的個人資料,刪除讀者信息,輸出讀者信息等功能。 RDatebase+ top:int+ rname20:char+readerid:int+readerdata():void+choice:char+addreader(int n,char *na):int+clear():void+disp():void 圖 3.23.3 圖書類的設(shè)計圖書類,可以實(shí)現(xiàn)對圖書的描述,圖書的編號,

13、書名,借出,還入等操作。Book+no:int+name20:char+onshelf:int+getname():char+getno():int+gettag():int+setname(char na):void+delbook():void+addbook():void+borrowbook():int+retbook():void+disp ():void 圖 3.33.4 圖書庫類的設(shè)計 Xingzhengrenyuan+top:int+clear():void+addbook(int n,char *na):int+bookdata():void+bookdata():void+

14、 disp():void 圖 3.44. 系統(tǒng)調(diào)試在調(diào)試過程中,出現(xiàn)了一些錯誤。1、輸入數(shù)據(jù)時,輸錯了數(shù)據(jù)的類型會造成死循環(huán),因此輸入時需要注意。 2、一開始主界面輸入非正確數(shù)字時,沒有提示錯誤。容易造成用戶誤解圖4.1在主函數(shù)的switch語句結(jié)束處加上default:cout<<"輸入錯誤,請從新輸入:"就可以了,修改后: 圖4.2 具體調(diào)試過程。主界面 圖4.3圖書維護(hù) 圖4.4讀者維護(hù)圖4.15.結(jié)果分析本程序總共設(shè)計了四個類,滿足了課題對類的要求,在設(shè)計的過程中,建立了較為清晰的類層次,也利用了面向?qū)ο蟮姆椒ㄒ耘cC+的編程思想來完成系統(tǒng)的設(shè)計,做到了每

15、個借閱者建立一個賬戶,賬戶中存儲借閱者的個人信息、借閱信息等要求。而且界面美觀,容易操作。但是程序太長,不夠簡練,導(dǎo)致出現(xiàn)錯誤很難發(fā)現(xiàn)和修改。6. 總結(jié)6.1 感想和體會:通過這次的課程設(shè)計,讓我充分的感覺到了要自己設(shè)計一個程序是多么的難,以與學(xué)習(xí)好c+是多么的重要。在這個程序的設(shè)計過程中,我清楚的意識到自己的水平有多么的薄弱,課程的知識學(xué)得有多么的不扎實(shí)??淳W(wǎng)上的例子好像覺得也沒那么難,自己一上機(jī)實(shí)際操作就出現(xiàn)了很多問題,調(diào)試的時候系統(tǒng)總是在報錯,還有很多警告,每增加一個函數(shù)就要調(diào)試好久,有時候應(yīng)為少了一個大括號或是分號,導(dǎo)致要找很久很久。雖然系統(tǒng)可以運(yùn)行,也具有了一些基本的功能,但我意識到

16、了自己有太多的不足。以后還會有很多的課程設(shè)計,一定要吸取這次的教訓(xùn),把知識學(xué)懂學(xué)透學(xué)精,真正的為我所用,這樣走上社會我才能真正的發(fā)揮所長。7、附錄7.1 源程序清單:#include <iostream> #include <iomanip> #include <string> #include <fstream>using namespace std; const int Maxr=100;const int Maxb=100;const int Maxbor=5;class Reader private: int tag; int no; c

17、har 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) tag=0; no=n; strcpy(name,na); for(int i=0;i<Maxbor;i+) borbooki=0; void borrowboo

18、k(int bookid) for(int i=0;i<Maxbor;i+) if (borbooki=0) borbooki=bookid; return; int retbook(int bookid) for(int i=0;i<Maxbor;i+) if(borbooki=bookid) borbooki=0; return 1; return 0; void disp() cout << setw(5) << no <<setw(10) << name<<"借書編號:" for(int i=0

19、;i<Maxbor;i+) if(borbooki!=0) cout << borbooki << "|" cout << ""<<endl; ; class RDatabase private: int top; Reader readMaxr;public: RDatabase() Reader s; top=-1; fstream file("reader.txt",ios:in); while (1) file.read(char *)&s,sizeof(s); i

20、f (!file)break; 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); return 1; return 0; Reader *query(int readerid) for (int i=0;i<=top;i+) if (readi.getno()=readerid && readi.gettag()=0) return &

21、amp;readi; return NULL; void disp() for (int i=0;i<=top;i+) readi.disp(); void readerdata();RDatabase() 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 choic

22、e; 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 退 出"<<endl; cin >> choice; switch (choice) case '1': cout << "輸入讀者編號:" cin >> reader

23、id; cout << "輸入讀者:" cin >> rname; addreader (readerid,rname); break; case '2': cout << "輸入讀者編號:" cin >> readerid; r=query(readerid); if (r=NULL) cout << " 該讀者不存在 "<<endl; break; cout << "輸入新的:" cin >> rna

24、me; r->setname(rname); break; case '3': cout << " 輸入讀者編號:" cin >> readerid; r=query(readerid); if (r=NULL) cout <<" 該讀者不存在" << endl; break; r->delbook(); break; case '4': cout << "讀入讀者編號:" cin >> readerid; r=quer

25、y(readerid); if (r=NULL) cout <<"該讀者不存在"<< endl; break; r->disp(); break; case '5': disp(); break; case '6': clear(); break; default:cout<<"輸入錯誤,請從新輸入:"break; class Book private: int tag;int no;char name20;int onshelf; public: Book() char *get

26、name() 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()

27、cout << setw(6) << no << setw(18) << name << setw(10) <<(onshelf=1? "在架":"已借") <<endl; ; class BDatabase private: int top; Book bookMaxb; public: BDatabase() Book b; top=-1; fstream file("book.txt",ios:in); while (1) file.read(c

28、har *)&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(

29、)=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); for (int i=0;i<=top;i+) if (booki.gettag()=0) file.write(char *)&booki,sizeof(booki); file.close(); ; void BD

30、atabase:bookdata() char choice; char bname40; int bookid; Book *b; while (choice!='0') cout <<"nnnttt圖 書 維 護(hù) "<<endl<<endl; cout<<"tt1 新 增n tt2 更 改ntt3 刪 除ntt4 查 找ntt5 顯 示ntt6 全 刪ntt0 退 出"<<endl; cin >> choice; switch (choice) case '

31、;1': cout << "輸入圖書編號:"<<endl; cin >> bookid; cout << "輸入圖書書名:"<<endl; cin >> bname; addbook(bookid,bname); break; case '2': cout << "輸入圖書編號:"<<endl; cin >> bookid; b=query(bookid); if (b=NULL) cout <&l

32、t; " 該圖書不存在 "<<endl; break; cout << "輸入新的書名:"<<endl; cin >> bname; b->setname(bname); break; case '3': cout <<" 讀入圖書編號:"<<endl; cin >> bookid; b=query(bookid); if (b=NULL) cout <<" 該圖書不存在" << end

33、l; break; b->delbook(); break; case '4': cout << " 讀入圖書編號:"<<endl; cin >> bookid; b=query(bookid); if (b=NULL) cout <<" 該圖書不存在"<< endl; break; b->disp(); break; case '5': disp(); break; case '6': clear(); break; default:cout<<"輸入錯誤,請從新輸入:" void main() char choice; int bookid,readerid; RDatabase ReaderDB; Reader *r; BDatabase BookDB; Book *b; while(choice!='0') cout <<endl<<endl<<

溫馨提示

  • 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

提交評論