![c++圖書(shū)管理系統(tǒng)實(shí)驗(yàn)報(bào)告+源代碼_第1頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2020-10/8/acf8442e-172b-4b64-9015-9783d7eaa95b/acf8442e-172b-4b64-9015-9783d7eaa95b1.gif)
![c++圖書(shū)管理系統(tǒng)實(shí)驗(yàn)報(bào)告+源代碼_第2頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2020-10/8/acf8442e-172b-4b64-9015-9783d7eaa95b/acf8442e-172b-4b64-9015-9783d7eaa95b2.gif)
![c++圖書(shū)管理系統(tǒng)實(shí)驗(yàn)報(bào)告+源代碼_第3頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2020-10/8/acf8442e-172b-4b64-9015-9783d7eaa95b/acf8442e-172b-4b64-9015-9783d7eaa95b3.gif)
![c++圖書(shū)管理系統(tǒng)實(shí)驗(yàn)報(bào)告+源代碼_第4頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2020-10/8/acf8442e-172b-4b64-9015-9783d7eaa95b/acf8442e-172b-4b64-9015-9783d7eaa95b4.gif)
![c++圖書(shū)管理系統(tǒng)實(shí)驗(yàn)報(bào)告+源代碼_第5頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2020-10/8/acf8442e-172b-4b64-9015-9783d7eaa95b/acf8442e-172b-4b64-9015-9783d7eaa95b5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1 設(shè)計(jì)任務(wù)1.1 設(shè)計(jì)目的運(yùn)用所學(xué)知識(shí),完成圖書(shū)館管理系統(tǒng),通過(guò)實(shí)踐加強(qiáng)對(duì)所學(xué)知識(shí)的理解和鞏固1.2設(shè)計(jì)內(nèi)容建立圖書(shū)館管理系統(tǒng),用戶分為圖書(shū)管理人員,讀者。管理人員可以增加刪除查看圖書(shū)、讀者。讀者只能查看自身信息,和借還書(shū)1.3設(shè)計(jì)指標(biāo)或者要求管理人員可以訪問(wèn)任意圖書(shū)和讀者,而讀者只能借還圖書(shū)館存在的圖書(shū)和查看自己的信息。2 設(shè)計(jì)過(guò)程分析:由于管理系統(tǒng)用戶有圖書(shū)管理員和讀者,但兩者的權(quán)限不同,管理員有權(quán)訪問(wèn)所有圖書(shū)信息和管理員信息,而讀者只能訪問(wèn)所有圖書(shū)信息和自身的信息。所以他們的相同點(diǎn):都能訪問(wèn)所有圖書(shū)信息不同點(diǎn):管理員能訪問(wèn)所有讀者信息而管理員只能訪問(wèn)自身信息而不能訪問(wèn)其它讀者信息;故此
2、設(shè)計(jì)了三個(gè)類程序包含三個(gè)類:圖書(shū)類(books),管理員類(manager),讀者類reader,books類為抽象類,manager,和reader類為books類的派生類。為了能讓管理員和讀者訪問(wèn)所有圖書(shū)信息,所有都繼承了books類;而為了分出兩者的權(quán)限的不同,所以把所有讀者的信息做為一個(gè)鏈表作為管理員的一個(gè)私有成員,而讀者卻只能放一個(gè)自身節(jié)點(diǎn)作為讀者的私有成員,然后分別設(shè)計(jì)各個(gè)類的成員函數(shù)。2.1 程序功能Class books /虛基類 protected:books_node *broot;public:books();/構(gòu)造函數(shù)savebooks();/保存修改的內(nèi)容search
3、_book();/查找某一本書(shū)print_books();/輸出所有書(shū)的信息virtual add_book()=0;/對(duì)于讀者是還書(shū),對(duì)于管理員添加書(shū)virtual delet_book()=0;/對(duì)于讀者是借書(shū),對(duì)于管理員是去掉某一本書(shū);Class manager:public books /管理員類 protected:readers_node *rroot;public:manager(readers_node*);savereaders();add_book();/添加圖書(shū)信息delet_book();/刪除圖書(shū)search_reader();/查找讀者信息add_reader();
4、/添加讀者delet_reader();/刪除讀者print_readers();/輸出所有讀者;class reader:public books/讀者類private:readers_node* personnel;/存放讀者自身信息public:reader(readers_node*);add_book();/還書(shū)reader_borrow();delet_book();reader_return();/借書(shū)print_me();/查看自己借書(shū)情況save_readers(readers_node*);2.2程序流程圖開(kāi)始菜單管理員菜單讀者菜單添 刪加 除圖 圖書(shū) 書(shū)添 刪加 除讀 讀
5、者 者借 還 查 查 看 看 所 自 有 身 圖 信書(shū) 書(shū) 書(shū) 息 讀者管理員圖書(shū)維護(hù)讀者維護(hù)后退后退后退后退后退3軟件運(yùn)行或者測(cè)試結(jié)果(1)管理員身份登錄:(2)讀者身份登錄:4 軟件設(shè)計(jì)過(guò)程中遇到的問(wèn)題以及解決辦法由于編寫(xiě)前期做了大量的設(shè)計(jì)工作,在編寫(xiě)過(guò)程中基本沒(méi)有遇到難解決的問(wèn)題提,倒是在設(shè)計(jì)類時(shí)有些茫然,經(jīng)過(guò)反復(fù)斟酌還是做了一些取舍,比如把讀取讀者文件放在了類的外面等。5 總結(jié)通過(guò)本次課程設(shè)計(jì)學(xué)到了很多東西,對(duì)于c+對(duì)象的含義有了進(jìn)一步的認(rèn)識(shí),從而對(duì)類的封裝和設(shè)計(jì)有了一種新的認(rèn)識(shí),不只是停留在表面,為以后的學(xué)習(xí)積累了經(jīng)驗(yàn),設(shè)計(jì)不比編寫(xiě)容易,類設(shè)計(jì)好是整個(gè)程序?qū)懞玫那疤?,只有一個(gè)好的規(guī)劃
6、才能寫(xiě)出好的程序。不過(guò)也通過(guò)本次發(fā)現(xiàn)了自己的不足之處??偸牵罕敬握n程設(shè)計(jì)受益匪淺,動(dòng)手能力大大增強(qiáng);附錄(程序源代碼)#include#include#include#include#include#include#define max 3 typedef struct Bookschar book_name15;int total_num;int borrow_num;char book_num15;Books *next;books_node;typedef struct Readerschar reader_name15;char reader_no15;int reader_borro
7、w_num;struct Reader_borrow_bookschar borrow_books_name15;char borrow_books_no15;reader_borrow_bookmax;Readers *next;readers_node;class books protected:books_node *broot;public:books();savebooks();search_book();print_books();virtual add_book()=0;virtual delet_book()=0;class manager:public books prote
8、cted:readers_node *rroot;public:manager(readers_node*);savereaders();add_book();delet_book();search_reader();add_reader();delet_reader();print_readers();class reader:public booksprivate:readers_node* personnel;public:reader(readers_node*);add_book();reader_borrow();delet_book();reader_return();print
9、_me();save_readers(readers_node*);books:books()books_node *r;broot=new books_node;r=new books_node;r-next=NULL;broot=r;ifstream inFile;inFile.open(c:books.dat,ios:binary);if(inFile.is_open()=-1)coutcont open books.datnext=r-next;r-next=node;inFile.close();if(i2)cout暫時(shí)沒(méi)有圖書(shū)數(shù)據(jù)next;ofstream outFile;outF
10、ile.open(c:books.dat,ios:binary);while(L)outFile.write(char*)L,sizeof(books_node);L=L-next;outFile.close();books:search_book()char searchedbook15;coutsearchedbook;books_node *r;r=new books_node;r=broot-next;while(r)if(strcmp(searchedbook,r-book_name)=0)cout書(shū)名:book_name 書(shū)的總量:total_num 借出:borrow_num 書(shū)
11、的編號(hào):book_numnext;if(r=NULL)cout對(duì)不起,沒(méi)有此書(shū)next;while(r)cout書(shū)名: book_name 書(shū)的總量:total_num 借出:borrow_num 書(shū)的編號(hào):book_numnext;delete r;manager:add_book()books_node *L;L=new books_node;L=broot;while(1)books_node *r;r=new books_node;r-next=NULL;coutr-book_name;coutr-book_num;r-borrow_num=0;coutr-total_num;r-ne
12、xt=L-next;L-next=r;coutsign;if(sign=n|sign=N)break;broot=L;savebooks();manager:delet_book()char deleted15;coutdeleted; books_node *node,*L;node=new books_node;L=new books_node;node=broot;while(node-next)if(strcmp(deleted,node-next-book_name)=0)break;node=node-next;if(node-next=NULL) coutsorry!There
13、is no the book!next-borrow_num=0)node-next=node-next-next;savebooks();elsecout對(duì)不起,暫時(shí)不能刪除,因?yàn)檫€有沒(méi)有歸還的書(shū)next;ofstream outFile;outFile.open(c:Readers.dat,ios:binary);while(L)outFile.write(char*)L,sizeof(readers_node);L=L-next;outFile.close();manager:add_reader()readers_node *L;L=new readers_node;L=rroot;i
14、nt sign=0;while(1)readers_node *r;r=new readers_node;r-next=NULL;coutr-reader_name;coutr-reader_no;r-reader_borrow_num=0;r-next=L-next;L-next=r;coutsign;if(sign=n|sign=N)break;rroot=L;savereaders();manager:delet_reader()char deleted15;coutdeleted; readers_node *node,*L;node=new readers_node;L=new re
15、aders_node;node=rroot;while(node-next)if(strcmp(deleted,node-next-reader_name)=0)break;node=node-next;if(node-next=NULL) coutsorry!There is no the reader!next=node-next-next;savereaders();manager:search_reader() readers_node *r;r=new readers_node;r=rroot-next;char reader15;coutreader;while(r)if(strc
16、mp(reader,r-reader_name)=0)cout姓名:reader_name 編號(hào):reader_no 借書(shū)總數(shù):reader_borrow_numendl;for(int i=0;ireader_borrow_num;i+)cout書(shū)名:reader_borrow_booki.borrow_books_name 書(shū)的編號(hào):reader_borrow_booki.borrow_books_no;break;else r=r-next;if(!r)cout沒(méi)有此人next;while(printL)cout姓名 編號(hào) 借書(shū)總數(shù)endl;coutreader_name reader_
17、no reader_borrow_numendl;for(int i=0;ireader_borrow_num;i+)cout書(shū)名:reader_borrow_booki.borrow_books_name 書(shū)的編號(hào):reader_borrow_booki.borrow_books_no;printL=printL-next; delete printL;reader:reader(readers_node*node)(personnel)=new readers_node;personnel=node;reader:add_book()books_node*node;node=new boo
18、ks_node;node=broot-next;char returned15;coutreturned; for(int i=0;ireader_borrow_num;i+)if(strcmp(returned,personnel-reader_borrow_booki.borrow_books_name)=0)break;if(i=personnel-reader_borrow_num+1)printf(不好意思,你沒(méi)有此書(shū));system(pause); elsewhile(node)if(strcmp(node-book_name,returned)=0)break;else node
19、=node-next;if(node)personnel-reader_borrow_num-;node-borrow_num-;savebooks();else cout對(duì)不起,沒(méi)有你要還的書(shū)或者所還書(shū)被刪除reader_borrow_numnext;char borrowed15;coutborrowed;while(node)if(strcmp(node-book_name,borrowed)=0)break;else node=node-next;if(node&(node-total_num-node-borrow_num)0)strcpy(personnel-reader_borr
20、ow_bookpersonnel-reader_borrow_num.borrow_books_name,node-book_name);strcpy(personnel-reader_borrow_bookpersonnel-reader_borrow_num+.borrow_books_no,node-book_num);node-borrow_num+;savebooks();else cout對(duì)不起,沒(méi)有你要借的書(shū)或者所要借的書(shū)已經(jīng)借完!endl;else cout對(duì)不起,你借書(shū)的數(shù)量已經(jīng)超過(guò)最大借數(shù)量endl;reader:print_me() cout姓名reader_name 編
21、號(hào):reader_no 借書(shū)總數(shù):reader_borrow_numendl;for(int i=0;ireader_borrow_num;i+)printf(書(shū)名:%s,書(shū)的編號(hào):%s,personnel-reader_borrow_booki.borrow_books_name,personnel-reader_borrow_booki.borrow_books_no);void Pause()getch();fflush(stdin);reader:reader_borrow()delet_book();reader:reader_return()add_book();reader:sa
22、ve_readers(readers_node *L)readers_node *root;root=new readers_node;root=L-next;ofstream outFile;outFile.open(c:Readers.dat,ios:binary);while(root)outFile.write(char*)root,sizeof(readers_node);root=root-next;outFile.close();readers_node* read_readers()readers_node *r;r=new readers_node;r-next=NULL;i
23、nt flag=0;ifstream inFile;inFile.open(c:Readers.dat,ios:binary);if(inFile.is_open()=-1) coutcont open readers.datnext=r-next;r-next=node;inFile.close();if(flag2)cout暫無(wú)讀者 endl; return r;elsereturn r;password()system(cls);char a=,b10,c;int n=0,k;cerrnnnnttt請(qǐng)輸入密碼,你將擁有3次機(jī)會(huì):n;while(1)n+;k=0;cerrttt輸入密碼:;
24、while(1)c=getch();if(c=13)break;bk=c;k+;cerr*;bk=0;cout2)printf(你已經(jīng)超過(guò)輸入次數(shù),系統(tǒng)將退出n);getch();if(strcmp(a,b)=0)break;else cout密碼錯(cuò)誤,請(qǐng)重新輸入n;cerrn;void manager_menu_1(manager M)int N;while(1)coutn; cout 圖書(shū)管圖書(shū)管理系統(tǒng) n; cout 菜單 n; coutn; cout增加圖書(shū) n; cout .刪除圖書(shū) n;cout .查找圖書(shū) n;cout .輸出所有 n; cout 退出請(qǐng)按0 n;coutn; c
25、outN;switch (N)case 1: M.add_book();getch();break;case 2: M.delet_book();getch();break;case 3: M.search_book();getch();break;case 4: M.print_books();getch();break;case 0: return;system(cls);void manager_menu_2(manager M)int N;while(1)coutn; cout 圖書(shū)管圖書(shū)管理系統(tǒng) n; cout 菜單 n; coutn; cout增加讀者 n; cout 刪除讀者 n
26、;cout查找讀者 n;cout輸出所有 n; cout 退出請(qǐng)按0 n;coutn; coutN;switch (N)case 1: M.add_reader();getch();break;case 2: M.delet_reader();getch();break;case 3: M.search_reader();getch();break;case 4: M.print_readers();getch();break;case 0: return;system(cls);void manager_menu(readers_node*L)system(cls);password();m
27、anager Manager(L);int N;while(1)coutn; cout 圖書(shū)管圖書(shū)管理系統(tǒng) n; cout 菜單 n; coutn; cout圖書(shū)維護(hù) n; cout讀者維護(hù) n; cout退出請(qǐng)按0 n;coutn; coutN;switch (N)case 1: system(cls); manager_menu_1(Manager);break;case 2: system(cls); manager_menu_2(Manager);break;case 0: return;system(cls);reader_menu(readers_node*L)char name15;coutname;readers_node* node;node=new readers_node;node=L-next;while(node)if(strcmp(name,node-reade
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度工業(yè)房產(chǎn)資產(chǎn)評(píng)估與交易服務(wù)合同
- 二零二五年度人工智能領(lǐng)域股權(quán)交易及回購(gòu)合同
- 現(xiàn)代機(jī)械設(shè)計(jì)中的自動(dòng)化與智能化控制技術(shù)
- 2025美容師正式聘用合同模板下載
- 二零二五年度水田承包與農(nóng)業(yè)保險(xiǎn)合作協(xié)議
- 2025年度智能推土機(jī)租賃合同規(guī)范文本
- 大學(xué)生實(shí)習(xí)轉(zhuǎn)正申請(qǐng)書(shū)
- 2025年度人工智能教育培訓(xùn)項(xiàng)目入股協(xié)議
- 住房貸款申請(qǐng)書(shū)范文
- 低保邊緣戶申請(qǐng)書(shū)
- 220t鍋爐課程設(shè)計(jì) 李學(xué)玉
- 露天礦采坑邊坡穩(wěn)定性評(píng)價(jià)報(bào)告
- 全英文劇本 《劇院魅影》
- 北京城的中軸線PPT通用課件
- 液壓與氣壓傳動(dòng)實(shí)驗(yàn)指導(dǎo)書(shū)DOC
- 黑布林繪本 Dad-for-Sale 出售爸爸課件
- 第2.4節(jié)色度信號(hào)與色同步信號(hào)
- 山東省成人教育畢業(yè)生登記表
- 月度及年度績(jī)效考核管理辦法
- 畢業(yè)設(shè)計(jì)鋼筋彎曲機(jī)的結(jié)構(gòu)設(shè)計(jì)
- 超全六年級(jí)陰影部分的面積(詳細(xì)答案)
評(píng)論
0/150
提交評(píng)論