




已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
用戶登錄系統(tǒng) 2014年6月13日目錄一實驗內(nèi)容3 1.1.實驗?zāi)康?.3 1.2實驗的數(shù)據(jù)結(jié)構(gòu)及流程.3二 實驗驗證分析.72.1 LL型調(diào)整驗證.7 2.2RR型調(diào)整驗證.82.3LR型調(diào)整驗證.9 2.4RL型調(diào)整驗證.10 三、調(diào)試分析.11 3.1技術(shù)難點(diǎn)及解決方案.113.2印象深刻的調(diào)試錯誤及解決方法.11四、測試結(jié)果12 4.1用戶登錄.12 4.2用戶注冊.16 4.3刪除用戶.19 4.4極端數(shù)據(jù)的測試.21五、實驗總結(jié)22一 實驗內(nèi)容1.1.實驗?zāi)康?這次實驗是讓我們模擬用戶登錄系統(tǒng)。由于用戶信息的驗證頻率很高,系統(tǒng)必須有效地組織這些用戶信息,從而快速查找和驗證用戶。另外,系統(tǒng)也會經(jīng)常添加新用戶、刪除老用戶和更新用戶密碼等操作,因此,系統(tǒng)必須采用動態(tài)結(jié)構(gòu),在添加、刪除或更新后,依然能保證驗證過程的快捷。1.2實驗的數(shù)據(jù)結(jié)構(gòu)及流程1.2.1數(shù)據(jù)結(jié)構(gòu) 系統(tǒng)用到了兩個類AVLNode和AVLTree,其中AVLTree的唯一一個數(shù)據(jù)成員就是指向AVLNode結(jié)點(diǎn)的指針。 1.2.2流程圖 主界面刪除用戶打印AVL樹退出修改密碼用戶注冊用戶登錄用戶名存在嗎用戶名存在嗎 刪除成功添加成功輸入新密碼YN Y 1.2.3 函數(shù)間的調(diào)用關(guān)系main函數(shù)調(diào)用類的成員函數(shù)。插入新結(jié)點(diǎn)時,AVLInsert要根據(jù)平衡因子調(diào)用4個調(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/此時a-bf的值應(yīng)為-2b=a-rchild;if(b-bf=1)p=RL_Rotate(a);elsep=RR_Rotate(a);二 實驗驗證分析將用戶信息存儲在文件中,程序運(yùn)行時從文件中讀取,并建立 適的二叉樹。注意:文件中每行輸入三個字符,第一個字符為用戶名,第二個字符為空格,第三個字符為密碼。2.1LL型調(diào)整驗證 在文件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)后如果二叉樹失去平衡,如何找到最小不 平衡子樹? 在尋找新結(jié)點(diǎn)的插入位置時,始終令指針a指向離插入結(jié)點(diǎn)最近的且平衡因子不為0的結(jié)點(diǎn),同時令指針f指向結(jié)點(diǎn)*a的父結(jié)點(diǎn),如這樣的結(jié)點(diǎn)不存在,則指針a指向根結(jié)點(diǎn)。由此可知,當(dāng)插入新結(jié)點(diǎn)后如果二叉樹失去平衡時,指針a所指向的結(jié)點(diǎn)就是最小不平衡子樹的根。3.1.2新結(jié)點(diǎn)插入時,需修改哪些相關(guān)結(jié)點(diǎn)的平衡因子?如何修改? 失去平衡的最小子樹的根節(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)路徑上個結(jié)點(diǎn)的平衡因子。只需從*a的子結(jié)點(diǎn)*b開始,順序掃描該路徑上結(jié)點(diǎn)*p,若結(jié)點(diǎn)*s插入在*p的左子樹上,*p的平衡因子由0變?yōu)?;否則新結(jié)點(diǎn)插入在*p的右子樹上,*p的平衡因子由0變?yōu)?1.3.1.3 如何判斷以*a為根的子樹是否失去平衡? 當(dāng)結(jié)點(diǎn)*a的平衡因子為1(或-1)時,若新結(jié)點(diǎn)插入在結(jié)點(diǎn)*a的右(或左)子樹中,左右子樹等高,結(jié)點(diǎn)*a的平衡因子為0,則以*a為根的子樹沒有失去平衡;新結(jié)點(diǎn)插入在結(jié)點(diǎn)*a的左(或右)子樹中,則以*a為根的子樹失去平衡,因?qū)σ?a為根的最小不平衡子樹進(jìn)行平衡化調(diào)整。3.1.4 失去平衡后,如何確定旋轉(zhuǎn)類型并作出相應(yīng)的調(diào)整? 當(dāng)結(jié)點(diǎn)*a的平衡因子為2時,若*a的左孩子*b的平衡因子為1,表示新結(jié)點(diǎn)插入到結(jié)點(diǎn)*b的左子樹中,應(yīng)采用LL型調(diào)整,否則結(jié)點(diǎn)*b的平衡因子為-1,表示新結(jié)點(diǎn)插入到結(jié)點(diǎn)*b的右子樹中,應(yīng)采用LR型調(diào)整;當(dāng)結(jié)點(diǎn)*a的平衡因子為-2時,若*a的左孩子*b的平衡因子為1,表示新結(jié)點(diǎn)插入到結(jié)點(diǎn)*b的左子樹中,應(yīng)采用RL型調(diào)整,否則結(jié)點(diǎn)*b的平衡因子為-1,表示新結(jié)點(diǎn)插入到結(jié)點(diǎn)*b的右子樹中,應(yīng)采用RR型調(diào)整;3.2 印象深刻的調(diào)試錯誤及解決方法 由于該項目需要建3個文件,類的聲明放在AVLTree.h文件中,類的實現(xiàn)放在AVLTree.cpp文件中,main函數(shù)單獨(dú)放在test.cpp文件中,其中在AVLTree.cpp文件中應(yīng)使用#include AVLTree.h導(dǎo)入類的聲明文件,而test.cpp只需使用#include AVLTree.h導(dǎo)入類的聲明文件即可,而我當(dāng)時錯誤的test.cpp使用#include AVLTree.cpp導(dǎo)入了類的實現(xiàn)文件,所以一直報錯。我在它報錯的位置查了很多次都沒發(fā)現(xiàn)bug,最后在老師的幫助下才發(fā)現(xiàn)了問題所在。 我在插入新結(jié)點(diǎn)時,也一直報錯,最后才發(fā)現(xiàn)在AVLNode的構(gòu)造方法中并沒把成員變量bf初始化為0,而插入新結(jié)點(diǎn)是需要根據(jù)bf的值做相應(yīng)調(diào)整,所以一直報錯。雖然這些都是小Bug,卻花了我大量的時間查找錯誤。 四 測試結(jié)果下面進(jìn)行的測試,文件user.txt存儲的初始數(shù)據(jù)為:4.1用戶登錄運(yùn)行程序,并按提示先選擇4,打印出AVL樹(這樣做是方便登錄),選擇1,進(jìn)入登錄界面,按提示分別輸入用戶名和密碼,輸入正確后,截圖如下接著選擇是否更新密碼(只能輸入Y或N),當(dāng)輸入Y并輸入重置密碼后,截圖如下這時,重新打開文件user.txt,會發(fā)現(xiàn)用戶信息發(fā)生了更新:錯誤輸入: 當(dāng)輸入的不是Y或N時,會輸出“您的選擇有錯”4.2用戶注冊運(yùn)行程序,并按提示先選擇4,打印出AVL樹(這樣做是方便登錄),選擇2進(jìn)圖注冊界面,按提示分別輸入要注冊的用戶名和密碼,輸入正確后,如果輸入的用戶名不存在,注冊成功,并更新文件user.txt,否則注冊失敗。用戶名已存在時:用戶名不存在時這時,文件user.txt中的信息為:4.3刪除用戶運(yùn)行程序,并按提示先選擇4,打印出AVL樹(這樣做是方便登錄),選擇2進(jìn)圖刪除界面,按提示分別輸入要注冊的用戶名,如果輸入的用戶名不存在,提示“您要刪除的用戶不存在!”;否則,刪除成功,并更新文件user.txt,4.4極端數(shù)據(jù)的測試在user.txt中重新輸入以下信息:運(yùn)行程序,并按4打印AVL樹,得到結(jié)果為:5 實驗總結(jié) 通過兩到三周的編寫,我們終于用戶登錄系統(tǒng)。對于這次實驗,心里還是蠻有信心的,前期花了大量的時間在類
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 消防設(shè)施操作員培訓(xùn)模塊1 職業(yè)道德
- 室外環(huán)境智能監(jiān)測數(shù)據(jù)分析平臺考核試卷
- 體驗式營銷在衛(wèi)生潔具渠道中的應(yīng)用考核試卷
- 跨文化管理在衛(wèi)生陶瓷企業(yè)員工激勵中的應(yīng)用考核試卷
- 智能藥品監(jiān)管與合規(guī)系統(tǒng)構(gòu)建考核試卷
- 中等教育學(xué)校文化氛圍中的性別平等教育考核試卷
- 噴射系統(tǒng)與發(fā)動機(jī)冷卻系統(tǒng)的相互作用考核試卷
- 數(shù)字體溫計材質(zhì)的能效分析考核試卷
- 期末考點(diǎn)突破:任務(wù)型閱讀20篇-外研版(三起)四年級英語下學(xué)期專項訓(xùn)練(含答案解析)
- 化學(xué)平衡 -2025年新高二化學(xué)暑假課(人教版)
- 2024年江門職業(yè)技術(shù)學(xué)院招聘考試真題
- 2024年北京水務(wù)投資集團(tuán)有限公司集團(tuán)系統(tǒng)招聘真題
- 2025年福建省養(yǎng)老護(hù)理員技師預(yù)測題目(含答案)
- 2025年安徽省高考化學(xué)試卷真題(含答案詳解)
- 機(jī)械加工行業(yè)環(huán)保管理制度范文
- 非常規(guī)時段施工安全管理方案
- 南京南站明挖隧道施工方案
- 中國傳媒大學(xué)-電影編劇學(xué)(修訂版)-課件
- 低碳鋼管對接水平固定焊PPT
- LCD工藝原理知識
- 《工作聯(lián)系單》格式
評論
0/150
提交評論