版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
/課程名稱:程序設(shè)計綜合實訓(xùn)設(shè)計題目:圖書管理系統(tǒng)姓名:學(xué)號:專業(yè)班級:指導(dǎo)老師:完成日期:1設(shè)計任務(wù)1.1設(shè)計目的運(yùn)用所學(xué)知識.完成圖書館管理系統(tǒng).通過實踐加強(qiáng)對所學(xué)知識的理解和鞏固1.2設(shè)計內(nèi)容建立圖書館管理系統(tǒng).用戶分為圖書管理人員.讀者。管理人員可以增加刪除查看圖書、讀者。讀者只能查看自身信息.和借還書1.3設(shè)計指標(biāo)或者要求管理人員可以訪問任意圖書和讀者.而讀者只能借還圖書館存在的圖書和查看自己的信息。2設(shè)計過程分析:由于管理系統(tǒng)用戶有圖書管理員和讀者.但兩者的權(quán)限不同.管理員有權(quán)訪問所有圖書信息和管理員信息.而讀者只能訪問所有圖書信息和自身的信息。所以他們的相同點(diǎn):都能訪問所有圖書信息不同點(diǎn):管理員能訪問所有讀者信息而管理員只能訪問自身信息而不能訪問其它讀者信息;故此設(shè)計了三個類程序包含三個類:圖書類〔books.管理員類〔manager.讀者類reader.books類為抽象類.manager.和reader類為books類的派生類。為了能讓管理員和讀者訪問所有圖書信息.所有都繼承了books類;而為了分出兩者的權(quán)限的不同.所以把所有讀者的信息做為一個鏈表作為管理員的一個私有成員.而讀者卻只能放一個自身節(jié)點(diǎn)作為讀者的私有成員.然后分別設(shè)計各個類的成員函數(shù)。2.1程序功能Classbooks///虛基類{protected: books_node*broot;public: books<>;//構(gòu)造函數(shù) savebooks<>;//保存修改的內(nèi)容 search_book<>;//查找某一本書 print_books<>;//輸出所有書的信息 virtualadd_book<>=0;//對于讀者是還書.對于管理員添加書 virtualdelet_book<>=0;//對于讀者是借書.對于管理員是去掉某一本書};Classmanager:publicbooks//管理員類{protected: readers_node*rroot;public: manager<readers_node*>; savereaders<>; add_book<>;//添加圖書信息 delet_book<>;//刪除圖書 search_reader<>;//查找讀者信息 add_reader<>;//添加讀者 delet_reader<>;//刪除讀者 print_readers<>;//輸出所有讀者};classreader:publicbooks{//讀者類private:readers_node*personnel;//存放讀者自身信息public: reader<readers_node*>; add_book<>;//還書 reader_borrow<>; delet_book<>; reader_return<>;//借書 print_me<>;//查看自己借書情況 save_readers<readers_node*>;};2.2程序流程圖開始菜單開始菜單管理員菜單讀者菜單添刪加除圖圖書書添刪加除讀讀者者借還查查看看所自有身圖信書書書息讀者管理員圖書維護(hù)讀者維護(hù)后退后退后退后退后退3軟件運(yùn)行或者測試結(jié)果〔1管理員身份登錄:〔2讀者身份登錄:4軟件設(shè)計過程中遇到的問題以及解決辦法由于編寫前期做了大量的設(shè)計工作.在編寫過程中基本沒有遇到難解決的問題提.倒是在設(shè)計類時有些茫然.經(jīng)過反復(fù)斟酌還是做了一些取舍.比如把讀取讀者文件放在了類的外面等。。5總結(jié)通過本次課程設(shè)計學(xué)到了很多東西.對于c++對象的含義有了進(jìn)一步的認(rèn)識.從而對類的封裝和設(shè)計有了一種新的認(rèn)識.不只是停留在表面.為以后的學(xué)習(xí)積累了經(jīng)驗.設(shè)計不比編寫容易.類設(shè)計好是整個程序?qū)懞玫那疤?只有一個好的規(guī)劃才能寫出好的程序。不過也通過本次發(fā)現(xiàn)了自己的不足之處。總是:本次課程設(shè)計受益匪淺.動手能力大大增強(qiáng);附錄〔程序源代碼#include<iostream.h>#include<fstream.h>#include<string.h>#include<stdio.h>#include<conio.h>#definemax3typedefstructBooks{ charbook_name[15]; inttotal_num; intborrow_num; charbook_num[15]; Books*next;}books_node;typedefstructReaders{ charreader_name[15]; charreader_no[15]; intreader_borrow_num; structReader_borrow_books{ charborrow_books_name[15]; charborrow_books_no[15]; }reader_borrow_book[max]; Readers*next;}readers_node;classbooks{protected: books_node*broot;public: books<>; savebooks<>; search_book<>; print_books<>; virtualadd_book<>=0; virtualdelet_book<>=0;};classmanager:publicbooks{protected: readers_node*rroot;public: manager<readers_node*>; savereaders<>; add_book<>; delet_book<>; search_reader<>;add_reader<>; delet_reader<>; print_readers<>;};classreader:publicbooks{private:readers_node*personnel;public: reader<readers_node*>; add_book<>; reader_borrow<>; delet_book<>; reader_return<>; print_me<>; save_readers<readers_node*>;};books::books<>{ books_node*r; broot=newbooks_node; r=newbooks_node; r->next=NULL; broot=r; ifstreaminFile; inFile.open<"c:\\books.dat",ios::binary>; if<inFile.is_open<>==-1>cout<<"con'topenbooks.dat"<<endl; else { inti=0; while<1> { i++; books_node*node; node=newbooks_node; inFile.read<<char*>node,sizeof<books_node>>; if<inFile.eof<>>break; node->next=r->next; r->next=node; } inFile.close<>; if<i<2>cout<<"暫時沒有圖書數(shù)據(jù)"<<endl; }}books::savebooks<>{ books_node*L; L=newbooks_node; L=broot->next; ofstreamoutFile; outFile.open<"c:\\books.dat",ios::binary>; while<L> { outFile.write<<char*>L,sizeof<books_node>>; L=L->next; } outFile.close<>; }books::search_book<>{ charsearchedbook[15]; cout<<"輸入要查找的書的名子:"; cin>>searchedbook; books_node*r; r=newbooks_node; r=broot->next; while<r> { if<<strcmp<searchedbook,r->book_name>>==0> { cout<<"書名:"<<r->book_name<<"書的總量:"<<r->total_num<<"借出:"<<r->borrow_num<<"書的編號:"<<r->book_num<<endl;break; } r=r->next; } if<r==NULL>cout<<"對不起.沒有此書"<<endl; }books::print_books<>{ books_node*r;r=newbooks_node; r=broot->next; while<r> { cout<<"書名:"<<r->book_name<<"書的總量:"<<r->total_num<<"借出:"<<r->borrow_num<<"書的編號:"<<r->book_num<<endl; r=r->next; } deleter;}manager::add_book<>{ books_node*L; L=newbooks_node; L=broot; while<1> { books_node*r; r=newbooks_node; r->next=NULL; cout<<"輸入書名:"; cin>>r->book_name; cout<<"輸入書的編號:"; cin>>r->book_num; r->borrow_num=0; cout<<"輸入總數(shù):"; cin>>r->total_num; r->next=L->next; L->next=r; cout<<"addmore?<n終止,其它鍵繼續(xù)>"; charsign; cin>>sign; if<sign=='n'||sign=='N'> break; } broot=L; savebooks<>; }manager::delet_book<>{ chardeleted[15]; cout<<"輸入要刪除的圖書名字:"; cin>>deleted;books_node*node,*L; node=newbooks_node; L=newbooks_node; node=broot; while<node->next> { if<<strcmp<deleted,node->next->book_name>>==0>break; node=node->next; } if<node->next==NULL> { cout<<"sorry!Thereisnothebook!"<<endl; } else { if<node->next->borrow_num==0> { node->next=node->next->next; savebooks<> } else cout<<"對不起.暫時不能刪除.因為還有沒有歸還的書"<<endl; }}manager::manager<readers_node*node>{ rroot=newreaders_node; rroot=node;}manager::savereaders<>{ readers_node*L; L=newreaders_node; L=rroot->next; ofstreamoutFile; 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=newreaders_node; L=rroot; intsign=0; while<1> { readers_node*r; r=newreaders_node; r->next=NULL; cout<<"輸入姓名:"; cin>>r->reader_name; cout<<"輸入讀者的編號:"; cin>>r->reader_no; r->reader_borrow_num=0; r->next=L->next; L->next=r; cout<<"addmore?<n終止,其它鍵繼續(xù)>"; charsign; cin>>sign; if<sign=='n'||sign=='N'> break; } root=L; savereaders<>; }manager::delet_reader<>{ chardeleted[15]; cout<<"輸入要刪除讀者的名字:"; cin>>deleted;readers_nodenode,*L; node=newreaders_node; L=newreaders_node; node=rroot; while<node->next> { if<<strcmp<deleted,node->next->reader_name>>==0>break; node=node->next; } if<node->next==NULL> { cout<<"sorry!Thereisnothereader!"<<endl; } else { node->next=node->next->next; savereaders<>; } }manager::search_reader<>{readers_node*r; r=newreaders_node; r=rroot->next;charreader[15]; cout<<"輸入要查找讀者的姓名:"; cin>>reader; while<r> { if<<strcmp<reader,r->reader_name>>=0> { cout<<"姓名:"<<r->reader_name<<"編號:"<<r->reader_no<<"借書總數(shù):"<<r->reader_borrow_num<<endl; for<inti=0;i<r->reader_borrow_num;i++> { cout<<"書名:"<<r->reader_borrow_book[i].borrow_books_name<<""<<"書的編號:"<<r->reader_borrow_book[i].borrow_books_no; } break; } elser=r->next; } if<!r>cout<<"沒有此人"<<endl;}manager::print_readers<>{ readers_nodeprintL; printL=newreaders_node; printL=rroot->next; while<printL> { cout<<"姓名編號借書總數(shù)"<<endl; cout<<printL->reader_name<<""<<printL->reader_no<<""<<printL->reader_borrow_num<<endl; for<inti=0;i<printL->reader_borrow_num;i++> { cout<<"書名:"<<printL->reader_borrow_book[i].borrow_books_name<<""<<"書的編號:"<<printL->reader_borrow_book[i].borrow_books_no; } printL=printL->next; }deleteprintL;}reader::reader<readers_node*node>{ <personnel>==newreaders_node; personnel=node;}reader::add_book<>{ books_node*node; node=newbooks_node; node=broot->next; charreturned[15]; cout<<"輸入要還書的名子:"; cin>>returned;for<inti=0;i=personnel->reader_borrow_num;i++> { if<<strcmp<returned,personnel->reader_borrow_book[i].borrow_books_name>>==0>break; } if<i==personnel->reader_borrow_num+1> { printf<"不好意思.你沒有此書">;system<"pause">; }else{ while<node> { if<<strcmp<node->book_name,returned>==0>>break; elsenode=node->next; } if<node> { personnel->reader_borrow_num--; node->borrow_num--; savebooks<>; } elsecout<<"對不起.沒有你要還的書或者所還書被刪除"<<endl; }}reader::delet_book<>{ if<personnel->readerborrow_num<max> { books_node*node; node=newbooks_node; node=broot->next; charborrowed[15]; cout<<"輸入要借書的名子:"; cin>>borrowed; while<node> { if<<strcmp<node->book_name,borrowed>==0>>break; elsenode=node->next; } if<node&&<node->total_num-node->borrow_num>>0> { strcpy<personnel->reader_borrow_book[personnel->reader_borrow_num].borrow_books_name,node->book_name>; strcpy<personel->reader_borrow_book[personnel->reader_borrw_num++].borrow_books_no,node->book_num>; node->borrow_num++; savebooks<>; } elsecout<<"對不起.沒有你要借的書或者所要借的書已經(jīng)借完!"<<endl; } elsecout<<"對不起.你借書的數(shù)量已經(jīng)超過最大借數(shù)量"<<endl;}reader::print_me<>{ cout<<"姓名"<<personnel->reader_name<<"編號:"<<personnel->reader_no<<"借書總數(shù):"<<personnel->reader_borrow_num<<endl; for<inti=0;i<personnel->reader_borrow_num;i++> { printf<"書名:%s,書的編號:%s",personnel->reader_borrow_book[i].borrow_books_name,personnel->reader_borrow_book[i].borrow_books_no> }}voidPause<>{ getch<>; fflush<stdin>;}reader::reader_borrow<>{ delet_book<>;}reader::reader_return<>{ add_book<>;}reader::save_readers<readers_node*L>{ readers_node*root; root=newreaders_node; root=L->next; ofstreamoutFile; outFile.open<"c:\\Readers.dat",ios::binary>; while<root> { outFile.write<<char>root,sizeof<readers_node>>; root=root->next; } outFle.close<>;}readers_node*read_readers<>{ readers_node*r; r=newreaders_node; r->next=NULL; intflag=0; ifstreaminFile; inFile.open<"c:\\Readers.dat",ios::binary>; if<inFile.is_open<>==-1> { cout<<"con'topenreaders.dat"<<endl;returnr; } else { while<1> { flag++; readers_node*node; node=newreaders_node; inFile.read<<char*>node,sizeof<readers_node>>; if<inFile.eof<>>break; node->next=r->next; r->next=node; } inFile.close<>; if<flag<2> { cout<<"暫無讀者"<<endl;returnr; } else returnr; } }password<>{ system<"cls">; chara[]="111111",b[10],c;intn=0,k; cerr<<"\n\n\n\n\t\t\t請輸入密碼.你將擁有3次機(jī)會:\n"; while<1> { n++; k=0; cout<<"\t\t\t輸入密碼:"; while<1> { c=getch<>; if<c==13>break; b[k]=c;k++; cerr<<"*"; } b[k]='\0'; cout<<"\n"; if<n>2> { printf<"你已經(jīng)超過輸入次數(shù).系統(tǒng)將退出\n">; getch<>; } if<strcmp<a,b>==0>break; elsecout<<"密碼錯誤.請重新輸入\n"; cerr<<"\n"; }}voidmanager_menu_1<managerM>{ intN; while<1> { cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"; cout<<"┃圖書管圖書管理系統(tǒng)┃\n"; cout<<"┃菜單┃\n"; cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n"; cout<<"┃①增加圖書┃\n"; cout<<"┃②.刪除圖書┃\n"; cout<<"┃③.查找圖書┃\n"; cout<<"┃④.輸出所有┃\n"; cout<<"┃退出請按0┃\n"; cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"; cout<<"請輸入您的選擇<0--4>:<>\b\b"; cin>>N; switch<N> { case1:M.add_book<>;getch<>;break; case2: M.delet_book<>;getch<>;break; case3:M.search_book<>;getch<>;break; case4:M.print_books<>;getch<>;break; case0:return; } system<"cls">; } }voidmanager_menu_2<managerM>{ intN; while<1> { cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"; cout<<"┃圖書管圖書管理系統(tǒng)┃\n"; cout<<"┃菜單┃\n"; cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n"; cout<<"┃①增加讀者┃\n"; cout<<"┃②刪除讀者┃\n"; cout<<"┃③查找讀者┃\n"; cout<<"┃④輸出所有┃\n"; cout<<"┃退出請按0┃\n"; cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"; cout<<"請輸入您的選擇<0--4>:<>\b\b"; cin>>N; switch<N> { case1:M.add_reader<>;getch<>;break; case2: M.delet_reader<>;getch<>;break; case3:M.search_reader<>;getch<>;break; case4:M.print_readers<>;getch<>;break; case0:return; } system<"cls">; } }voidmanager_menu<readers_node*L>{ system<"cls">; password<>; managermanager<L>; intN;while<1> { cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"; cout<<"┃圖書管圖書管理系統(tǒng)┃\n"; cout<<"┃菜單┃\n"; cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n"; cout<<"┃①圖書維護(hù)┃\n"; cout<<"┃②讀者維護(hù)┃\n"; cout<<"┃退出請按0┃\n"; cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"; cout<<"請輸入您的選擇<0--2>:<>\b\b"; cin>>N; switch<N> { case1:system<"cls">;manager_menu_1<Manager>; break; case2: system<"cls">;manager_menu_2<Manager>;break; case0:return; } system<"cls">; } }reader_menu<readers_node*L>{ charname[15]; cout<<"輸入用戶名:"; cin>>name; readers_node*node; node=newreaders_node; node=L->next; while<node> { if<<strcmp<nome,node->reader_name>>==0> break; else node=node->next; } if<node> { readerReader<node>; intN; while<1> { cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"; cout<<"┃圖書管圖書管理系統(tǒng)┃\n"; cout<<"┃菜單┃\n"; cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n"; cout<<"┃①借書┃\n"; cout<<"┃②還書┃\n"; cout<<"┃③查找書┃\n"; cout<<"┃④.輸出所有
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版牧業(yè)養(yǎng)殖技術(shù)引進(jìn)與推廣合同3篇
- 二零二五年鋼結(jié)構(gòu)工程居間驗收服務(wù)合同3篇
- 2025年校園熱泵熱水設(shè)備供應(yīng)合同樣本2篇
- 2025版學(xué)校圖書采購與配送服務(wù)承包合同3篇
- 2025版宣傳片制作與宣傳合同3篇
- 2025版塔吊租賃、安裝與安全維護(hù)服務(wù)合同3篇
- 全新二零二五年度廣告制作與發(fā)布合同6篇
- 家用紡織品智能溫控技術(shù)考核試卷
- 個人職業(yè)規(guī)劃社群考核試卷
- 2025版學(xué)校校園安全防范系統(tǒng)建設(shè)承包合同3篇
- 2024年山東省泰安市高考物理一模試卷(含詳細(xì)答案解析)
- 腫瘤患者管理
- 2025春夏運(yùn)動戶外行業(yè)趨勢白皮書
- 《法制宣傳之盜竊罪》課件
- 通信工程單位勞動合同
- 2024年醫(yī)療器械經(jīng)營質(zhì)量管理規(guī)范培訓(xùn)課件
- 2024年計算機(jī)二級WPS考試題庫380題(含答案)
- 高低壓配電柜產(chǎn)品營銷計劃書
- 2024年4月自考02202傳感器與檢測技術(shù)試題
- 新入職員工培訓(xùn)考試附有答案
- 外觀質(zhì)量評定報告
評論
0/150
提交評論