版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PAGEword文檔可自由復制編輯面向對象程序設計課程設計報告題目:圖書信息管理系統專業班級:通信3班學生組長:小組成員:指導教師:分數:2014年4月課程設計任務書設計題目圖書館信息管理系統學生姓名所在院系電子信息工程系專業、年級、班11級通信3班設計要求:圖書信息包括:登錄號、書名、作者名、分類號、出版單位、出版時間、價格等,設計圖書管理系統,使之能提供以下功能:1、系統以菜單方式工作;2、圖書信息瀏覽功能——輸出;3、查詢和排序功能:(至少一種方式)(1)按書名查詢;(2)按作者名查詢;(3)圖書信息的刪除與修改(管理員)4、圖書信息錄入功能(圖書信息用文件保存)——輸入;(管理員)參考文獻閱讀:[1]譚浩強.《C++面向對象程序設計》.清華大學出版社,2006.1[2]張春林,馬成勇,劉鈞.《數據庫系統設計與開發》.清華大學出版社,2005[3]梁普選.《VisualC++程序設計與實踐》.清華大學出版社.2006[4]張瑞豐.《C++語言程序設計》.清華大學出版社,2006工作計劃:由組長將程序細致的分為3個軟件模塊,分別由3位組員各自完成自己的軟件模塊設計。最后再將3部分合并。之后再對總的程序進行運行調試及改進。任務下達日期:2014年3月22日任務完成日期:2013年4月20日指導教師(簽名):學生(簽名):目錄第TOC\o"1-2"\h\z\u一章、總體設計 41.1設計目的 41.2設計要求 41.3設計方案選取與論證 41.4模塊劃分與任務安排 5第二章、軟件設計 52.1Book類模塊的軟件設計 52.2BDatabase類模塊的軟件設計 72.3主界面程序模塊設計 10第三章、系統實現及調試過程 14第四章、結論 15致謝 16參考文獻 16一、總體設計1.1設計目的圖書館提供的物質資源越來越豐富,如何高效準確地對館藏資料進行整理、借還、盤點成為困擾圖書館管理人員的問題。以前,都是用人工計算、手抄進行。數據信息處理工作量大,容易出錯;由于數據繁多,容易丟失,且不易查找。總的來說,缺乏系統,規范的信息管理手段。基于這些問題,有必要建立一個圖書管理系統,使圖書管理工作規范化,系統化,程序化,避免圖書管理的隨意性,提高信息處理的速度和準確性,能夠及時、準確、有效的查詢和修改圖書情況。利用圖書管理系統對圖書記錄進行統一管理,包括新增圖書記錄,更改圖書記錄,刪除圖書記錄等功能,實現圖書管理工作的系統化,規范化和自動化,為圖書管理提供便利。同時,圖書館是目前生活中除了網絡外的另一個獲取知識的重要場所,利用圖書管理系統可以更加高效查詢、尋找到自己所需求的書籍。設計一個圖書信息管理系統是學習完《面向對象程序設計》課程后進行的一次全面綜合聯系。有助于加深對面向對象程序設計中基礎理論和基礎知識的理解,培養了實踐能力,促進理論與實踐的結合。1.2設計要求圖書信息包括:登錄號、書名、作者名、分類號、出版單位、出版時間、價格等,設計圖書管理系統,使之能提供以下功能:1、系統以菜單方式工作;2、圖書信息瀏覽功能——輸出;3、查詢和排序功能:(至少一種方式)(1)按書名查詢;(2)按作者名查詢;(3)圖書信息的刪除與修改(管理員);4、圖書信息錄入功能(圖書信息用文件保存)——輸入;(管理員)1.3設計方案選取與論證本次課程設計我們組的題目為:圖書信息管理系統的開發,總的設計目標是實現圖書管理的系統化、規范化和自動化,實現對圖書資料的集中統一的管理。是利用數據庫軟件編制一個管理軟件,用以實現圖書、讀者以及日常工作等多項管理。同時對整個系統的分析、設計過程給出一個完整論證。圖書管理系統是一種基于集中統一規劃的數據庫數據管理新模式。在對圖書信息的管理,其實是對圖書信息的管理。本系統的建成無疑會為管理者對圖書管理系統提供極大的幫助。本系統的設計主要從以下幾方面做起:系統業務流程分析、系統的功能設計、系統的數據庫結構設計等。作這些工作需對數據庫知識有足夠認識,并深入的了解C++的運用知識。新系統的使用能否可以很好的解決這些問題要看系統的可行性,可行性研究的目的是用最小的代價在盡可能短的時間內確定問題是否能夠解決。系統的可行性分析有以下幾個方面:(1)技術可行性:處理速度快、準確通過權限的設置,數據的安全性好、方便查詢、借閱管理等。(2)經濟可行性:系統建設不需要很大的投入、可縮減人力投入。(3)運行上可行性:本系統作為一個小型的圖書館信息管理系統,所耗費的資源非常的小。(4)從各種社會因素可行性分析:可降低工作人員工作強度,提高效率,會得到學校工作人員的一致同意的。綜上所述通過可行性分析認為新系統的開發方案切實可行,可進行開發。本系統主要實現對圖書館信息的管理,主要功能為管理有關書籍的信息。本系統結構主要為書籍信息管理模塊。書籍信息管理可以瀏覽書籍的信息,可以對書籍信息進行維護。可見,本系統并不復雜,主要解決的問題是利用關鍵字對數據庫進行查詢。1.4模塊劃分與任務安排由于本系統具有很強的模塊性,為了使每一個組員都能過在本次課設上學習到東西,同時也是為了能過合理的分配各個成員的課程設計任務,所以我們組對本系統進行了模塊拆分,并由本組的每一個組員負責拆分中凡人一個模塊的設計及軟件的編寫。在每一個模塊程序編寫完成后,在進行總體的合成、調試。我們設計的系統分為:Book類的設計、BDatabase類的設計。以下是我們組的分配任務:由組員設計模塊:Book類的設計。由組員設計模塊:BDatabase類的設計。由組員進行主界面程序模塊設計。二、軟件設計2.1Book類模塊的軟件設計(負責同學:)本模塊主要的作用是錄入圖書的信息,在程序中先定義一個book類,類中主要分為獲取圖書類型、獲取書名、獲取圖書編碼、獲取刪除標志、設置書名、設置圖書類型、刪除圖書、增加圖書和輸出圖書9個小的模塊其流程圖如下:根據設計的流程模塊設計程序代碼,程序設計了六個私有成員,即刪除標記:lab;圖書編號:num;增加標記:add;編號:number[StrNum];書名:bookname[StrNum];圖書類型:bookkind[Type];同時還設計了同樣多的共有成員,使程序能夠在運行的時候提取書名、刪除書名、添加編號等等。這樣的book庫實現了圖書信息的錄入及提取。以下是本系統book類的基本設計程序:classBook{private:intlab;//刪除標記intnum;//圖書編號intadd;//增加標記charnumber[StrNum];//編號charbookname[StrNum];//書名charbookkind[Type];//圖書類型public:Book(){}chargetkind()//獲取圖書類型{returnbookkind[Type];}chargetname()//獲取書名{returnbookname[StrNum];}intgetnum()//獲取圖書編號{returnnum;}intgetlab()//獲取刪除標記{returnlab;}voidsetname(charna[])//設置書名{strcpy(bookname,na);}voidsetkind(charkin[])//設置類型{strcpy(bookkind,kin);}voiddelbook()//刪除圖書{lab=1;}voidaddbook(intn,char*na,char*kin)//增加圖書{lab=0;num=n;strcpy(bookname,na);strcpy(bookkind,kin);}voiddisp()//輸出圖書{cout.flags(ios::left);//設置對齊的標志位為左cout<<setw(15)<<num<<setw(20)<<bookname<<setw(15)<<bookkind<<endl;}};2.2BDatabase類模塊的軟件設計(負責同學:)本模塊的設計主要是滿足圖書信息的保存及文本的寫入,與book類相互依存。本模塊是實現本系統的重要一部分。設計的框圖如下:由于存入的圖書信息并不是保存在程序中,而是使它存在book.txt中,所以在本模塊設計中,使用了構造函數BDatabase將book.txt讀到book[]中和析構函數~BDatabase()將book[]寫到book.txt文件中,實現文本的寫入。所以,本部分的作用至關重要。其主要的的程序如下:classBDatabase{private:inttop;Bookbook[Maxb];//圖書記錄public:BDatabase()//構造函數,將book.txt讀到book[]中{Bookb;top=-1;fstreamfile("book.txt",ios::in);while(1){file.read((char*)&b,sizeof(b));if(!file)break;top++;book[top]=b;}file.close();}voidclear()//全刪{top=-1;}intaddbook(intn,char*na,char*kin)//增加圖書{Book*p=query(n);if(NULL==p){top++;book[top].addbook(n,na,kin);return1;}return0;}Book*query(intbookid)//查找圖書{for(inti=0;i<=top;i++)if(book[i].getnum()==bookid&&book[i].getlab()==0){return&book[i];}returnNULL;}voiddisp()//圖書庫{for(inti=0;i<=top;i++)if(book[i].getlab()==0)book[i].disp();}~BDatabase()//析構函數,將book[]寫到book.txt文件中,實現文本的寫入{fstreamfile("book.txt",ios::out);for(inti=0;i<=top;i++)if(book[i].getlab()==0)file.write((char*)&book[i],sizeof(book[i]));file.close();}};2.3主界面程序模塊設計(負責同學:)一個完整的圖書信息管理系統需要一個界面來讓我們明白無誤的功能及使用的流程。主界面模塊的設計是更具設計的程序集我們在實際使用中和課設的要求,輸出一個界面,是我們能過通過界面的引導,實現對本系統的使用。主界面板設計上,設置了:添加圖書、刪除圖書、查找圖書等等7個提示目錄。其設計框圖如下:一個合理的主菜單界面,才能夠完成我們所需求的各個功能。主要的程序如下:voidmain(){BDatabaseBookDB;charchoice;charbname[40];charbkind[40];charnewType[20];intbookid;Book*b;while(choice!='0'){cout<<"\t*********************************************************\n";cout<<"\n\n";cout<<"\t\t\t圖書管理系統\n\n";cout<<"\t\t\t1新增圖書記錄\n";cout<<"\t\t\t2更改圖書記錄\n";cout<<"\t\t\t3刪除圖書記錄\n";cout<<"\t\t\t4查找圖書記錄\n";cout<<"\t\t\t5顯示圖書記錄\n";cout<<"\t\t\t6清空全部記錄(慎用)\n";cout<<"\t\t\t0退出系統\n";cout<<"\n\n";cout<<"\t********************************************************\n";cout<<"請選擇(1,2,3,4,5,6,0):";cin>>choice;switch(choice){case'1':cout<<"輸入圖書編號:"<<endl;cin>>bookid;cout<<"輸入圖書類型:"<<endl;cin>>newType;cout<<"輸入圖書書名:"<<endl;cin>>bname;BookDB.addbook(bookid,bname,newType);break;case'2':cout<<"輸入圖書編號:"<<endl;cin>>bookid;b=BookDB.query(bookid);if(b==NULL){cout<<"該圖書不存在"<<endl;break;}cout<<"輸入新的書名:"<<endl;cin>>bname;b->setname(bname);cout<<"輸入新的類型:"<<endl;cin>>bkind;b->setkind(bkind);break;case'3':cout<<"讀入圖書編號:"<<endl;cin>>bookid;b=BookDB.query(bookid);if(b==NULL){cout<<"該圖書不存在"<<endl;break;}chartg1;cout<<"確定要刪除此記錄嗎?(Y/N)"<<endl;cin>>tg1;if(tg1!='n'&&tg1!='N'){b->delbook();cout<<"已成功刪除該書記錄!"<<endl;break;}case'4':cout<<"讀入圖書編號:"<<endl;cin>>bookid;b=BookDB.query(bookid);if(b==NULL){cout<<"該圖書不存在"<<endl;break;}cout<<"圖書編號圖書名稱圖書類型\n";b->disp();break;case'5':cout<<"圖書編號圖書名稱圖書類型\n";b->disp();break;case'6':chartg2;cout<<"確定要清空所有記錄嗎?(Y/N)"<<endl;cin>>tg2;if(tg2!='n'&&tg2!='N'){BookDB.clear();cout<<"已成功清空記錄!"<<endl;break;}case'0':break;default:cout<<"輸入錯誤,請從新輸入(數字為0~6):";三、系統實現及調試過程運行程序,系統輸出主界面,界面如下:按照輸出界面的提示項目,調試各個功能:測試新增圖書記錄功能 :測試更改圖書記錄功能:測試刪除圖書記錄功能:測試查找圖書記錄功能:測試顯示圖書記錄功能:測試清空全部圖書記錄功能:調試中,我們可以看到本系統以菜單方式工作,具備了圖書信息瀏覽功能,同時還具有查詢和排序功能,并能過按按照書名和編號查詢錄入的圖書信息,在圖書信息的刪除與修改方面也能夠實現設計的要求。以下是對本系統完成功能測試的解說。測試單元: 圖書信息單元 測試類型:功能測試編號測試說明期望結果實際結果成功/失敗1測試新書信息添加是否成功新書信息成功寫入數據庫數據庫中可以找到新添加記錄。成功2測試圖書刪除將輸入新書信息刪除數據庫中新書紀錄刪除成功3測試圖書信息修改將重新輸入數據錄入到數據庫中修改圖書信息信息成功成功表3.1圖書信息管理測試用例表測試單元: 查詢讀者信息單元 測試類型:功能測試編號測試說明期望結果實際結果成功/失敗1測試按讀者的各項信息是否可以進行查詢根據不同的查詢信息對讀者進行查詢顯示查詢項成功2測試多項的查詢條件是否能進行查詢根據不同的查詢條件對讀者信息進行查詢顯示查詢結果成功表3.2查詢管理測試用例表根據上面的測試,該系統各功能模塊均能正常使用。同時,這些功能也是本次課程設計的任務要求,所以本次課程設計完成。四、結論總結:本系統實現了圖書管理系統的典型功能,包括查詢所有記錄的信息,添加查找等功能,基本符合設計要求,利用類的封裝實現了一定的安全性,函數的實現與調用主要在
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026中國智能環保行業市場深度調研及發展趨勢和投資前景預測研究報告
- 2026石墨烯產業行業市場現狀供需分析及投資評估規劃分析研究報告
- 2026中國智能家居控制系統行業市場競爭評估需求分析發展研究
- 貴州省黔東南南苗族侗族自治州施秉縣2027屆四上數學期末復習檢測模擬試題含解析
- 跨境腦機接口鏡像視覺反饋中跨國幻肢痛治療數據共享-基于國際疼痛研究學會鏡像視覺反饋幻肢痛神經數據共享倫理指南規范分析
- 跨國權益中跨國權益分拆綠電份額歸屬-基于國際數字資產權益分拆標準算力To ken權益分拆綠電歸屬規則規范分析
- 2027屆涼山彝族自治州會東縣四上數學期末學業質量監測試題含解析
- 2026中國智能設備制造行業市場現狀產品供給需求投資評估發展趨勢分析研究報告
- 疫苗冷鏈監控與追溯系統項目招標文件
- 2027屆黃南藏族自治州四上數學期末檢測試題含解析
- 2026天津經開能源技術有限公司相關崗位招聘5人筆試參考題庫及答案詳解
- GB/T 13544-2026燒結多孔磚和多孔砌塊
- 2026年四川省成都市輔警考試題庫(附答案)
- 中國羊水栓塞診治指南2025版
- 2026年四川省普通高中信息技術學業水平合格性考試試卷及答案
- 2026版安管人員考試題庫及詳細答案
- 2026年糖尿病酮癥酸中毒護理解讀
- GB/T 47275-2026水上應急救援智能救生圈技術要求
- 保溫材料檢測試驗施工方案
- 2026江蘇蘇州市高新區公益性崗位招聘59人筆試備考試題及答案解析
- 有限空間作業專項施工方案及應急預案
評論
0/150
提交評論