999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

在窗體程序中遞歸算法實現(xiàn)樹形加載地區(qū)信息

2018-01-08 20:09:09過林吉
電腦知識與技術(shù) 2017年36期

過林吉

摘要:該文通過實例,闡述了如何用遞歸算法,配合TreeView控件來實現(xiàn)目錄樹形式加載數(shù)據(jù),完成窗體程序設計中地區(qū)信息的加載,大大提高編程的效率。

關鍵詞:遞歸算法;TreeView控件;節(jié)點;數(shù)據(jù)加載

中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2017)36-0086-02

Abstract: This article describes how to use the recursive algorithm by an example, with the TreeView control to achieve the directory tree form on loading data, complete the form of program design on the area of information loading, greatly improve the efficiency of programming.

Key words: Recursive Algorithm; TreeView Control; Node; Data Loading

1 背景

在程序設計中,經(jīng)常要用到“遞歸”,使用遞歸算法可以把復雜的問題轉(zhuǎn)化為規(guī)模縮小的同類問題的子問題,然后通過遞歸調(diào)用解決。本文將闡述在窗體程序設計中如何通過遞歸算法來實現(xiàn)數(shù)據(jù)加載的過程,從而巧妙解決地區(qū)加載的問題。

2 遞歸算法的特點及形式

遞歸是設計和描述算法的一種有力工具,它在復雜算法的描述中經(jīng)常采用。遞歸的目的是簡化程序設計,使程序易讀,但遞歸也增加了系統(tǒng)開銷。時間上,執(zhí)行調(diào)用與返回的額外工作要占用CPU時間。空間上,隨著每遞歸一次,棧內(nèi)存就多占用一截。相應的非遞歸函數(shù)雖然效率高,但卻比較難編程,而且相對來說可讀性差。

能采用遞歸描述的算法通常有這樣的特征:有反復執(zhí)行的過程,其實就是調(diào)用自己;有跳出反復執(zhí)行過程的條件,即遞歸出口。將一個解決問題轉(zhuǎn)化為解決他的子問題,而他的子問題又變成子問題的子問題,也就是說存在相同的邏輯歸納處理項。可以使用“歸納法”來實現(xiàn)遞歸問題,故遞歸問題的一般解決形式如圖1所示。

3 TreeView控件的特點

TreeView控件用來顯示信息的分級視圖,如Windows里的資源管理器的目錄。TreeView控件中的各項信息都有一個與之相關的Node對象。TreeView顯示Node對象的分層目錄結(jié)構(gòu),每個Node對象均由一個Label對象和其相關的位圖組成。TreeView控件一般用來顯示文件和目錄結(jié)構(gòu)、文檔中的類層次、索引中的層次和其他具有分層目錄結(jié)構(gòu)的信息,可以一目了然地表示某種層次關系。

TreeView控件數(shù)據(jù)源綁定時,樹節(jié)點信息存儲和加載的方法是:創(chuàng)建一個數(shù)據(jù)表,表中的字段根據(jù)實際業(yè)務確定,其中一個字段保存節(jié)點的編號,記錄當前節(jié)點的標識。另外一個字段來保存節(jié)點在樹形控件上要顯示的信息,可以設置給Node對象的Text屬性。此外還需要一個字段保存當前節(jié)點的父節(jié)點編號。這兩個字段組合起來, 可以記錄樹上節(jié)點間的層次結(jié)構(gòu),相當于一個“鏈表”。這樣,通過遞歸算法生成樹形結(jié)構(gòu)目錄,可以大大提高編程的效率。

4 實例程序?qū)崿F(xiàn)過程

4.1 實例說明

筆者所舉實例的效果是:從后臺數(shù)據(jù)庫中把地區(qū)信息的數(shù)據(jù)檢索出來放到TreeView視圖控件中構(gòu)建一個樹型目錄,客戶端用戶可以操作該樹型目錄。后端數(shù)據(jù)庫服務器使用SQL Server, 開發(fā)語言選用C#語言。表1是地區(qū)(Area)數(shù)據(jù)表中字段的定義。

4.2 具體實現(xiàn)

實例中只使用一個TreeView控件,涉及控件的操作不是本文闡述的重點。以下具體闡述如何使用遞歸來實現(xiàn)如圖2所示的加載地區(qū)效果。

1) 后臺數(shù)據(jù)讀取代碼說明

在主窗體FArea中創(chuàng)建一個方法(ExcuteDataTable),用來從后臺數(shù)據(jù)庫中取得需要的數(shù)據(jù),方法有兩個參數(shù),參數(shù)1保存用戶所需數(shù)據(jù)執(zhí)行的sql語句;參數(shù)2保存sql語句中所用到的參數(shù)化對象。ExcuteDataTable方法的代碼如圖3所示。

