圖書(shū)管理信息系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)分析_第1頁(yè)
圖書(shū)管理信息系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)分析_第2頁(yè)
圖書(shū)管理信息系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)分析_第3頁(yè)
圖書(shū)管理信息系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)分析_第4頁(yè)
圖書(shū)管理信息系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)分析_第5頁(yè)
已閱讀5頁(yè),還剩25頁(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、. 數(shù)據(jù)構(gòu)造課程設(shè)計(jì)報(bào)告設(shè)計(jì)題目:圖書(shū)管理信息系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)專業(yè) 通信工程物聯(lián)網(wǎng) 班級(jí)學(xué)生*指導(dǎo)教師起止時(shí)間2012-8-20至2012-9-11師學(xué)院2012年下學(xué)期一、設(shè)計(jì)題目十七、圖書(shū)管理信息系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)【問(wèn)題描述】圖書(shū)信息所表示的就是一個(gè)數(shù)據(jù)庫(kù)文件。圖書(shū)管理一般包括:圖書(shū)采編、圖書(shū)編目、圖書(shū)查詢及圖書(shū)流通借、還書(shū)等。要求設(shè)計(jì)一個(gè)圖書(shū)管理信息系統(tǒng),用計(jì)算機(jī)實(shí)現(xiàn)上述系統(tǒng)功能?!靖疽蟆拷⒁粋€(gè)圖書(shū)信息數(shù)據(jù)庫(kù)文件,輸入假設(shè)干種書(shū)的記錄,建立一個(gè)以書(shū)號(hào)為關(guān)鍵字的索引文件;在主數(shù)據(jù)庫(kù)文件中建立以書(shū)名、作者及作為次關(guān)鍵字的索引以及對(duì)應(yīng)的索引鏈頭文件,如下圖;建立關(guān)于書(shū)號(hào)、書(shū)名、作者及的圖書(shū)

2、查詢;實(shí)現(xiàn)圖書(shū)的借還子系統(tǒng),包括建立讀者文件、借還文件、讀者管理及圖書(shū)借還等相關(guān)的處理。記錄號(hào)書(shū)號(hào)書(shū)名指針1作者指針2指針3分類藏書(shū)量借出數(shù)11021數(shù)據(jù)庫(kù)0小云0人民郵電00218021014數(shù)據(jù)構(gòu)造0小洋0中國(guó)科學(xué)00136031106操作系統(tǒng)0許海平0人民郵電10247041108數(shù)據(jù)構(gòu)造2一0清華大學(xué)00135051203程序設(shè)計(jì)0小云1中國(guó)科學(xué)20356062201數(shù)據(jù)庫(kù)1許海平3清華大學(xué)40216072360數(shù)據(jù)構(gòu)造4小云5人民郵電30135080030程序設(shè)計(jì)5小洋2清華大學(xué)603570a)圖書(shū)主索引文件書(shū)名鏈頭地址長(zhǎng)度作者鏈頭地址長(zhǎng)度鏈頭地址長(zhǎng)度數(shù)據(jù)庫(kù)62小云73人民郵電73數(shù)

3、據(jù)構(gòu)造73小洋82中國(guó)科學(xué)52操作系統(tǒng)31許海平62清華大學(xué)83程序設(shè)計(jì)82一41b)書(shū)名索引鏈頭文件c) 作者索引鏈頭文件 d)索引鏈頭文件二、設(shè)計(jì)容設(shè)計(jì)一個(gè)計(jì)算機(jī)管理系統(tǒng)完成圖書(shū)管理根本業(yè)務(wù)。 1每種書(shū)的登記容包括書(shū)號(hào)、書(shū)名、著作者、現(xiàn)存量和庫(kù)存量; 2對(duì)書(shū)號(hào)建立索引表線性表以提高查找效率; 3采編入庫(kù):新購(gòu)一種書(shū),確定書(shū)號(hào)后,登記到圖書(shū)帳目表中,如果表中已有,則只將庫(kù)存量增加; 4借閱:如果一種書(shū)的現(xiàn)存量大于0,則借出一本,登記借閱者的書(shū)證號(hào)和還期限,改變現(xiàn)存量; 5歸還:注銷對(duì)借閱者的登記,改變?cè)摃?shū)的現(xiàn)存量。三、概要設(shè)計(jì):確定所需模塊及模塊間調(diào)用關(guān)系分析:首先應(yīng)該定義借書(shū)人的構(gòu)造體信息

