面向對象程序課程設計報告基于C++語言的圖書管理系統_第1頁
面向對象程序課程設計報告基于C++語言的圖書管理系統_第2頁
面向對象程序課程設計報告基于C++語言的圖書管理系統_第3頁
面向對象程序課程設計報告基于C++語言的圖書管理系統_第4頁
面向對象程序課程設計報告基于C++語言的圖書管理系統_第5頁
已閱讀5頁,還剩24頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、課 程 設 計 報 告課程名稱 面向對象程序設計 課題名稱 圖書管理系統 專 業 計算機科學與技術 班 級 計算機0981 學 號 200913310608 姓 名 指導教師 2010年 12 月 05 日湖南工程學院湖南工程學院課 程 設 計 任 務 書課程名稱 面向對象程序設計 課 題 圖書管理系統 專業班級 計算機0981 學生姓名 學 號 200913310608 指導老師 審 批 任務書下達日期 2010 年 12 月 05 日任務完成日期 2011 年 01 月 15 日一、設計內容與設計要求1.課程設計目的:面向對象程序設計課程設計是集中實踐性環節之一,是學習完面向對象程序設計課

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

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

4、 18 周 星期一 8:0012:00 星期二 8:0012:00 星期四 8:0012:00第 19 周 星期一 8:0012:00 星期二 14:0018:00 星期三 8:0012:00三、參考書籍1.c程序設計課程設計 劉振安編著 tp312c5632.c+ builder和delphi課程設計與系統開發案例 伍俊良 清華大學出版社 7-302-06072-x 3.visual c+課程設計案例精編 嚴華峰 中國水利水電出版社 7-5084-2007-1 2004 4.visual c+課程設計與系統開發案例 伍俊良 清華大學出版社 7-302-05968-3 20025.visual

5、 c+語言課程設計 : 案例精選與編程指導 陳清華朱紅 東南大學出版社 7-81089-275-4 2003 6.visualc+課程設計案例精編 中國水利水電出版社 7-5084-1004-1 2002 7.數據結構課程設計案例精編 : 用c/c+描述 李建學李光元吳春芳 清華大學出版社 7-302-14536-9 2007 (編程平臺不限,vc+, c+ builder等等。)課題8:圖書管理系統(一)、課程設計題目:圖書管理系統(二)、目的與要求: 1、目的: (1)要求學生達到熟練掌握c+語言的基本知識和技能; (2)基本掌握面向對象程序設計的基本思路和方法; (3)能夠利用所學的基本

6、知識和技能,解決簡單的面向對象程序設計問題。 2、基本要求: (1)要求利用面向對象的方法以及c+的編程思想來完成系統的設計; (2)要求在設計的過程中,建立清晰的類層次; (3)在系統中至少要定義四個類,每個類中要有各自的屬性和方法; (4)在系統的設計中,至少要用到面向對象的一種機制。 3、創新要求: 在基本要求達到后,可進行創新設計,如根據查找結果進行修改的功能。 4、寫出設計說明書 (三)、設計方法和基本原理: 1、問題描述(功能要求): 在圖書管理系統中,要為每個借閱者建立一個賬戶,并給借閱者發放借閱卡(借閱卡可以提供借閱卡號、借閱者名),賬戶中存儲借閱者的個人信息、借閱信息以及預定

7、信息。持有借閱卡的借閱者可以借閱書刊、返還書刊、查詢書刊信息、預定書刊并取消預定,但這些操作都是通過圖書管理員進行的,也即借閱者不直接與系統交互,而是圖書管理員充當借閱者的代理與系統交互。在借閱書刊時,需要輸入所借閱的書刊名,書刊的isbn/issn號,然后輸入借閱者的圖書卡號和借閱者名,完成后提交所填表格,系統驗證借閱者是否有效(在系統中存在賬戶),若有效,借閱請求被接受,系統查詢數據庫系統,看借閱者所借閱的書刊是否存在,若存在,則借閱者可借出書刊,建立并在系統中存儲借閱記錄。借閱者還書后,刪除關于所還書刊的借閱記錄。如果借閱者所借的書刊已被借出,借閱者還可預定該書刊,一旦借閱者預定的書刊可

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

9、求分析.8 1.1系統設計的目的與意義.8 1.2系統功能需求.82. 總體設計.8 2.1系統功能分析.8 2.2系統功能模塊劃分與設計.8 2.3系統功能模塊圖.93. 詳細設計.9 3.1讀者類的設計.9 3.2讀者庫類的設計.10 3.3圖書類的設計.10 3.4圖書庫類的設計.11 4. 系統調試.115. 結果分析.13 6. 總結.14 6.1感想與體會.147. 附錄.14 7.1源程序清單.141. 系統需求分析1.1系統設計的目的與意義:圖書系統在生活中運用相當廣泛,因此需要很多程序對他進行管理。1.2 系統功能需求:本系統有四個類,book類,bdatebase類、rea

