版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上課程名稱(chēng):程序設(shè)計(jì)綜合實(shí)訓(xùn)設(shè)計(jì)題目: 圖書(shū)管理系統(tǒng) 姓 名:學(xué) 號(hào):專(zhuān)業(yè)班級(jí):指導(dǎo)老師:完成日期: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),用戶(hù)分為圖書(shū)管理人員,讀者。管理人員可以增加刪除查看圖書(shū)、讀者。讀者只能查看自身信息,和借還書(shū)1.3設(shè)計(jì)指標(biāo)或者要求管理人員可以訪問(wèn)任意圖書(shū)和讀者,而讀者只能借還圖書(shū)館存在的圖書(shū)和查看自己的信息。2 設(shè)計(jì)過(guò)程分析:由于管理系統(tǒng)用戶(hù)有圖書(shū)管理員和讀者,但兩者的權(quán)限不同,管理員有權(quán)訪問(wèn)所有圖書(shū)信息和管理員信息,而讀者只能訪問(wèn)所有圖書(shū)信息和自身的信息
2、。所以他們的相同點(diǎn):都能訪問(wèn)所有圖書(shū)信息不同點(diǎn):管理員能訪問(wèn)所有讀者信息而管理員只能訪問(wèn)自身信息而不能訪問(wèn)其它讀者信息;故此設(shè)計(jì)了三個(gè)類(lèi)程序包含三個(gè)類(lèi):圖書(shū)類(lèi)(books),管理員類(lèi)(manager),讀者類(lèi)reader,books類(lèi)為抽象類(lèi),manager,和reader類(lèi)為books類(lèi)的派生類(lèi)。為了能讓管理員和讀者訪問(wèn)所有圖書(shū)信息,所有都繼承了books類(lèi);而為了分出兩者的權(quán)限的不同,所以把所有讀者的信息做為一個(gè)鏈表作為管理員的一個(gè)私有成員,而讀者卻只能放一個(gè)自身節(jié)點(diǎn)作為讀者的私有成員,然后分別設(shè)計(jì)各個(gè)類(lèi)的成員函數(shù)。2.1 程序功能Class books /虛基類(lèi) protected:bo
3、oks_node *broot;public:books();/構(gòu)造函數(shù)savebooks();/保存修改的內(nèi)容search_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 /管理員類(lèi) protected:readers_node *rroot;public:manager(readers_node*);savereaders();add_book()
4、;/添加圖書(shū)信息delet_book();/刪除圖書(shū)search_reader();/查找讀者信息add_reader();/添加讀者delet_reader();/刪除讀者print_readers();/輸出所有讀者;class reader:public books/讀者類(lèi)private:readers_node* personnel;/存放讀者自身信息public:reader(readers_node*);add_book();/還書(shū)reader_borrow();delet_book();reader_return();/借書(shū)print_me();/查看自己借書(shū)情況save_rea
5、ders(readers_node*);2.2程序流程圖開(kāi)始菜單管理員菜單讀者菜單添 刪加 除圖 圖書(shū) 書(shū)添 刪加 除讀 讀者 者借 還 查 查 看 看 所 自 有 身 圖 信書(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ì)類(lèi)時(shí)有些茫然,經(jīng)過(guò)反復(fù)斟酌還是做了一些取舍,比如把讀取讀者文件放在了類(lèi)的外面等。5 總結(jié)通過(guò)本次課程設(shè)計(jì)學(xué)到了很多東西,對(duì)于c+對(duì)象的含義有了進(jìn)一步的認(rèn)識(shí),從而對(duì)類(lèi)的封裝和設(shè)計(jì)
6、有了一種新的認(rèn)識(shí),不只是停留在表面,為以后的學(xué)習(xí)積累了經(jīng)驗(yàn),設(shè)計(jì)不比編寫(xiě)容易,類(lèi)設(shè)計(jì)好是整個(gè)程序?qū)懞玫那疤?,只有一個(gè)好的規(guī)劃才能寫(xiě)出好的程序。不過(guò)也通過(guò)本次發(fā)現(xiàn)了自己的不足之處??偸牵罕敬握n程設(shè)計(jì)受益匪淺,動(dòng)手能力大大增強(qiáng);附錄(程序源代碼)#include<iostream.h>#include<fstream.h>#include<string.h>#include<stdlib.h>#include<stdio.h>#include<conio.h>#define max 3 typedef struct Books
7、char 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_borrow_num;struct Reader_borrow_bookschar borrow_books_name15;char borrow_books_no15;reader_borrow_bookmax;Readers *next;readers_node;class books
8、protected:books_node *broot;public:books();savebooks();search_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();delet_reader();prin
9、t_readers();class reader:public booksprivate: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=new books_node;r=new books_node;r->next=NULL;broot=r;ifstream inFile;in
10、File.open("c:books.dat",ios:binary);if(inFile.is_open()=-1)cout<<"con't open books.dat"<<endl;else int i=0;while(1)i+;books_node *node;node=new books_node;inFile.read( (char*)node,sizeof(books_node);if(inFile.eof() break;node->next=r->next;r->next=node;in
11、File.close();if(i<2)cout<<"暫時(shí)沒(méi)有圖書(shū)數(shù)據(jù)"<<endl;books:savebooks()books_node *L;L=new books_node;L=broot->next;ofstream outFile;outFile.open("c:books.dat",ios:binary);while(L)outFile.write(char*)L,sizeof(books_node);L=L->next;outFile.close();books:search_book()char
12、 searchedbook15;cout<<"輸入要查找的書(shū)的名子:"cin>>searchedbook;books_node *r;r=new books_node;r=broot->next;while(r)if(strcmp(searchedbook,r->book_name)=0)cout<<"書(shū)名:"<<r->book_name<<" 書(shū)的總量:"<<r->total_num<<" 借出:"<
13、<r->borrow_num<<" 書(shū)的編號(hào):"<<r->book_num<<endl;break;r=r->next;if(r=NULL)cout<<"對(duì)不起,沒(méi)有此書(shū)"<<endl;books:print_books()books_node *r; r=new books_node;r=broot->next;while(r)cout<<"書(shū)名:" <<r->book_name<<" 書(shū)的總
14、量:"<<r->total_num<<" 借出:"<< r->borrow_num <<" 書(shū)的編號(hào):"<<r->book_num<<endl;r=r->next;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;cout<<"輸入書(shū)名:&
15、quot;cin>>r->book_name;cout<<"輸入書(shū)的編號(hào):"cin>>r->book_num;r->borrow_num=0;cout<<"輸入總數(shù):"cin>>r->total_num;r->next=L->next;L->next=r;cout<<"add more?(n終止,其它鍵繼續(xù))"char sign;cin>>sign;if(sign='n'|sign='N
16、')break;broot=L;savebooks();manager:delet_book()char deleted15;cout<<"輸入要?jiǎng)h除的圖書(shū)名字:"cin>>deleted; 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
17、=NULL) cout<<"sorry!There is no the book!"<<endl;elseif(node->next->borrow_num=0)node->next=node->next->next;savebooks();elsecout<<"對(duì)不起,暫時(shí)不能刪除,因?yàn)檫€有沒(méi)有歸還的書(shū)"<<endl;manager:manager(readers_node*node) rroot=new readers_node;rroot=node;manager:sav
18、ereaders()readers_node *L;L=new readers_node;L=rroot->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;int sign=0;while(1)readers_
19、node *r;r=new readers_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<<"add more?(n終止,其它鍵繼續(xù))"char sign;cin>>sign;if(sign=&
20、#39;n'|sign='N')break;rroot=L;savereaders();manager:delet_reader()char deleted15;cout<<"輸入要?jiǎng)h除讀者的名字:"cin>>deleted; readers_node *node,*L;node=new readers_node;L=new readers_node;node=rroot;while(node->next)if(strcmp(deleted,node->next->reader_name)=0)break;n
21、ode=node->next;if(node->next=NULL) cout<<"sorry!There is no the reader!"<<endl;elsenode->next=node->next->next;savereaders();manager:search_reader() readers_node *r;r=new readers_node;r=rroot->next;char reader15;cout<<"輸入要查找讀者的姓名:"cin>>re
22、ader;while(r)if(strcmp(reader,r->reader_name)=0)cout<<"姓名:"<<r->reader_name<<" 編號(hào):"<<r->reader_no<<" 借書(shū)總數(shù):"<<r->reader_borrow_num<<endl;for(int i=0;i<r->reader_borrow_num;i+)cout<<"書(shū)名:"<<r
23、->reader_borrow_booki.borrow_books_name<<" "<<"書(shū)的編號(hào):"<<r->reader_borrow_booki.borrow_books_no;break;else r=r->next;if(!r)cout<<"沒(méi)有此人"<<endl;manager:print_readers()readers_node *printL;printL=new readers_node;printL=rroot->next;w
24、hile(printL)cout<<"姓名 編號(hào) 借書(shū)總數(shù)"<<endl;cout<<printL->reader_name<<" "<<printL->reader_no<<" "<<printL->reader_borrow_num<<endl;for(int i=0;i<printL->reader_borrow_num;i+)cout<<"書(shū)名:"<<prin
25、tL->reader_borrow_booki.borrow_books_name<<" "<<"書(shū)的編號(hào):"<<printL->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
26、 books_node;node=broot->next;char returned15;cout<<"輸入要還書(shū)的名子:"cin>>returned; for(int i=0;i<personnel->reader_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ū)&quo
27、t;);system("pause"); elsewhile(node)if(strcmp(node->book_name,returned)=0)break;else node=node->next;if(node)personnel->reader_borrow_num-;node->borrow_num-;savebooks();else cout<<"對(duì)不起,沒(méi)有你要還的書(shū)或者所還書(shū)被刪除"<<endl;reader:delet_book() if(personnel->reader_borr
28、ow_num<max)books_node*node;node=new books_node;node=broot->next;char borrowed15;cout<<"輸入要借書(shū)的名子:"cin>>borrowed;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
29、->reader_borrow_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;el
30、se cout<<"對(duì)不起,你借書(shū)的數(shù)量已經(jīng)超過(guò)最大借數(shù)量"<<endl;reader:print_me() cout<<"姓名"<<personnel->reader_name<<" 編號(hào):"<<personnel->reader_no<<" 借書(shū)總數(shù):"<<personnel->reader_borrow_num<<endl;for(int i=0;i<personnel->
31、reader_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:save_readers(readers_node *L)reade
32、rs_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;int flag=
33、0;ifstream inFile;inFile.open("c:Readers.dat",ios:binary);if(inFile.is_open()=-1) cout<<"con't open readers.dat"<<endl;return r;elsewhile(1)flag+;readers_node *node;node=new readers_node;inFile.read(char*)node,sizeof(readers_node);if(inFile.eof() break;node->ne
34、xt=r->next;r->next=node;inFile.close();if(flag<2)cout<<"暫無(wú)讀者 "<<endl; return r;elsereturn r;password()system("cls");char a="",b10,c;int n=0,k;cerr<<"nnnnttt請(qǐng)輸入密碼,你將擁有3次機(jī)會(huì):n"while(1)n+;k=0;cerr<<"ttt輸入密碼:"while(1)c=get
35、ch();if(c=13)break;bk=c;k+;cerr<<"*"bk='0'cout<<"n"if(n>2)printf("你已經(jīng)超過(guò)輸入次數(shù),系統(tǒng)將退出n");getch();if(strcmp(a,b)=0)break;else cout<<"密碼錯(cuò)誤,請(qǐng)重新輸入n"cerr<<"n"void manager_menu_1(manager M)int N;while(1)cout<<"n&qu
36、ot; cout<<" 圖書(shū)管圖書(shū)管理系統(tǒng) n" cout<<" 菜單 n" cout<<"n" cout<<"增加圖書(shū) n" cout<<" .刪除圖書(shū) n"cout<<" .查找圖書(shū) n"cout<<" .輸出所有 n" cout<<" 退出請(qǐng)按0 n"cout<<"n" cout<<"
37、;請(qǐng)輸入您的選擇(0-4):( )bb"cin>>N;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)cout<<"n&q
38、uot; cout<<" 圖書(shū)管圖書(shū)管理系統(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)輸入
39、您的選擇(0-4):( )bb"cin>>N;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");pass
40、word();manager Manager(L);int N;while(1)cout<<"n" cout<<" 圖書(shū)管圖書(shū)管理系統(tǒng) n" cout<<" 菜單 n" cout<<"n" cout<<"圖書(shū)維護(hù) n" cout<<"讀者維護(hù) n" cout<<"退出請(qǐng)按0 n"cout<<"n" cout<<"請(qǐng)輸入您
41、的選擇(0-2):( )bb"cin>>N;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;cout<<"輸入用戶(hù)名:"cin>>name;readers_node* node;node=new readers_node;node=L->next;while(node)if(strcmp(name,node->reader_name)=0)break;else node=node->next;if(node)reader Reader(node);int N;while(1)cout<<"n&
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智慧城市基礎(chǔ)設(shè)施搭建委托協(xié)議4篇
- 2025年度個(gè)人二手車(chē)買(mǎi)賣(mài)合同范本標(biāo)準(zhǔn)版4篇
- 顫音音響發(fā)生器課程設(shè)計(jì)
- 2024碎石加工廠產(chǎn)品質(zhì)量追溯體系建立合同范本3篇
- 2025年醫(yī)藥用品運(yùn)輸合同規(guī)范文本4篇
- 二零二五年度棉紗現(xiàn)貨交易市場(chǎng)參與資格準(zhǔn)入合同范本3篇
- 2025年度生態(tài)公園建設(shè)與改造合同4篇
- 2025年度房地產(chǎn)買(mǎi)賣(mài)合同糾紛解決機(jī)制補(bǔ)充協(xié)議4篇
- 2025版新能源項(xiàng)目施工勞務(wù)分包合同范本4篇
- 2025年度個(gè)人車(chē)輛借用及押金退還合同4篇
- 第22單元(二次函數(shù))-單元測(cè)試卷(2)-2024-2025學(xué)年數(shù)學(xué)人教版九年級(jí)上冊(cè)(含答案解析)
- 藍(lán)色3D風(fēng)工作總結(jié)匯報(bào)模板
- 安全常識(shí)課件
- 河北省石家莊市2023-2024學(xué)年高一上學(xué)期期末聯(lián)考化學(xué)試題(含答案)
- 2024年江蘇省導(dǎo)游服務(wù)技能大賽理論考試題庫(kù)(含答案)
- 2024年中考英語(yǔ)閱讀理解表格型解題技巧講解(含練習(xí)題及答案)
- 新版中國(guó)食物成分表
- 浙江省溫州市溫州中學(xué)2025屆數(shù)學(xué)高二上期末綜合測(cè)試試題含解析
- 2024年山東省青島市中考生物試題(含答案)
- 保安公司市場(chǎng)拓展方案-保安拓展工作方案
- GB/T 15843.2-2024網(wǎng)絡(luò)安全技術(shù)實(shí)體鑒別第2部分:采用鑒別式加密的機(jī)制
評(píng)論
0/150
提交評(píng)論