軟件工程C++大型實(shí)驗(yàn)報(bào)告圖書館管理系統(tǒng)實(shí)驗(yàn)報(bào)告_第1頁
軟件工程C++大型實(shí)驗(yàn)報(bào)告圖書館管理系統(tǒng)實(shí)驗(yàn)報(bào)告_第2頁
軟件工程C++大型實(shí)驗(yàn)報(bào)告圖書館管理系統(tǒng)實(shí)驗(yàn)報(bào)告_第3頁
軟件工程C++大型實(shí)驗(yàn)報(bào)告圖書館管理系統(tǒng)實(shí)驗(yàn)報(bào)告_第4頁
軟件工程C++大型實(shí)驗(yàn)報(bào)告圖書館管理系統(tǒng)實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、圖書管理系統(tǒng) c+大型實(shí)驗(yàn)報(bào)告 軟工0901 200926630124 * 軟工0901 200926630117 * 軟工0901 200926630118 *1 需求分析1.1 任務(wù)概述:用類方法實(shí)現(xiàn)簡單的圖書管理系統(tǒng)。1.1.1 目標(biāo):對(duì)圖書信息進(jìn)行圖書入庫、借閱登記、借閱查詢、過期提示,用戶授權(quán)這些日常業(yè)務(wù)的需要。高效性通過系統(tǒng)的實(shí)用,能夠改變舊的圖書管理模式,使對(duì)圖書的管理、借閱、查詢更加方便有效。1.1.2 運(yùn)行環(huán)境:windows 98/2000/xp/2003操作系統(tǒng)下,無須任何軟件支持。1.2 數(shù)據(jù)需求:1.2.1 數(shù)據(jù)流條目:登錄用戶=id號(hào)+姓名用戶=用戶id號(hào)+姓名圖書

2、=圖書id+書目編號(hào)+書名+作者+出版社+isbn+總數(shù)量+剩下數(shù)量借閱=用戶帳號(hào)+圖書編號(hào)+數(shù)量借閱信息=用戶帳號(hào)+圖書編號(hào)+數(shù)量1.2.2 數(shù)據(jù)庫描述使用txt文件形式對(duì)圖書及讀者信息進(jìn)行保存,這樣使得存儲(chǔ)信息的容量比較小,管理和移動(dòng)簡單,不需要專用數(shù)據(jù)庫系統(tǒng)的支持。1.3 功能需求1.3.1 功能劃分簡單圖書管理系統(tǒng)只包含的一些基本的功能,對(duì)圖書管理的大致流程進(jìn)行演示。其功能模塊包括:讀者模塊,工作人員模塊,管理人員模塊等三個(gè)部分。1.3.2 功能描述讀者模塊實(shí)現(xiàn)的功能是圖書的查詢,讀者信息的查詢。工作人員模塊包括圖書的查詢,讀者的查詢,借書,還書等四大功能。管理人員模塊實(shí)現(xiàn)的是圖書的查

3、詢,維護(hù)圖書信息,維護(hù)讀者信息維護(hù)人員信息(包括下級(jí)管理員。整個(gè)系統(tǒng)的流程圖如下:查看讀者信息四、實(shí)現(xiàn)圖書管理系統(tǒng)的流程圖注銷開始輸入選項(xiàng)讀者工作人員管理人員是否成功登陸輸入賬號(hào)密碼輸入賬號(hào)密碼輸入賬號(hào)密碼輸入選項(xiàng)修改讀者信息查詢圖書信息注銷輸入選項(xiàng)查看讀者信息借書還書查詢圖書信息注銷輸入選項(xiàng)維護(hù)圖書信息維護(hù)讀者信息維護(hù)人員信息查詢圖書信息是否成功登陸是否成功登陸.保存并退出輸入選項(xiàng)添加圖書信息編輯圖書信息刪除圖書信息輸入選項(xiàng)維護(hù)圖書信息返回上層添加讀者信息編輯讀者信息刪除讀者信息輸入選項(xiàng)維護(hù)讀者信息返回上層添加讀者信息添加讀者信息添加讀者信息維護(hù)人員信息返回上層2 概要設(shè)計(jì)1) 本系統(tǒng)采用鏈

4、表結(jié)構(gòu)來儲(chǔ)存輸入讀取數(shù)據(jù);2) 通過對(duì)建立一個(gè)數(shù)據(jù)庫(dbfile)類來實(shí)現(xiàn)數(shù)據(jù)的讀取的操作。相關(guān)代碼如下:void dbfile:in_reader() /打開reader.txtifstream fin(reader.txt);if(!fin)cout打開讀者數(shù)據(jù)文件失敗!a;)readerlist.push_back(a);void dbfile:in_book() /打開book.txtifstream fin(book.txt);if(!fin)cout打開圖書數(shù)據(jù)文件失敗!a;)booklist.push_back(a);void dbfile:in_worker() /打開wor

