數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——圖書(shū)借閱管理系統(tǒng)教學(xué)內(nèi)容_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——圖書(shū)借閱管理系統(tǒng)教學(xué)內(nèi)容_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——圖書(shū)借閱管理系統(tǒng)教學(xué)內(nèi)容_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——圖書(shū)借閱管理系統(tǒng)教學(xué)內(nèi)容_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——圖書(shū)借閱管理系統(tǒng)教學(xué)內(nèi)容_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、圖書(shū)館管理系統(tǒng)一、問(wèn)題描述:二、系統(tǒng)需求分析:1 功能要求:2 技術(shù)要求:3 方案分析:三、概要設(shè)計(jì):四、詳細(xì)設(shè)計(jì)與程序代碼:五、運(yùn)行結(jié)果與測(cè)試:六、設(shè)計(jì)體會(huì)與總結(jié)一、問(wèn)題描述圖書(shū)借閱管理系統(tǒng)是一個(gè)學(xué)校不可缺少的部分, 它的內(nèi)容對(duì)于學(xué)校的管理者和讀者來(lái)說(shuō)都至關(guān)重要, 直接關(guān)系到圖書(shū)的借用率,所以開(kāi)發(fā)圖書(shū)管理系統(tǒng)能夠?yàn)楣芾韱T和讀者提供充足的信息和快捷的查詢(xún)手段。編寫(xiě)程序系統(tǒng)主要實(shí)現(xiàn)圖書(shū)館的增加圖書(shū)、查詢(xún)圖書(shū)、刪除圖書(shū)、借閱圖書(shū)、還書(shū);增加會(huì)員、查詢(xún)會(huì)員、刪除會(huì)員、借書(shū)信息、到期書(shū)催還等智能化管理過(guò)程。圖書(shū)管理者只需略懂電腦知識(shí)就可以簡(jiǎn)易的操作該圖書(shū)借閱管理系統(tǒng)。二、 系統(tǒng)需求分析圖書(shū)借閱管理系統(tǒng)

2、主要分為兩大功能:( 1)圖書(shū)管理(增加圖書(shū)、查詢(xún)圖書(shū)、刪除圖書(shū)、圖書(shū)借閱、還書(shū)到期書(shū)催還 );( 2)會(huì)員管理(增加會(huì)員、查詢(xún)會(huì)員、刪除會(huì)員、借書(shū)信息);要完成這個(gè)題目,主要是建立解決圖書(shū)和會(huì)員的信息的存儲(chǔ),解決的方法是建立兩個(gè)帶頭結(jié)點(diǎn)的單鏈表,分別用于存儲(chǔ)圖書(shū)和會(huì)員。解決了這個(gè)問(wèn)題后就是如何建立這兩個(gè)鏈表的聯(lián)系了,解決的方法是在圖書(shū)結(jié)點(diǎn)中設(shè)一個(gè)借書(shū)人編號(hào),在會(huì)員結(jié)點(diǎn)中設(shè)一個(gè)數(shù)組用于存會(huì)員借的書(shū)。解決了這兩個(gè)問(wèn)題,剩下的工作就簡(jiǎn)單了。只需按鏈表的操作就可以了。1 功能要求在圖書(shū)借閱管理程序中須實(shí)現(xiàn)以下功能:( 1)圖書(shū)修改功能:能對(duì)圖書(shū)借閱系統(tǒng)存儲(chǔ)的信息進(jìn)行修改。提供兩種修改方式, 如按照?qǐng)D

3、書(shū)編號(hào)修改、按照書(shū)名修改。圖書(shū)編號(hào)是圖書(shū)記錄的自然順序編號(hào)。( 2)圖書(shū)刪除功能:能對(duì)圖書(shū)借閱系統(tǒng)的圖書(shū)信息進(jìn)行刪除。刪除時(shí)以記錄為單位,能一次刪除一條記錄。( 3)借書(shū)功能:能對(duì)借出的圖書(shū)作記錄信息,能一次借出一本圖書(shū)。( 4)還書(shū)功能:能將被借出的圖書(shū)信息還原,能一次借出一本圖書(shū)。( 5) 保存功能:能將記錄保存在任何自定義的文件中,如保存在:c:books 、c:lenders。( 6)通信錄管理結(jié)束后,能夠正常退出圖書(shū)借閱管理程序。2 技術(shù)要求( 1)每個(gè)借閱者記錄至少包括如下信息:姓名、學(xué)號(hào)、姓別等。每本圖書(shū)記錄至少包括如下信息:編號(hào)、書(shū)名、作者、價(jià)格等。( 2)圖書(shū)、借閱者信息以磁

