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

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)圖書(shū)管理系統(tǒng)一 需求分析該程序是模擬圖書(shū)館管理系統(tǒng),實(shí)現(xiàn)圖書(shū)采編入庫(kù)、借書(shū)、還書(shū)、查詢等基本業(yè)務(wù)。此程序規(guī)定:(1) 管理員能夠向系統(tǒng)中輸入每種書(shū)的基本信息,包括書(shū)號(hào)、書(shū)名、作者、現(xiàn)存量和庫(kù)存量、借閱記錄,并保存記錄;(2) 用戶(讀者)能夠按書(shū)號(hào)、書(shū)名、作者查詢圖書(shū)信息;(3) 管理員能夠?qū)崿F(xiàn)圖書(shū)采編入庫(kù)(新購(gòu)入一本書(shū),經(jīng)分類和確定書(shū)號(hào)之后登記到圖書(shū)賬目中去。如果這種書(shū)在帳中已有,則只將總庫(kù)存量增加)、借閱(如果書(shū)的現(xiàn)存量大于0,則借出一本,登記借閱者的圖書(shū)證號(hào)和歸還期限)、歸還(刪除對(duì)借閱者的登記,改變?cè)摃?shū)的現(xiàn)存量)、銷毀(將圖書(shū)從賬目中刪除)等操

2、作。二 概要設(shè)計(jì)l 系統(tǒng)用到的抽象數(shù)據(jù)類型定義: 1、ADT LinearList數(shù)據(jù)元素:D=ai|aiD0,i=1,2,n,n0,D0為某一數(shù)據(jù)對(duì)象關(guān)系:S=|ai,ai+1D0,i=1,2,n-1基本操作:(1) InitList(L)(2) DestroyList(L)(3) ClearList(L)(4) EmptyList(L)(5) ListLength(L)(6) Locate(L,e)(7) GetData(L,i)(8) InsList(L,i,e)(9) DelList(L,i,&e)ADT LinearList2、ADT String 數(shù)據(jù)對(duì)象:D=ai|aiChara

3、cterSet,i=1,2,n;n0 數(shù)據(jù)關(guān)系:R=|ai-1,aiD,i=2,n;n0 基本操作:(1) StrAsign(S,chars)(2) StrInsert(S,pos,T)(3) StrDelete(S,pos,len)(4) StrCopy(S,T)(5) StrEmpty(S)(6) StrCompare(S,T)(7) StrLength(S)(8) StrClear(S)(9) StrCat(S,T)(10)SubString(Sub,S,pos,len)(11)StrIndex(S,pos,T)(12)StrReplace(S,T,V)(13)StrDestroy(S)

4、ADT Stringl 系統(tǒng)中的子程序和功能說(shuō)明:InitBo(Book &boo);初始化圖書(shū)信息InitRe(lend &Lin);初始化借閱者信息BinarySearch(Book boo,char SearchNum);二分法查找比較書(shū)號(hào)Buy(Book &boo, char BuyNum);新書(shū)采編入庫(kù)系統(tǒng)Delete(Book &boo,char DeleteNum);清除圖書(shū)信息系統(tǒng)Borrow(Book &boo,lend &Lin,char BorrowNum,char CaNum);借閱圖書(shū)處理系統(tǒng)Return(Book &boo,lend &Lin,char Return

5、Num,char BorrowerNum);歸還圖書(shū)系統(tǒng)SearchByNum(Book &boo,char SeaNum);按書(shū)號(hào)查找系統(tǒng)SearchByName(Book &boo);按書(shū)名查找系統(tǒng)SearchByAuth(Book &boo);按作者查詢系統(tǒng)Menu();主菜單顯示系統(tǒng)Search();查詢系統(tǒng)子菜單main();主函數(shù)l 系統(tǒng)程序功能結(jié)構(gòu)圖圖書(shū)館管理系統(tǒng)圖書(shū)信息錄入查詢圖書(shū)信息處理圖書(shū)信息基本信息借閱記錄按書(shū)號(hào)查詢按書(shū)名查詢按作者查詢圖書(shū)采編入庫(kù)圖書(shū)借閱情況圖書(shū)歸還情況圖書(shū)銷毀情況三 詳細(xì)設(shè)計(jì)l 功能實(shí)現(xiàn)過(guò)程bool BinarySearch(Book boo,char

6、 SearchNum) /二分法查找比較書(shū)號(hào)while(lowmid&total;i-)/*將新采購(gòu)的書(shū)插在適合位置,保持有序*/ 空出插入位置; 輸入新購(gòu)書(shū)籍的相關(guān)信息:書(shū)號(hào)、書(shū)名、作者、出版社;booi.next=NULL;total+;/*總量加1*/void Delete(Book &boo,char DeleteNum)/*清除圖書(shū)信息*/ if(書(shū)庫(kù)中沒(méi)有此書(shū))輸出“無(wú)此書(shū)”;if(書(shū)庫(kù)中有此書(shū)) strcpy(連續(xù)兩本書(shū)的相關(guān)信息);現(xiàn)存量減1;庫(kù)存量減1;else 輸出“此書(shū)已有借閱者,無(wú)法刪除!”;void Borrow(Book &boo,lend &Lin,char Bo

7、rrowNum,char CaNum)/*借閱圖書(shū)信息*/ if(沒(méi)有找到此書(shū)) 輸出“書(shū)庫(kù)中無(wú)此書(shū)!”; if(書(shū)庫(kù)中有此書(shū)) 借出一本書(shū)后,該書(shū)的現(xiàn)存量減1;并在借閱記錄鏈表中插入該條記錄;再對(duì)應(yīng)讀者信息記錄鏈表,如果已有該讀者證號(hào)信息,直接在該鏈表中插入此次借閱記錄;如果無(wú)該讀者證號(hào)信息,申請(qǐng)新單鏈表存放借閱記錄。 else 輸出“該書(shū)現(xiàn)存量為0”;void Return(Book &boo,lend &Lin,char ReturnNum,char BorrowerNum)/*歸還圖書(shū)信息*/ if(書(shū)庫(kù)中無(wú)此書(shū))輸出“無(wú)此書(shū)記錄”; if(書(shū)庫(kù)中有此書(shū)) 查找圖書(shū)文件,修改圖書(shū)的現(xiàn)存