5、ker.txtifstream fin(worker.txt);if(!fin)cout打開工作人員數(shù)據(jù)文件失敗!a;)workerlist.push_back(a);void dbfile:in_manager() /打開manager.txtifstream fin(manager.txt);if(!fin)cout打開管理員數(shù)據(jù)文件失敗!a;)managerlist.push_back(a);void dbfile:out_reader() /保存readerofstream fout(reader.txt);copy(readerlist.begin(), readerlist.end

6、(), ostream_iterator(fout,n);void dbfile:out_book() /保存bookofstream fout(book.txt);copy(booklist.begin(), booklist.end(), ostream_iterator(fout,n);void dbfile:out_worker() /保存workerofstream fout(worker.txt);copy(workerlist.begin(), workerlist.end(), ostream_iterator(fout,n);void dbfile:out_manager()

7、 /保存managerofstream fout(manager.txt);copy(managerlist.begin(), managerlist.end(), ostream_iterator(fout,n);通過創(chuàng)建一個(gè)圖書類(book),來實(shí)現(xiàn)有關(guān)圖書的相關(guān)功能源代碼:private: /類的參數(shù)列表int id;string name;string author;string press;int tag; /借出標(biāo)記1:可借0:不可借int readid; /借閱者idbook:book(int iid, string iname, string iauthor, string i

8、press) /book類的構(gòu)造函數(shù)id = iid;name = iname;author = iauthor;press = ipress;tag = 1;readid = -1;ostream& operator(ostream& out, const book &a) / 對(duì)操作符的重載return outa.id a.author a.press a.tag a.readid(istream& in, book &a) / 對(duì)操作符的重載return a.authora.pressa.taga.readid;3 具體各模塊代碼和功能實(shí)現(xiàn)3.1 讀

9、者模塊功能3.1.1 讀者信息查詢按照提示輸入注冊id、注冊名等內(nèi)容,若填寫信息不正確,則會(huì)提示“密碼錯(cuò)誤!”。如果信息正確,則會(huì)提示“登陸成功!”。 選擇查看個(gè)人信息會(huì)出現(xiàn)讀者個(gè)人信息選擇修改個(gè)人信息可以修改個(gè)人信息選擇查找圖書可以查找圖書讀者類的參數(shù)列表:用戶名id,姓名name,密碼password,借的圖書號(hào)bookid數(shù)組添加讀者功能代碼實(shí)現(xiàn):void dbfile:rmenu() /讀者菜單coutendlstring(18,=)endl;cout請選擇功能:endl;cout1.查看個(gè)人信息endl;cout2.修改個(gè)人信息endl;cout3.查找館藏圖書信息endl;cout

10、4.返回上級(jí)菜單endl;coutstring(18,=)endl;coutchoice) cin.clear( ); cin.ignore( 200,n); coutdisplayreader();break;case 2:ptr_reader-setreader();break;case 3:ptr_reader-displaybook(booklist);break;default:coutchoice) cin.clear( ); cin.ignore( 200,n); cout輸入錯(cuò)誤,請從新輸入:;cin.clear( ); cin.ignore( 200,n);void read

11、er:displayreader() /查看個(gè)人信息coutid name 借書編號(hào):; for(int i=0;i10;i+) if(borbooki!=0) cout borbooki , ; cout endl; void reader:setreader() /修改個(gè)人信息string newname;string newpassword;coutnewname;cin.clear( ); cin.ignore(200,n);name=newname;coutnewpassword;cin.clear( ); cin.ignore(200,n);password=newpassword

12、;cout設(shè)置成功!你的新名字是:name 密碼是:passwordendl;void people:displayallbook(list &blist) /查詢圖書list:iterator iter;cout所有圖書:endl;for(iter = blist.begin(); iter != blist.end(); iter+)coutid name tag)?可借:不可借) author pressendl;3.2 工作人員模塊功能界面如下: 選擇要登錄的身份,輸入id,姓名,密碼 ,正確就會(huì)登陸成功選擇借書功能,再輸入讀者id和書的id就可以借,當(dāng)輸入書的id為-1是結(jié)束借書;如

13、果書已被借走或書id不存在時(shí),書不能被借閱選擇還書功能,輸入書id就會(huì)還書成功選擇查找圖書功能,可以查找圖書選擇返回上級(jí)菜單就會(huì)返回到上級(jí)菜單工作人員類的參數(shù)列表:用戶名id,姓名name,密碼password程序代碼:void dbfile:rmenu() /工作人員菜單coutendlstring(18,=)endl;cout請選擇功能:endl;cout1.查看個(gè)人信息endl;cout2.修改個(gè)人信息endl;cout3.查找館藏圖書信息endl;cout4.返回上級(jí)菜單endl;coutstring(18,=)endl;coutchoice) cin.clear( ); cin.ig

