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

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

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

過林吉

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

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

中圖分類號: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 背景

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

2 遞歸算法的特點及形式

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

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

3 TreeView控件的特點

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

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

4 實例程序實現過程

4.1 實例說明

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

4.2 具體實現

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

1) 后臺數據讀取代碼說明

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

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

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

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

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

在主窗體FArea的窗體Load事件中調用方法LoadArea,第一次調用方法時傳入參數1為null;參數2為0,即LoadArea(null,0)。

5 結束語

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

參考文獻:

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

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

主站蜘蛛池模板: 秘书高跟黑色丝袜国产91在线| 亚洲精品视频免费| 国产精品刺激对白在线| 欧美精品H在线播放| 亚洲精品无码av中文字幕| 国产又粗又爽视频| AV在线麻免费观看网站| 国产精品久久久久久久久久98| 亚洲精品国产乱码不卡| 天天综合网站| 国产福利一区二区在线观看| 亚洲中久无码永久在线观看软件 | 亚洲第一精品福利| 制服丝袜国产精品| 天天色综合4| 久久精品人妻中文视频| 手机精品视频在线观看免费| 欲色天天综合网| 色老头综合网| 日本午夜视频在线观看| 黄色网站在线观看无码| 国产第一页免费浮力影院| 亚洲91在线精品| 亚洲第一天堂无码专区| 欧美日韩精品在线播放| 欧美一级在线播放| 99久久精品免费看国产电影| 青草娱乐极品免费视频| 日韩欧美国产精品| 国产精品亚洲一区二区三区在线观看| 国内毛片视频| 久久精品无码专区免费| 伊人91在线| 欧美精品1区| 污网站在线观看视频| 狠狠色丁香婷婷综合| 蜜臀AV在线播放| 国产成人av大片在线播放| 精品国产aⅴ一区二区三区| 91视频99| 在线人成精品免费视频| 久久综合九九亚洲一区 | 国产青榴视频| 亚洲免费福利视频| 91国内在线视频| 国产第一页免费浮力影院| 国产成人在线小视频| 国产一区二区三区在线无码| 亚洲乱亚洲乱妇24p| 色妞www精品视频一级下载| 91精品网站| 亚洲第一区在线| 无码内射在线| 日本亚洲欧美在线| 亚洲成A人V欧美综合天堂| 日韩国产高清无码| 亚洲美女高潮久久久久久久| 国产精品成人一区二区不卡| 国产白浆在线观看| 67194亚洲无码| 成人91在线| 国产不卡在线看| 亚洲国产成人精品无码区性色| 国产成人永久免费视频| 91午夜福利在线观看| 福利小视频在线播放| 一区二区午夜| 国产欧美视频综合二区| 欧美成人h精品网站| 成人在线欧美| 毛片网站观看| 最新国产精品鲁鲁免费视频| 成人在线不卡| 色婷婷狠狠干| 亚洲娇小与黑人巨大交| 国产在线视频二区| 色欲综合久久中文字幕网| 亚洲欧美激情小说另类| 四虎国产永久在线观看| 国产高清在线丝袜精品一区| 99久久99视频| 九九香蕉视频|