8、量;查找記錄借閱信息的單鏈表,填入還書(shū)日期,刪除借閱信息;查找記錄讀者信息的單鏈表,刪除證號(hào)信息。void SearchByNum(Book &boo,char SeaNum)/*按書(shū)號(hào)查找*/ if(書(shū)庫(kù)中無(wú)此書(shū)信息)/*用二分法查找*/ 輸出“無(wú)此書(shū)”; else/*書(shū)庫(kù)中有此書(shū)信息*/ 輸出與此書(shū)有關(guān)的相關(guān)信息;void SearchByName(Book &boo)/*按書(shū)名查找*/輸入想要查找書(shū)的書(shū)名;用順序查找法查找;if(查找到需要查找的書(shū)) 輸出與此書(shū)相關(guān)的信息;建議畫(huà)出主要模塊流程圖。四 設(shè)計(jì)與調(diào)試分析1、這個(gè)程序設(shè)計(jì)中要注意定義兩個(gè)結(jié)構(gòu)體:圖書(shū)結(jié)構(gòu)體、借閱人結(jié)構(gòu)體。其中定義

9、數(shù)組存放圖書(shū)信息,申請(qǐng)鏈表存放借閱記錄和讀者信息記錄。2、程序中運(yùn)用到大多的插入與刪除,所以申請(qǐng)鏈表比較方便插入與刪除。但應(yīng)前期需求分析的準(zhǔn)備工作不充分,導(dǎo)致程序運(yùn)行功能不全,比如查找時(shí)關(guān)于此書(shū)的信息不能全部顯示出來(lái),并且添加刪除時(shí)庫(kù)存的變化不能直接顯示出來(lái)。程序的健壯性不能達(dá)到預(yù)期的結(jié)果,這些都是需要改進(jìn)的。3、在程序中的函數(shù)調(diào)用是個(gè)非常重要的部分,也是經(jīng)常需要用到的,在編寫(xiě)程序過(guò)程中,因?yàn)楹瘮?shù)調(diào)用不準(zhǔn)確,使得循環(huán)進(jìn)不去,后來(lái)改變函數(shù)的調(diào)用關(guān)系,才達(dá)到了預(yù)期結(jié)果。4、程序中還定義了全局變量,之前沒(méi)定義全局變量,在下面的編寫(xiě)過(guò)程,同樣性質(zhì)的地方需要重復(fù)定義,比較麻煩,定義全局變量使得程序比較簡(jiǎn)