14、nore( 200,n); coutsearchreader(readerlist);break;case 2:ptr_worker-borrowbook(readerlist,booklist);break;case 3:ptr_worker-retbook(booklist,readerlist);break;case 4:ptr_worker-displaybook(booklist);break;default:coutchoice) cin.clear( ); cin.ignore( 200,n); cout輸入錯(cuò)誤,請從新輸入:;cin.clear( ); cin.ignore(

15、200,n);void worker:borrowbook(list &rlist,list &blist) /借書函數(shù)list:iterator riter;list:iterator biter;int rid;int bid;int i=0;coutrid)cin.clear(); cin.ignore(200,n);coutid)coutbid) cin.clear( ); cin.ignore( 200,n); coutid)&(biter-tag)=1)for(i=0;iborbooki)=0)(riter-borbooki)=bid;(biter-tag) = 0;(biter-

16、readid) = (riter-id);cout借書成功!endl;break; if(i=10) cout超過最大借書量!endl;break;if(biter=blist.end()cout該書不可借endl;coutbid) cin.clear( ); cin.ignore( 200,n); cout輸入錯(cuò)誤,請從新輸入:;cin.clear( ); cin.ignore( 200,n);break;if(riter=rlist.end()cout讀者不存在!endl;void worker:retbook(list &blist,list &rlist) /還書函數(shù)list:iter

17、ator riter;list:iterator biter;int bid;coutbid;cin.clear(); cin.ignore(200,n);for(biter=blist.begin();biter!=blist.end();biter+)if(bid=biter-id)&(biter-tag)=0)(biter-tag) = 1;for(riter=rlist.begin();riter!=rlist.end();riter+)if(biter-readid)=(riter-id)for(int i=0;iid)=(riter-borbooki)riter-borbooki=

18、0;(biter-readid) = -1;cout還書成功!endl;return ;if(biter=blist.end()cout還書失敗!endl;void worker:searchreader(std:list &rlist) /查找讀者函數(shù)list:iterator iter;int iid;coutiid;cin.clear(); cin.ignore(200,n);for(iter=rlist.begin();iter!=rlist.end();iter+)if(iid=iter-id)iter-displayreader();break;if(iter=rlist.end(

19、)cout讀者不存在!endl;3.3 管理人員模塊功能登陸界面:輸入用戶名,姓名,密碼,正確就可以登陸成功按返回上級(jí)菜單就會(huì)回到上級(jí)菜單選擇添加圖書功能,輸入圖書信息就可以添加圖書編輯圖書功能選擇刪除圖書功能,輸入圖書號(hào)就可以刪除圖書選擇添加讀者信息功能,輸入讀者信息就能添加讀者選擇編輯讀者信息功能就能修改讀者信息選刪除讀者功能,輸入讀者號(hào)就能刪除該讀者信息選擇添加工作人員功能,輸入讀者信息就可以添加工作人員,如果此工作人員已存在則不能添加選擇編輯工作人員信息就可以修改工作人員信息選擇刪除工作人員信息,輸入要?jiǎng)h除的工作人員好就可以刪除工作人員信息管理人員類的參數(shù)列表:用戶名id,姓名name

20、,密碼password管理人員的源代碼:void manager:mrmenu() /讀者菜單coutendlstring(18,=)endl; cout1.添加讀者信息endl;cout2.編輯讀者信息endl;cout3.刪除讀者信息endl;cout4.返回上級(jí)菜單endl;coutstring(18,=)endl;cout請選擇-4:;void manager:mbmenu() /圖書菜單coutendlstring(18,=)endl; cout1.添加圖書信息endl;cout2.編輯圖書信息endl;cout3.刪除圖書信息endl;cout4.返回上級(jí)菜單endl;coutst

21、ring(18,=)endl;cout請選擇-4:;void manager:mwmenu() /工作人員菜單coutendlstring(18,=)endl; cout1.添加工作人員信息endl;cout2.編輯工作人員信息endl;cout3.刪除工作人員信息endl;cout4.返回上級(jí)菜單endl;coutstring(18,=)endl;cout請選擇-4:;void manager:readermanager(list &rlist) /維護(hù)讀者菜單int choice;mrmenu();while(!(cinchoice)cin.clear( ); cin.ignore( 20

22、0,n); cout輸入錯(cuò)誤,請從新輸入:;cin.clear( );cin.ignore( 200,n);while(choice != 4)switch(choice)case 1:addreader(rlist);break;case 2:setreader(rlist);break;case 3:delt(rlist);break;default:cout輸入錯(cuò)誤!choice)cin.clear( ); cin.ignore( 200,n); cout輸入錯(cuò)誤,請從新輸入:;cin.clear( ); cin.ignore( 200,n);void manager:bookmanag

23、er(list &blist) /維護(hù)圖書菜單int choice;mbmenu();while(!(cinchoice)cin.clear( ); cin.ignore( 200,n); cout輸入錯(cuò)誤,請從新輸入:;cin.clear( );cin.ignore( 200,n);while(choice!=4)switch(choice)case 1:addbook(blist);break;case 2:setbook(blist);break;case 3:delt(blist);break;default:cout輸入錯(cuò)誤!choice)cin.clear( ); cin.igno

24、re( 200,n); cout輸入錯(cuò)誤,請從新輸入:;cin.clear( ); cin.ignore( 200,n);void manager:workermanager(list &wlist) /維護(hù)工作人員菜單int choice;mwmenu();while(!(cinchoice)cin.clear( ); cin.ignore( 200,n); cout輸入錯(cuò)誤,請從新輸入:;cin.clear( );cin.ignore( 200,n);while(choice!=4)switch(choice)case 1:addworker(wlist);break;case 2:set

25、worker(wlist);break;case 3:delt(wlist);break;default:cout輸入錯(cuò)誤!choice)cin.clear( ); cin.ignore( 200,n); cout輸入錯(cuò)誤,請從新輸入:;cin.clear( ); cin.ignore( 200,n);void manager:addbook(list &blist) /添加圖書函數(shù)book a;list:iterator biter;couta.id)|a.id-1)cin.clear(); cin.ignore(200,n);coutid)cout此書已存在!endl;return; co

