西文圖書(shū)管理系統(tǒng)(20210224131127)_第1頁(yè)
西文圖書(shū)管理系統(tǒng)(20210224131127)_第2頁(yè)
西文圖書(shū)管理系統(tǒng)(20210224131127)_第3頁(yè)
西文圖書(shū)管理系統(tǒng)(20210224131127)_第4頁(yè)
西文圖書(shū)管理系統(tǒng)(20210224131127)_第5頁(yè)
已閱讀5頁(yè),還剩23頁(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í),會(huì)談使人敏捷,寫(xiě)作使人精確。培根9 西文圖書(shū)管理系統(tǒng)圖書(shū)管理基本業(yè)務(wù)活動(dòng)包括:對(duì)一本書(shū)的采編入庫(kù)、清除庫(kù)存、借閱和歸還等等。試設(shè)計(jì)一個(gè)圖書(shū)管理系統(tǒng),將上述業(yè)務(wù)活動(dòng)借助于計(jì)算機(jī)系統(tǒng)完成。要求:(1)每種書(shū)的登記內(nèi)容至少包括書(shū)號(hào)、書(shū)名、著者、現(xiàn)存量和總庫(kù)存量等五項(xiàng)。(2)作為演示系統(tǒng),不必使用文件,全部數(shù)據(jù)可以都在內(nèi)存存放。要用B(4階樹(shù))對(duì)書(shū)號(hào)建立索引,以獲得高效率。(3)系統(tǒng)應(yīng)有以下功能:采編入庫(kù)、清除庫(kù)存、借閱、歸還、顯示(以凹入表的形式顯示)等。1 需求分析設(shè)計(jì)一個(gè)西文圖書(shū)管理系統(tǒng),將圖書(shū)管理基本業(yè)務(wù)活動(dòng)如對(duì)一本書(shū)的采編入庫(kù)、清除庫(kù)存、借閱和歸還等等借助于計(jì)算機(jī)系統(tǒng)完成,該圖

2、書(shū)管理系統(tǒng)應(yīng)有以下功能:采編入庫(kù)、清除庫(kù)存、借閱、歸還、顯示等。要求用B( 4階樹(shù))對(duì)書(shū)號(hào)建立索引,以獲得高效率,輸出以凹入表的形式顯示。2設(shè)計(jì)2.1設(shè)計(jì)思想(1)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)邏輯結(jié)構(gòu)設(shè)計(jì):樹(shù)形結(jié)構(gòu)(B擁)存儲(chǔ)結(jié)構(gòu)設(shè)計(jì):鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)選擇B揺這種數(shù)據(jù)結(jié)構(gòu)的原因:與二叉樹(shù)相比,B樹(shù)是一種平衡多叉排序樹(shù)。平衡是指所有葉結(jié)點(diǎn)都在同一層上,從而可避免出現(xiàn)二叉排序樹(shù)那樣的分支退化現(xiàn)象;多叉是指多于二叉,多于二叉的排序樹(shù)將降低二叉樹(shù)高度,從而減少查找數(shù)據(jù)元素時(shí)的比較次數(shù)。由于限制了除根結(jié)點(diǎn)以外的非葉子結(jié)點(diǎn),至少含有M/2個(gè)兒子,確保了結(jié)點(diǎn)的至少利用率,其最底搜索性能為:學(xué)冋是異常珍貴的東西,從任何源泉吸收都