4、盤(pán)文件的形式存儲(chǔ),存儲(chǔ)位置、文件名、文件格式由設(shè)計(jì)者確定。( 3)對(duì)于圖書(shū)借閱系統(tǒng)功能中數(shù)據(jù)輸入、顯示、查詢(xún)、修改、刪除、保存等功能, 要求編寫(xiě)功能獨(dú)立的函數(shù)或主控函數(shù)予以實(shí)現(xiàn),其所屬的各項(xiàng)功能盡量由獨(dú)立的函數(shù)實(shí)現(xiàn)。( 4)以菜單方式實(shí)現(xiàn)功能選擇控制。( 5)本圖書(shū)借閱管理程序能夠?qū)崿F(xiàn)100 條記錄的管理。3 方案分析此題是設(shè)計(jì)一個(gè)圖書(shū)借閱管理系統(tǒng),根據(jù)需要應(yīng)包含圖書(shū)管理和會(huì)員管理。其中對(duì)圖書(shū)和會(huì)員的增加、查詢(xún)和刪除都是基本操作。在圖書(shū)管理中對(duì)圖書(shū)的借閱和歸還是重點(diǎn),這兩個(gè)操作也是整個(gè)系統(tǒng)關(guān)鍵。在會(huì)員管理中增加了會(huì)員借書(shū)信息的查詢(xún)和對(duì)到期書(shū)的催還信息。實(shí)現(xiàn)這些操作的關(guān)鍵在于建立的兩個(gè)帶頭結(jié)點(diǎn)的

5、單鏈,分別用于存儲(chǔ)圖書(shū)和會(huì)員的基本信息。在這兩個(gè)鏈表之間還應(yīng)建立起相互的聯(lián)系,便于查詢(xún)的操作的實(shí)現(xiàn)。另外,在美觀方面,需要設(shè)計(jì)一個(gè)操作界面供用戶(hù)選擇使用。三、概要設(shè)計(jì)還書(shū)添加用戶(hù)信息查詢(xún)操作員信息修改操作員信息登陸系統(tǒng)通過(guò)需求分析,設(shè)計(jì)出本程序的總體功能設(shè)計(jì)框圖。分為七個(gè)方面:1、選擇檢查類(lèi)型;2、編輯圖書(shū)的信息;3、查詢(xún)圖書(shū)的信息;4、編輯讀者的信息;5、查詢(xún)讀者的信息;6、 借閱書(shū)刊;7、還書(shū)。連線之間說(shuō)明了他們之間的相互聯(lián)系以及設(shè)計(jì)時(shí)的要求。4.2.2圖書(shū)管理系統(tǒng)簡(jiǎn)略功能框圖五、詳細(xì)設(shè)計(jì)與程序代碼:#include<stdlib.h>#include<stdio.h&g

6、t;#include<iostream.h> #define NULL 0typedef struct BookInfo / 圖書(shū)結(jié)構(gòu)int b_Code; /圖書(shū)編號(hào)char b_Name20; / 名稱(chēng)int b_Total; /總數(shù)int b_Out; /借出數(shù)BookInfo* nextbook; /下一類(lèi)圖書(shū) BookInfo;typedef struct MemberInfo/會(huì)員結(jié)構(gòu)long m_Code; /會(huì)員編號(hào)char m_Name20; /會(huì)員名字int l_Codes6; /以借書(shū)的編號(hào),最多5MemberInfo* nextmember; / 下一會(huì)員

7、MemberInfo;typedef struct System /管理系統(tǒng)結(jié)構(gòu)BookInfo* BI;MemberInfo* MI;int BookTotal; / 圖書(shū)類(lèi)庫(kù)存量int MemberTota; / 會(huì)員數(shù)量System;System* InitSystem();/ void AddBook(System*);/ 增加圖書(shū) BookInfo* SearchBook(System*,int);/ 查詢(xún)圖書(shū)信息void DelBook(System*);/ 刪除圖書(shū)void BrrowBook(System*);/ 借書(shū)處理void TurnBackBook(System*);/