26、; cin.clear( ); cin.ignore(200,n); couta.author; cin.clear( ); cin.ignore(200,n); couta.press; cin.clear( ); cin.ignore(200,n); blist.push_back(a); cout添加成功!id:a.id 書名: 作者:a.author 出版社:a.pressendl; couta.id)|a.id-1) cin.clear( ); cin.ignore( 200,n); cout輸入錯(cuò)誤,請從新輸入:;cin.clear( ); cin.ig

27、nore( 200,n);void manager:addreader(list &rlist) /添加讀者函數(shù)reader a;list:iterator riter;couta.id)|a.id-1)cin.clear( ); cin.ignore( 200,n);coutid)cout讀者已存在!endl;return; ; cin.clear( ); cin.ignore(200,n); couta.password; cin.clear( ); cin.ignore(200,n); rlist.push_back(a); cout添加讀者成功!id:a.id 名字

28、: 密碼: a.passwordendl; couta.id)|a.id-1) cin.clear( ); cin.ignore( 200,n); cout輸入錯(cuò)誤,請從新輸入:;cin.clear( ); cin.ignore( 200,n);void manager:addworker(list &wlist) /添加工作人員菜單worker a;list:iterator witer;couta.id)|a.id-1)cin.clear( ); cin.ignore( 200,n);coutid)cout此工作人員已存在!endl;return; ; ci

29、n.clear( ); cin.ignore(200,n); couta.password; cin.clear( ); cin.ignore(200,n); wlist.push_back(a); cout添加成功!id:a.id 名字: 密碼: a.passwordendl; couta.id)|a.id-1) cin.clear( ); cin.ignore( 200,n); cout輸入錯(cuò)誤,請從新輸入:;cin.clear( ); cin.ignore( 200,n);templatevoid manager:delt(list &tlist) /做成模板形式的刪除讀者

30、(圖書,工作人員)函數(shù)t a;couta.id)cin.clear( ); cin.ignore( 200,n);cout輸入錯(cuò)誤,請從新輸入:;list:iterator titer;for(titer=tlist.begin();titer!=tlist.end();titer+)if(a.id=titer-id)tlist.erase(titer);cout刪除成功!endl;return ;if(titer=tlist.end()coutid不存在!endl;void manager:setreader(list& rlist) /編輯讀者函數(shù)list:iterator riter;i

31、nt iid;coutiid)cin.clear( ); cin.ignore( 200,n);coutid)cout你選擇的是:displayreader();coutriter-name;cin.clear( ); cin.ignore(200,n); coutriter-password;cout修改完成!endl;break;if(riter=rlist.end()cout該讀者不存在endl;void manager:setbook(list& blist) /編輯圖書函數(shù)list:iterator biter;int iid;coutiid)cin.clear( ); cin.ig

32、nore( 200,n);coutid)coutbiter-name;cin.clear( ); cin.ignore(200,n);coutbiter-author;cin.clear( ); cin.ignore(200,n); coutbiter-press;cin.clear( ); cin.ignore(200,n); cout修改完成!endl;break;if(biter=blist.end()cout該書不存在endl;void manager:setworker(list& wlist) /編輯工作人員函數(shù)list:iterator witer;int iid;coutiid)cin.clear( ); cin.ignore( 200,n);coutid)coutwi

溫馨提示

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

評(píng)論

0/150

提交評(píng)論