3、不可恥。阿卜日法拉茲=Olog 2(Ff- 0 x log 尋(岸訂)= Onog2(f)xOlog(|)= C*log2()xaog 尋 N _1”=opog 2 AT-log2(妁= tDog2Ar-oc= O2N其中,M為設(shè)定的非葉子結(jié)點(diǎn)最多子樹(shù)個(gè)數(shù),N為關(guān)鍵字總數(shù);所以B擁的性能總是等價(jià)于二分查找(與 M值無(wú)關(guān)),也就沒(méi)有 B樹(shù)平衡的問(wèn)題;因此,B揺是一種動(dòng)態(tài)查找 效率較二叉排序樹(shù)更高的樹(shù)形結(jié)構(gòu)。(2 )算法設(shè)計(jì)算法設(shè)計(jì)的總體設(shè)計(jì)思路為:首先創(chuàng)建一顆4階B揺,然后在此基礎(chǔ)上設(shè)計(jì)添加圖書(shū)、查找圖書(shū)、借閱圖書(shū)、歸還圖書(shū)、顯示圖書(shū)狀態(tài)、刪除圖書(shū)記錄、退出七個(gè)模塊,最后主函數(shù)再用一個(gè)switc

4、h選擇語(yǔ)句來(lái)調(diào)用各個(gè)模塊。各個(gè)模塊要完成的主要功能分別為:添加圖書(shū):可以添加圖書(shū)記錄,按提示依次輸入書(shū)號(hào)、書(shū)名、作者、現(xiàn)存量、總量,會(huì)提示是否繼續(xù)添加。查找圖書(shū):可根據(jù)輸入的書(shū)號(hào)進(jìn)行查詢, 成功找到后會(huì)提示是否想借這本書(shū), 輸入1為借書(shū),輸入0為退出。借閱圖書(shū):可根據(jù)提示輸入相應(yīng)的書(shū)號(hào)進(jìn)行借書(shū)。歸還圖書(shū):可根據(jù)提示輸入相應(yīng)的書(shū)號(hào)歸還圖書(shū)。顯示圖書(shū)狀態(tài):可顯示圖書(shū)管理系統(tǒng)里的所有圖書(shū)狀態(tài)。刪除圖書(shū)記錄:可根據(jù)提示輸入相應(yīng)的書(shū)號(hào)刪除圖書(shū)記錄。主程序的流程圖如下:書(shū)名判斷(2) 函數(shù)接口規(guī)格說(shuō)明int Search(BTNode *p,KeyType k)Result SearchBTree(BTN

5、ode *&t,KeyType k)void In sert(BTNode *&q,int i,KeyType x,BTNode *&ap)void Split(BTNode *&q,BTNode *&ap)void NewRoot(BTNode *& t,BTNode *p,KeyType x,BTNode *ap)void In sertBTree(BTNode *&t, KeyType k, BTNode *&q, i nt i)void Remove(BTNode *p,i nt i)void Successor(BTNode *p,i nt i)void MoveLeft(BTNod

6、e *p,i nt i)void MoveRight(BTNode *p,i nt i)void Combine(BTNode *p,int i)void Restore(BTNode *p,i nt i)int SearchNode(KeyType k,BTNode *p,i nt &i)int RecDelete(KeyType k,BTNode *p)void DeleteBTree(KeyType k,BTNode *root)void addbook() 添加書(shū)void len dbook(i nt book nu mber)/ 借書(shū)void findbook()/ 查找書(shū)void

7、returnbook()/ 還書(shū)void delbook()/ 刪除void bookcount()/ 顯示書(shū)的狀況void menu()/ 主界面int main()/ 主函數(shù)2.3 詳細(xì)設(shè)計(jì) 各個(gè)功能模塊主要算法的偽代碼實(shí)現(xiàn)添加圖書(shū)模塊printf( 請(qǐng)輸入書(shū)號(hào) ) scanf (書(shū)號(hào) ) If SearchBTree( 書(shū)號(hào) )=true printf( 此書(shū)已存在 !)elseprintf( 請(qǐng)輸入書(shū)名 ) scanf( 書(shū)名 )printf( 請(qǐng)輸入作者 ) scanf( 作者 ) printf( 請(qǐng)輸入現(xiàn)存量 ) scanf( 現(xiàn)存量 ) printf( 請(qǐng)輸入總量 ) scanf

8、( 總量 )InsertBTree( 書(shū)號(hào),書(shū)名 , 作者 , 現(xiàn)存量 , 總量 ) printf( 輸入 1 繼續(xù)添加 , 0 返回主界面 ) scanf(1 or 0)return查找圖書(shū)模塊 printf( 請(qǐng)輸入書(shū)號(hào) ) scanf (書(shū)號(hào) ) if SearchBTree( 書(shū)號(hào) )=trueprintf( 成功找到 !)printf( 書(shū)號(hào) , 書(shū)名 , 作者 , 現(xiàn)存量 , 總量 )if 總量大于零printf( 你想借這本書(shū)嗎 ?輸入 1 借, 0 退出) scanf(1 or 0) if(1) 總量減一else printf( 此書(shū)不存 ) return借閱圖書(shū)模塊print

9、f( 請(qǐng)輸入書(shū)號(hào) )閱讀使人充實(shí),會(huì)談使人敏捷,寫(xiě)作使人精確。培根scanf( 書(shū)號(hào) )if SearchBTree( 書(shū)號(hào) )=true and 總量大于零printf( 操作成功 !)總量減一elseprintf( 操作失敗 ! 書(shū)已經(jīng)被借出或不存在這本書(shū) )return歸還圖書(shū)模塊printf( 請(qǐng)輸入書(shū)號(hào) )scanf( 書(shū)號(hào) )if SearchBTree( 書(shū)號(hào) )=trueprintf( 操作成功 !)總量加一elseprintf( 操作失敗 !n);return刪除圖書(shū)記錄模塊printf( 請(qǐng)輸入書(shū)號(hào) )scanf( 書(shū)號(hào) )if SearchBTree( 書(shū)號(hào) )=true

10、printf( 書(shū)的具體信息 :書(shū)號(hào),書(shū)名 ,作者,現(xiàn)存量 ,總量)printf( 輸入 1 刪除這本書(shū) )scanf()if(1)書(shū)號(hào)=0printf( 刪除成功 !)else printf( 操作失敗 ! 不存在這本書(shū) )return顯示圖書(shū)狀態(tài)模塊int i;for(i=1;i4 54 54 5量量存存現(xiàn)現(xiàn)3 43 43 413單選作 書(shū)圖圖圖狀圖,驀閱還書(shū)12 3 4 5 6 7 丿1 21 21 2 號(hào)號(hào)單選 錄 記 書(shū)圖圖圖狀圖 綢閱還書(shū)逼ri&i-OTT詵一作 舊WW書(shū) 書(shū)圖圖圖狀圖 養(yǎng)閱還書(shū)掘12 3 4 5 6 7555666777總量: 總量: 總量:444,555,666

11、,333,現(xiàn)存量:444,現(xiàn)存量:555,現(xiàn)存量:333書(shū)書(shū)Mn-4TTT選作心書(shū) 書(shū)圖圖圖狀S 綢閱還書(shū)掘 f 息as 書(shū)芟人是:2朗號(hào)-xs選作 書(shū)圖圖圖狀圖綢閱還書(shū);555777總量:總量:444,6阪1成入除*W,|12 3 4 5 6 7 1 31 31 3 號(hào)號(hào)y3 -選 錄 記 書(shū)圖圖圖狀圖 綢閱還書(shū)除岀12 3 4 5 6 7閱讀使人充實(shí),會(huì)談使人敏捷,寫(xiě)作使人精確。培根截屏4學(xué)冋是異常珍貴的東西,從任何源泉吸收都不可恥。阿卜日法拉茲豐WW書(shū) 書(shū)圖圖圖狀圖 綢閱還書(shū)矍555666777555666777總量:總量:總量:總量:總量:總量:444,555,666,444,555,

12、666,333,現(xiàn)存量:444,現(xiàn)存量:555,現(xiàn)存量:單選 作.書(shū)圖圖圖狀圖1 2 3 4 5 6 7 P-FP ff12 312 312 3書(shū)書(shū)書(shū)綢閱還書(shū)雷22:息口看, 書(shū)休22 人具:212 3 4 5 6 7單選作 書(shū)圖圖圖狀圖 綢閱還書(shū)陞 uffil12 3 4 5 6 7 Fp1131 一 31 3書(shū)書(shū)書(shū)單選作書(shū)圖圖圖狀圖發(fā)閱還書(shū)燼12 3 4 5 6 7閱讀使人充實(shí),會(huì)談使人敏捷,寫(xiě)作使人精確。培根學(xué)冋是異常珍貴的東西,從任何源泉吸收都不可恥。阿卜日法拉茲6源程序清單#include #include#include #include #include #define MAXM

13、 10/*typedef int KeyType;定義 B- 樹(shù)的最大的階數(shù) */*KeyType 為關(guān)鍵字類型 */struct BookInfo /int number; char name30; char author30;int extant;int total;書(shū)結(jié)構(gòu)體typedef struct node /B-int keynum;KeyType keyMAXM; struct node *parent; /* struct node *ptrMAXM;typedef struct /*B-樹(shù)的查找結(jié)果類型 */樹(shù)結(jié)點(diǎn)定義/* 結(jié)點(diǎn)當(dāng)前擁有的關(guān)鍵字的個(gè)數(shù) */*key1.keyn

14、um存放關(guān)鍵字 ,key0 不用 */雙親結(jié)點(diǎn)指針 */* 孩子結(jié)點(diǎn)指針數(shù)組 ptr0.keynum*/ BTNode;BTNode *bookp=NULL;BTNode *pt; /* int i;/*1.m,int tag; /*1: Result;指向找到的結(jié)點(diǎn) */ 在結(jié)點(diǎn)中的關(guān)鍵字序號(hào) */ 查找成功 ,O: 查找失敗 */int m; /*m階 B- 樹(shù) , 為全局變量 */int Max; /*mint Min; /*m階 B- 樹(shù)中每個(gè)結(jié)點(diǎn)的至多關(guān)鍵字個(gè)數(shù) ,Max=m-1*/階 B- 樹(shù)中非葉子結(jié)點(diǎn)的至少關(guān)鍵字個(gè)數(shù) ,Min=(m-1)/2*/Result s;int Sea

15、rch(BTNode *p,KeyType k) / 在 p-key1.keynum 中查找關(guān)鍵字序號(hào) i, 使得 p-keyi=kkeyi+1int i;for(i=0;ikeynum & p-keyi+1key1.keynum中查找 i, 使得p-keyi=kkeyi+1*/找到待查關(guān)鍵字 */if (i0 & p-keyi=k) /*found=1; elseq 指向 p變成它原來(lái)的孩子結(jié)點(diǎn)i查找成功 */q=p;/ 雙親結(jié)點(diǎn) p=p-ptri;/pr.i=i;/ 關(guān)鍵字序號(hào) if (found=1) /*r.pt=p;r.tag=1;/pt指向找到的結(jié)點(diǎn) p,tag 置為 1else

16、/*查找不成功,返回K的插入位置信息*/r.pt=q;r.tag=0;/pt指向 q,tag 置為 0return r; /*返回 k 的位置 (或插入位置 )*/void Insert(BTNode *&q,int i,KeyType x,BTNode *&ap) / 若有位置 , 將 x 插入到 q-keyi+1,ap 插到 q-ptri+1 中int j;空出一個(gè)位置 */for(j=q-keynum;ji;j-) /*q-keyj+1=q-keyj;q-ptrj+1=q-ptrj;q-keyi+1=x;q-ptri+1=ap;if (ap!=NULL) ap-parent=q;q-ke

17、ynum+;void Split(BTNode *&q,BTNode *&ap) / 無(wú)空位置則分裂 . 將結(jié)點(diǎn) q 分裂成兩個(gè)結(jié)點(diǎn) , 前一半保留 , 后一 int i,s=(m+1)/2;/ 分裂的位置ap=(BTNode *)malloc(sizeof(BTNode); /* 生成新結(jié)點(diǎn) *ap*/ ap-ptr0=q-ptrs; /* 后一半移入 ap*/ for (i=s+1;ikeyi-s=q-keyi; ap-ptri-s=q-ptri;if (ap-ptri-s!=NULL)ap-ptri-s-parent=ap;ap-keynum=q-keynum-s; ap-parent=

18、q-parent;for (i=0;ikeynum-s;i+) /* 修改指向雙親結(jié)點(diǎn)的指針 */ if (ap-ptri!=NULL) ap-ptri-parent = ap;q-keynum=s-1; /*q 的前一半保留 , 修改 keynum*/void NewRoot(BTNode *&t,BTNode *p,KeyType x,BTNode *ap)/ 的根結(jié)點(diǎn) *t,/t=(BTNode *)malloc(sizeof(BTNode); t-keynum=1;t-ptr0=p; t-ptr1=ap;t-key1=x;if (p!=NULL) p-parent=t;if (ap!=

19、NULL) ap-parent=t;t-parent=NULL;void InsertBTree(BTNode *&t, KeyType k, BTNode *&q, int i)半移入新生結(jié)點(diǎn) ap生成含信息 (T,x,ap) 的新 原 t 和 ap 為子樹(shù)指針之間插入關(guān)鍵字k。若引 /* 最終的插入函數(shù) . 在 m 階 t 樹(shù) t 上結(jié)點(diǎn) *q 的 keyi 與 keyi+1 起結(jié)點(diǎn)過(guò)大,則沿雙親鏈進(jìn)行必要的結(jié)點(diǎn)分裂調(diào)整,使t仍是m階t樹(shù)。*/BTNode *ap;int finished,needNewRoot,s;KeyType x;if (q=NULL) /*t是空樹(shù) (參數(shù) q 初

20、值為 NULL)*/NewRoot(t,NULL,k,NULL); /生成僅含關(guān)鍵字 k 的根結(jié)點(diǎn) *telse x=k;ap=NULL;finished=needNewRoot=0; while (needNewRoot=0 & finished=0)Insert(q,i,x,ap); /*將 x 和 ap 分別插入到 q-keyi+1 和 q-ptri+1*/if (q-keynumkeys+1.m,q-ptrs.m *ap*/和 q-recptrs+1.m移入新結(jié)點(diǎn)s=(m+1)/2;Split(q,ap);x=q-keys;if (q-parent) /*q=q-parent;i=Se

21、arch(q, x);else needNewRoot=1;if (needNewRoot=1) /*NewRoot(t,q,x,ap); /*在雙親結(jié)點(diǎn) *q 中查找 x 的插入位置 */根結(jié)點(diǎn)已分裂為結(jié)點(diǎn)*q和*ap*/ 生成新根結(jié)點(diǎn) *t,q 和 ap 為子樹(shù)指針 */void Remove(BTNode *p,int i)/* 從 *p 結(jié)點(diǎn)刪除 keyi 和它的孩子指針 ptri*/ int j;for (j=i+1;jkeynum;j+) /*前移刪除 keyi 和 ptri*/p-keyj-1=p-keyj;p-ptrj-1=p-ptrj; p-keynum-;void Succ

22、essor(BTNode *p,int i)/* 查找被刪關(guān)鍵字 p-keyi( 在非葉子結(jié)點(diǎn)中 ) 的替代葉子結(jié)點(diǎn) */BTNode *q;for (q=p-ptri;q-ptr0!=NULL;q=q-ptr0); p-keyi=q-key1; /* 復(fù)制關(guān)鍵字值 */void MoveRight(BTNode *p,int i)/* 把一個(gè)關(guān)鍵字移動(dòng)到右兄弟中 */int c;BTNode *t=p-ptri;for (c=t-keynum;c0;c-) /*將右兄弟中所有關(guān)鍵字左移一位 */t-keyc+1=t-keyc;t-ptrc+1=t-ptrc;t-ptr1=t-ptr0; /*

23、 從雙親結(jié)點(diǎn)移動(dòng)關(guān)鍵字到右兄弟中 */ t-keynum+;t-key1=p-keyi;t=p-ptri-1; /* 將左兄弟中最后一個(gè)關(guān)鍵字移動(dòng)到雙親結(jié)點(diǎn)中 */ p-keyi=t-keyt-keynum;p-ptri-ptr0=t-ptrt-keynum;t-keynum-;void MoveLeft(BTNode *p,int i)/* 把一個(gè)關(guān)鍵字移動(dòng)到左兄弟中 */int c;BTNode *t;t=p-ptri-1; /* 把雙親結(jié)點(diǎn)中的關(guān)鍵字移動(dòng)到左兄弟中 */ t-keynum+;t-keyt-keynum=p-keyi; t-ptrt-keynum=p-ptri-ptr0;t

24、=p-ptri; /* 把右兄弟中的關(guān)鍵字移動(dòng)到雙親兄弟中 */ p-keyi=t-key1;p-ptr0=t-ptr1;t-keynum-;for (c=1;ckeynum;c+) /* 將右兄弟中所有關(guān)鍵字移動(dòng)一位 */ t-keyc=t-keyc+1;t-ptrc=t-ptrc+1;void Combine(BTNode *p,int i)/* 將三個(gè)結(jié)點(diǎn)合并到一個(gè)結(jié)點(diǎn)中 */int c;BTNode *q=p-ptri; /* 指向右結(jié)點(diǎn) , 它將被置空和刪除 */ BTNode *l=p-ptri-1;l-keynum+; /*l 指向左結(jié)點(diǎn) */ l-keyl-keynum=p-k

25、eyi;l-ptrl-keynum=q-ptr0;for (c=1;ckeynum;c+) /* 插入右結(jié)點(diǎn)中的所有關(guān)鍵字 */ l-keynum+;l-keyl-keynum=q-keyc; l-ptrl-keynum=q-ptrc;for (c=i;ckeynum;c+) /* 刪除父結(jié)點(diǎn)所有的關(guān)鍵字 */p-keyc=p-keyc+1; p-ptrc=p-ptrc+1;p-keynum-;free(q); /* 釋放空右結(jié)點(diǎn)的空間 */void Restore(BTNode *p,int i)中*/*關(guān)鍵字刪除后,調(diào)整B-樹(shù),找到一個(gè)關(guān)鍵字將其插入到p-ptriif (i=0)/*為最左

26、邊關(guān)鍵字的情況 */if (p-ptr1-keynumMin)MoveLeft(p,1);elseCombine(p,1);else if (i=p-keynum) /*為最右邊關(guān)鍵字的情況 */if (p-ptri-1-keynumMin)MoveRight(p,i);elseCombine(p,i);else if (p-ptri-1-keynumMin) /*為其他情況 */MoveRight(p,i);else if (p-ptri+1-keynumMin)MoveLeft(p,i+1);elseCombine(p,i);int SearchNode(KeyType k,BTNode

27、*p,int &i)/*在結(jié)點(diǎn)p中找關(guān)鍵字為k的位置i,成功時(shí)返回1,否則返回0*/if (kkey1) /*k 小于 *p 結(jié)點(diǎn)的最小關(guān)鍵字時(shí)返回 0*/i=0;return 0;else /* 在*p結(jié)點(diǎn)中查找*/i=p-keynum;while (kkeyi & i1)i-;return(k=p-keyi);int RecDelete(KeyType k,BTNode *p)/* 查找并刪除關(guān)鍵字 k*/int i;int found;if (p=NULL)return 0;elseif (found=SearchNode(k,p,i)=1) /*查找關(guān)鍵字 k*/if (p-ptri-

28、1!=NULL)/*若為非葉子結(jié)點(diǎn) */Successor(p,i); /*由其后繼代替它 */RecDelete(p-keyi,p-ptri); /*p-keyi在葉子結(jié)點(diǎn)中 */elseRemove(p,i); /*從*p結(jié)點(diǎn)中位置i處刪除關(guān)鍵字*/elsek*/found=RecDelete(k,p-ptri); /*沿孩子結(jié)點(diǎn)遞歸查找并刪除關(guān)鍵字if (p-ptri!=NULL)if (p-ptri-keynumkeynum=0)p=root;root=root-ptr0;free(p);struct BookInfo book1000;void addbook()/ 添加書(shū)int n

29、=1,num;while(n)printf( 書(shū)號(hào) :); scanf(%d,&num);s=SearchBTree(bookp,num);if(s.tag=1)printf( 此書(shū)已存在 !);elsebooknum.number=num;printf(n書(shū)名 :);scanf(%s,&);printf(n作者 :);scanf(%s,&booknum.author);printf(n現(xiàn)存量 :);scanf(%d,&booknum.extant);printf(n總量 :);scanf(%d,&booknum.total);InsertBTree(bookp,boo

30、knum.number,s.pt,s.i); printf(n 輸入 1 繼續(xù)添加 , 0 返回主界面 ); scanf(%d,&n);void lendbook(int booknumber)/ 借書(shū)int num;if(booknumber=-1) printf( 請(qǐng)輸入書(shū)號(hào) :); scanf(%d,&num); if(booknum.extant) printf( 操作成功 !); booknum.extant-; else printf( 操作失敗 ! 書(shū)已經(jīng)被借出或不存在這本書(shū) .);elseprintf( 操作成功 !n); bookbooknumber.extant-;retu

31、rn;void findbook()/ 查找書(shū)int num,select;printf( 請(qǐng)輸入書(shū)號(hào) :);scanf(%d,&num); s=SearchBTree(bookp,num);if(s.tag) printf( 成功找到 !.n); printf( 書(shū)號(hào) :%d,nt 書(shū)名 :%s, 作者 :%s, 現(xiàn)存量 :%d, 總量:dn,book nu m. nu mber,book nu m. name,book nu m.author,book nu m.exta nt,book num.total);elseprintf( 此書(shū)不存在 .);if(booknum.extant)printf( 你想借這本書(shū)嗎 ?輸入 1 借, 0 退出 .n); scanf(%d,&select);if(select)lendbook(num);elsereturn;elsereturn;void returnbook()/ 還書(shū)int num;printf( 請(qǐng)輸入書(shū)號(hào) :); scanf(%d,&num);if(booknum.number!=-1&booknum.extantbooknum.total) booknum.extant+; printf( 操作成功 !n);else printf( 操作失敗 !n);return;vo

溫馨提示

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