2) 遞歸算法讀取數(shù)據(jù)并加載到TreeVie控件的節(jié)點

在主窗體FArea中再創(chuàng)建一個方法(LoadArea),方法有兩個參數(shù),參數(shù)1保存父節(jié)點對象;參數(shù)2保存父節(jié)點對象的編號。

方法的作用:從后臺數(shù)據(jù)庫中取得所有地區(qū)的數(shù)據(jù)信息,循環(huán)取得每條記錄。每條記錄包含三個字段,地區(qū)編號(ar_id)、地區(qū)名稱(ar_name)、父節(jié)點編號(ar_uid)。每條記錄用一個節(jié)點對象(TreeNode)來存儲,同時對該條記錄中父節(jié)點編號進行判斷,如果父節(jié)點編號為0,說明這條記錄表示是省份信息,這些節(jié)點是根節(jié)點直接加到TreeView的根節(jié)點目錄中,否則的話就加到父節(jié)點目錄下,作為父節(jié)點的子節(jié)點。然后遞歸調(diào)用方法(LoadArea),將當前節(jié)點對象(TreeNode)以及當前節(jié)點地區(qū)編號(ar_id)作為參數(shù)傳入方法。LoadArea方法的代碼如圖4所示。

3) 主窗體FArea的Load事件中調(diào)用方法LoadArea

在主窗體FArea的窗體Load事件中調(diào)用方法LoadArea,第一次調(diào)用方法時傳入?yún)?shù)1為null;參數(shù)2為0,即LoadArea(null,0)。

5 結(jié)束語

在上述實例中,要將數(shù)據(jù)庫中數(shù)據(jù)在樹型控件中表示,直接用編程實現(xiàn)比較復雜,而采用遞歸方法生成樹型視圖,可以提高編程效率。并且要注意的是,節(jié)點標識號必須唯一,可將該字段設置為主鍵。

參考文獻:

[1] 楊祖龍, 吳國平. 遞歸算法在樹型視圖中的應用[J]. 計算機工程, 2002(11):139-141.

[2] 傳智播客高教產(chǎn)品研發(fā)部. C#程序設計基礎入門教程[M]. 北京: 人民郵電出版社, 2014.

主站蜘蛛池模板: 亚洲AV无码精品无码久久蜜桃| 日韩一区精品视频一区二区| 国产成人一区免费观看| 午夜福利无码一区二区| 日日碰狠狠添天天爽| 91福利一区二区三区| 巨熟乳波霸若妻中文观看免费| 国产亚洲精品资源在线26u| 欧美a√在线| 欧美精品1区2区| 久久精品66| 免费无码一区二区| 精品少妇人妻一区二区| 狠狠综合久久久久综| 中文无码伦av中文字幕| 亚洲精品无码抽插日韩| 97综合久久| 久久男人视频| 国产激情无码一区二区免费| WWW丫丫国产成人精品| 新SSS无码手机在线观看| 亚洲品质国产精品无码| 久久精品女人天堂aaa| 午夜视频免费试看| 国产精品冒白浆免费视频| 午夜国产精品视频黄| 久久伊人色| 亚洲欧美激情另类| 色偷偷男人的天堂亚洲av| 91久久偷偷做嫩草影院免费看| 91色国产在线| 国产美女人喷水在线观看| 天堂在线亚洲| 国模极品一区二区三区| 精品无码一区二区在线观看| 国产女同自拍视频| 国产视频久久久久| 五月婷婷丁香综合| 97精品久久久大香线焦| 97成人在线视频| 久久综合九色综合97网| 国产三级精品三级在线观看| 中文字幕永久在线看| 日韩a级毛片| 日本草草视频在线观看| 国产成人调教在线视频| 2022精品国偷自产免费观看| 九色视频在线免费观看| 亚洲欧美成人综合| 综合色88| 中国成人在线视频| 午夜国产精品视频| 欧美色综合网站| 国产极品美女在线观看| 久久久久无码精品| 在线国产91| 国产精品开放后亚洲| 91麻豆精品国产高清在线| 中文字幕日韩丝袜一区| 国产鲁鲁视频在线观看| 日a本亚洲中文在线观看| 亚洲欧美天堂网| 亚洲日韩精品伊甸| 99这里只有精品在线| 亚洲有码在线播放| 亚洲国产中文精品va在线播放| 天天色综合4| 国产欧美在线视频免费| 亚洲无线国产观看| 午夜激情婷婷| 久久久亚洲色| 国产二级毛片| 国产精品永久不卡免费视频 | 国产激情无码一区二区APP | 亚洲区视频在线观看| 国产视频大全| 91无码视频在线观看| 手机在线免费毛片| 日本草草视频在线观看| 国产95在线 | 欧美无遮挡国产欧美另类| 欧美激情视频一区二区三区免费|