10、明一點(diǎn)。五 用戶手冊(cè)【 使用說(shuō)明 】1、進(jìn)入圖書(shū)館管理系統(tǒng)主頁(yè)面2、若有新書(shū)要新編入庫(kù),選擇1,進(jìn)入新書(shū)入庫(kù)系統(tǒng),輸入入庫(kù)書(shū)的書(shū)號(hào),若書(shū)庫(kù)中無(wú)該書(shū),則設(shè)立新書(shū)目,輸入新書(shū)信息。若書(shū)庫(kù)中已有該書(shū),則輸入新信息覆蓋修改原書(shū)庫(kù)中該書(shū)號(hào)對(duì)應(yīng)書(shū)的信息。3、若有書(shū)籍信息需要?jiǎng)h除,選擇2,進(jìn)入清空庫(kù)存系統(tǒng),輸入想要?jiǎng)h除書(shū)的書(shū)號(hào),則此書(shū)信息就已刪除。4、若要借閱圖書(shū),選擇3,進(jìn)入圖書(shū)借閱系統(tǒng),輸入需要借閱書(shū)的書(shū)號(hào)以及讀者證號(hào),并輸入還書(shū)日期,則借書(shū)成功。5、若要?dú)w還圖書(shū),選擇4,進(jìn)入圖書(shū)歸還系統(tǒng),輸入需要?dú)w還圖書(shū)的書(shū)號(hào)以及讀者證號(hào),則還書(shū)成功。6、若要查找信息,選擇5,進(jìn)入查找信息子系統(tǒng)。若要按書(shū)號(hào)查找,則選

11、擇子系統(tǒng)中的1,輸入需要查找的書(shū)的書(shū)號(hào),若按書(shū)名查找,則選擇子系統(tǒng)中的2,輸入需要查找的書(shū)名,若按作者查找,輸入需要查找書(shū)的作者進(jìn)行查找,若查找結(jié)束,則按0退出。7、若系統(tǒng)使用結(jié)束,按0退出?!?程序中的頭文件 】#include #include #include #define MAXSIZE 100 #define LIST_INIT_SIZE 100int Retotal;/*定義的全局變量*/int total;六 測(cè)試成果1、采編入庫(kù)2、清空庫(kù)存3、圖書(shū)借閱4、圖書(shū)歸還5、圖書(shū)查找七 附錄(源程序清單)#include #include #include #define MAXSI

12、ZE 100 #define LIST_INIT_SIZE 100typedef struct Borochar BNum20; char RetDate8; struct Boro *next;Bor;typedef struct LinkBook Bor *next;char CNum20;int Total;lendLIST_INIT_SIZE;typedef struct LNodechar CardNum20;struct LNode *next;LinkList; typedef struct bookchar num20;char name20;char auth20;char

13、pub20;int TotNum;int NowNum;LinkList *next;BookMAXSIZE;int Retotal;int total; void InitBo(Book &boo) for(int i=0;iMAXSIZE;i+)booi.NowNum=0;booi.TotNum=0;booi.next=NULL;void InitRe(lend &Lin) for(int i=0;iLIST_INIT_SIZE;i+)Lini.next=NULL;int mid=0;bool BinarySearch(Book boo,char SearchNum) int low=0,

14、high=total;int found=0;while(lowmid&total;i-) booi=booi-1; printf(該書(shū)在書(shū)庫(kù)中不存在,設(shè)立新書(shū)目!n);strcpy(booi.num,BuyNum);printf(該書(shū)購(gòu)入的數(shù)量是:);scanf( %d,&booi.NowNum);booi.TotNum=booi.NowNum;printf(該書(shū)的名字是:);scanf( %s,&);printf(該書(shū)的作者是:);scanf( %s,&booi.auth);printf(該書(shū)的出版社是:);scanf( %s,&booi.pub);booi.next=N