8、 還書(shū)處理void AddMember(System*);/ 添加會(huì)員void DelMember(System*);/ 刪除會(huì)員MemberInfo* SearchMember(System*,int);/ 查詢(xún)會(huì)員信息 void StoreData(System*);void LoadData(System*);void ExitSystem();void main()System* S=InitSystem();int sel;docout<<"ntttt 圖書(shū)管理系統(tǒng)"<<endl;cout<<"ttt*"&l

9、t;<endl;cout<<"ttt*"<<endl;cout<<"ttt 1. 增加圖書(shū).t 2.查詢(xún)圖書(shū).nttt 3. 刪除圖書(shū).t 4.借書(shū)處理.nttt 5. 還書(shū)處理.nttt 6. 添加會(huì)員.t 7.刪除會(huì)員.nttt 8.查詢(xún)會(huì)員.t 9.載入數(shù)據(jù).nttt10.保存數(shù)據(jù).t11.退出程序.n"cout<<"ttt*"<<endl;cout<<"ttt*"<<endl;cout<<" 請(qǐng)選

10、擇 :"docin>>sel;if(sel>=1&&sel<=11)break;cout<<" 選擇錯(cuò)誤!n 重新輸入:"<<endl;while(1);switch(sel)case 1:AddBook(S);break;case 2:SearchBook(S,-1);break;case 3:DelBook(S);break;case 4:BrrowBook(S);break;case 5:TurnBackBook(S);break;case 6:AddMember(S);break;case 7

