freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

西文圖書管理系統(tǒng)-文庫吧

2025-03-24 03:49 本頁面


【正文】 rintf(書號,書名,作者,現(xiàn)存量,總量) if 總量大于零 printf(你想借這本書嗎?輸入 1 借, 0 退出)scanf(1 or 0) if(1) 總量減一elseprintf(此書不存)return216。 借閱圖書模塊 printf(請輸入書號) scanf(書號) if SearchBTree(書號)=true and 總量大于零 { printf(操作成功!) 總量減一 } else printf(操作失敗!書已經(jīng)被借出或不存在這本書) return216。 歸還圖書模塊 printf(請輸入書號) scanf(書號) if SearchBTree(書號)=true printf(操作成功!) 總量加一 else printf(操作失敗!\n)。 return216。 刪除圖書記錄模塊 printf(請輸入書號) scanf(書號) if SearchBTree(書號)=trueprintf(書的具體信息:書號,書名,作者,現(xiàn)存量,總量) printf(輸入 1 刪除這本書) scanf() if(1) { 書號=0 printf(刪除成功!) } else printf(操作失敗!不存在這本書)return216。 顯示圖書狀態(tài)模塊 int i。 for(i=1。i1000。i++) if(總量!=0) printf(書號, 書名, 作者, 現(xiàn)存量, 總量)3.調(diào)試分析(1)本程序最大的問題就是B樹的基本算法的實(shí)現(xiàn),此處難點(diǎn)在于B_樹的結(jié)點(diǎn)的分裂,當(dāng)插入結(jié)點(diǎn)時,判斷結(jié)點(diǎn)中關(guān)鍵字的個數(shù)是否大于規(guī)定的個數(shù),如果大于則要對此結(jié)點(diǎn)進(jìn)行分裂,在分裂時,要改變孩子結(jié)點(diǎn)的parent指針,并且把分裂出的關(guān)鍵字放到該關(guān)鍵字的parent結(jié)點(diǎn)中,然后繼續(xù)判斷是否要分裂,一直到符合要求。在進(jìn)行檢測時,出現(xiàn)了分裂時的錯誤,就是沒有考慮到在分裂結(jié)點(diǎn)時,該結(jié)點(diǎn)的孩子結(jié)點(diǎn)的parent指針的改變,我參考了課本和老師的課件,并與和其他同學(xué)討論后終于通過調(diào)試和改正,測試正確。另外,在老師您在驗(yàn)收我的程序時,指出了我的程序的兩個不足之處,一是沒有按要求以凹入表的形式顯示,二是在刪除圖書記錄后圖書記錄并沒有消失,而僅僅是圖書號變成了—1,因此您只給我的這個程序打了個B,我當(dāng)時心里真的很傷心。這兩個不足之處我在您驗(yàn)收之后很快就改過來了,因?yàn)樵蚝芎唵危旱谝粋€不足之處產(chǎn)生的原因是我沒注意到題目有這個要求,其實(shí)只要在輸出語句中的書名前面加\n\t就行了;第二個不足之處產(chǎn)生的原因是在刪除圖書記錄時應(yīng)將要刪除的圖書號置為0,而我卻將它置為了—,但由于當(dāng)時驗(yàn)收的人太多了,就沒再去麻煩您。(2)算法的時間空間復(fù)雜度分析 由于B樹查找的時間復(fù)雜度為O(Log2N),而程序中多次用到了一重循環(huán),其時間復(fù)雜度為O(n),因此程序的時間復(fù)雜度為O(n),空間復(fù)雜度也為O(n).(3)可改進(jìn)內(nèi)容:利用MFC做一個界面,使界面更加美觀;可嘗試用B+樹代替B_樹,更容易應(yīng)用于文件系統(tǒng)刪除圖書記錄的時候必須先收回所有的書,即要保證現(xiàn)存量和總量相等后方可刪除;采用文件的形式,可以保存圖書狀態(tài)。4.用戶手冊本程序在VC++,按照菜單提示的要求輸入即可。5.測試數(shù)據(jù)及測試結(jié)果測試用例1:測試輸入:見截屏2測試目的:是否能按要求以凹入表的形式顯示正確輸出:見截屏1實(shí)際輸出:見截屏2錯誤原因:沒有注意審題,因此未在輸出語句中的書號前加\n\t當(dāng)前狀態(tài): 已改正測試用例2:測試輸入:見截屏4測試目的:是否能按要求以凹入表的形式顯示正確輸出:見截屏3實(shí)際輸出:見截屏4錯誤原因:編程時粗心,錯誤的將應(yīng)刪除的書號置為了—1.當(dāng)前狀態(tài): 已改正截屏1截屏2截屏3 截屏4 6.源程序清單include includeinclude includeinclude define MAXM 10 /*定義B樹的最大的階數(shù)*/typedef int KeyType。 /*KeyType為關(guān)鍵字類型*/struct BookInfo //書結(jié)構(gòu)體{ int number。 char name[30]。 char author[30]。 int extant。 int total。}。typedef struct node //B樹結(jié)點(diǎn)定義{ int keynum。 /*結(jié)點(diǎn)當(dāng)前擁有的關(guān)鍵字的個數(shù)*/ KeyType key[MAXM]。 /*key[1..keynum]存放關(guān)鍵字,key[0]不用*/ struct node *parent。 /*雙親結(jié)點(diǎn)指針*/ struct node *ptr[MAXM]。 /*孩子結(jié)點(diǎn)指針數(shù)組ptr[0..keynum]*/} BTNode。BTNode *bookp=NULL。typedef struct /*B樹的查找結(jié)果類型*/{BTNode *pt。 /*指向找到的結(jié)點(diǎn)*/ int i。 /*1..m,在結(jié)點(diǎn)中的關(guān)鍵字序號*/ int tag。 /*1:查找成功,O:查找失敗*/} Result。int m。 /*m階B樹,為全局變量*/int Max。 /*m階B樹中每個結(jié)點(diǎn)的至多關(guān)鍵字個數(shù),Max=m1*/int Min。 /*m階B樹中非葉子結(jié)點(diǎn)的至少關(guān)鍵字個數(shù),Min=(m1)/2*/Result s。int Search(BTNode *p,KeyType k) { //在pkey[1..keynum]中查找關(guān)鍵字序號i,使得pkey[i]=kpkey[i+1] int i。 for(i=0。ipkeynum amp。amp。 pkey[i+1]=k。i++) 。 return i。}Result SearchBTree(BTNode *amp。t,KeyType k)//在m階t樹t上查找關(guān)鍵字k,返回查找結(jié)果(pt,i,tag)。若查找成功{ /
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1