• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    樹形結(jié)構(gòu)數(shù)據(jù)輸入輸出控件的設(shè)計與實現(xiàn)

    2011-07-25 06:49:00李俊飛趙衛(wèi)東
    計算機工程與設(shè)計 2011年9期
    關(guān)鍵詞:結(jié)構(gòu)

    李俊飛, 陳 皓, 趙衛(wèi)東

    (山東科技大學信息科學與工程學院,山東青島266510)

    0 引 言

    在現(xiàn)實世界中存在大量的具有樹形關(guān)系的數(shù)據(jù),譬如設(shè)備備件分類、計算機資源管理器、各種社會組織機構(gòu)等[1]。Windows環(huán)境下很多開發(fā)工具都提供了一個功能強大的單數(shù)據(jù)源敏感的樹形控件TreeView,該控件顯示樹形數(shù)據(jù)清楚且沒有級數(shù)限制,輸入輸出數(shù)據(jù)簡單靈活[2],因此在Windows環(huán)境中被普遍應(yīng)用[3]。但TreeView控件的輸出樹形數(shù)據(jù)需要大量代碼支持,而且每次TreeView輸出樹形數(shù)據(jù)都要編寫重復(fù)的代碼;TreeView要輸入類似廠家|設(shè)備|型號這樣有父級節(jié)點的完整信息的數(shù)據(jù)時實現(xiàn)起來比較困難;采用逐級輸入的方法,上級數(shù)據(jù)約束下級數(shù)據(jù)且當樹形數(shù)據(jù)深度不可預(yù)知或不確定時需要編寫大量復(fù)雜的代碼,一旦輸入錯誤就要返回出錯位置重新輸入,操作繁瑣且容易產(chǎn)生人為錯誤;此外控件也不支持多數(shù)據(jù)源輸入輸出。對此,本文在.Net開發(fā)平臺下設(shè)計并實現(xiàn)了一種樹形結(jié)構(gòu)數(shù)據(jù)輸入輸出控件來解決以上問題。

    1 樹形結(jié)構(gòu)數(shù)據(jù)輸入輸出控件的整體設(shè)計

    1.1 樹形結(jié)構(gòu)數(shù)據(jù)輸入輸出控件的功能要求

    樹形結(jié)構(gòu)數(shù)據(jù)輸入輸出控件是一個數(shù)據(jù)敏感的樹控件。通過創(chuàng)建幾個屬性,屬性中需要填寫的是與數(shù)據(jù)庫相關(guān)的一些表信息,通過配置這些屬性就可以根據(jù)樹形結(jié)構(gòu)數(shù)據(jù)生成相應(yīng)的目錄樹。該控件能夠輸入包含所有父節(jié)點信息的完整信息。在.Net平臺下TreeView是作為一個獨立的輸出控件使用,輸入需要借助其它控件共同完成,即需要將樹形結(jié)構(gòu)數(shù)據(jù)輸出控件結(jié)合其它控件來共同實現(xiàn)樹形結(jié)構(gòu)數(shù)據(jù)完整信息的輸入。在整個開發(fā)過程中主要使用到3個自定義類:樹形結(jié)構(gòu)數(shù)據(jù)輸入輸出類、單表樹形結(jié)構(gòu)數(shù)據(jù)輸出類和多表樹形結(jié)構(gòu)數(shù)據(jù)輸入輸出類,運用于代碼中分別為ComboTreeView類、DBLeveltreeview類和DBMTtreeview類。

    1.2 樹形數(shù)據(jù)數(shù)據(jù)庫表結(jié)構(gòu)的設(shè)計

    樹形結(jié)構(gòu)數(shù)據(jù)在數(shù)據(jù)庫表中的存儲主要有兩種方式。一種是單表形式存儲,單表有一個表示樹形結(jié)構(gòu)數(shù)據(jù)的上下級關(guān)系的字段[4],通過本表中一個字段來將上級數(shù)據(jù)與下級數(shù)據(jù)關(guān)聯(lián)在一起。單表結(jié)構(gòu)的好處是樹節(jié)點可以無限增加且等級數(shù)可以不相同[5];另一種是多表形式存儲,這些表都是按照一定的順序兩兩關(guān)聯(lián)的且是通過外鍵將樹形結(jié)構(gòu)數(shù)據(jù)關(guān)聯(lián)起來,這些數(shù)據(jù)從第一個表到最后一個表都是一對多的關(guān)系,這樣每個表存儲的數(shù)據(jù)信息單一清晰,表中的信息有明確的意義[6]。以備件編目為例,單表和多表的結(jié)構(gòu)設(shè)計分別如圖1和圖2所示。

    圖1 備件編目單表結(jié)構(gòu)

    圖2 備件編目多表結(jié)構(gòu)

    備件編目單表結(jié)構(gòu)中編目編碼是唯一標識備件的字段;編目名稱是樹節(jié)點要顯示的文本;所屬上級編目編碼是標識該樹節(jié)點父節(jié)點的字段;等級即該備件位于整個編目的深度,所處在TreeView中的級數(shù);是否是葉子節(jié)點即備件是否還分小的備件,樹節(jié)點是否葉子節(jié)點;組合名稱是備件的完整名稱,備注記錄備件附加信息。

    備件編目多表結(jié)構(gòu)包括備件分類表、備件廠家表、備件類別表和備件型號表4個表。這4個表順次通過分類編碼、廠家編碼和類別編碼相連接,備件分類表中的備件編碼是唯一標識備件分類的字段,分類名稱是樹節(jié)點要顯示的分類名稱;備件廠家表的廠家編碼是唯一標識廠家的字段,廠家是樹節(jié)點要顯示的廠家名稱;備件類別表的類編編碼是唯一標識類別的字段,類別字段是樹節(jié)點要顯示的類別名稱;備件型號表的型號編碼是唯一標識型號的字段,型號字段是樹節(jié)點要顯示的型號名稱。

    2 樹形結(jié)構(gòu)數(shù)據(jù)輸出控件的設(shè)計

    樹形結(jié)構(gòu)數(shù)據(jù)輸出控件在繼承了 TreeView控件的基礎(chǔ)上,添加一些屬性,這些屬性的設(shè)置是填寫數(shù)據(jù)庫相關(guān)表的信息,將TreeView和自定義的方法封裝在控件中,不需要再編寫將樹形結(jié)構(gòu)數(shù)據(jù)形成樹目錄的代碼[7]。單表和多表樹形結(jié)構(gòu)數(shù)據(jù)輸出控件的開發(fā)是不一樣的,分別如圖3和圖4所示。

    圖3 單表樹形結(jié)構(gòu)數(shù)據(jù)輸出控件類圖

    圖4 多表樹形結(jié)構(gòu)數(shù)據(jù)輸出控件類圖

    單表樹形結(jié)構(gòu)數(shù)據(jù)輸出控件類圖中的DBLeveltree-view類繼承自TreeView類,且調(diào)用ImageList類來標注樹節(jié)點及樹節(jié)點是否選中的狀態(tài)。Tablename、DataTableName、DataTableNo、Uppdatatable、Filter、Startupper是DBLeveltreeview類中的自定義屬性,都是字符型的,依次是數(shù)據(jù)庫表的名稱、樹要顯示的字段、唯一標識表記錄的字段和唯一標識所屬上級節(jié)點的字段、樹篩選的條件、0級樹節(jié)點所屬上級節(jié)點的字段即賦給的一個初始值。這些屬性可以將數(shù)據(jù)庫表信息傳入DBLeveltreeview控件中,DBLeveltreeview控件根據(jù)這些信息將樹形結(jié)構(gòu)數(shù)據(jù)以樹目錄的形式表示出來,即DBLeveltreeview就是一個數(shù)據(jù)敏感的自定義樹控件,只需填寫一下數(shù)據(jù)庫表信息就可以以樹形式顯示樹形結(jié)構(gòu)數(shù)據(jù)。其中如果沒有篩選條件Filter可以不填,其它屬性必須填寫,不然控件不能正常顯示樹目錄[8]。CreateTree()、AddFunTree()和 DtFunTree()是 DBLeveltreeview 類的方法,依次是創(chuàng)建0級樹節(jié)點并調(diào)用AddFunTree()方法產(chǎn)生下級樹節(jié)點、一個遞歸函數(shù)遞歸產(chǎn)生0級以下的樹節(jié)點、為創(chuàng)建樹形方法提供datatable。CreateTree()采用的是深度優(yōu)先遍歷添加樹節(jié)點的遞歸算法[9],首先創(chuàng)建樹節(jié)點0級節(jié)點然后調(diào)用AddFunTree()函數(shù),對該節(jié)點以下節(jié)點遞歸添加[10]。

    多表樹形結(jié)構(gòu)數(shù)據(jù)輸出控件類圖中DBMTTreeview類同樣繼承自TreeView類且調(diào)用ImageList類[11]用來標注樹節(jié)點及樹節(jié)點是否選中的狀態(tài)。Tablename、DBTableName、DBTableno、DBForkeyfiel和Filter是DBMTTreeview類的自定義屬性,依次是數(shù)據(jù)庫表的名稱、樹要顯示的字段、唯一標識表記錄的字段、兩個表之間關(guān)聯(lián)的外鍵字段和樹篩選的條件。由于要顯示表都要填寫這些屬性,所以這些屬性設(shè)置的都是字符數(shù)組,且需要按表中數(shù)據(jù)在樹形結(jié)構(gòu)數(shù)據(jù)中的級數(shù)順次填寫。只有第一個表沒有外鍵可以不填,同樣如果沒有篩選條件Filter可以不填,其它的屬性必須填寫,否則樹目錄不能正常顯示,每個屬性數(shù)組的填寫都是用回車隔開的即有多少個表生成的數(shù)組長度就為多少。createviewname()是DBMTTreeview類的自定義方法,用來創(chuàng)建三級樹節(jié)點即顯示前3個表的表信息,首先判斷屬性數(shù)組長度是否小于3,如果小于則成生1級或2級樹,節(jié)點完全展開,如果不小于則只展開1級樹節(jié)點,第2級和3級的節(jié)點都疊加,然后每點擊一級節(jié)點生成當前選中樹節(jié)點深度加2級的樹節(jié)點,3級及以后的樹節(jié)點的形成代碼在事件treeView_AfterSelect中,主要算法與createviewname()方法中的算法類似,獲取當前選中節(jié)點深度加1與表的個數(shù)比較,如果小于且當前選中節(jié)點的子節(jié)點個數(shù)為0則獲取數(shù)組為當前節(jié)點加1的那組屬性即獲取第當前節(jié)點加2個表的信息生成當前節(jié)點加1級樹節(jié)點否則樹節(jié)點已經(jīng)生成不必執(zhí)行生成樹節(jié)點的代碼。然后判斷當前樹節(jié)點深度是否等于表的個數(shù)減2,如果等于則不必再執(zhí)行當前節(jié)點加2的樹節(jié)點生成代碼,否則執(zhí)行。每點擊一次樹節(jié)點就進行一次判斷,已經(jīng)生成的樹節(jié)點不必再重新生成,這樣可以不用將所有樹形結(jié)構(gòu)數(shù)據(jù)全部讀出來,減少了讀取數(shù)據(jù)庫的時間,而且不用在代碼中獲取表的個數(shù),來遞歸生成完整的樹,減少了算法復(fù)雜度[12]。

    3 樹形結(jié)構(gòu)數(shù)據(jù)輸入控件的設(shè)計

    樹形結(jié)構(gòu)數(shù)據(jù)輸入控件是在樹形結(jié)構(gòu)數(shù)據(jù)輸出控件基礎(chǔ)上與其它控件相結(jié)合來實現(xiàn)的[13]。以ComboBox與單表樹形結(jié)構(gòu)數(shù)據(jù)輸出控件結(jié)合為例,設(shè)計的樹形結(jié)構(gòu)數(shù)據(jù)輸入控件類圖如圖5所示。

    ToolStripControlHost、ToolStripDropDown和ComboBox都是.Net中自帶的類,DBLeveltreeview和ComboTreeView是自定義類。自定義類ComboTreeView繼承自ComboBox,由Combo-TreeView類調(diào)用DBLeveltreeview類來顯示樹形結(jié)構(gòu)數(shù)據(jù)。且調(diào)用了ToolStripDropDown類和ToolStripControlHost類,Tool-StripControlHost類用來承載 DBLeveltreeview控件,Tool-StripDropDown類是當單擊ComboTreeView控件時用來顯示單表樹形結(jié)構(gòu)數(shù)據(jù)輸出控件生成的樹目錄[14]。treeView、count和CombinationName是ComboTreeView類的自定義屬性,treeView是調(diào)用的DBLeveltreeview類作為ComboTreeView的一個屬性,treeView屬性中包含了DBLeveltreeview類中所有可編輯屬性,當然也包括DBLeveltreeview類的自定義屬性,count是表的個數(shù),CombinationName是數(shù)據(jù)庫表中顯示組合名稱的字段名稱,方法ComboBoxTreeView()是ComboBoxTreeView控件的構(gòu)造函數(shù)的重載,傳遞參數(shù)Tablename,DataTableNo的信息,用于獲取選中節(jié)點的組合名稱的信息。

    圖5 單表樹形結(jié)構(gòu)數(shù)據(jù)輸入控件類圖

    控件輸入組合名稱的事件是treeView_AfterSelect,觸發(fā)事件后顯示組合名稱的核心代碼如下:

    if(IsLeaf==true){//判斷是否是葉子節(jié)點

    this.ValueMember=e.Node.Name;//ComboBox的ValueMember的值是選中樹節(jié)點的DataTableNo,即是備件編目編碼

    string sql="select"+CombinationName+"from"+Tablename+"where"+DataTableNo+"="+e.Node.Name+"";//獲取選中樹節(jié)點的組合名稱

    dbOperate.RunSQL(sql,ref ds);

    this.Text=ds.Tables[0].Rows[0][0]as string;//ComboBox的文本框中輸入讀取的組合名稱

    dropDown.Close();

    }

    多表樹形結(jié)構(gòu)數(shù)據(jù)輸入控件的設(shè)計與單表類似,就是將圖5中的實體DBLeveltreeview替換為DBMTTreeview。因為表中沒有組合名稱字段,所以方法ComboBoxTreeView()不需要傳遞參數(shù),觸發(fā)treeView_AfterSelect事件后顯示組合名稱的核心代碼如下[15]:

    if(Count==TreeView.SelectedNode.Level+1){//選中的為葉子節(jié)點

    for(int i=0;;i++){

    if(tn.Parent==null){//節(jié)點是否是0級節(jié)點

    cbtext=tn.Text+"|"+cbtext;

    break;//組合名稱賦給字符串以后跳出循環(huán)

    }

    else{

    cbtext=tn.Text+"|"+cbtext;//循環(huán)讀取樹節(jié)點的名稱然后用"|"隔開,賦值給一個字符串

    tn=tn.Parent;//將當前節(jié)點的父節(jié)點賦值給樹節(jié)點tn

    }

    }

    cbtext=cbtext.Substring(0,cbtext.Length-1);

    this.Text=cbtext;//將組合名稱輸入到文本框中

    dropDown.Close();

    }

    代碼實現(xiàn)的功能是當單擊葉子節(jié)點時,獲取葉子節(jié)點的完整信息并將完整信息輸入到ComboBox文本框中。葉子節(jié)點及其父節(jié)點是由“|”依次隔開的,單表組合名稱是存儲在數(shù)據(jù)庫中的而多表的組合名稱是由葉子節(jié)點遍歷其父節(jié)點得到的。

    4 樹形結(jié)構(gòu)數(shù)據(jù)輸入輸出控件的實現(xiàn)

    樹形結(jié)構(gòu)數(shù)據(jù)輸入輸出控件跟其它.Net中自帶控件一樣,從工具箱中拖入窗體,配置屬性。以單表樹形結(jié)構(gòu)數(shù)據(jù)輸入輸出控件為例,將ComboTreeView的連接數(shù)據(jù)庫的自定義屬性取值添加到窗體初始化控件方法中,控件在窗體內(nèi)運行時的活動圖如圖6所示。

    當DBLeveltreeview控件的屬性 Tablename、DataTable-Name、DataTableNo和Uppdatatable中有一個為null時,就會生成一個沒有任何樹形數(shù)據(jù)的樹控件 ;當前面屬性都不為null且CombinationName為null時就會生成一個樹形數(shù)據(jù)正確顯示但關(guān)閉不了下拉項而且不能在ComboTreeView文本中顯示組合名稱的控件;當5個屬性都不為null時就會生成一個樹形數(shù)據(jù)顯示正確,能關(guān)閉樹控件且可在ComboTreeView文本中顯示組合名稱的樹形結(jié)構(gòu)數(shù)據(jù)輸入輸出控件;當選中節(jié)點為非葉子節(jié)點時,單擊選中節(jié)點,雙擊折疊或展開樹節(jié)點,選中節(jié)點為葉子節(jié)點時單擊在ComboTreeView文本中顯示組合名稱,然后關(guān)閉樹控件。

    動態(tài)綁定數(shù)據(jù)成功運行后生成的樹形結(jié)構(gòu)數(shù)據(jù)輸入輸出控件如圖7所示。

    圖6 樹形結(jié)構(gòu)數(shù)據(jù)輸入輸出控件活動

    圖7 單表樹形結(jié)構(gòu)數(shù)據(jù)輸入輸出控件生成效果

    樹形結(jié)構(gòu)數(shù)據(jù)輸入輸出控件輸出樹形結(jié)構(gòu)數(shù)據(jù)信息的形式同原有系統(tǒng)自帶樹形控件一樣,只是不需要再編寫大量生成樹形結(jié)構(gòu)數(shù)據(jù)的代碼,只需輸入幾個相關(guān)的自定義屬性,然后借助ComboBox控件,樹形結(jié)構(gòu)數(shù)據(jù)輸入輸出控件顯示的樹形結(jié)構(gòu)數(shù)據(jù)顯示在ComboBox下拉項中,并且可將完整的樹形結(jié)構(gòu)數(shù)據(jù)信息輸入到ComboBox的文本框。只有葉子節(jié)點能被選中填入文本框中,其它節(jié)點選中后只能折疊或展開,選中葉子節(jié)點后才能將值填入ComboBox的文本框中,輸入的形式為各級節(jié)點有“|”隔開,例如上圖的輸入為。這樣樹形結(jié)構(gòu)數(shù)據(jù)層次清晰,數(shù)據(jù)之間的關(guān)系一目了然,錄入完整信息只需點擊葉子節(jié)點,就可以一步到位,不需要根據(jù)數(shù)據(jù)之間的關(guān)系逐個錄入。

    多表樹形結(jié)構(gòu)數(shù)據(jù)輸入輸出控件的流程與單表的類似,只是判斷條件略有不同。多表需要判斷各個表的信息是否填寫完整即必須填的屬性是否都按順序填寫好。如果沒有則只生成從第一個表開始屬性填寫完整的樹形結(jié)構(gòu)數(shù)據(jù),從不完整的表信息以下所有的樹形結(jié)構(gòu)數(shù)據(jù)都不顯示;如果第一個表屬性就沒填寫完整則只能生成沒有任何數(shù)據(jù)的空樹;如果屬性都填寫完整則生成的樹形結(jié)構(gòu)數(shù)據(jù)輸入輸出控件的效果和圖7是一樣的。

    5 結(jié)束語

    雖然樹形結(jié)構(gòu)數(shù)據(jù)輸入輸出有很多方式,而且大多數(shù)開發(fā)平臺也都支持樹形結(jié)構(gòu)數(shù)據(jù)的輸入輸出,但是它們在實際項目應(yīng)用中所表現(xiàn)出來的局限性也是顯而易見的。樹形結(jié)構(gòu)數(shù)據(jù)的輸入輸出通常需要編寫大量的代碼來支持。大量的重復(fù)勞動且代碼質(zhì)量較低,如多數(shù)據(jù)源樹形結(jié)構(gòu)數(shù)據(jù)顯示、樹形結(jié)構(gòu)數(shù)據(jù)完整信息的輸入等問題開發(fā)平臺中自帶的控件也很難解決,因此開發(fā)解決上述問題一種數(shù)據(jù)敏感的樹形結(jié)構(gòu)數(shù)據(jù)輸入輸出控件是非常必要的。本文給出的這套設(shè)計創(chuàng)建數(shù)據(jù)敏感的樹形控件并將樹形控件與其它控件結(jié)合來輸入樹形結(jié)構(gòu)數(shù)據(jù)完整信息的方法,在備件編目的輸入輸出中的到了驗證,取得了很好的效果,并已成功將其運用到視聆公司基站維護管理系統(tǒng)中。

    [1]浮光賓,王葵如,張明倫.ASP.NET中TreeView控件的動態(tài)綁定及定位展開[J].計算機系統(tǒng)應(yīng)用,2008,17(6):112-113.

    [2]郭兆勝,張登榮.ASP.Net環(huán)境下樹狀圖的研究與實現(xiàn)[J].計算機工程與設(shè)計,2005,26(2):388-388.

    [3]彭彬,劉林,萬小虎.基于.NET的個性化高性能樹形菜單的實現(xiàn)[J].計算機應(yīng)用與軟件,2009,26(6):138-139.

    [4]吉杰,陶培基.MS SQL Server樹形結(jié)構(gòu)表遍歷的循環(huán)算法[J].計算機與現(xiàn)代化,2005(4):7-8.

    [5]儲岳中.基于遞歸算法和樹形控件的動態(tài)樹形圖的實現(xiàn)[J].計算機技術(shù)與發(fā)展,2007,17(6):88-88.

    [6]汪華斌.TreeView在主從表關(guān)系處理中的應(yīng)用[J].計算機與現(xiàn)代化,2006(3):74-75.

    [7]姚明,李家蘭.C#開發(fā)自定義控件方法探討[J].電腦知識與技術(shù),2007,3(5):798-798.

    [8]吳文強.用自定義TreeView控件實現(xiàn)層次結(jié)構(gòu)數(shù)據(jù)瀏覽功能[J].電腦編程技巧與維護,2010(9):45-46.

    [9]王桃群,盧東方.利用TreeView控件動態(tài)生成無限級樹[J].儀器儀表用戶,2007,2(14):91-92.

    [10]王昕哲,劉萬軍.在Web應(yīng)用開發(fā)中利用靜態(tài)樹和遞歸算法制作動態(tài)樹型菜單[J].計算機與現(xiàn)代化,2008(3):125-126.

    [11]崔曉陽.用TreeView控件實現(xiàn)樹形管理信息系統(tǒng)[J].農(nóng)業(yè)網(wǎng)絡(luò)信息,2007(11):135-136.

    [12]Khosravi S.The custom TreeView ASP.NET 2.0 server control[J].Software Tools for the Professional Programmer,2005,30(11):64-67.

    [13]孫宜貴,王宏勇.NET復(fù)合控件在科研業(yè)績管理系統(tǒng)中的應(yīng)用研究[J].計算機與數(shù)字工程,2010,38(2):43-45.

    [14]劉海鑫.VB.NET中的自定義日期控件開發(fā)[J].電腦知識與技術(shù),2007,3(4):1058-1060.

    [15]李志華,林財興,謝甘第.TreeView控件在ASP.NET2.0中的應(yīng)用[J].現(xiàn)代機械,2009(1):70-72.

    猜你喜歡
    結(jié)構(gòu)
    DNA結(jié)構(gòu)的發(fā)現(xiàn)
    《形而上學》△卷的結(jié)構(gòu)和位置
    哲學評論(2021年2期)2021-08-22 01:53:34
    論結(jié)構(gòu)
    中華詩詞(2019年7期)2019-11-25 01:43:04
    新型平衡塊結(jié)構(gòu)的應(yīng)用
    模具制造(2019年3期)2019-06-06 02:10:54
    循環(huán)結(jié)構(gòu)謹防“死循環(huán)”
    論《日出》的結(jié)構(gòu)
    縱向結(jié)構(gòu)
    縱向結(jié)構(gòu)
    我國社會結(jié)構(gòu)的重建
    人間(2015年21期)2015-03-11 15:23:21
    創(chuàng)新治理結(jié)構(gòu)促進中小企業(yè)持續(xù)成長
    午夜福利视频1000在线观看| АⅤ资源中文在线天堂| 日韩大尺度精品在线看网址| 男女视频在线观看网站免费 | 午夜a级毛片| 一卡2卡三卡四卡精品乱码亚洲| 我要搜黄色片| 99国产极品粉嫩在线观看| 啦啦啦韩国在线观看视频| 日韩大码丰满熟妇| 日本五十路高清| 国产探花在线观看一区二区| 18禁裸乳无遮挡免费网站照片| 黄色女人牲交| 两个人的视频大全免费| 免费高清视频大片| 黄色成人免费大全| 50天的宝宝边吃奶边哭怎么回事| 国产av又大| 亚洲精品国产精品久久久不卡| 午夜免费成人在线视频| www日本在线高清视频| 色av中文字幕| 免费搜索国产男女视频| 十八禁网站免费在线| 亚洲真实伦在线观看| 亚洲自偷自拍图片 自拍| 最新在线观看一区二区三区| 亚洲人成77777在线视频| 日韩精品免费视频一区二区三区| 两性午夜刺激爽爽歪歪视频在线观看 | 我要搜黄色片| 露出奶头的视频| 国产午夜精品久久久久久| 久久这里只有精品中国| 午夜福利18| 999久久久国产精品视频| 动漫黄色视频在线观看| 手机成人av网站| 国产探花在线观看一区二区| 久久久久久久久免费视频了| 很黄的视频免费| 在线观看日韩欧美| 午夜福利视频1000在线观看| 高清毛片免费观看视频网站| 最近最新免费中文字幕在线| 一夜夜www| 免费看美女性在线毛片视频| 国产一区二区在线av高清观看| 国产私拍福利视频在线观看| 国产亚洲精品第一综合不卡| 大型黄色视频在线免费观看| 国产一级毛片七仙女欲春2| 久久久久国产精品人妻aⅴ院| 99热这里只有是精品50| www.精华液| xxxwww97欧美| 久久精品成人免费网站| 女生性感内裤真人,穿戴方法视频| 人人妻人人澡欧美一区二区| 99国产极品粉嫩在线观看| 精品一区二区三区视频在线观看免费| 国语自产精品视频在线第100页| 亚洲va日本ⅴa欧美va伊人久久| 人妻丰满熟妇av一区二区三区| 可以免费在线观看a视频的电影网站| 在线看三级毛片| 麻豆成人午夜福利视频| 久久久久国内视频| а√天堂www在线а√下载| a级毛片a级免费在线| or卡值多少钱| 麻豆国产97在线/欧美 | 视频区欧美日本亚洲| 亚洲18禁久久av| 国产精品免费一区二区三区在线| 日韩欧美一区二区三区在线观看| 97人妻精品一区二区三区麻豆| 日本五十路高清| 国产男靠女视频免费网站| 在线a可以看的网站| 超碰成人久久| 91九色精品人成在线观看| 精品高清国产在线一区| 国产av麻豆久久久久久久| 脱女人内裤的视频| 精品久久久久久久人妻蜜臀av| 窝窝影院91人妻| 最新美女视频免费是黄的| 正在播放国产对白刺激| 日韩欧美在线二视频| 美女扒开内裤让男人捅视频| 最近在线观看免费完整版| 精品欧美国产一区二区三| a级毛片在线看网站| 免费人成视频x8x8入口观看| 大型av网站在线播放| 99精品欧美一区二区三区四区| 一区福利在线观看| 日韩精品免费视频一区二区三区| 啦啦啦免费观看视频1| 日韩欧美精品v在线| 国产精品久久久久久亚洲av鲁大| 国产高清视频在线播放一区| 国产精品国产高清国产av| 12—13女人毛片做爰片一| 日日摸夜夜添夜夜添小说| 日韩欧美在线二视频| 久久伊人香网站| 性欧美人与动物交配| 热99re8久久精品国产| 亚洲五月婷婷丁香| 香蕉国产在线看| 青草久久国产| 午夜福利视频1000在线观看| 久久久久久久精品吃奶| 性色av乱码一区二区三区2| 国产成人精品久久二区二区91| 51午夜福利影视在线观看| 色综合站精品国产| 国产精品一区二区三区四区久久| 久久99热这里只有精品18| 久久久久久久久久黄片| 宅男免费午夜| 国产av不卡久久| 国产精品日韩av在线免费观看| 亚洲,欧美精品.| 免费av毛片视频| 欧美av亚洲av综合av国产av| 此物有八面人人有两片| 亚洲专区中文字幕在线| 亚洲精品在线观看二区| 亚洲乱码一区二区免费版| av国产免费在线观看| АⅤ资源中文在线天堂| 变态另类丝袜制服| 国产av不卡久久| 日本精品一区二区三区蜜桃| 久久久久久国产a免费观看| 亚洲无线在线观看| 欧美性猛交╳xxx乱大交人| 免费观看人在逋| 91av网站免费观看| 俄罗斯特黄特色一大片| 日韩欧美免费精品| 一个人免费在线观看电影 | 美女午夜性视频免费| 国产野战对白在线观看| 999久久久国产精品视频| 此物有八面人人有两片| 精品久久久久久,| 18禁黄网站禁片免费观看直播| 国产一区二区在线观看日韩 | 丝袜人妻中文字幕| 亚洲人成电影免费在线| 在线看三级毛片| 午夜成年电影在线免费观看| 国产激情久久老熟女| 高潮久久久久久久久久久不卡| 人妻丰满熟妇av一区二区三区| 一级毛片高清免费大全| 夜夜躁狠狠躁天天躁| 亚洲国产欧美网| 麻豆一二三区av精品| 不卡av一区二区三区| 国产激情欧美一区二区| 国产精品99久久99久久久不卡| 精品少妇一区二区三区视频日本电影| 欧美不卡视频在线免费观看 | 久久中文字幕人妻熟女| av超薄肉色丝袜交足视频| 免费看十八禁软件| 午夜激情福利司机影院| 亚洲avbb在线观看| 中文字幕久久专区| 熟妇人妻久久中文字幕3abv| 日韩精品中文字幕看吧| 全区人妻精品视频| 欧美又色又爽又黄视频| 亚洲成人中文字幕在线播放| 国产欧美日韩一区二区三| 国产亚洲欧美在线一区二区| 人成视频在线观看免费观看| 久久久久九九精品影院| 国产麻豆成人av免费视频| 午夜精品在线福利| 制服诱惑二区| 色播亚洲综合网| 日本一二三区视频观看| 久久久久性生活片| svipshipincom国产片| 好看av亚洲va欧美ⅴa在| 手机成人av网站| 日本黄色视频三级网站网址| 亚洲国产精品999在线| 国产91精品成人一区二区三区| 一个人免费在线观看的高清视频| 在线观看美女被高潮喷水网站 | 国产91精品成人一区二区三区| 淫秽高清视频在线观看| 国模一区二区三区四区视频 | 99在线人妻在线中文字幕| 十八禁网站免费在线| 久久中文字幕人妻熟女| 麻豆av在线久日| 97超级碰碰碰精品色视频在线观看| 久久久久精品国产欧美久久久| 国产探花在线观看一区二区| 午夜激情av网站| 午夜福利18| 日本精品一区二区三区蜜桃| 淫秽高清视频在线观看| 亚洲五月天丁香| 97超级碰碰碰精品色视频在线观看| 日韩欧美国产在线观看| 岛国在线观看网站| 又粗又爽又猛毛片免费看| 色在线成人网| 十八禁网站免费在线| 一级片免费观看大全| 欧美色欧美亚洲另类二区| 亚洲av成人精品一区久久| 亚洲午夜精品一区,二区,三区| 三级国产精品欧美在线观看 | 欧美日本亚洲视频在线播放| 国产成年人精品一区二区| 亚洲国产精品成人综合色| 欧美中文日本在线观看视频| 人妻丰满熟妇av一区二区三区| 成人永久免费在线观看视频| 精品一区二区三区视频在线观看免费| 国产真人三级小视频在线观看| 哪里可以看免费的av片| 国产亚洲精品久久久久5区| 欧美日韩一级在线毛片| 狂野欧美白嫩少妇大欣赏| 老汉色∧v一级毛片| 国产又黄又爽又无遮挡在线| 最近最新中文字幕大全电影3| 国产黄a三级三级三级人| 黄色视频,在线免费观看| 久久精品成人免费网站| 可以在线观看的亚洲视频| 国产在线精品亚洲第一网站| 757午夜福利合集在线观看| 天天躁狠狠躁夜夜躁狠狠躁| 亚洲av日韩精品久久久久久密| 一边摸一边抽搐一进一小说| 99久久综合精品五月天人人| 韩国av一区二区三区四区| 亚洲精品中文字幕在线视频| 久久这里只有精品中国| 亚洲人成77777在线视频| 女警被强在线播放| 国产av一区在线观看免费| 国产亚洲精品一区二区www| 免费在线观看影片大全网站| www日本黄色视频网| 精品国产乱码久久久久久男人| 久久香蕉激情| 国产成人啪精品午夜网站| 在线十欧美十亚洲十日本专区| 国产精品久久久久久亚洲av鲁大| АⅤ资源中文在线天堂| 久久九九热精品免费| 久久久久精品国产欧美久久久| 国内精品一区二区在线观看| 久久人人精品亚洲av| 亚洲精品国产精品久久久不卡| 一本一本综合久久| 一本精品99久久精品77| 国产精品一区二区三区四区免费观看 | 日韩欧美在线乱码| 亚洲全国av大片| 宅男免费午夜| 久久久久九九精品影院| 国产片内射在线| 国产精品1区2区在线观看.| 色噜噜av男人的天堂激情| 欧美黄色片欧美黄色片| 精品欧美国产一区二区三| 亚洲欧洲精品一区二区精品久久久| 国产精品乱码一区二三区的特点| 亚洲国产精品999在线| 亚洲av第一区精品v没综合| 久久这里只有精品19| 久久精品国产综合久久久| 国产亚洲精品第一综合不卡| 九九热线精品视视频播放| 久久午夜亚洲精品久久| 正在播放国产对白刺激| 麻豆成人av在线观看| 亚洲激情在线av| 香蕉丝袜av| 国产日本99.免费观看| 欧美日韩国产亚洲二区| 小说图片视频综合网站| 男女做爰动态图高潮gif福利片| 日韩大码丰满熟妇| xxx96com| 亚洲一区中文字幕在线| 国产一区在线观看成人免费| 最近视频中文字幕2019在线8| 麻豆成人午夜福利视频| 免费一级毛片在线播放高清视频| 99久久久亚洲精品蜜臀av| 国产亚洲欧美在线一区二区| 桃色一区二区三区在线观看| 欧美日韩国产亚洲二区| 国产三级中文精品| 国产一区二区三区在线臀色熟女| 操出白浆在线播放| 国产免费av片在线观看野外av| 老汉色av国产亚洲站长工具| 欧美乱妇无乱码| 一卡2卡三卡四卡精品乱码亚洲| 久久久久国产精品人妻aⅴ院| 亚洲成人精品中文字幕电影| 国产成人精品久久二区二区91| 久久精品国产99精品国产亚洲性色| 欧美绝顶高潮抽搐喷水| 国产一区二区在线观看日韩 | 高清在线国产一区| 全区人妻精品视频| 欧美黄色片欧美黄色片| 欧美人与性动交α欧美精品济南到| 91老司机精品| 亚洲精品中文字幕在线视频| 午夜福利免费观看在线| 久久久久久亚洲精品国产蜜桃av| 午夜日韩欧美国产| 在线视频色国产色| 最近最新中文字幕大全免费视频| 亚洲一区高清亚洲精品| 国产午夜精品论理片| 日韩 欧美 亚洲 中文字幕| 国产成人精品久久二区二区91| 精品久久久久久成人av| 亚洲一区中文字幕在线| 免费av毛片视频| 两性夫妻黄色片| 免费在线观看日本一区| 成人国产一区最新在线观看| 久久久久久国产a免费观看| 久久久久性生活片| 国产伦一二天堂av在线观看| av欧美777| 国产成人影院久久av| 日韩大尺度精品在线看网址| 999精品在线视频| 九九热线精品视视频播放| 亚洲第一欧美日韩一区二区三区| 国产亚洲精品一区二区www| 精品久久久久久,| 日韩av在线大香蕉| 熟女少妇亚洲综合色aaa.| 欧美日韩瑟瑟在线播放| 国产91精品成人一区二区三区| 久99久视频精品免费| 国产伦一二天堂av在线观看| 精华霜和精华液先用哪个| 亚洲黑人精品在线| 国产久久久一区二区三区| 免费在线观看影片大全网站| 亚洲av成人av| 久99久视频精品免费| 国产精品一区二区三区四区免费观看 | 黄色 视频免费看| 91成年电影在线观看| 久久久精品国产亚洲av高清涩受| 久久久久免费精品人妻一区二区| 亚洲成人精品中文字幕电影| 夜夜爽天天搞| 日韩欧美国产在线观看| 亚洲成人久久性| 十八禁网站免费在线| 两人在一起打扑克的视频| 在线十欧美十亚洲十日本专区| 午夜a级毛片| 久久香蕉激情| 老司机深夜福利视频在线观看| 欧美午夜高清在线| 亚洲一卡2卡3卡4卡5卡精品中文| 人人妻人人看人人澡| 亚洲av成人不卡在线观看播放网| 欧美日韩乱码在线| 在线播放国产精品三级| 国产一区二区三区视频了| 亚洲人成77777在线视频| 久久伊人香网站| 国产三级中文精品| av超薄肉色丝袜交足视频| 日本一本二区三区精品| 亚洲专区中文字幕在线| 男女之事视频高清在线观看| 久久午夜综合久久蜜桃| 女人爽到高潮嗷嗷叫在线视频| 久久久国产欧美日韩av| 日韩欧美免费精品| svipshipincom国产片| 日本黄色视频三级网站网址| 久久久精品欧美日韩精品| 午夜福利成人在线免费观看| 亚洲熟女毛片儿| 国产一区二区激情短视频| 久久精品国产99精品国产亚洲性色| 小说图片视频综合网站| 嫩草影院精品99| 久久久久国产一级毛片高清牌| 亚洲专区国产一区二区| 午夜福利免费观看在线| 国产人伦9x9x在线观看| 波多野结衣高清无吗| 日韩大码丰满熟妇| 午夜日韩欧美国产| 精品国产美女av久久久久小说| 亚洲色图 男人天堂 中文字幕| 欧美乱码精品一区二区三区| 1024香蕉在线观看| 亚洲精品美女久久av网站| 国产亚洲欧美98| 黑人巨大精品欧美一区二区mp4| 久久久久久久午夜电影| 首页视频小说图片口味搜索| 久热爱精品视频在线9| 99在线人妻在线中文字幕| 91麻豆av在线| 成人av一区二区三区在线看| 国产成+人综合+亚洲专区| 久久久久久人人人人人| 欧美黑人巨大hd| 久久久久精品国产欧美久久久| 亚洲精品在线观看二区| 国产成人影院久久av| 9191精品国产免费久久| 国产蜜桃级精品一区二区三区| 无人区码免费观看不卡| 中文亚洲av片在线观看爽| 免费观看人在逋| 日韩大尺度精品在线看网址| 男人舔女人下体高潮全视频| 国内精品久久久久久久电影| 亚洲中文字幕日韩| 少妇裸体淫交视频免费看高清 | 精品国产亚洲在线| 天天添夜夜摸| 日韩大尺度精品在线看网址| 国产一区二区在线观看日韩 | 国产精品一区二区三区四区免费观看 | 国产精品久久久av美女十八| 后天国语完整版免费观看| 日韩精品中文字幕看吧| 色综合站精品国产| 久久久久精品国产欧美久久久| 国产成人系列免费观看| 青草久久国产| 日韩精品中文字幕看吧| 亚洲av日韩精品久久久久久密| 老司机午夜福利在线观看视频| 亚洲精品中文字幕在线视频| 亚洲黑人精品在线| 国产亚洲精品一区二区www| www.999成人在线观看| 日本三级黄在线观看| 少妇人妻一区二区三区视频| 午夜精品久久久久久毛片777| 老司机深夜福利视频在线观看| 久久香蕉国产精品| 一卡2卡三卡四卡精品乱码亚洲| 亚洲国产高清在线一区二区三| 九九热线精品视视频播放| 婷婷丁香在线五月| 男人舔女人的私密视频| 国产成人精品久久二区二区91| 国产探花在线观看一区二区| 午夜福利欧美成人| 香蕉国产在线看| 亚洲专区字幕在线| 91麻豆精品激情在线观看国产| 18禁黄网站禁片午夜丰满| 亚洲av五月六月丁香网| 久久精品影院6| 人妻久久中文字幕网| 免费在线观看影片大全网站| 亚洲av日韩精品久久久久久密| 亚洲avbb在线观看| 亚洲一区二区三区色噜噜| 欧美成人性av电影在线观看| 亚洲在线自拍视频| 一级a爱片免费观看的视频| 男人的好看免费观看在线视频 | 亚洲片人在线观看| 两性夫妻黄色片| 成年版毛片免费区| 嫩草影院精品99| 国产又黄又爽又无遮挡在线| 日韩成人在线观看一区二区三区| 精品欧美国产一区二区三| 欧美激情久久久久久爽电影| 国产黄a三级三级三级人| 久久伊人香网站| 亚洲国产精品sss在线观看| 97超级碰碰碰精品色视频在线观看| 男人舔女人的私密视频| 制服诱惑二区| 午夜两性在线视频| 亚洲五月天丁香| 亚洲一区二区三区不卡视频| 亚洲av成人av| 中出人妻视频一区二区| 亚洲专区中文字幕在线| 免费看十八禁软件| 老司机深夜福利视频在线观看| 欧美日韩中文字幕国产精品一区二区三区| 日本在线视频免费播放| 欧美日本亚洲视频在线播放| 午夜精品久久久久久毛片777| 欧美日韩精品网址| 国产精品爽爽va在线观看网站| 观看免费一级毛片| 在线观看一区二区三区| 亚洲成人久久爱视频| 国产午夜福利久久久久久| 亚洲av熟女| 久久久久久久久中文| АⅤ资源中文在线天堂| 欧美国产日韩亚洲一区| 国产不卡一卡二| 国产精品亚洲av一区麻豆| 好男人电影高清在线观看| 国产亚洲av嫩草精品影院| 色老头精品视频在线观看| 视频区欧美日本亚洲| 国产成人av激情在线播放| 少妇被粗大的猛进出69影院| 成年女人毛片免费观看观看9| 男人舔女人的私密视频| 成年人黄色毛片网站| 日本成人三级电影网站| 欧美成人性av电影在线观看| 超碰成人久久| 一个人免费在线观看的高清视频| 高潮久久久久久久久久久不卡| 国产蜜桃级精品一区二区三区| 又爽又黄无遮挡网站| 天天躁夜夜躁狠狠躁躁| 老鸭窝网址在线观看| 久久久久免费精品人妻一区二区| 国产av不卡久久| 欧美大码av| 精品国产美女av久久久久小说| 美女扒开内裤让男人捅视频| 午夜福利欧美成人| 亚洲欧美精品综合久久99| 国产野战对白在线观看| 日本撒尿小便嘘嘘汇集6| 欧美又色又爽又黄视频| 高清毛片免费观看视频网站| 欧美 亚洲 国产 日韩一| 最近最新中文字幕大全免费视频| 一区二区三区国产精品乱码| 国产免费av片在线观看野外av| 成熟少妇高潮喷水视频| 色噜噜av男人的天堂激情| 91麻豆av在线| 男人舔女人下体高潮全视频| svipshipincom国产片| 久久天堂一区二区三区四区| 伦理电影免费视频| 久久久久久久久久黄片| 亚洲欧美日韩高清在线视频| 日韩三级视频一区二区三区| 国产1区2区3区精品| 久久久久久久午夜电影| 人人妻人人看人人澡| 国内毛片毛片毛片毛片毛片| 在线十欧美十亚洲十日本专区| cao死你这个sao货| 麻豆成人av在线观看| 男人的好看免费观看在线视频 | 亚洲国产欧美一区二区综合| av免费在线观看网站| 中国美女看黄片| 黄色 视频免费看| 操出白浆在线播放| 午夜影院日韩av| 成年女人毛片免费观看观看9| 一a级毛片在线观看| 在线播放国产精品三级| 99热只有精品国产| 日日摸夜夜添夜夜添小说| 窝窝影院91人妻| 国产精品爽爽va在线观看网站| 熟妇人妻久久中文字幕3abv| 99久久无色码亚洲精品果冻| 久久香蕉精品热| 最近在线观看免费完整版| 悠悠久久av| 免费在线观看成人毛片| 美女大奶头视频| 国产精品 欧美亚洲| 欧美黑人欧美精品刺激| 午夜日韩欧美国产| 国产黄色小视频在线观看| 国产乱人伦免费视频| 高清毛片免费观看视频网站| 我的老师免费观看完整版| 亚洲欧美激情综合另类| av国产免费在线观看| 一本精品99久久精品77| 久久精品综合一区二区三区| 韩国av一区二区三区四区| 欧美zozozo另类| 国产精品久久久久久久电影 | 无遮挡黄片免费观看|