4、和圖書(shū)構(gòu)造體信息,為了便于查找圖書(shū)和借書(shū)人,分別對(duì)其建立單鏈表。然后定義buy(),SearchByNum (),SearchByName(), borrow(),return()五個(gè)函數(shù)分別實(shí)現(xiàn)圖書(shū)采編入庫(kù)的功能,按書(shū)號(hào)查詢的功能,按書(shū)名查找的功能,借書(shū)功能和還書(shū)功能。 .根據(jù)任務(wù)的要求,先定義頭文件。然后寫出借書(shū)人和圖書(shū)的構(gòu)造體信息。為了便于查找圖書(shū)和存儲(chǔ)借書(shū)人的信息,分別對(duì)借書(shū)人和圖書(shū)采用鏈表的形式存放。 /頭文件的聲明 #include #include #include #define MA*SIZE 100 /最大值定義為100 #define LIST_INIT_SIZE 100

5、/圖書(shū)證使用者最大值定義為100 /借書(shū)人的構(gòu)造體 typedef struct Boro/借書(shū)記錄 char BNum20;/所借書(shū)的書(shū)號(hào) char BorDate8;/借書(shū)日期 char RetDate8;/歸還日期 struct Boro *ne*t; Bor;typedef struct LinkBook Bor *ne*t;/該圖書(shū)證的借書(shū)記錄 char um20;/圖書(shū)證號(hào) int Total;/借書(shū)的數(shù)量 lendLIST_INIT_SIZE;/借書(shū)人數(shù)組 /圖書(shū)的構(gòu)造體信息 typedef struct LNode char CardNum20;/圖書(shū)證號(hào) struct LNo

6、de *ne*t; LinkList; /借書(shū)人 typedef struct book /每種圖書(shū)需要登記的容包括書(shū)號(hào)、書(shū)名、作者、總庫(kù)存量和現(xiàn)庫(kù)量。 char num20;/書(shū)號(hào) char name20;/書(shū)名 char auth20;/作者 char pub20;/ int TotNum;/總庫(kù)存 int NowNum;/現(xiàn)庫(kù)存 LinkList *ne*t;/借了該書(shū)的人 ook; 1、新圖書(shū)采編入庫(kù)的設(shè)計(jì)方案 采編入庫(kù):新購(gòu)入一種書(shū),如果該書(shū)在圖書(shū)賬目中已經(jīng)存在,則將其庫(kù)存量增加包括總庫(kù)存量和現(xiàn)庫(kù)存量,如果該書(shū)不存在,則在圖書(shū)賬目中增加一種書(shū),總庫(kù)存量和現(xiàn)庫(kù)存量均為1。為了便于查找,

