版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1 設計任務1.1 設計目的運用所學知識,完成圖書館管理系統(tǒng),通過實踐加強對所學知識的理解和鞏固1.2設計內容建立圖書館管理系統(tǒng),用戶分為圖書管理人員,讀者。管理人員可以增加刪除查看圖書、讀者。讀者只能查看自身信息,和借還書1.3設計指標或者要求管理人員可以訪問任意圖書和讀者,而讀者只能借還圖書館存在的圖書和查看自己的信息。2 設計過程分析:由于管理系統(tǒng)用戶有圖書管理員和讀者,但兩者的權限不同,管理員有權訪問所有圖書信息和管理員信息,而讀者只能訪問所有圖書信息和自身的信息。所以他們的相同點:都能訪問所有圖書信息不同點:管理員能訪問所有讀者信息而管理員只能訪問自身信息而不能訪問其它讀者信息;故此
2、設計了三個類程序包含三個類:圖書類(books),管理員類(manager),讀者類reader,books類為抽象類,manager,和reader類為books類的派生類。為了能讓管理員和讀者訪問所有圖書信息,所有都繼承了books類;而為了分出兩者的權限的不同,所以把所有讀者的信息做為一個鏈表作為管理員的一個私有成員,而讀者卻只能放一個自身節(jié)點作為讀者的私有成員,然后分別設計各個類的成員函數(shù)。2.1 程序功能Class books /虛基類 protected:books_node *broot;public:books();/構造函數(shù)savebooks();/保存修改的內容search
3、_book();/查找某一本書print_books();/輸出所有書的信息virtual add_book()=0;/對于讀者是還書,對于管理員添加書virtual delet_book()=0;/對于讀者是借書,對于管理員是去掉某一本書;Class manager:public books /管理員類 protected:readers_node *rroot;public:manager(readers_node*);savereaders();add_book();/添加圖書信息delet_book();/刪除圖書search_reader();/查找讀者信息add_reader();
4、/添加讀者delet_reader();/刪除讀者print_readers();/輸出所有讀者;class reader:public books/讀者類private:readers_node* personnel;/存放讀者自身信息public:reader(readers_node*);add_book();/還書reader_borrow();delet_book();reader_return();/借書print_me();/查看自己借書情況save_readers(readers_node*);2.2程序流程圖開始菜單管理員菜單讀者菜單添 刪加 除圖 圖書 書添 刪加 除讀 讀
5、者 者借 還 查 查 看 看 所 自 有 身 圖 信書 書 書 息 讀者管理員圖書維護讀者維護后退后退后退后退后退3軟件運行或者測試結果(1)管理員身份登錄:(2)讀者身份登錄:4 軟件設計過程中遇到的問題以及解決辦法由于編寫前期做了大量的設計工作,在編寫過程中基本沒有遇到難解決的問題提,倒是在設計類時有些茫然,經(jīng)過反復斟酌還是做了一些取舍,比如把讀取讀者文件放在了類的外面等。5 總結通過本次課程設計學到了很多東西,對于c+對象的含義有了進一步的認識,從而對類的封裝和設計有了一種新的認識,不只是停留在表面,為以后的學習積累了經(jīng)驗,設計不比編寫容易,類設計好是整個程序寫好的前提,只有一個好的規(guī)劃
6、才能寫出好的程序。不過也通過本次發(fā)現(xiàn)了自己的不足之處??偸牵罕敬握n程設計受益匪淺,動手能力大大增強;附錄(程序源代碼)#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ù)據(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書名:book_name 書的總量:total_num 借出:borrow_num 書
11、的編號:book_numnext;if(r=NULL)cout對不起,沒有此書next;while(r)cout書名: book_name 書的總量:total_num 借出:borrow_num 書的編號: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對不起,暫時不能刪除,因為還有沒有歸還的書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 編號:reader_no 借書總數(shù):reader_borrow_numendl;for(int i=0;ireader_borrow_num;i+)cout書名:reader_borrow_booki.borrow_books_name 書的編號:reader_borrow_booki.borrow_books_no;break;else r=r-next;if(!r)cout沒有此人next;while(printL)cout姓名 編號 借書總數(shù)endl;coutreader_name reader_
17、no reader_borrow_numendl;for(int i=0;ireader_borrow_num;i+)cout書名:reader_borrow_booki.borrow_books_name 書的編號: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(不好意思,你沒有此書);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對不起,沒有你要還的書或者所還書被刪除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對不起,沒有你要借的書或者所要借的書已經(jīng)借完!endl;else cout對不起,你借書的數(shù)量已經(jīng)超過最大借數(shù)量endl;reader:print_me() cout姓名reader_name 編
21、號:reader_no 借書總數(shù):reader_borrow_numendl;for(int i=0;ireader_borrow_num;i+)printf(書名:%s,書的編號:%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暫無讀者 endl; return r;elsereturn r;password()system(cls);char a=,b10,c;int n=0,k;cerrnnnnttt請輸入密碼,你將擁有3次機會: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)超過輸入次數(shù),系統(tǒng)將退出n);getch();if(strcmp(a,b)=0)break;else cout密碼錯誤,請重新輸入n;cerrn;void manager_menu_1(manager M)int N;while(1)coutn; cout 圖書管圖書管理系統(tǒng) n; cout 菜單 n; coutn; cout增加圖書 n; cout .刪除圖書 n;cout .查找圖書 n;cout .輸出所有 n; cout 退出請按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 圖書管圖書管理系統(tǒng) n; cout 菜單 n; coutn; cout增加讀者 n; cout 刪除讀者 n
26、;cout查找讀者 n;cout輸出所有 n; cout 退出請按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 圖書管圖書管理系統(tǒng) n; cout 菜單 n; coutn; cout圖書維護 n; cout讀者維護 n; cout退出請按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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度新型能源汽車短期借用協(xié)議書4篇
- 2025年度文化產(chǎn)業(yè)發(fā)展基金投資合作合同4篇
- 2025年度智能家居櫥柜定制工程協(xié)議書4篇
- 2025年度新能源車輛租賃代理合同模板3篇
- 2024版離婚協(xié)議年范本
- 2025年單梁橋式起重機項目可行性研究報告-20250102-152444
- 2025年中鹽青海昆侖堿業(yè)有限公司招聘筆試參考題庫含答案解析
- 2025年四川壯禾人力資源有限公司招聘筆試參考題庫含答案解析
- 2025年中國郵政證券有限責任公司招聘筆試參考題庫含答案解析
- 2025年江蘇弘景建設規(guī)劃有限公司招聘筆試參考題庫含答案解析
- 漆畫漆藝 第三章
- CB/T 615-1995船底吸入格柵
- 光伏逆變器一課件
- 貨物供應、運輸、包裝說明方案
- (完整版)英語高頻詞匯800詞
- 《基礎馬來語》課程標準(高職)
- IEC61850研討交流之四-服務影射
- 《兒科學》新生兒窒息課件
- 材料力學壓桿穩(wěn)定
- 人教版小升初英語知識點匯總
- 靜態(tài)爆破專項施工方案
評論
0/150
提交評論