版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 圖書館管理系統(tǒng)</b></p><p> 專 業(yè) 班 級 :XXX</p><p> 學(xué) 號 :XXX</p><p> 姓 名 :XXX</p><p> 指 導(dǎo) 教 師 :XXX</p><p> 課程設(shè)計時間:XXX</p
2、><p> 計算機(jī)專業(yè) 數(shù)據(jù)結(jié)構(gòu) 課程設(shè)計任務(wù)書</p><p><b> 設(shè)計題目</b></p><p> 簡單的圖書館管理系統(tǒng)</p><p><b> 設(shè)計意義</b></p><p> 熟悉和掌握數(shù)據(jù)結(jié)構(gòu)課程所學(xué)的各種算法在實際項目中的應(yīng)用,學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)算法的
3、c++實現(xiàn)方法等。</p><p><b> 系統(tǒng)需求</b></p><p> 程序中傳遞的有信息有:圖書信息(包括圖書編號、書名、作者、出版社、總庫存和剩余庫存)和讀者信息(包括借閱證號和借閱圖書)。</p><p><b> 圖書管理</b></p><p> 對書庫中的圖書信息進(jìn)行管
4、理和查看功能,包括新書入庫和清空庫存功能,主要解決實際應(yīng)用中圖書館增進(jìn)新書種類數(shù)目或已有圖書損壞丟失問題。其中,新書入庫功能要求輸入圖書編號、書名、作者、出版社四項信息,用戶輸入圖書編號后,系統(tǒng)首先判斷書庫中是否有該書的記錄,如果滿足條件,則要求輸入購入數(shù)量后修改總庫存和現(xiàn)有庫存,如果不滿足條件,則要求補(bǔ)全圖書信息后新建一條庫存記錄;清空庫存功能要求輸入圖書編號,用戶輸入圖書編號后,系統(tǒng)首先判斷書庫中是否有該書的記錄,如果滿足條件,則刪
5、除書庫中該書的記錄,如果不滿足條件,則返回錯誤提示。</p><p><b> 借閱管理</b></p><p> 管理書庫中的圖書借閱相關(guān)行為,包括圖書借閱和圖書歸還功能,主要解決實際應(yīng)用中圖書館圖書借出和歸還信息的管理的問題。其中,圖書借閱功能要求輸入圖書編號,用戶輸入圖書編號后,系統(tǒng)首先判斷書庫中是否有該書的記錄以及是否還存在剩余庫存,如果有且剩余庫存大于0
6、,則借出一本書,將該書現(xiàn)庫存量減1,并登記借閱者的圖書證號和歸還期限,如果沒有,則返回錯誤提示;圖書歸還功能要求輸入圖書編號和借閱證編號,用戶輸入圖書編號和借閱證編號后,系統(tǒng)首先判斷書庫中是否有該書的記錄及是否借出,如果滿足條件,則歸還一本書,將該書現(xiàn)庫存量加1,并刪除該借閱證下該條借閱記錄,如果不滿足條件,則返回錯誤信息。</p><p><b> 圖書查找</b></p>
7、<p> 查找書庫中的圖書信息,包括按編號查找,按書名查找和按作者查找功能,主要解決實際應(yīng)用中借閱者查找想要借閱的圖書信息和圖書館對圖書各類信息的實時管理問題。其中,編號查找功能要求輸入圖書編號,用戶輸入圖書編號后,系統(tǒng)首先判斷書庫中是否有該書的記錄,如果滿足條件,則輸出包括圖書編號、書名、作者、出版社、總庫存和剩余庫存等全部圖書信息,如果不滿足條件,則返回錯誤信息;書名查找功能要求輸入圖書書名,用戶輸入圖書書名后,系統(tǒng)首
8、先判斷書庫中是否有該書的記錄,如果滿足條件,則輸出包括圖書編號、書名、作者、出版社、總庫存和剩余庫存等全部圖書信息,如果不滿足條件,則返回錯誤信息;作者查找功能要求輸入圖書作者,用戶輸入圖書作者后,系統(tǒng)首先判斷書庫中是否有該書的記錄,如果滿足條件,則輸出包括圖書編號、書名、作者、出版社、總庫存和剩余庫存等全部圖書信息,如果不滿足條件,則返回錯誤信息。</p><p><b> 信息查看</b&g
9、t;</p><p> 查看書庫中讀者相關(guān)的借出相關(guān)信息,包括讀者信息和超期未還功能,主要解決實際應(yīng)用中圖書館管理者對書庫中讀者借閱信息和圖書借閱信息的實時查看問題。讀者信息功能要求輸入借閱證編號,用戶輸入借閱證編號后,系統(tǒng)首先判斷書庫中是否有該讀者的記錄,如果滿足條件,則輸出讀者所借閱的圖書書名,如果不滿足條件,則返回錯誤信息。超期未還功能要求輸入當(dāng)前日期,用戶輸入當(dāng)前日期后,系統(tǒng)輸出所有當(dāng)前日期之前的所有圖
10、書借出記錄。</p><p><b> 功能設(shè)計</b></p><p> 在仔細(xì)分析系統(tǒng)需求后決定按照需求分類設(shè)計程序模塊,既圖書管理、借閱管理、圖書查找和信息查看四大模塊以及新書入庫、清空庫存、圖書借閱、圖書歸還、編號查找、書名查找、作者查找、讀者信息和超期未還九大功能。為方便查找和修改,定義結(jié)構(gòu)體四個,他們分別是</p><p>
11、并決定函數(shù)按照功能劃分,共使用函數(shù)十五個,包括兩個公用函數(shù)用于庫存檢查和信息顯示,一個菜單函數(shù)和九個分別對應(yīng)九大功能的功能函數(shù)。他們分別是</p><p> 五、運行環(huán)境(軟、硬件環(huán)境)</p><p><b> 硬件:PC機(jī)</b></p><p> 操作系統(tǒng):Windows 2000/XP/2003</p><p&
12、gt; 編譯環(huán)境:Visual C++6.0</p><p> 六、開發(fā)工具和編程語言</p><p> 開發(fā)工具:VISCALL c++6.0;</p><p> 編程語言:C++語言。</p><p><b> 七、程序流程</b></p><p><b> 程序源代碼&
13、lt;/b></p><p> #include <iostream></p><p> #include <string.h></p><p> #include <stdlib.h></p><p> using namespace std;</p><p> #
14、define MAXSIZE 100 //最大值定義為100</p><p> #define LIST_INIT_SIZE 100//圖書證使用者最大值定義為100</p><p> typedef struct Boro //借書行為//借書人的結(jié)構(gòu)體</p><p> { char BNum[20]; //借書的書號</p><
15、p> char RetDate[8]; //歸還日期</p><p> struct Boro *next;</p><p><b> }Bor;</b></p><p> typedef struct LinkBook</p><p> { Bor *next; //該圖書證的借書行為</p&
16、gt;<p> char CNum[20]; //證號</p><p> int Total; //借書的數(shù)量</p><p> }lend[LIST_INIT_SIZE]; //借書人數(shù)組</p><p> typedef struct LNode //圖書的結(jié)構(gòu)體信息</p><p> { char Car
17、dNum[20]; //圖書證號</p><p> struct LNode *next;</p><p> }LinkList; //借書人</p><p> typedef struct book//每種圖書需要登記的內(nèi)容包括書號ISBN、書名、作者、出版社、總庫存量和現(xiàn)庫存量。</p><p> { char num[
18、20]; //書號</p><p> char name[20]; //書名</p><p> char auth[20]; //作者</p><p> char pub[20]; //出版社</p><p> int TotNum; //總庫存</p><p> int NowNum; //
19、現(xiàn)庫存</p><p> LinkList *next; //借了該書的人</p><p> }ook[MAXSIZE];</p><p> int Retotal;//讀者數(shù)量</p><p> int total; //定義外部變量.書的種類數(shù)</p><p> void InitBo(ook &
20、;boo) //初始化圖書信息</p><p> { for(int i=0;i<MAXSIZE;i++)</p><p> { boo[i].NowNum=0;</p><p> boo[i].TotNum=0;</p><p> boo[i].next=NULL;</p><p><b>
21、; }}</b></p><p> void InitRe(lend &Lin) //初始化借閱者信息</p><p> { for(int i=0;i<LIST_INIT_SIZE;i++)</p><p> Lin[i].next=NULL;</p><p><b> }</b>
22、</p><p> int mid=0; //外部函數(shù)mid,用來返回查找到的位置</p><p> //二分法查找比較書號,用bool函數(shù),但由于函數(shù)不能有兩個返回值,所以設(shè)置一個外部變量mid,用來返回查找到的位置</p><p> bool BinarySearch(ook boo,char SearchNum[]) </p>
23、;<p> { int low=0,high=total-1;</p><p> int found=0;</p><p> while(low<=high)</p><p> { mid=(low+high)/2; //中間點</p><p> if(strcmp(boo[mid].num,Searc
24、hNum)==0) //書號相同</p><p> { found=1;return true;} //查找成功</p><p> if(strcmp(boo[mid].num,SearchNum)!=0) //書號不同</p><p> high=mid-1;</p><p> else low=mid+1;}</p&
25、gt;<p> if(found==0) return false; //查找失敗</p><p><b> }</b></p><p> void Buy(ook &boo, char BuyNum[])</p><p> { if(BinarySearch(boo,BuyNum)) //如果書庫中有此
26、書</p><p> { boo[mid].TotNum++; //總庫存加1</p><p> boo[mid].NowNum++; //現(xiàn)庫存加1</p><p> cout<<"入庫成功."<<'\n';</p><p>
27、; cout<<"已更改書庫中該書的信息。"<<'\n';</p><p> cout<<"┏━━━━━━━━┳━━━━━━━┓"<<'\n';</p><p> cout<<"┃ 編號 ┃"<<boo[mid]
28、.num<<'\n';</p><p> cout<<"┣━━━━━━━━╋━━━━━━━┫"<<'\n';</p><p> cout<<"┃ 書名 ┃"<<boo[mid].name<<'\n';</p>
29、<p> cout<<"┣━━━━━━━━╋━━━━━━━┫"<<'\n';</p><p> cout<<"┃ 作者 ┃"<<boo[mid].auth<<'\n';</p><p> cout<<"┣━━━
30、━━━━━╋━━━━━━━┫"<<'\n';</p><p> cout<<"┃ 出版社 ┃"<<boo[mid].pub<<'\n';</p><p> cout<<"┣━━━━━━━━╋━━━━━━━┫"<<'\n
31、';</p><p> cout<<"┃ 現(xiàn)庫存 ┃"<<boo[mid].NowNum<<'\n';</p><p> cout<<"┣━━━━━━━━╋━━━━━━━┫"<<'\n';</p><p> cou
32、t<<"┃ 總庫存 ┃"<<boo[mid].TotNum<<'\n';</p><p> cout<<"┗━━━━━━━━┻━━━━━━━┛"<<'\n';}</p><p> if(!BinarySearch(boo,BuyNum))</
33、p><p><b> { int i;</b></p><p> for(i=total;i>mid&&total;i--) //插在適合位置 保持有序</p><p> boo[i]=boo[i-1]; //空出插入位置</p><p> cout<<
34、;"該書在書庫中不存在。設(shè)立新書目,請補(bǔ)全書的詳細(xì)信息。"<<'\n';</p><p> strcpy(boo[i].num,BuyNum);</p><p> cout<<"該書購入的數(shù)量是:";</p><p> cin>>boo[i].NowNum;</p
35、><p> boo[i].TotNum=boo[i].NowNum;</p><p> cout<<"該書的名字是:";</p><p> cin>>boo[i].name;</p><p> cout<<"該書的作者是:";</p><p&g
36、t; cin>>boo[i].auth;</p><p> cout<<"該書的出版社是:";</p><p> cin>>boo[i].pub; //補(bǔ)全信息</p><p> boo[i].next=NULL;</p><p> total++; //總量+1<
37、;/p><p> cout<<"已增加該書的信息。"<<endl;</p><p> cout<<"┏━━━━━━━━┳━━━━━━━┓"<<'\n';</p><p> cout<<"┃ 編號 ┃"<<bo
38、o[i].num<<'\n';</p><p> cout<<"┣━━━━━━━━╋━━━━━━━┫"<<'\n';</p><p> cout<<"┃ 書名 ┃"<<boo[i].name<<'\n';</p&g
39、t;<p> cout<<"┣━━━━━━━━╋━━━━━━━┫"<<'\n';</p><p> cout<<"┃ 作者 ┃"<<boo[i].auth<<'\n';</p><p> cout<<"┣━━━
40、━━━━━╋━━━━━━━┫"<<'\n';</p><p> cout<<"┃ 出版社 ┃"<<boo[i].pub<<'\n';</p><p> cout<<"┣━━━━━━━━╋━━━━━━━┫"<<'\n
41、39;;</p><p> cout<<"┃ 現(xiàn)庫存 ┃"<<boo[i].NowNum<<'\n';</p><p> cout<<"┣━━━━━━━━╋━━━━━━━┫"<<'\n';</p><p> cout<
42、;<"┃ 總庫存 ┃"<<boo[i].TotNum<<'\n';</p><p> cout<<"┗━━━━━━━━┻━━━━━━━┛"<<'\n';</p><p> cout<<"入庫成功。\n";}}</p&
43、gt;<p> void Delete(ook &boo,char DeleteNum[])//2、 清空庫存:某一種書已無保留價值,將它從圖書賬目中注銷。</p><p> { if(BinarySearch(boo,DeleteNum)==false||total==0) //如果無此書</p><p> cout<<"書庫中沒有該
44、書."<<'\n';</p><p> if(BinarySearch(boo,DeleteNum))//若有</p><p> { if(!boo[mid].next)</p><p><b> { int j;</b></p><p> for( j=mid;j<t
45、otal;j++)</p><p> boo[j]=boo[j+1];</p><p> strcpy(boo[j].num,boo[j+1].num);</p><p> strcpy(boo[j].name,boo[j+1].name);</p><p> strcpy(boo[j].auth,boo[j+1].auth);<
46、;/p><p> strcpy(boo[j].pub,boo[j+1].pub);</p><p> boo[j].TotNum=boo[j+1].TotNum;</p><p> boo[j].NowNum=boo[j+1].NowNum;</p><p> cout<<"已成功刪除該書."<<
47、;'\n';}</p><p> else cout<<"該書有借閱者,無法刪除。"<<'\n';}}</p><p> //3、 借閱:如果一種書的現(xiàn)庫存量大于零,則借出一本書,將現(xiàn)庫存量減1,并登記借閱者的圖書證號和歸還期限。</p><p> void Borrow(ook &a
48、mp;boo,lend &Lin,char BorrowNum[],char CaNum[])</p><p> { Bor *p,*q;</p><p> LinkList *m,*n;</p><p> if(!BinarySearch(boo,BorrowNum)||total==0) //如果沒有找到此書</p><p>
49、; cout<<"書庫里沒這書。"<<'\n'; //如果有這書</p><p> if(BinarySearch(boo,BorrowNum)) //書庫里有</p><p> { if(boo[mid].NowNum>0) //看現(xiàn)庫存是否大于0</p><p> { b
50、oo[mid].NowNum--; //借出一本,少1</p><p> if(boo[mid].next==NULL) //若該書信息下顯示該種書還沒被人借過</p><p> { m=(LinkList *)malloc(sizeof(LNode));//分配</p><p> boo[mid].next=m; //該圖書信息中的鏈表的
51、第一個結(jié)點</p><p> strcpy(m->CardNum,CaNum);</p><p> m->next=NULL;} //后一個結(jié)點為空</p><p> else //如果已經(jīng)有人在借這書了</p><p> { m=boo[mid].next;</p><p>
52、; while(m->next) //遍歷到最后一個結(jié)點</p><p> m=m->next;</p><p> n=(LinkList *)malloc(sizeof(LNode));//分配空間,增加1個結(jié)點</p><p> m->next=n;</p><p> strcpy(n->Card
53、Num,CaNum); //記錄證號</p><p> n->next=NULL;}</p><p><b> int i=0;</b></p><p> for(i=0;i<Retotal;i++)</p><p> { if(!strcmp(Lin[i].CNum,CaNum)) //如果已經(jīng)有
54、該圖書證的信息</p><p> { p=Lin[i].next;</p><p> while(p->next)p=p->next; //遍歷到最后一個結(jié)點</p><p> q=(Bor *)malloc(sizeof(Boro));//分配空間</p><p> p->next=q;</p>&l
55、t;p> strcpy(q->BNum,BorrowNum); //記錄書號</p><p> cout<<"輸入歸還日期:";</p><p> cin>>q->RetDate;</p><p> q->next=NULL;</p><p> cout<&l
56、t;"借閱成功。"<<'\n';</p><p> break;}} //找到證了就跳出循環(huán)</p><p> if(i==Retotal) //如果沒有這張證的信息</p><p> { strcpy(Lin[i].CNum,CaNum); //記錄證號</p><p&g
57、t; p=(Bor *)malloc(sizeof(Boro)); //分配空間</p><p> Lin[i].next=p;</p><p> strcpy(p->BNum,BorrowNum);</p><p> cout<<"輸入歸還日期:";</p><p> cin>>p
58、->RetDate;</p><p> p->next=NULL;</p><p> Retotal++; //借閱證號信息總數(shù)加1</p><p> cout<<"借閱成功。"<<'\n';}}</p><p> else cout<<&q
59、uot;借閱失敗。該書現(xiàn)在庫存為0。"<<'\n';}}</p><p> //4、 歸還:注銷對借閱者的登記,改變該書的現(xiàn)存量。</p><p> void Return(ook &boo,lend &Lin,char ReturnNum[],char BorrowerNum[])</p><p> {
60、Bor *p,*q;</p><p> LinkList *m,*n;</p><p> int flag=0; //設(shè)置一個參數(shù)</p><p> if(!BinarySearch(boo,ReturnNum)||!total) //沒書</p><p> cout<<"書庫中無此書"
61、<<'\n';</p><p> if(BinarySearch(boo,ReturnNum)) //有書</p><p> { m=boo[mid].next;</p><p> if(!strcmp(m->CardNum,BorrowerNum)) //如果是第一個借的人還的</p><p>
62、; { boo[mid].NowNum++; //現(xiàn)庫存加1</p><p> boo[mid].next=m->next; //刪除結(jié)點</p><p> free(m);} //釋放該結(jié)點的空間空間</p><p><b> else</b></p><p> { while
63、(m->next) //查找歸還者的借閱者結(jié)點</p><p> { if(!strcmp(m->next->CardNum,BorrowerNum)) //如果找到</p><p> { n=m->next; //n為歸還者的借閱結(jié)點</p><p> m->next=n->next; //m指向歸還
64、者的借閱結(jié)點的下一結(jié)點</p><p> free(n); //釋放空間</p><p> boo[mid].NowNum++; //現(xiàn)庫存加1</p><p><b> break;}</b></p><p> m=m->next;}}}</p><p> //在借閱
65、者表里查找借閱者信息</p><p> for(int i=0;i<Retotal;i++)</p><p> { if(!strcmp(Lin[i].CNum,BorrowerNum)) //如果找到借閱者</p><p> { p=Lin[i].next;</p><p> if(!strcmp(p->BNum,Ret
66、urnNum)) //如果是歸還的是借的第一本書</p><p> { Lin[i].next=p->next; //指向下一借書結(jié)點</p><p> free(p); //釋放結(jié)點空間</p><p> cout<<"成功歸還該書。"<<'\n';</p>&l
67、t;p><b> flag=1;</b></p><p><b> break;}</b></p><p> else //找不到</p><p> { while(p->next) //找到歸還書的借書結(jié)點</p><p> { if(!strcmp(p
68、->next->BNum,ReturnNum)) //如果找到</p><p> { q=p->next; //q為歸還書的借書結(jié)點</p><p> p->next=q->next; //p指向下一借書結(jié)點</p><p> free(q); //釋放空間</p><p> cout<
69、;<"成功歸還該書。"<<'\n';</p><p><b> flag=1;</b></p><p><b> break;}</b></p><p> p=p->next;}}}}</p><p> for(int k=0;k&
70、lt;Retotal;k++)</p><p> if(!Lin[k].next)</p><p><b> { int j;</b></p><p> for(j=k;j<Retotal;j++)</p><p> Lin[j]=Lin[j+1]; //其后都往前移一位,覆蓋掉當(dāng)前信息</p&
71、gt;<p> strcpy(Lin[j].CNum," "); //刪除圖書證號</p><p> Retotal--;} //圖書證數(shù)減1</p><p> //刪除當(dāng)前狀態(tài)下沒借書的圖書證的信息,節(jié)省空間</p><p> if(flag==0) cout<<&quo
72、t;無該證信息。"<<'\n';}</p><p> //5、 查找:實現(xiàn)按三種查詢條件之一查找:按書號查找、按書名查找、按作者查找。注:可不實現(xiàn)組合查找,即幾個條件組合查找。</p><p> void SearchByNum(ook &boo,char SeaNum[]) //BY NUM 根據(jù)書號查找</p><
73、p> { LinkList *p;</p><p> p=boo[mid].next;</p><p> if(BinarySearch(boo,SeaNum)==false)</p><p> cout<<"對不起,未找到您想查找的書。"<<'\n'; //二分查找 沒找到</p>
74、;<p> else //找到了的話</p><p> {{ cout<<"┏━━━━━━━━┳━━━━━━━┓"<<'\n';</p><p> cout<<"┃ 書號 ┃"<<boo[mid].num<<'\n
75、39;;</p><p> cout<<"┣━━━━━━━━╋━━━━━━━┫"<<'\n';</p><p> cout<<"┃ 書名 ┃"<<boo[mid].name<<'\n';</p><p> cout<
76、<"┣━━━━━━━━╋━━━━━━━┫"<<'\n';</p><p> cout<<"┃ 作者 ┃"<<boo[mid].auth<<'\n';</p><p> cout<<"┣━━━━━━━━╋━━━━━━━┫"&
77、lt;<'\n';</p><p> cout<<"┃ 出版社 ┃"<<boo[mid].pub<<'\n';</p><p> cout<<"┣━━━━━━━━╋━━━━━━━┫"<<'\n';</p><
78、;p> cout<<"┃ 現(xiàn)庫存 ┃"<<boo[mid].NowNum<<'\n';</p><p> cout<<"┣━━━━━━━━╋━━━━━━━┫"<<'\n';</p><p> cout<<"┃ 總庫
79、存 ┃"<<boo[mid].TotNum<<'\n';</p><p> cout<<"┗━━━━━━━━┻━━━━━━━┛"<<'\n';</p><p> if(boo[mid].next!=NULL)</p><p> { cout<
80、<"┏━━━━━━━┓"<<'\n';</p><p> cout<<"┃ 已借該書的 ┃"<<'\n';</p><p> cout<<"┃ 圖書證號 ┃"<<'\n';</p><
81、;p><b> while(p)</b></p><p> { cout<<"┣━━━━━━━┫"<<'\n';</p><p> cout<<"┃"<<p->CardNum<<"┃"<<'\n&
82、#39;;</p><p> p=p->next;}</p><p> cout<<"┗━━━━━━━┛"<<'\n';}}</p><p><b> while(p)</b></p><p> { cout<<p->CardNu
83、m; //在按書號查找的函數(shù)里也顯示借了這本書的借閱者的證號</p><p> p=p->next;}</p><p> cout<<'\n';}} //顯示查找的書籍的信息</p><p> void SearchByName(ook &boo) //BY NAME 根據(jù)書名查找</p&
84、gt;<p> { char SeaName[20];</p><p> cout<<"輸入想查找的書的書名:"<<'\n';</p><p> cin>>SeaName;</p><p> cout<<"找到符合該書名的書的詳細(xì)信息如下:"
85、<<'\n';</p><p> for(int i=0;i<total;i++)</p><p> { if(strcmp(SeaName,boo[i].name)==0) //如果書名一樣</p><p> { cout<<"┏━━━━━━━━┳━━━━━━━┓"<<'\
86、n';</p><p> cout<<"┃ 書號 ┃"<<boo[i].num<<'\n';</p><p> cout<<"┣━━━━━━━━╋━━━━━━━┫"<<'\n';</p><p> cout<
87、;<"┃ 書名 ┃"<<boo[i].name<<'\n';</p><p> cout<<"┣━━━━━━━━╋━━━━━━━┫"<<'\n';</p><p> cout<<"┃ 作者 ┃"<<bo
88、o[i].auth<<'\n';</p><p> cout<<"┣━━━━━━━━╋━━━━━━━┫"<<'\n';</p><p> cout<<"┃ 出版社 ┃"<<boo[i].pub<<'\n';</p&
89、gt;<p> cout<<"┣━━━━━━━━╋━━━━━━━┫"<<'\n';</p><p> cout<<"┃ 現(xiàn)庫存 ┃"<<boo[i].NowNum<<'\n';</p><p> cout<<"
90、┣━━━━━━━━╋━━━━━━━┫"<<'\n';</p><p> cout<<"┃ 總庫存 ┃"<<boo[i].TotNum<<'\n';</p><p> cout<<"┗━━━━━━━━┻━━━━━━━┛"<<
91、39;\n';</p><p> }}} //顯示符合信息的所有書籍的信息</p><p> void SearchByAuth(ook &boo) // BY AUTH 根據(jù)作者查找</p><p> { char SeaAuth[20];</p><p> cout<<"
92、;輸入想查找的書的作者:"<<'\n';</p><p> cin>>SeaAuth;</p><p> cout<<"找到符合該作者的書的詳細(xì)信息如下:"<<'\n';</p><p> for(int i=0;i<total;i++)<
93、/p><p> { if(strcmp(SeaAuth,boo[i].auth)==0)//如果作者一樣</p><p> { cout<<"┏━━━━━━━━┳━━━━━━━┓"<<'\n';</p><p> cout<<"┃ 書號 ┃"<<boo
94、[i].num<<'\n';</p><p> cout<<"┣━━━━━━━━╋━━━━━━━┫"<<'\n';</p><p> cout<<"┃ 書名 ┃"<<boo[i].name<<'\n';</p>
95、;<p> cout<<"┣━━━━━━━━╋━━━━━━━┫"<<'\n';</p><p> cout<<"┃ 作者 ┃"<<boo[i].auth<<'\n';</p><p> cout<<"┣━━━━
96、━━━━╋━━━━━━━┫"<<'\n';</p><p> cout<<"┃ 出版社 ┃"<<boo[i].pub<<'\n';</p><p> cout<<"┣━━━━━━━━╋━━━━━━━┫"<<'\n
97、9;;</p><p> cout<<"┃ 現(xiàn)庫存 ┃"<<boo[i].NowNum<<'\n';</p><p> cout<<"┣━━━━━━━━╋━━━━━━━┫"<<'\n';</p><p> cout<
98、<"┃ 總庫存 ┃"<<boo[i].TotNum<<'\n';</p><p> cout<<"┗━━━━━━━━┻━━━━━━━┛"<<'\n';</p><p> }}} //顯示符合信息的所有書籍的信息</p><
99、;p> //6、 查看:可查看某圖書證號的借閱者借閱的全部圖書,可查看全部超期未還的圖書。</p><p> void ViewCard(ook &boo,lend &Lin) //查看某圖書證號的借閱者借閱的全部圖書</p><p> { char Num[20];</p><p> cout<<"請輸入您所想
100、要查看的圖書證號:"<<'\n';</p><p><b> cin>>Num;</b></p><p><b> Bor *p;</b></p><p> int qqq=0;</p><p> for(int i=0;i<Retot
101、al;i++)</p><p> { if(strcmp(Lin[i].CNum,Num)==0) //找到該證</p><p> { cout<<"這個證借的書有:"<<'\n';</p><p> p=Lin[i].next;</p><p><b> whi
102、le(p)</b></p><p> { cout<<p->BNum; //書號</p><p> p=p->next;}</p><p> cout<<'\n';</p><p><b> qqq=1;</b></p><p
103、><b> break;}}</b></p><p> if(qqq==0)</p><p> cout<<"該證不存在."<<'\n';}</p><p> void ViewBook(ook &boo,lend &Lin) //查看全部超期未還的圖書
104、</p><p> { char date[8];</p><p><b> Bor *p;</b></p><p> cout<<"請輸入日期(請按格式20060605輸入):"<<'\n';</p><p> cin>>date;<
105、/p><p> cout<<"所有超期未還的書有:"<<'\n';</p><p> for(int i=0;i<Retotal;i++)</p><p> { p=Lin[i].next;</p><p> while(p) //當(dāng)p不空時</p>
106、<p> { if(strcmp(p->RetDate,date)<0) //超過日期</p><p> { cout<<"┏━━━━━━━━┳━━━━━━━┓"<<'\n';</p><p> cout<<"┃ 書號 ┃"<<p->BNu
107、m<<'\n';</p><p> cout<<"┣━━━━━━━━╋━━━━━━━┫"<<'\n';</p><p> cout<<"┃ 證號 ┃"<<Lin[i].CNum<<'\n';</p><
108、;p> cout<<"┣━━━━━━━━╋━━━━━━━┫"<<'\n';</p><p> cout<<"┃ 歸還日期 ┃"<<p->RetDate<<'\n';</p><p> cout<<"┗━━━━━━━━
109、┻━━━━━━━┛"<<'\n';}//顯示所有超期未還的書的信息</p><p> p=p->next;}}}</p><p> void Menu() //菜單</p><p> { cout<<"┏—————————————————M E N U————————————————┓&
110、quot;;</p><p> cout<<"│ │";</p><p> cout<<"│ 1. 采編入庫:新購入一種書,如果該書在圖書賬目中已經(jīng)存在,則將其庫存量增 │&qu
111、ot;;</p><p> cout<<"│ 加(包括總庫存量和現(xiàn)庫存量)。如果該書不存在,則在圖書賬目中 │";</p><p> cout<<"│ 增加一種書,總庫存量和現(xiàn)庫存量均為輸入的數(shù)字。 │";</p><
112、;p> cout<<"│ 2. 清空庫存:某一種書已無保留價值,將它從圖書賬目中注銷。 │";</p><p> cout<<"│ 3. 借 閱:如果一種書的現(xiàn)庫存量大于零,則借出一本書,將現(xiàn)庫存量減1,并 │";</p><p> cout<<"│
113、 登記借閱者的圖書證號和歸還期限。 │";</p><p> cout<<"│ 4. 歸 還:注銷對借閱者的登記,改變該書的現(xiàn)存量。 │";</p><p> cout<<"│ 5. 按書號查找。
114、 │";</p><p> cout<<"│ 6. 按書名查找。 │";</p><p> cout<<"
115、;│ 7. 按作者查找。 │";</p><p> cout<<"│ 8. 查看某圖書證號的借閱者借閱的全部圖書。 │";</p><p> cout<&l
116、t;"│ 9. 查看全部超期未還的圖書。 │";</p><p> cout<<"│ 0. 退出圖書管理系統(tǒng)。 │";</p><p>
117、 cout<<"│ │";</p><p> cout<<"┗—————————————請 選 擇 你 需 要 的 操 作————————————┛";</p><p><
118、;b> }</b></p><p> void main()</p><p><b> { ook Bo;</b></p><p><b> lend Lin;</b></p><p> char BNum[20];</p><p> char
119、CNum[20];</p><p> cout<<"-----------------------歡 迎 進(jìn) 入 圖 書 管 理 系 統(tǒng)!---------------------------"<<'\n';</p><p> int choice=10;</p><p> int SearchCho
120、=10,ViewCho=10;</p><p> while(choice!=0)</p><p> { Menu(); //顯示菜單</p><p> cin>>choice;</p><p> switch(choice)</p><p><b> {</b></
121、p><p> case 1: //采編入庫</p><p> cout<<"請輸入入庫的書的書號:";</p><p> cin>>BNum;</p><p> Buy(Bo,BNum);</p><p><b> break;</b></
122、p><p> case 2: //清空庫存</p><p> cout<<"請輸入想要清除的書的書號:";</p><p> cin>>BNum;</p><p> Delete(Bo,BNum);</p><p><b> break;</b>
123、</p><p> case 3: //借閱</p><p> cout<<"請輸入想要借閱的書的書號:"<<'\n';</p><p> cin>>BNum;</p><p> cout<<"請輸入圖書證號:";</p&g
124、t;<p> cin>>CNum;</p><p> Borrow(Bo,Lin,BNum,CNum);</p><p><b> break;</b></p><p> case 4: //歸還</p><p> cout<<"請輸入想要歸還的書的書號:&qu
125、ot;<<'\n';</p><p> cin>>BNum;</p><p> cout<<"請輸入圖書證號:";</p><p> cin>>CNum;</p><p> Return(Bo,Lin,BNum,CNum);</p>&l
126、t;p><b> break;</b></p><p> case 5: //查找//根據(jù)書號查找</p><p> cout<<"請輸入書號:";//輸入書號查找</p><p> cin>>BNum;</p><p> SearchByNum(Bo,BNu
127、m);</p><p><b> break;</b></p><p> case 6: //根據(jù)書名查找</p><p> SearchByName(Bo);</p><p><b> break;</b></p><p> case 7: //根據(jù)作者查找&
128、lt;/p><p> SearchByAuth(Bo);</p><p><b> break;</b></p><p> case 8: //查看某圖書證所借的所有書</p><p> ViewCard(Bo,Lin);</p><p><b> break;</b>
129、;</p><p> case 9: //查看全部超期未還的書</p><p> ViewBook(Bo,Lin);</p><p><b> break;</b></p><p> case 0: //退出系統(tǒng)</p><p> exit(0);break;</p>
130、<p> default:cout<<"輸入錯誤!"<<'\n';</p><p><b> exit(0);</b></p><p><b> break;</b></p><p><b> }}}</b></p&g
131、t;<p><b> 八、測試結(jié)果</b></p><p><b> 九、 參考文獻(xiàn)</b></p><p> [1] 邊肇祺,模式識別(第二版),北京:清華大學(xué)出版社,1988,25~35</p><p> [2] 李永忠,幾種小波變換的圖像處理技術(shù),西北民族學(xué)院學(xué)報(自然科學(xué)版),2001.6,2
132、2(3),15~18</p><p> [3]譚浩強(qiáng),C程序設(shè)計題解與上機(jī)指導(dǎo)(第3版),清華大學(xué)出版社,2005.7.</p><p> [4][美]Harvey M. Deitel,Paul J. Deitel 著,聶雪軍,賀軍譯,C程序設(shè)計經(jīng)典教程(第4版),清華大學(xué)出版社,2006。3</p><p><b> 課程設(shè)計總結(jié)<
133、/b></p><p> 通過本次課程設(shè)計,我學(xué)到了很多:增強(qiáng)了查閱相關(guān)參考資料的能力;獨立分析解決問題的能力;創(chuàng)新精神;自己的上機(jī)動手的能力;自己對課程設(shè)計的理解,得到很多啟示,知道了以后要加強(qiáng)哪一方面,還有哪一方面有用,課程設(shè)計為我們提供了一個即動手又動腦、獨立實踐的機(jī)會,讓我明白了在我們學(xué)習(xí)理論知識的同時,應(yīng)該積極上機(jī)實驗以鞏固我們的理論知識,增強(qiáng)我們設(shè)計程序的能力,為我們將來的工作打下堅實的基礎(chǔ)。
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--圖書館管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計圖書管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計圖書管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)與算法b綜合課程設(shè)計--圖書館管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計圖書管理系統(tǒng)實驗報告
- erp課程設(shè)計圖書館信息管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--圖書管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--圖書借閱管理系統(tǒng)
- 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計---圖書管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計----圖書館管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--圖書管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計---圖書館管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(圖書館管理系統(tǒng))
- 圖書館管理系統(tǒng)課程設(shè)計
- c#課程設(shè)計圖書館信息管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-圖書管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---圖書管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計-圖書館管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計--圖書館管理系統(tǒng)
- 圖書館管理系統(tǒng)數(shù)據(jù)庫課程設(shè)計
評論
0/150
提交評論