7、另外定義了一個(gè)專門用于查找的函數(shù)BinarySearch(),使用的是折半查找法。1折半查找法查找書(shū)號(hào) int mid=0;/外部函數(shù)mid,用來(lái)返回查找到的位置 int BinarySearch(ook boo,char SearchNum) /二分法查找比擬書(shū)號(hào) 由于函數(shù)不能有兩個(gè)返回值,所以設(shè)置一個(gè)外部變量mid,用來(lái)返回查找到的位置 int low=0,high=total-1; int found=0; while(lowmid&total;i-) /插在適合位置 保持有序 booi=booi-1; /空出插入位置 printf(該書(shū)在書(shū)庫(kù)中不存在。設(shè)立新書(shū)目,請(qǐng)補(bǔ)全書(shū)的詳細(xì)信息。n

8、); 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);/補(bǔ)全信息 booi.ne*t=NULL; total+;/總量+1 printf(已增加該書(shū)的信息。 %s 的書(shū) %s 作者是 %s ,是 %s ,目前的總庫(kù)存是 %d ,

9、現(xiàn)庫(kù)存是 %d 。n,booi.num,,booi.auth,booi.pub,booi.TotNum,booi.NowNum); printf(入庫(kù)成功.n); 3、查找圖書(shū)的設(shè)計(jì)方案 為了更便于查找,這里設(shè)計(jì)了兩種查找方案,按書(shū)號(hào)查找和按書(shū)名查找。在按書(shū)號(hào)查找中使用了折半查找法的查找函數(shù)。按書(shū)號(hào)查找方案中都顯示圖書(shū)的所有狀態(tài),包括是在庫(kù)還是借出,如果借出,并顯示何人借走。 1.按書(shū)號(hào)查找 void SearchByNum(ook &boo,char SeaNum) /BY NUM 根據(jù)書(shū)號(hào)查找 LinkList *p; p=boomid.ne*t; if(BinarySe

10、arch(boo,SeaNum)=false)printf(對(duì)不起,未找到您想查找的書(shū)。n);/二分查找 沒(méi)找到 else/找到了的話 printf( 書(shū)號(hào) 書(shū)名 作者 現(xiàn)庫(kù)存 總庫(kù)存 n); printf(-n); printf(%10s%10s%10s%10s%10d%10dn,boomid.num,,boomid.auth,boomid.pub,boomid.NowNum,boomid.TotNum); if(boomid.ne*t!=NULL) printf( 已借該書(shū)的 n); printf( 圖書(shū)證號(hào) n); while(p) printf(%14sn,p-C

11、ardNum); p=p-ne*t; while(p) printf( %s ,p-CardNum);/在按書(shū)號(hào)查找的函數(shù)里也顯示借了這本書(shū)的借閱者的證號(hào) p=p-ne*t; printf( n); /顯示查找的書(shū)籍的信息 2.按書(shū)名查找 void SearchByName(ook &boo) /BY NAME 根據(jù)書(shū)名查找 char SeaName20; printf(輸入想查找的書(shū)的書(shū)名:n); scanf( %s,&SeaName); printf(找到符合該書(shū)名的書(shū)的詳細(xì)信息如下:n); for(int i=0;i0) /看現(xiàn)庫(kù)存是否大于0 boomid.NowNum-;/借出一本,少