10、der類、rdatebase類,存儲借閱者的個人信息、借閱信息以及預定信息。持有借閱卡的借閱者可以借閱書刊、返還書刊、查詢書刊信息、預定書刊并取消預定等功能。2. 總體設計2.1 系統功能分析:系統通過調用函數來實現刪除圖書、讀者信息,添加圖書、讀者信息等功能。delbook( )函數用于刪除圖書信息;addbook( )函數用于增加圖書信息;borrowbook( )函數用于實現借書操作;returnbook( )函數用于實現還書操作等等;主函數用于掉用這些函數。2.2系統功能模塊劃分與設計本系統定義了book類、bdatebase類、reader類、rdatebase類這四個類,定義了ad

11、dbook ( )、addreader( )、borrowbook ( )、setname( )等函數來實現系統所需功能。2.3 系統功能模塊圖:圖書管理系統四個類程序實現功能輸出顯示圖書類圖書庫類實驗員讀者類行政人員讀者庫類文件錄入查詢信息刪除信息退出程序圖 2.33. 詳細設計3.1 讀者類的設計該類定義了借書操作,還書操作,設置讀者姓名等功能。 reader+name20:char+no:int+tag:int+borbook:int+ getname():char+gettag():int+ getno():int+setname(char na):void+ delbook():vo

12、id+ addreader(int n,char *na):void+ borrowbook(int bookid):void+ retbook(int bookid):int+ disp():void 圖 3.13.2 讀者庫類類的設計該類實現了建立讀者的個人資料,刪除讀者信息,輸出讀者信息等功能。 rdatebase+ top:int+ rname20:char+readerid:int+readerdata():void+choice:char+addreader(int n,char *na):int+clear():void+disp():void 圖 3.23.3 圖書類的設計圖書

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 圖書庫類的設計 xingzhengrenyuan+top:int+clear():void+addbook(int n,char *na):int+bookdata():v

14、oid+bookdata():void+ disp():void 圖 3.44. 系統調試在調試過程中,出現了一些錯誤。1、輸入數據時,輸錯了數據的類型會造成死循環,因此輸入時需要注意。 2、一開始主界面輸入非正確數字時,沒有提示錯誤。容易造成用戶誤解 圖4.1在主函數的switch語句結束處加上default:cout輸入錯誤,請從新輸入:;就可以了,修改后: 圖4.2 具體調試過程。主界面 圖4.3圖書維護 圖4.4讀者維護圖4.15.結果分析本程序總共設計了四個類,滿足了課題對類的要求,在設計的過程中,建立了較為清晰的類層次,也利用了面向對象的方法以及c+的編程思想來完成系統的設計,做到

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

16、識到了自己有太多的不足。以后還會有很多的課程設計,一定要吸取這次的教訓,把知識學懂學透學精,真正的為我所用,這樣走上社會我才能真正的發揮所長。7、附錄7.1 源程序清單:#include #include #include #include using namespace std; const int maxr=100;const int maxb=100;const int maxbor=5;class reader private: int tag; int no; char name10;int borbookmaxbor; public: reader() char *getname(

17、) 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;imaxbor;i+) borbooki=0; void borrowbook(int bookid) for(int i=0;imaxbor;i+) if (borbooki=0) borbooki=bo

18、okid; return; int retbook(int bookid) for(int i=0;imaxbor;i+) if(borbooki=bookid) borbooki=0; return 1; return 0; void disp() cout setw(5) no setw(10) name借書編號:; for(int i=0;imaxbor;i+) if(borbooki!=0) cout borbooki |; cout endl; ; class rdatabase private: int top; reader readmaxr;public: rdatabase(

19、) 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(); 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 reader

20、id) for (int i=0;i=top;i+) if (readi.getno()=readerid & readi.gettag()=0) return &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);

21、file.close(); ; void rdatabase:readerdata() char choice; char rname20; int readerid; reader *r; while (choice!=0) cout nnttt讀 者 維 護nnntt 1 新 增nntt 2 更 改nntt 3 刪 除nntt 4 查 找nntt 5 顯 示nntt 6 全 刪nntt 0 退 出 choice; switch (choice) case 1: cout readerid; cout rname; addreader (readerid,rname); break; cas

22、e 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 readerid; r=query(readerid); if (r=null) cout 該讀者不存在disp(); break; case 5: disp(); break;

23、case 6: clear(); break; default:cout輸入錯誤,請從新輸入:;break; class book private: int tag;int no;char name20;int onshelf; public: book() char *getname() 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

24、=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? 在架:已借) endl; ; class bdatabase private: int top; book bookmaxb; public: bdatabase() book b; top=-1; fstream fi

25、le(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 *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.getn

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

27、base:bookdata() char choice; char bname40; int bookid; book *b; while (choice!=0) cout 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; 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();

溫馨提示

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

評論

0/150

提交評論