15、ULL;total+;printf(已增加該書(shū)的信息!n);printf(編號(hào) :%s 書(shū)名:%s ,booi.num,);printf(作者:%s 出版社:%s,booi.auth,booi.pub);printf(n);printf(入庫(kù)成功.n);void Delete(Book &boo,char DeleteNum)if(BinarySearch(boo,DeleteNum)=false|total=0) printf(書(shū)庫(kù)中沒(méi)有該書(shū).n);if(BinarySearch(boo,DeleteNum)if(!boomid.next)int j;for(j=mid;j

16、0) boomid.NowNum-;if(boomid.next=NULL) m=(LinkList *)malloc(sizeof(LNode);boomid.next=m;strcpy(m-CardNum,CaNum);m-next=NULL;else m=boomid.next;while(m-next) m=m-next;n=(LinkList *)malloc(sizeof(LNode);m-next=n;strcpy(n-CardNum,CaNum);n-next=NULL; int i=0;for(i=0;inext)p=p-next;q=(Bor *)malloc(sizeof

17、(Boro);p-next=q;strcpy(q-BNum,BorrowNum); printf(輸入歸還日期:);scanf(%s,&q-RetDate);q-next=NULL;printf(借閱成功.n);break; if(i=Retotal)strcpy(Lini.CNum,CaNum); p=(Bor *)malloc(sizeof(Boro);Lini.next=p;strcpy(p-BNum,BorrowNum);printf(輸入歸還日期:);scanf( %s,&p-RetDate);p-next=NULL;Retotal+; printf(借閱成功.n);else pri

18、ntf(借閱失敗.該書(shū)現(xiàn)在庫(kù)存為0.n);void Return(Book &boo,lend &Lin,char ReturnNum,char BorrowerNum)Bor *p,*q;LinkList *m,*n;int flag=0;if(!BinarySearch(boo,ReturnNum)|!total) printf(書(shū)庫(kù)中無(wú)此書(shū).n);if(BinarySearch(boo,ReturnNum) m=boomid.next;if(!strcmp(m-CardNum,BorrowerNum) boomid.NowNum+; boomid.next=m-next; free(m)

19、; elsewhile(m-next) if(!strcmp(m-next-CardNum,BorrowerNum) n=m-next; m-next=n-next; free(n); boomid.NowNum+; break;m=m-next;for(int i=0;iBNum,ReturnNum) Lini.next=p-next; free(p); printf(成功歸還該書(shū).n);flag=1;break;else while(p-next) if(!strcmp(p-next-BNum,ReturnNum) q=p-next; p-next=q-next; free(q); pri

20、ntf(成功歸還該書(shū).n);flag=1;break;p=p-next;for(int k=0;kRetotal;k+)if(!Link.next)int j;for(j=k;jRetotal;j+)Linj=Linj+1; strcpy(Linj.CNum, ); Retotal-; if(flag=0) printf(無(wú)該證信息.n);void SearchByNum(Book &boo,char SeaNum)LinkList *p;p=boomid.next;if(BinarySearch(boo,SeaNum)=true)printf(書(shū)號(hào):%sn,boomid.num);print

21、f(書(shū)名:%sn,);printf(作者名:%sn,boomid.auth);printf(出版社:%sn,boomid.pub);printf(現(xiàn)存量:%sn,boomid.NowNum);printf(庫(kù)存量:%sn,boomid.TotNum);printf( n);elseprintf(對(duì)不起,未找到您想查找的書(shū)。n);void SearchByName(Book &boo)char SeaName20;printf(輸入想查找的書(shū)的書(shū)名:n);scanf( %s,&SeaName);printf(此書(shū)存在!n);for(int i=0;itotal;i+)if(

22、strcmp(SeaName,)=0)printf(編號(hào):%s 書(shū)名:%s ,booi.num,);printf(作者:%s 出版社:%s,booi.auth,booi.pub);printf(總庫(kù)存量:%s,booi.TotNum);printf(現(xiàn)庫(kù)存量:%s,booi.NowNum);printf(n);void SearchByAuth(Book &boo)char SeaAuth20;printf(輸入想查找的書(shū)的作者:n);scanf( %s,&SeaAuth);printf(找到符合該作者的書(shū)的詳細(xì)信息如下:n);for(int i=0;ito

23、tal;i+)if(strcmp(SeaAuth,booi.auth)=0) printf(編號(hào) :%s 書(shū)名:%s ,booi.num,); printf(作者:%s 出版社:%s,booi.auth,booi.pub); printf(n);void Menu() printf( 圖書(shū)館管理系統(tǒng) n);printf(1. 采編入庫(kù) 2. 清空庫(kù)存nn);printf(3. 圖書(shū)借閱 4、圖書(shū)歸還nn); printf(5. 按要求查找 0. 退出nn); printf(請(qǐng)選擇:);void Search()char BNum20;Book Bo;int k;printf( 圖書(shū)館查詢子系統(tǒng)n);printf(1、按書(shū)號(hào)查詢 2、按書(shū)名查找nn);printf(3、按作者查詢 4、退出子系統(tǒng)nn);printf(請(qǐng)選擇:);scanf(%d,&k);switch(k)case 1:printf(請(qǐng)輸入書(shū)號(hào):);/輸入書(shū)號(hào)查找scanf( %s,&BNum);S

溫馨提示

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

評(píng)論

0/150

提交評(píng)論