11、:DelMember(S);break;case 8:SearchMember(S,-1);break;case 9:LoadData(S);break;case 10:StoreData(S);break;default:ExitSystem();while(1);System* InitSystem()System* S=(System*)malloc(sizeof(System);S->BI=(BookInfo*)malloc(sizeof(BookInfo);S->BookTotal=0;S->BI->nextbook=NULL;S->MI=(Member

12、Info*)malloc(sizeof(MemberInfo);S->MemberTota=0;S->MI->nextmember=NULL;return S;void AddBook(System* S) int Tempcode;char sel;BookInfo* p=S->BI;BookInfo* t;BookInfo* m;int num;docout<<" 輸入圖書(shū)編號(hào):"cin>>Tempcode;if(m=SearchBook(S,Tempcode)cout<<" 這類(lèi)書(shū)以有庫(kù)存.n 輸入

13、圖書(shū)的入庫(kù)量:"<<endl;cin>>num;m->b_Total+=num;elset=(BookInfo*)malloc(sizeof(BookInfo);t->b_Code=Tempcode;cout<<" 輸入圖書(shū)的名稱(chēng):"cin>>t->b_Name;cout<<" 輸入圖書(shū)的入庫(kù)量:"cin>>t->b_Total;t->b_Out=0;t->nextbook=p->nextbook;p->nextbook=t;

14、S->BookTotal+;cout<<" 添加完畢!"<<endl;cout<<" 還要添加嗎?(Y/N)"cin>>sel;if(sel='n'|sel='N')cout<<" 結(jié)束添加"<<endl;return;while(1);BookInfo* SearchBook(System* S,int code)BookInfo* bi=S->BI->nextbook;int bookcode;if(code=

15、-1)cout<<" 請(qǐng)輸入要查詢(xún)的圖書(shū)編號(hào):"cin>>bookcode;else bookcode=code;while(bi&&bi->b_Code!=bookcode)bi=bi->nextbook;if(code=-1)if(!bi)cout<<"沒(méi)找到你所要的圖書(shū)."<<endl;else (cout<<"圖書(shū)編號(hào)為:"<<bi->b_Code<<endl;cout<<"圖書(shū)名稱(chēng)為:&

16、quot;<<bi->b_Name<<endl;cout<<"圖書(shū)庫(kù)存量為:"<<bi->b_Total<<endl;cout<<"圖書(shū)借出量為:"<<bi->b_Out<<endl;return bi;void DelBook(System* S)BookInfo* bi;BookInfo* pl=S->BI;MemberInfo* memi;char sel;int tempcode;int i;dopl=S->BI;bi=p

17、l->nextbook;memi=S->MI->nextmember;cout<<"請(qǐng)輸入要?jiǎng)h除的圖書(shū)的編號(hào):";cin>>tempcode;while(bi)if(bi->b_Code=tempcode)break;pl=bi;bi=bi->nextbook;if(bi=0)cout<<"沒(méi)有找到要?jiǎng)h除的圖書(shū) "<<endl;elsepl->nextbook=bi->nextbook;S->BookTotal-;while(memi)for(i=1;i<

18、;=memi->l_Codes0;i+)if(memi->l_Codesi=tempcode)break;if(i<=memi->l_Codes0)for(;i<memi->l_Codes0;i+)memi->l_Codesi=memi->l_Codesi+1;memi->l_Codes0-;memi=memi->nextmember;free(bi);cout<<"還有圖書(shū)要?jiǎng)h除嗎?(Y/N)"cin>>sel;if(sel='N'|sel='n')cout

19、<<" 刪除圖書(shū)結(jié)束"<<endl;return;while(1);void BrrowBook(System* S)BookInfo* bi=S->BI->nextbook;BookInfo* p;char sel;int memcode;MemberInfo* mp;int tempcode;docout<<"輸入要借出的書(shū)號(hào):";cin>>tempcode;p=SearchBook(S,tempcode);if(!p)cout<<"沒(méi)有找到要借出的圖書(shū)."&

20、lt;<endl;elsecout<<" 此書(shū)的現(xiàn)存量為"<<(p->b_Total-p->b_Out)<<endl;if(!(p->b_Total-p->b_Out)cout<<" 沒(méi)有足夠的書(shū)了,外借失敗."<<endl;elsecout<<"請(qǐng)輸入會(huì)員編號(hào):";cin>>memcode;mp=SearchMember(S,memcode);if(!mp)cout<<" 會(huì)員編號(hào)輸入錯(cuò)誤,外借失敗

21、"<<endl;elseif(mp->l_Codes0=5)cout<<" 借書(shū)量不能超過(guò)5 本 "elsep->b_Out+;mp->l_Codes+mp->l_Codes0=tempcode;cout<<" 外借成功."<<endl;cout<<"n 還有圖書(shū)要借出嗎?(Y/N)"cin>>sel;if(sel='N'|sel='n')cout<<" 外借操作結(jié)束.&quo

22、t;<<endl;return;while(1);void TurnBackBook(System* S)BookInfo* bi=S->BI->nextbook;BookInfo* p;MemberInfo* mp;int membercode;int tempcode;int i;char sel;docout<<" 輸入歸還書(shū)號(hào):"cin>>tempcode;p=SearchBook(S,tempcode);if(!p)cout<<" 書(shū)號(hào)輸入錯(cuò)誤."<<endl;elseco

23、ut<<" 此書(shū)的現(xiàn)存量為"<<(p->b_Total-p->b_Out)<<endl;cout<<" 請(qǐng)輸入會(huì)員編號(hào):"cin>>membercode;if(!(mp=SearchMember(S,membercode)cout<<" 會(huì)員編號(hào)輸入錯(cuò)誤,歸還失敗"<<endl;elsep->b_Out-;for(i=1;i<=mp->l_Codes0;i+)if(mp->l_Codesi=tempcode)brea

24、k;while(i<mp->l_Codes0)mp->l_Codesi=mp->l_Codesi+1;i+;mp->l_Codes0-;cout<<”歸還成功."<<endl;cout<<"還有要?dú)w還的圖書(shū)嗎?(Y/N)"cin>>sel;if(sel='N'|sel='n')cout<<" 歸還結(jié)束."<<endl;return;while(1);void AddMember(System* S)int Tem

25、pcode;char sel;MemberInfo* p=S->MI;MemberInfo* t;docout<<" 輸入會(huì)員編號(hào):"cin>>Tempcode;t=(MemberInfo*)malloc(sizeof(MemberInfo);t->m_Code=Tempcode;cout<<" 輸入會(huì)員姓名:"cin>>t->m_Name;t->l_Codes0=0;t->nextmember=p->nextmember;p->nextmember=t;S->

26、;MemberTota+;cout<<" 添加完畢!"<<endl;cout<<" 還要添加嗎?(Y/N)"cin>>sel;if(sel='n'|sel='N')cout<<" 結(jié)束添加"<<endl;return;while(1);MemberInfo* SearchMember(System* S,int code)MemberInfo* bi=S->MI->nextmember;int membercode;in

27、t i;if(code=-1)cout<<" 請(qǐng)輸入要查詢(xún)的會(huì)員編號(hào):"cin>>membercode;else membercode=code;while(bi&&bi->m_Code!=membercode)bi=bi->nextmember;if(code=-1)if(!bi)cout<<" 沒(méi)找到指定會(huì)員."<<endl;else cout<<" 會(huì)員編號(hào)為:"<<bi->m_Code<<endl;cout&l

28、t;<" 名稱(chēng)為 :"<<bi->m_Name<<endl;cout<<" 已借的圖書(shū)有:"<<bi->l_Codes0<<" 本 ."<<endl;for(i=1;i<=bi->l_Codes0;i+)cout<<bi->l_Codesi<<' 'cout<<endl;return bi;void DelMember(System* S)MemberInfo* bi;Memb

29、erInfo* pl;BookInfo* book;char sel;int i;int tempcode;dobi=S->MI->nextmember;pl=S->MI;cout<<" 請(qǐng)輸入要?jiǎng)h除的會(huì)員的編號(hào):"cin>>tempcode;while(bi)if(bi->m_Code=tempcode)break;pl=bi;bi=bi->nextmember;if(!bi)cout<<" 沒(méi)有找到要?jiǎng)h除的會(huì)員編號(hào)."elsepl->nextmember=bi->nextm

30、ember;S->MemberTota-;for(i=1;i<=bi->l_Codes0;i+)if(!(book=SearchBook(S,bi->l_Codesi)cout<<"刪除會(huì)員出錯(cuò)!"<<endl;elsebook->b_Out-;book->b_Total-;free(bi);cout<<"還有會(huì)員要?jiǎng)h除嗎?(Y/N)"cin>>sel;if(sel='N'|sel='n')cout<<" 刪除會(huì)員結(jié)束

31、"<<endl;return;while(1);void StoreData(System* S)FILE* fp;BookInfo* bi=S->BI->nextbook;if(!(fp=fopen("BookSys","wb")cout<<" 打開(kāi)文件BookSys 失敗 !"<<endl;exit(0);fwrite(&(S->BookTotal),sizeof(int),1,fp);while(bi)fwrite(bi,sizeof(BookInfo),1

32、,fp);bi=bi->nextbook;MemberInfo* mi=S->MI->nextmember;fwrite(&(S->MemberTota),sizeof(int),1,fp);while(mi)fwrite(mi,sizeof(MemberInfo),1,fp);mi=mi->nextmember;fclose(fp);void LoadData(System* S)FILE* fp;if(!(fp=fopen("BookSys","rb")cout<<" 打開(kāi)文件BookSys

33、 失敗 "<<endl;exit(0);BookInfo* bi=S->BI;BookInfo* tempbi;fread(&(S->BookTotal),sizeof(int),1,fp);for(int i=1;i<=S->BookTotal;i+)tempbi=(BookInfo*)malloc(sizeof(BookInfo);fread(tempbi,sizeof(BookInfo),1,fp);bi->nextbook=tempbi;bi=tempbi;bi->nextbook=NULL;MemberInfo* mi

34、=S->MI;MemberInfo* tempmi;fread(&(S->MemberTota),sizeof(int),1,fp);for(i=1;i<=S->MemberTota;i+)tempmi=(MemberInfo*)malloc(sizeof(MemberInfo);fread(tempmi,sizeof(MemberInfo),1,fp);mi->nextmember=tempmi;mi=tempmi;mi->nextmember=NULL;fclose(fp);void ExitSystem()char select;cout<

35、;<"警告:程序結(jié)束后未存儲(chǔ)的數(shù)據(jù)將消失.”<<endl;cout<<"確定要退出嗎?(Y/N)"cin>>select;if(select='y'|select='Y')exit(0);if(select='n'|select='N')return;五、運(yùn)行結(jié)果與測(cè)試:'C Viindow5'syitemS2'Dll.ejceT醫(yī)書(shū)管理系統(tǒng)Mi 苒 If 看書(shū)理員施廳 s處一人嬴程9除X出UI! 2 4 7 9 1害理員口箱 圖圖處會(huì)合數(shù) 加除WID詢(xún)存 增刪通容宜保 1.3.5.6.8.0.情選擇:OS后攆 <出 嬰退 7 9 1斑舂感 攵營(yíng)妾 書(shū)加詢(xún)存 還第餌 5 6 8 U"C:Wndo ws$ystem32Debugllxe*XXXMXMXMXMXMXMXMXMXMXMXMKMXXXX5編號(hào);01名稱(chēng):了不起的孟法比 利入庫(kù)量"9二,flQ2)?<VzN>ii圖書(shū)管理系統(tǒng)加除書(shū)加詢(xún)T7 憎刪還窯保 1 3 5 6 8Uin *C;Wind svs'sys

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論