12、1 if(boomid.ne*t=NULL) /假設(shè)該書(shū)信息下顯示該種書(shū)還沒(méi)被人借過(guò) m=(LinkList *)malloc(sizeof(LNode);/分配 boomid.ne*t=m;/該圖書(shū)信息中的鏈表的第一個(gè)結(jié)點(diǎn) strcpy(m-CardNum,CaNum); m-ne*t=NULL;/后一個(gè)結(jié)點(diǎn)為空 else /如果已經(jīng)有人在借這書(shū)了 m=boomid.ne*t; while(m-ne*t) /遍歷到最后一個(gè)結(jié)點(diǎn) m=m-ne*t; n=(LinkList *)malloc(sizeof(LNode);/分配空間,增加1個(gè)結(jié)點(diǎn) m-ne*t=n; strcpy(n-CardNu

13、m,CaNum);/記錄證號(hào) n-ne*t=NULL; int i=0; for(i=0;ine*t)p=p-ne*t;/遍歷到最后一個(gè)結(jié)點(diǎn) q=(Bor *)malloc(sizeof(Boro);/分配空間 p-ne*t=q; strcpy(q-BNum,BorrowNum); /記錄書(shū)號(hào) printf(輸入歸還日期:); scanf(%s,&q-RetDate); q-ne*t=NULL; printf(借閱成功.n); break; /找到證了就跳出循環(huán) if(i=Retotal)/如果沒(méi)有這證的信息 strcpy(Lini.um,CaNum); /記錄證號(hào) p=(Bor *)mall

14、oc(sizeof(Boro); /分配空間 Lini.ne*t=p; strcpy(p-BNum,BorrowNum); printf(輸入歸還日期:); scanf( %s,&p-RetDate); p-ne*t=NULL; Retotal+; /借閱證號(hào)信息總數(shù)加1 printf(借閱成功.n); else printf(借閱失敗.該書(shū)現(xiàn)在庫(kù)存為0.n); 5、歸還圖書(shū)的設(shè)計(jì)方案 定義了一個(gè)return函數(shù),當(dāng)進(jìn)展還書(shū)時(shí),在借閱者表里查找借閱者,注銷對(duì)借閱者的登記。在圖書(shū)鏈表中改變?cè)摃?shū)的現(xiàn)存量,把現(xiàn)存量增加。 void Return(ook &boo,lend &Lin,char Ret

15、urnNum,char BorrowerNum) Bor *p,*q; LinkList *m,*n; int flag=0;/設(shè)置一個(gè)參數(shù) if(!BinarySearch(boo,ReturnNum)|!total) /沒(méi)書(shū) printf(書(shū)庫(kù)中無(wú)此書(shū).n); if(BinarySearch(boo,ReturnNum) /有書(shū) m=boomid.ne*t; if(!strcmp(m-CardNum,BorrowerNum) /如果是第一個(gè)借的人還的 boomid.NowNum+; /現(xiàn)庫(kù)存加1 boomid.ne*t=m-ne*t; /刪除結(jié)點(diǎn) free(m); /釋放該結(jié)點(diǎn)的空間空間

16、else while(m-ne*t) /查找歸還者的借閱者結(jié)點(diǎn) if(!strcmp(m-ne*t-CardNum,BorrowerNum) /如果找到 n=m-ne*t; /n為歸還者的借閱結(jié)點(diǎn) m-ne*t=n-ne*t; /m指向歸還者的借閱結(jié)點(diǎn)的下一結(jié)點(diǎn) free(n); /釋放空間 boomid.NowNum+; /現(xiàn)庫(kù)存加1 break; m=m-ne*t; /在借閱者表里查找借閱者信息 for(int i=0;iBNum,ReturnNum) /如果是歸還的是借的第一本書(shū) Lini.ne*t=p-ne*t; /指向下一借書(shū)結(jié)點(diǎn) free(p); /釋放結(jié)點(diǎn)空間 printf(成功

17、歸還該書(shū).n); flag=1; break; else /找不到 while(p-ne*t) /找到歸還書(shū)的借書(shū)結(jié)點(diǎn) if(!strcmp(p-ne*t-BNum,ReturnNum) /如果找到 q=p-ne*t; /q為歸還書(shū)的借書(shū)結(jié)點(diǎn) p-ne*t=q-ne*t; /p指向下一借書(shū)結(jié)點(diǎn) free(q); /釋放空間 printf(成功歸還該書(shū).n); flag=1; break; p=p-ne*t; for(int k=0;kRetotal;k+) if(!Link.ne*t) int j; for(j=k;jRetotal;j+) Linj=Linj+1; /其后都往前移一位,覆蓋掉

18、當(dāng)前信息 strcpy(Linj.um, ); /刪除圖書(shū)證號(hào) Retotal-; /圖書(shū)證數(shù)減1 /刪除當(dāng)前狀態(tài)下沒(méi)借書(shū)的圖書(shū)證的信息,節(jié)省空間 if(flag=0) printf(無(wú)該證信息.n); 6、定義主函數(shù),在主函數(shù)中設(shè)計(jì)出主界面。便于用戶進(jìn)入后能夠根據(jù)提示方便操作。并且在主函數(shù)中定義出要實(shí)現(xiàn)的根本功能,在分別另外去實(shí)現(xiàn)。分別在主函數(shù)中定義有:Buy(Bo,BNum); SearchByNum(Bo,BNum);SearchByName(Bo);Borrow(Bo,Lin,BNum,um);Return(Bo,Lin,BNum,um)五個(gè)函數(shù)。 四、算法描述:給出各模塊流程圖及代碼

19、圖書(shū)管理系統(tǒng)的總體構(gòu)造如圖書(shū)管理系統(tǒng)圖書(shū)采編入庫(kù)按書(shū)號(hào)查找按書(shū)名查找借閱圖書(shū)圖書(shū)歸還 完整代碼如下:wj.h/借書(shū)人的構(gòu)造體 typedef struct Boro/借書(shū)記錄 char BNum20;/所借書(shū)的書(shū)號(hào) char BorDate8;/借書(shū)日期 char RetDate8;/歸還日期 struct Boro *ne*t; Bor; typedef struct LinkBook Bor *ne*t;/該圖書(shū)證的借書(shū)記錄 char um20;/圖書(shū)證號(hào) int Total;/借書(shū)的數(shù)量 lendLIST_INIT_SIZE;/借書(shū)人數(shù)組 /圖書(shū)的構(gòu)造體信息 typedef struct

20、 LNode char CardNum20;/圖書(shū)證號(hào) struct LNode *ne*t; LinkList; /借書(shū)人 typedef struct book /每種圖書(shū)需要登記的容包括書(shū)號(hào)、書(shū)名、作者、總庫(kù)存量和現(xiàn)庫(kù)量。 char num20;/書(shū)號(hào) char name20;/書(shū)名 char auth20;/作者 char pub20;/ int TotNum;/總庫(kù)存 int NowNum;/現(xiàn)庫(kù)存 LinkList *ne*t;/借了該書(shū)的人 ook; int Retotal;/讀者數(shù)量 int total; /定義外部變量.書(shū)的種類數(shù) /構(gòu)造體初始化 void InitBo(oo

21、k boo) /初始化圖書(shū)信息 for(int i=0;iMA*SIZE;i+) booi.NowNum=0; booi.TotNum=0; booi.ne*t=NULL; void InitRe(lend &Lin) /初始化借閱者信息 for(int i=0;iLIST_INIT_SIZE;i+) Lini.ne*t=NULL; int mid=0;/外部函數(shù)mid,用來(lái)返回查找到的位置 int BinarySearch(ook boo,char SearchNum) /二分法查找比擬書(shū)號(hào) /由于函數(shù)不能有兩個(gè)返回值,所以設(shè)置一個(gè)外部變量mid,用來(lái)返回查找位置 int low=0,hig

22、h=total-1; int found=0; while(low0)/書(shū)號(hào)不同 high=mid-1; else low=mid+1; if(found=0) return 0; /查找失敗 void Buy(ook boo, char BuyNum) /* 采編入庫(kù):新購(gòu)入一種書(shū),如果該書(shū)在圖書(shū)賬目中已經(jīng)存在,則將其庫(kù)存量增加包括總庫(kù)存量和現(xiàn)庫(kù)存量,如果該書(shū)不存在,則在圖書(shū)賬目中增加一種書(shū),總庫(kù)存量和現(xiàn)庫(kù)存量均為1。 */ if(BinarySearch(boo,BuyNum) /如果書(shū)庫(kù)中有此書(shū) boomid.TotNum+; /總庫(kù)存加1 boomid.NowNum+; /現(xiàn)庫(kù)存加1

23、printf(入庫(kù)成功.n); printf(已更改書(shū)庫(kù)中該書(shū)的信息。 %s 的書(shū) %s 作者是 %s ,是 %s ,目前的總庫(kù)存是 %d ,現(xiàn)庫(kù)存是 %d 。n,boomid.num,,boomid.auth,boomid.pub,boomid.TotNum,boomid.NowNum); if(!BinarySearch(boo,BuyNum) int i=0,j=0; while(booi.numj!=0) i+; /for(i=total;imid&total;i-) /插在適合位置 保持有序 /booi=booi-1; /空出插入位置 printf(該書(shū)在書(shū)庫(kù)中

24、不存在。n設(shè)立新書(shū)目,請(qǐng)補(bǔ)全書(shū)的詳細(xì)信息。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);/補(bǔ)全信息 booi.ne*t=NULL; total+;/總量+1 printf(已增加該書(shū)的信息。 %s 的書(shū) %s 作者是

25、%s ,是 %s ,目前的總庫(kù)存是 %d ,現(xiàn)庫(kù)存是 %d 。n,booi.num,,booi.auth,booi.pub,booi.TotNum,booi.NowNum); printf(入庫(kù)成功.n); void Borrow(ook boo,lend &Lin,char BorrowNum,char CaNum) /借閱:如果一種書(shū)的現(xiàn)庫(kù)存量大于零,則借出一本書(shū),將現(xiàn)庫(kù)存量減1,并登記借閱者的圖書(shū)證號(hào)和歸還期限。 Bor *p,*q; LinkList *m,*n; /索引表中圖書(shū)信息和借書(shū)人信息 if(!BinarySearch(boo,BorrowNum)|tota

26、l=0) /如果沒(méi)有找到此書(shū) printf(書(shū)庫(kù)里沒(méi)這書(shū)。n);/如果有這書(shū) if(BinarySearch(boo,BorrowNum) /書(shū)庫(kù)里有 if(boomid.NowNum0) /看現(xiàn)庫(kù)存是否大于0 boomid.NowNum-;/借出一本,少1 if(boomid.ne*t=NULL) /假設(shè)該書(shū)信息下顯示該種書(shū)還沒(méi)被人借過(guò) m=(LinkList *)malloc(sizeof(LNode);/分配 boomid.ne*t=m;/該圖書(shū)信息中的鏈表的第一個(gè)結(jié)點(diǎn) strcpy(m-CardNum,CaNum); m-ne*t=NULL;/后一個(gè)結(jié)點(diǎn)為空 else /如果已經(jīng)有人在

27、借這書(shū)了 m=boomid.ne*t; while(m-ne*t) /遍歷到最后一個(gè)結(jié)點(diǎn) m=m-ne*t; n=(LinkList *)malloc(sizeof(LNode);/分配空間,增加1個(gè)結(jié)點(diǎn) m-ne*t=n; strcpy(n-CardNum,CaNum);/記錄證號(hào) n-ne*t=NULL; int i=0; /定義整型的i記錄下讀者的數(shù)量 for(i=0;ine*t)p=p-ne*t;/遍歷到最后一個(gè)結(jié)點(diǎn) q=(Bor *)malloc(sizeof(Boro);/分配空間 ,用來(lái)記錄索引表中該借書(shū)證的信息 p-ne*t=q; strcpy(q-BNum,BorrowNum

28、); /記錄書(shū)號(hào) printf(輸入借書(shū)日期:); scanf(%s,&q-BorDate);printf(輸入歸還日期:); scanf(%s,&q-RetDate); q-ne*t=NULL; printf(借閱成功.n); break; /找到證了就跳出循環(huán) if(i=Retotal)/如果沒(méi)有這證的信息 strcpy(Lini.um,CaNum); /記錄證號(hào) p=(Bor *)malloc(sizeof(Boro); /分配空間 Lini.ne*t=p; strcpy(p-BNum,BorrowNum); printf(輸入借書(shū)日期:); scanf( %s,&p-BorDate);

29、 printf(輸入歸還日期:); scanf( %s,&p-RetDate); p-ne*t=NULL; Retotal+; /借閱證號(hào)信息總數(shù)加1 printf(借閱成功.n); else printf(借閱失敗.該書(shū)現(xiàn)在庫(kù)存為0.n); void Return(ook boo,lend &Lin,char ReturnNum,char BorrowerNum) / 歸還:注銷對(duì)借閱者的登記,改變?cè)摃?shū)的現(xiàn)存量。 Bor *p,*q; LinkList *m,*n; int flag=0;/設(shè)置一個(gè)參數(shù) if(!BinarySearch(boo,ReturnNum)|!total) /沒(méi)書(shū)

30、printf(書(shū)庫(kù)中無(wú)此書(shū).n); if(BinarySearch(boo,ReturnNum) /有書(shū) m=boomid.ne*t; if(!strcmp(m-CardNum,BorrowerNum) /如果是第一個(gè)借的人還的 boomid.NowNum+; /現(xiàn)庫(kù)存加1 boomid.ne*t=m-ne*t; /刪除結(jié)點(diǎn) free(m); /釋放該結(jié)點(diǎn)的空間空間 else while(m-ne*t) /查找歸還者的借閱者結(jié)點(diǎn) if(!strcmp(m-ne*t-CardNum,BorrowerNum) /如果找到 n=m-ne*t; /n為歸還者的借閱結(jié)點(diǎn) m-ne*t=n-ne*t; /

31、m指向歸還者的借閱結(jié)點(diǎn)的下一結(jié)點(diǎn) free(n); /釋放空間 boomid.NowNum+; /現(xiàn)庫(kù)存加1 break; m=m-ne*t; /在借閱者表里查找借閱者信息 for(int i=0;iBNum,ReturnNum) /如果歸還的是借的第一本書(shū) Lini.ne*t=p-ne*t; /指向下一借書(shū)結(jié)點(diǎn) free(p); /釋放結(jié)點(diǎn)空間 printf(成功歸還該書(shū).n); flag=1; break; else /找不到 while(p-ne*t) /找到歸還書(shū)的借書(shū)結(jié)點(diǎn) if(!strcmp(p-ne*t-BNum,ReturnNum) /如果找到 q=p-ne*t; /q為歸還書(shū)

32、的借書(shū)結(jié)點(diǎn) p-ne*t=q-ne*t; /p指向下一借書(shū)結(jié)點(diǎn) free(q); /釋放空間 printf(成功歸還該書(shū).n); flag=1; break; p=p-ne*t; for(int k=0;kRetotal;k+) if(!Link.ne*t) int j; for(j=k;jCardNum); p=p-ne*t; while(p) printf( %s ,p-CardNum);/在按書(shū)號(hào)查找的函數(shù)里也顯示借了這本書(shū)的借閱者的證號(hào) p=p-ne*t; printf( n); /顯示查找的書(shū)籍的信息 void SearchByName(ook boo) /BY NAME 根據(jù)書(shū)名查

33、找 char SeaName20; printf(輸入想查找的書(shū)的書(shū)名:n); scanf( %s,&SeaName); printf(找到符合該書(shū)名的書(shū)的詳細(xì)信息如下:n); for(int i=0;itotal;i+) if(strcmp(SeaName,)=0)/如果書(shū)名一樣 printf(書(shū)號(hào):%sn書(shū)名:%sn %sn:%sn總庫(kù)存量:%dn現(xiàn)庫(kù)存量:%dnn,booi.num,,booi.auth,booi.pub,booi.TotNum,booi.NowNum); /顯示符合信息的所有書(shū)籍的信息 zhs.cpp#include #include

34、 #include #define MA*SIZE 100 /最大值定義為100 #define LIST_INIT_SIZE 100/圖書(shū)證使用者最大值定義為100 #includewj.hvoid main() ook BoMA*SIZE; lend Lin; int i,j; char BNum20; char um20; for(i=0;iMA*SIZE;i+) for(j=0;j20;j+) Boi.numj=0; printf(-歡 迎 進(jìn) 入 圖 書(shū) 管 理 系 統(tǒng)!-nn); int choice=5; int SearchCho=5,ViewCho=10; while(cho

35、ice!=0) printf(請(qǐng)選擇:nn); printf(ttt1.新 圖 書(shū) 采 編 入 庫(kù) nnn ); printf(ttt2.按 書(shū) 號(hào) 查 找 圖 書(shū) nnn ); printf(ttt3.按 書(shū) 名 查 找 圖 書(shū) nnn); printf(ttt4.借 閱 圖 書(shū) nnn ); printf(ttt5.歸 還 圖 書(shū) nnn ); printf(ttt0.退 出 系 統(tǒng) nnn);/顯示菜單 scanf( %d,&choice); switch(choice) case 1:/采編入庫(kù) printf(請(qǐng)輸入入庫(kù)的書(shū)的書(shū)號(hào):); scanf( %s,BNum); Buy(Bo,BNum); break; case 2:/根據(jù)書(shū)號(hào)查處 printf(請(qǐng)輸入書(shū)號(hào):);/輸入書(shū)號(hào)查找 scanf(

溫馨提示

  • 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)論