




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
年4月19日c圖書管理系統(tǒng)實(shí)驗(yàn)報(bào)告和源代碼文檔僅供參考課程名稱:程序設(shè)計(jì)綜合實(shí)訓(xùn)設(shè)計(jì)題目:圖書管理系統(tǒng)姓名:學(xué)號(hào):專業(yè)班級(jí):指導(dǎo)老師:完成日期:
1設(shè)計(jì)任務(wù)1.1設(shè)計(jì)目的運(yùn)用所學(xué)知識(shí),完成圖書館管理系統(tǒng),經(jīng)過(guò)實(shí)踐加強(qiáng)對(duì)所學(xué)知識(shí)的理解和鞏固1.2設(shè)計(jì)內(nèi)容建立圖書館管理系統(tǒng),用戶分為圖書管理人員,讀者。管理人員能夠增加刪除查看圖書、讀者。讀者只能查看自身信息,和借還書1.3設(shè)計(jì)指標(biāo)或者要求管理人員能夠訪問(wèn)任意圖書和讀者,而讀者只能借還圖書館存在的圖書和查看自己的信息。2設(shè)計(jì)過(guò)程分析:由于管理系統(tǒng)用戶有圖書管理員和讀者,但兩者的權(quán)限不同,管理員有權(quán)訪問(wèn)所有圖書信息和管理員信息,而讀者只能訪問(wèn)所有圖書信息和自身的信息。因此她們的相同點(diǎn):都能訪問(wèn)所有圖書信息不同點(diǎn):管理員能訪問(wèn)所有讀者信息而管理員只能訪問(wèn)自身信息而不能訪問(wèn)其它讀者信息;故此設(shè)計(jì)了三個(gè)類程序包含三個(gè)類:圖書類(books),管理員類(manager),讀者類reader,books類為抽象類,manager,和reader類為books類的派生類。為了能讓管理員和讀者訪問(wèn)所有圖書信息,所有都繼承了books類;而為了分出兩者的權(quán)限的不同,因此把所有讀者的信息做為一個(gè)鏈表作為管理員的一個(gè)私有成員,而讀者卻只能放一個(gè)自身節(jié)點(diǎn)作為讀者的私有成員,然后分別設(shè)計(jì)各個(gè)類的成員函數(shù)。2.1程序功能Classbooks///虛基類{protected: books_node*broot;public: books();//構(gòu)造函數(shù) savebooks();//保存修改的內(nèi)容 search_book();//查找某一本書 print_books();//輸出所有書的信息 virtualadd_book()=0;//對(duì)于讀者是還書,對(duì)于管理員添加書 virtualdelet_book()=0;//對(duì)于讀者是借書,對(duì)于管理員是去掉某一本書};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)行或者測(cè)試結(jié)果(1)管理員身份登錄:(2)讀者身份登錄:4軟件設(shè)計(jì)過(guò)程中遇到的問(wèn)題以及解決辦法由于編寫前期做了大量的設(shè)計(jì)工作,在編寫過(guò)程中基本沒(méi)有遇到難解決的問(wèn)題提,倒是在設(shè)計(jì)類時(shí)有些茫然,經(jīng)過(guò)重復(fù)斟酌還是做了一些取舍,比如把讀取讀者文件放在了類的外面等。。5總結(jié)經(jīng)過(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ì)不比編寫容易,類設(shè)計(jì)好是整個(gè)程序?qū)懞玫那疤?,只有一個(gè)好的規(guī)劃才能寫出好的程序。不過(guò)也經(jīng)過(guò)本次發(fā)現(xiàn)了自己的不足之處??偸牵罕敬握n程設(shè)計(jì)受益匪淺,動(dòng)手能力大大增強(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í)沒(méi)有圖書數(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<<"書的編號(hào):"<<r->book_num<<endl;break; } r=r->next; } if(r==NULL)cout<<"對(duì)不起,沒(méi)有此書"<<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<<"書的編號(hào):"<<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<<"輸入書的編號(hào):"; 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<<"輸入要?jiǎng)h除的圖書名字:"; 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<<"對(duì)不起,暫時(shí)不能刪除,因?yàn)檫€有沒(méi)有歸還的書"<<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<<"輸入讀者的編號(hào):"; 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<<"輸入要?jiǎng)h除讀者的名字:"; 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<<"編號(hào):"<<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<<""<<"書的編號(hào):"<<r->reader_borrow_book[i].borrow_books_no; } break; } elser=r->next; } if(!r)cout<<"沒(méi)有此人"<<endl; }manager::print_readers(){ readers_nodeprintL; printL=newreaders_node; printL=rroot->next; while(printL) { cout<<"姓名編號(hào)借書總數(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<<""<<"書的編號(hào):"<<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("不好意思,你沒(méi)有此書");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<<"對(duì)不起,沒(méi)有你要還的書或者所還書被刪除"<<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<<"對(duì)不起,沒(méi)有你要借的書或者所要借的書已經(jīng)借完!"<<endl; } elsecout<<"對(duì)不起,你借書的數(shù)量已經(jīng)超過(guò)最大借數(shù)量"<<endl;}reader::print_me(){ cout<<"姓名"<<personnel->reader_name<<"編號(hào):"<<personnel->reader_no<<"借書總數(shù):"<<personnel->reader_borrow_num<<endl; for(inti=0;i<personnel->reader_borrow_num;i++) { printf("書名:%s,書的編號(hào):%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<<"暫無(wú)讀者"<<endl;returnr; } else returnr; } }password(){ system("cls"); chara[]="111111",b[10],c;intn=0,k; cerr<<"\n\n\n\n\t\t\t請(qǐng)輸入密碼,你將擁有3次機(jī)會(huì):\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)超過(guò)輸入次數(shù),系統(tǒng)將退出\n"); getch(); } if(strcmp(a,b)==0)break; elsecout<<"密碼錯(cuò)誤,請(qǐng)重新輸入\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<<"┃退出請(qǐng)按0┃\n"; cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"; cout<<"請(qǐng)輸入您的選擇(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<<"┃退出請(qǐng)按0┃\n"; cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"; cout<<"請(qǐng)輸入您的選擇(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<<"┃退出請(qǐng)按0┃\n"; cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"; cout<<"請(qǐng)輸入您的選擇(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. 本站所有資源如無(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中醫(yī)護(hù)理學(xué)(第5版)課件 舌診
- 新能源技術(shù)太陽(yáng)能光伏發(fā)電系統(tǒng)安裝手冊(cè)
- 企業(yè)人際溝通培訓(xùn)
- 雨水收集 規(guī)范
- 項(xiàng)目投資可行性報(bào)告報(bào)告完整版
- 美麗鄉(xiāng)村項(xiàng)目可行性研究報(bào)告
- 家居智能語(yǔ)音
- 農(nóng)業(yè)產(chǎn)業(yè)鏈管理手冊(cè)
- 市場(chǎng)調(diào)研報(bào)告細(xì)分行業(yè)統(tǒng)計(jì)表
- 能源產(chǎn)業(yè)項(xiàng)目進(jìn)度跟蹤表
- 2025年“才聚齊魯成就未來(lái)”山東省機(jī)場(chǎng)管理集團(tuán)濟(jì)南國(guó)際機(jī)場(chǎng)股份限公司校園招聘8人自考難、易點(diǎn)模擬試卷(共500題附帶答案詳解)
- 2025年皖西衛(wèi)生職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)及答案1套
- 2025年四川省對(duì)口招生(旅游類)考試復(fù)習(xí)題(附答案)
- 種植辣椒500畝項(xiàng)目可行性研究報(bào)告建議書模板
- 醫(yī)院危險(xiǎn)化學(xué)品安全管理
- 2024年勞動(dòng)合同(30篇)
- 原生廣告行業(yè)可行性分析報(bào)告
- 新聞?dòng)浾呗殬I(yè)資格《新聞基礎(chǔ)知識(shí)》考試題庫(kù)(含答案)
- 《鐵路軌道維護(hù)》課件-道岔改道作業(yè)
- 湘教版地理八年級(jí)下冊(cè) 期末綜合測(cè)試卷(二)(含答案)
- 五育并舉 - 以愛育心以德化人
評(píng)論
0/150
提交評(píng)論