




已閱讀5頁(yè),還剩18頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
用戶(hù)登錄系統(tǒng) 2014年6月13日目錄一實(shí)驗(yàn)內(nèi)容3 1.1.實(shí)驗(yàn)?zāi)康?.3 1.2實(shí)驗(yàn)的數(shù)據(jù)結(jié)構(gòu)及流程.3二 實(shí)驗(yàn)驗(yàn)證分析.72.1 LL型調(diào)整驗(yàn)證.7 2.2RR型調(diào)整驗(yàn)證.82.3LR型調(diào)整驗(yàn)證.9 2.4RL型調(diào)整驗(yàn)證.10 三、調(diào)試分析.11 3.1技術(shù)難點(diǎn)及解決方案.113.2印象深刻的調(diào)試錯(cuò)誤及解決方法.11四、測(cè)試結(jié)果12 4.1用戶(hù)登錄.12 4.2用戶(hù)注冊(cè).16 4.3刪除用戶(hù).19 4.4極端數(shù)據(jù)的測(cè)試.21五、實(shí)驗(yàn)總結(jié)22一 實(shí)驗(yàn)內(nèi)容1.1.實(shí)驗(yàn)?zāi)康?這次實(shí)驗(yàn)是讓我們模擬用戶(hù)登錄系統(tǒng)。由于用戶(hù)信息的驗(yàn)證頻率很高,系統(tǒng)必須有效地組織這些用戶(hù)信息,從而快速查找和驗(yàn)證用戶(hù)。另外,系統(tǒng)也會(huì)經(jīng)常添加新用戶(hù)、刪除老用戶(hù)和更新用戶(hù)密碼等操作,因此,系統(tǒng)必須采用動(dòng)態(tài)結(jié)構(gòu),在添加、刪除或更新后,依然能保證驗(yàn)證過(guò)程的快捷。1.2實(shí)驗(yàn)的數(shù)據(jù)結(jié)構(gòu)及流程1.2.1數(shù)據(jù)結(jié)構(gòu) 系統(tǒng)用到了兩個(gè)類(lèi)AVLNode和AVLTree,其中AVLTree的唯一一個(gè)數(shù)據(jù)成員就是指向AVLNode結(jié)點(diǎn)的指針。 1.2.2流程圖 主界面刪除用戶(hù)打印AVL樹(shù)退出修改密碼用戶(hù)注冊(cè)用戶(hù)登錄用戶(hù)名存在嗎用戶(hù)名存在嗎 刪除成功添加成功輸入新密碼YN Y 1.2.3 函數(shù)間的調(diào)用關(guān)系main函數(shù)調(diào)用類(lèi)的成員函數(shù)。插入新結(jié)點(diǎn)時(shí),AVLInsert要根據(jù)平衡因子調(diào)用4個(gè)調(diào)整函數(shù)LL_Rotate、RR_Rotate、LR_Rotate和RL_Rotate函數(shù)。關(guān)鍵代碼:if(a-bf=2)b=a-lchild;if(b-bf=1)p=LL_Rotate(a);elsep=LR_Rotate(a);else/此時(shí)a-bf的值應(yīng)為-2b=a-rchild;if(b-bf=1)p=RL_Rotate(a);elsep=RR_Rotate(a);二 實(shí)驗(yàn)驗(yàn)證分析將用戶(hù)信息存儲(chǔ)在文件中,程序運(yùn)行時(shí)從文件中讀取,并建立 適的二叉樹(shù)。注意:文件中每行輸入三個(gè)字符,第一個(gè)字符為用戶(hù)名,第二個(gè)字符為空格,第三個(gè)字符為密碼。2.1LL型調(diào)整驗(yàn)證 在文件user.txt輸入如下:運(yùn)行程序,并選擇4打印AVLTree,結(jié)果如下圖:2. 2 RR型調(diào)整 在文件user.txt輸入如下:運(yùn)行程序,并選擇4打印AVLTree,結(jié)果如下圖:2.3 RL型調(diào)整 在文件user.txt輸入如下: 運(yùn)行程序,并選擇4打印AVLTree,結(jié)果如下圖:2.4 LR型調(diào)整在文件user.txt輸入如下:運(yùn)行程序,并選擇4打印AVLTree,結(jié)果如下圖:3 調(diào)試分析3.1 技術(shù)難點(diǎn)及解決方案 3.1.1插入新結(jié)點(diǎn)后如果二叉樹(shù)失去平衡,如何找到最小不 平衡子樹(shù)? 在尋找新結(jié)點(diǎn)的插入位置時(shí),始終令指針a指向離插入結(jié)點(diǎn)最近的且平衡因子不為0的結(jié)點(diǎn),同時(shí)令指針f指向結(jié)點(diǎn)*a的父結(jié)點(diǎn),如這樣的結(jié)點(diǎn)不存在,則指針a指向根結(jié)點(diǎn)。由此可知,當(dāng)插入新結(jié)點(diǎn)后如果二叉樹(shù)失去平衡時(shí),指針a所指向的結(jié)點(diǎn)就是最小不平衡子樹(shù)的根。3.1.2新結(jié)點(diǎn)插入時(shí),需修改哪些相關(guān)結(jié)點(diǎn)的平衡因子?如何修改? 失去平衡的最小子樹(shù)的根節(jié)點(diǎn)*a在插入新結(jié)點(diǎn)*s之前,平衡因子必然不為0,必然是離插入結(jié)點(diǎn)最近的且平衡因子不為0的結(jié)點(diǎn)。插入新結(jié)點(diǎn)后,需修改從結(jié)點(diǎn)*a到新結(jié)點(diǎn)路徑上個(gè)結(jié)點(diǎn)的平衡因子。只需從*a的子結(jié)點(diǎn)*b開(kāi)始,順序掃描該路徑上結(jié)點(diǎn)*p,若結(jié)點(diǎn)*s插入在*p的左子樹(shù)上,*p的平衡因子由0變?yōu)?;否則新結(jié)點(diǎn)插入在*p的右子樹(shù)上,*p的平衡因子由0變?yōu)?1.3.1.3 如何判斷以*a為根的子樹(shù)是否失去平衡? 當(dāng)結(jié)點(diǎn)*a的平衡因子為1(或-1)時(shí),若新結(jié)點(diǎn)插入在結(jié)點(diǎn)*a的右(或左)子樹(shù)中,左右子樹(shù)等高,結(jié)點(diǎn)*a的平衡因子為0,則以*a為根的子樹(shù)沒(méi)有失去平衡;新結(jié)點(diǎn)插入在結(jié)點(diǎn)*a的左(或右)子樹(shù)中,則以*a為根的子樹(shù)失去平衡,因?qū)σ?a為根的最小不平衡子樹(shù)進(jìn)行平衡化調(diào)整。3.1.4 失去平衡后,如何確定旋轉(zhuǎn)類(lèi)型并作出相應(yīng)的調(diào)整? 當(dāng)結(jié)點(diǎn)*a的平衡因子為2時(shí),若*a的左孩子*b的平衡因子為1,表示新結(jié)點(diǎn)插入到結(jié)點(diǎn)*b的左子樹(shù)中,應(yīng)采用LL型調(diào)整,否則結(jié)點(diǎn)*b的平衡因子為-1,表示新結(jié)點(diǎn)插入到結(jié)點(diǎn)*b的右子樹(shù)中,應(yīng)采用LR型調(diào)整;當(dāng)結(jié)點(diǎn)*a的平衡因子為-2時(shí),若*a的左孩子*b的平衡因子為1,表示新結(jié)點(diǎn)插入到結(jié)點(diǎn)*b的左子樹(shù)中,應(yīng)采用RL型調(diào)整,否則結(jié)點(diǎn)*b的平衡因子為-1,表示新結(jié)點(diǎn)插入到結(jié)點(diǎn)*b的右子樹(shù)中,應(yīng)采用RR型調(diào)整;3.2 印象深刻的調(diào)試錯(cuò)誤及解決方法 由于該項(xiàng)目需要建3個(gè)文件,類(lèi)的聲明放在AVLTree.h文件中,類(lèi)的實(shí)現(xiàn)放在AVLTree.cpp文件中,main函數(shù)單獨(dú)放在test.cpp文件中,其中在AVLTree.cpp文件中應(yīng)使用#include AVLTree.h導(dǎo)入類(lèi)的聲明文件,而test.cpp只需使用#include AVLTree.h導(dǎo)入類(lèi)的聲明文件即可,而我當(dāng)時(shí)錯(cuò)誤的test.cpp使用#include AVLTree.cpp導(dǎo)入了類(lèi)的實(shí)現(xiàn)文件,所以一直報(bào)錯(cuò)。我在它報(bào)錯(cuò)的位置查了很多次都沒(méi)發(fā)現(xiàn)bug,最后在老師的幫助下才發(fā)現(xiàn)了問(wèn)題所在。 我在插入新結(jié)點(diǎn)時(shí),也一直報(bào)錯(cuò),最后才發(fā)現(xiàn)在AVLNode的構(gòu)造方法中并沒(méi)把成員變量bf初始化為0,而插入新結(jié)點(diǎn)是需要根據(jù)bf的值做相應(yīng)調(diào)整,所以一直報(bào)錯(cuò)。雖然這些都是小Bug,卻花了我大量的時(shí)間查找錯(cuò)誤。 四 測(cè)試結(jié)果下面進(jìn)行的測(cè)試,文件user.txt存儲(chǔ)的初始數(shù)據(jù)為:4.1用戶(hù)登錄運(yùn)行程序,并按提示先選擇4,打印出AVL樹(shù)(這樣做是方便登錄),選擇1,進(jìn)入登錄界面,按提示分別輸入用戶(hù)名和密碼,輸入正確后,截圖如下接著選擇是否更新密碼(只能輸入Y或N),當(dāng)輸入Y并輸入重置密碼后,截圖如下這時(shí),重新打開(kāi)文件user.txt,會(huì)發(fā)現(xiàn)用戶(hù)信息發(fā)生了更新:錯(cuò)誤輸入: 當(dāng)輸入的不是Y或N時(shí),會(huì)輸出“您的選擇有錯(cuò)”4.2用戶(hù)注冊(cè)運(yùn)行程序,并按提示先選擇4,打印出AVL樹(shù)(這樣做是方便登錄),選擇2進(jìn)圖注冊(cè)界面,按提示分別輸入要注冊(cè)的用戶(hù)名和密碼,輸入正確后,如果輸入的用戶(hù)名不存在,注冊(cè)成功,并更新文件user.txt,否則注冊(cè)失敗。用戶(hù)名已存在時(shí):用戶(hù)名不存在時(shí)這時(shí),文件user.txt中的信息為:4.3刪除用戶(hù)運(yùn)行程序,并按提示先選擇4,打印出AVL樹(shù)(這樣做是方便登錄),選擇2進(jìn)圖刪除界面,按提示分別輸入要注冊(cè)的用戶(hù)名,如果輸入的用戶(hù)名不存在,提示“您要?jiǎng)h除的用戶(hù)不存在!”;否則,刪除成功,并更新文件user.txt,4.4極端數(shù)據(jù)的測(cè)試在user.txt中重新輸入以下信息:運(yùn)行程序,并按4打印AVL樹(shù),得到結(jié)果為:5 實(shí)驗(yàn)總結(jié) 通過(guò)兩到三周的編寫(xiě),我們終于用戶(hù)登錄系統(tǒng)。對(duì)于這次實(shí)驗(yàn),心里還是蠻有信心的,前期花了大量的時(shí)間在類(lèi)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 未來(lái)職業(yè)規(guī)劃與CAD工程師考試試題及答案
- 辦公自動(dòng)化與人工智能的融合-提升工作效率的實(shí)踐與思考
- 2024年質(zhì)量工程師資格考試的智能試題及答案
- 2024年提升競(jìng)爭(zhēng)力的Adobe設(shè)計(jì)師試題及答案
- 2024年質(zhì)量工程師資格證的復(fù)習(xí)策略與實(shí)操指導(dǎo)試題及答案
- 商務(wù)禮儀師考試多方位考察試題及答案
- 主動(dòng)出擊2024年Adobe考試試題與答案
- 焊接缺陷分析與質(zhì)量改進(jìn)方案試題及答案
- 四年級(jí)數(shù)學(xué)(上)計(jì)算題專(zhuān)項(xiàng)練習(xí)及答案
- 2024年酒店經(jīng)營(yíng)管理師的競(jìng)爭(zhēng)力分析與試題及答案
- 2025年中國(guó)航天日知識(shí)競(jìng)賽考試題庫(kù)300題(含答案)
- 物業(yè)項(xiàng)目經(jīng)理考題及答案
- T-JSQX 0016-2024 無(wú)人駕駛配送裝備通.用技術(shù)要求
- 電力建設(shè)工程概算定額電氣設(shè)備安裝工程(2018年版)
- 書(shū)信作文(滿(mǎn)分范文)專(zhuān)練-上海新高考英語(yǔ)一輪總復(fù)習(xí)(解析版)
- 老年康體指導(dǎo)職業(yè)教育68課件
- 2025年中考?xì)v史總復(fù)習(xí)-講練測(cè)-主題15 ??键c(diǎn)一句話背記(中國(guó)近現(xiàn)代史)
- DBJ04T 289-2020 建筑工程施工安全資料管理標(biāo)準(zhǔn)
- 2025年巴中發(fā)展控股集團(tuán)限公司招聘高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 機(jī)械精度設(shè)計(jì)基礎(chǔ) 課件 第六章 典型零件精度設(shè)計(jì)與檢測(cè)-3-螺紋
- 2025年浙江寧波舟山港股份有限公司招聘筆試參考題庫(kù)含答案解析
評(píng)論
0/150
提交評(píng)論