資源描述:
《用戶登錄系統(tǒng)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、浙江工業(yè)大學(xué)本科畢業(yè)設(shè)計文獻(xiàn)綜述數(shù)據(jù)結(jié)構(gòu)大型實驗2015/2016(1)實驗題目用戶登錄系統(tǒng)學(xué)生姓名____學(xué)生學(xué)號主要工作樹的結(jié)構(gòu)、框架編寫負(fù)責(zé)人學(xué)生班級任課教師提交日期2016.1.2 計算機(jī)科學(xué)與技術(shù)學(xué)院II浙江工業(yè)大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院大類基礎(chǔ)課程大型實驗報告用戶登錄系統(tǒng)一.實驗題目和要求:【問題描述】在登錄服務(wù)器系統(tǒng)時,都需要驗證用戶名和密碼,如telnet遠(yuǎn)程登錄服務(wù)器。用戶輸入用戶名和密碼后,服務(wù)器程序會首先驗證用戶信息的合法性。由于用戶信息的驗證頻率很高,系統(tǒng)有必要有效地組織這些用戶信息,從而快速查找和驗證用戶。另外,系統(tǒng)也會經(jīng)常會添加新用戶、刪除老用
2、戶和更新用戶密碼等操作,因此,系統(tǒng)必須采用動態(tài)結(jié)構(gòu),在添加、刪除或更新后,依然能保證驗證過程的快速。請采用相應(yīng)的數(shù)據(jù)結(jié)構(gòu)模擬用戶登錄系統(tǒng),其功能要求包括用戶登錄、用戶密碼更新、用戶添加和用戶刪除等?!净疽蟆?.要求自己編程實現(xiàn)二叉樹結(jié)構(gòu)及其相關(guān)功能,以存儲用戶信息,不允許使用標(biāo)準(zhǔn)模板類的二叉樹結(jié)構(gòu)和函數(shù)。同時要求根據(jù)二叉樹的變化情況,進(jìn)行相應(yīng)的平衡操作,即AVL平衡樹操作,四種平衡操作都必須考慮。測試時,各種情況都需要測試,并附上測試截圖;2.要求采用類的設(shè)計思路,不允許出現(xiàn)類以外的函數(shù)定義,但允許友元函數(shù)。主函數(shù)中只能出現(xiàn)類的成員函數(shù)的調(diào)用,不允許出現(xiàn)對其它函數(shù)的
3、調(diào)用。3.要求采用多文件方式:.h文件存儲類的聲明,.cpp文件存儲類的實現(xiàn),主函數(shù)main存儲在另外一個單獨的cpp文件中。如果采用類模板,則類的聲明和實現(xiàn)都放在.h文件中。4.要求源程序中有相應(yīng)注釋;5.不強(qiáng)制要求采用類模板,也不要求采用可視化窗口;6.要求測試?yán)右容^詳盡,各種極限情況也要考慮到,測試的輸出信息要詳細(xì)易懂,表明各個功能的執(zhí)行正確;7.要求采用VisualC++6.0及以上版本進(jìn)行調(diào)試;二.設(shè)計思路:第23頁共25頁浙江工業(yè)大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院大類基礎(chǔ)課程大型實驗報告1.系統(tǒng)總體設(shè)計:采用平衡二叉查找樹(AVL),以用戶名(IP)作為比較的關(guān)鍵
4、詞進(jìn)行插入。平衡二叉查找樹是在二叉搜索樹(BST)的基礎(chǔ)上進(jìn)行了優(yōu)化,使得樹基本達(dá)到平衡。定義內(nèi)部類userNode來存儲AVL樹的節(jié)點信息。2.系統(tǒng)功能設(shè)計:要創(chuàng)建一顆包含用戶名和用戶密碼的二叉樹,要能適應(yīng)頻繁的查找,因為每個用戶名是唯一的,將用戶名(string類型)作為AVL樹的比較參數(shù),這樣就可以實現(xiàn)快速的插入、刪除和查找,重定義userNode類的比較函數(shù)。AVL樹是用模板類實現(xiàn)的,這樣就可以直接比較兩個用戶類,方便了很多。主界面畫樹登錄注冊退出刪除用戶修改密碼圖1系統(tǒng)功能結(jié)構(gòu)圖3.類的設(shè)計://節(jié)點的類classuserNode{private:string
5、name;stringpassword;shortintheight;第23頁共25頁浙江工業(yè)大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院大類基礎(chǔ)課程大型實驗報告public:userNode*left;userNode*right;userNode(conststring&name,conststring&password);userNode(constuserNode&temp);voidsetName(conststring&name);voidsetPassword(conststring&password);stringgetName();stringgetPassword();
6、intgetHeight();voidchangeHeight(constintheight);//改變樹的高度boolcheckName(conststring&name);};//樹的類classtree{private:userNode*root;public:tree();~tree();voidinsert_node(userNode*&t,userNode&temp);voidinsert_node(userNode&temp);//新建一個節(jié)點voidremove(userNode*&r,userNode*&temp);voidremove(userNod
7、e*&temp);//刪除一個節(jié)點voidclear(userNode*t);voidclear();voidprint();voidprint(intindex,userNode*r);//輸出一棵樹voidPrint();voidPrint(ofstream&ofile,userNode*&r);//寫入文件voidrotateL(userNode*&r);//左旋voidrotateR(userNode*&r);//右旋voidrotateDoubleLR(userNode*&r);//左右旋voidrotateDoubleRL(u