免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線(xiàn)實(shí)戰(zhàn)洞察。

C# WinForm超市收銀系統(tǒng)開(kāi)發(fā):數(shù)據(jù)庫(kù)事務(wù)與參數(shù)化查詢(xún)實(shí)戰(zhàn)

C# WinForm超市收銀系統(tǒng)開(kāi)發(fā):數(shù)據(jù)庫(kù)事務(wù)與參數(shù)化查詢(xún)實(shí)戰(zhàn) 簡(jiǎn)介C# WinForm開(kāi)發(fā)的超市收銀POS系統(tǒng)完整源碼及配套SQL數(shù)據(jù)庫(kù)腳本面向需要學(xué)習(xí)桌面端業(yè)務(wù)系統(tǒng)開(kāi)發(fā)、或希望快速搭建零售收銀解決方案的開(kāi)發(fā)者。系統(tǒng)覆蓋商品管理、銷(xiāo)售處理、庫(kù)存跟蹤、報(bào)表生成、多方式收銀結(jié)賬、用戶(hù)權(quán)限管理、數(shù)據(jù)備份恢復(fù)等核心功能從數(shù)據(jù)庫(kù)設(shè)計(jì)到界面交互形成一套可運(yùn)行參考方案。壓縮包共90個(gè)文件以28個(gè)C#源文件為主另含SQL建庫(kù)腳本、xsd數(shù)據(jù)集定義、resx界面資源、EntityFramework依賴(lài)組件及項(xiàng)目配置文件等包體約12.02MB目錄結(jié)構(gòu)完整便于直接加載調(diào)試。資源已有87人學(xué)習(xí)下載。通過(guò)源碼可學(xué)習(xí)WinForm窗體布局、數(shù)據(jù)綁定、業(yè)務(wù)分層處理與SQL交互的實(shí)踐寫(xiě)法借助初始化腳本可快速還原數(shù)據(jù)庫(kù)結(jié)構(gòu)理解商品、訂單等表間關(guān)系適合課程設(shè)計(jì)參考、入職練手或基于實(shí)際需求做二次功能擴(kuò)展。1. C# WinForm 超市收銀系統(tǒng)2025年還在用圖的不是先進(jìn)而是省事你把標(biāo)題掃了兩遍才確認(rèn)“收營(yíng)”是“收銀”的錯(cuò)別字。這種錯(cuò)別字在國(guó)內(nèi)中小型項(xiàng)目里太常見(jiàn)了它往往不是筆誤而是一個(gè)不太懂開(kāi)發(fā)的人在需求文檔里隨手打的后面照著翻譯成代碼的人也沒(méi)糾正。2025年掏出一套 C# WinForm 超市收銀系統(tǒng)聽(tīng)起來(lái)有點(diǎn)老土但它能活下來(lái)的理由恰恰很現(xiàn)實(shí)幾乎所有 Windows 電腦都能雙擊運(yùn)行不需要 IIS、不需要 Linux 服務(wù)器、不需要容器數(shù)據(jù)庫(kù)一臺(tái) SQL Server 就能扛住日流水幾千單的小超市。這套系統(tǒng)的價(jià)值不在技術(shù)棧炫技而在把一類(lèi)需求完整走通——登錄與權(quán)限、商品檔案與庫(kù)存、前臺(tái)掃碼結(jié)算、銷(xiāo)售報(bào)表。你拿到源碼和 SQL 文件不是跑起來(lái)就算完而是能看懂每一步之間怎么銜接、哪些地方容易埋雷。適合兩類(lèi)人一類(lèi)是想靠完整項(xiàng)目練手的學(xué)生另一類(lèi)是給自家小店或朋友門(mén)店搭收款系統(tǒng)、預(yù)算有限又不想為 SaaS 年費(fèi)掏錢(qián)的店主。2. 把模塊先切開(kāi)再落庫(kù)設(shè)計(jì)超市收銀系統(tǒng)的功能邊界與訂單結(jié)構(gòu)2.1 收銀鏈路拆成四個(gè)功能域各管各的別混在一個(gè)窗口里動(dòng)手寫(xiě)代碼前我一般會(huì)先在紙上把功能域畫(huà)出來(lái)。超市收銀系統(tǒng)最常見(jiàn)的錯(cuò)誤是把“商品維護(hù)”“庫(kù)存查詢(xún)”“收銀結(jié)賬”“報(bào)表統(tǒng)計(jì)”全塞進(jìn)一個(gè)主窗口加十幾個(gè) TabPage寫(xiě)著寫(xiě)著代碼就變成一坨。常見(jiàn)做法是拆成四個(gè)域基礎(chǔ)檔案管理商品、供應(yīng)商、會(huì)員庫(kù)存中心管入庫(kù)、出庫(kù)、盤(pán)點(diǎn)收銀臺(tái)管掃碼、結(jié)算、小票報(bào)表中心管日結(jié)、月結(jié)和趨勢(shì)。四個(gè)域的數(shù)據(jù)流是一條直線(xiàn)商品檔案先建好庫(kù)存才有據(jù)可加收銀臺(tái)才能扣減報(bào)表再匯總。數(shù)據(jù)流一旦畫(huà)清楚數(shù)據(jù)庫(kù)表結(jié)構(gòu)也就跟著確定下來(lái)。基礎(chǔ)檔案是源頭庫(kù)存是中間狀態(tài)訂單是結(jié)果。很多新手把“庫(kù)存”當(dāng)成一張靜態(tài)表每次收銀直接改庫(kù)存字段這樣做月底對(duì)賬遲早對(duì)不上因?yàn)槿鄙倭魉?kù)存域至少要有一張庫(kù)存臺(tái)賬和一個(gè)流水表實(shí)收實(shí)發(fā)都留痕。商品表只存當(dāng)前庫(kù)存量流水表記錄每一次變動(dòng)這是后續(xù)做報(bào)表和盤(pán)點(diǎn)的基礎(chǔ)。另外要注意窗口之間的數(shù)據(jù)傳遞。WinForm 里最常見(jiàn)的方式是登錄成功后把用戶(hù) ID 和用戶(hù)名放在一個(gè)靜態(tài)會(huì)話(huà)類(lèi)里而不是到處打開(kāi)數(shù)據(jù)庫(kù)連接重新查。會(huì)話(huà)類(lèi)雖然簡(jiǎn)單但要控制好生命周期退出登錄時(shí)清空否則切換賬號(hào)后會(huì)串身份。這個(gè)小細(xì)節(jié)在多人共用一臺(tái)收銀機(jī)的超市里非常容易出現(xiàn)兩個(gè)店員交接班不退出后一個(gè)人用前一個(gè)人的權(quán)限登錄問(wèn)題就大了。2.2 訂單主表與訂單明細(xì)表一單一品用 SQL 建出最穩(wěn)的關(guān)系收銀系統(tǒng)的核心表不是商品表而是訂單主表和訂單明細(xì)表。一張小票對(duì)應(yīng)一個(gè)主表記錄票面上的每一行商品對(duì)應(yīng)明細(xì)表的一條記錄。為什么不能把商品直接拼成一個(gè)字符串塞進(jìn)一個(gè)字段里因?yàn)楹罄m(xù)要做銷(xiāo)售統(tǒng)計(jì)、退換貨、按品類(lèi)分析拆開(kāi)存才能用 SQL 高效聚合。主表存訂單號(hào)、收銀員、會(huì)員、折扣、應(yīng)收實(shí)收、支付方式、下單時(shí)間明細(xì)表存訂單號(hào)、商品 ID、商品名稱(chēng)、數(shù)量、單價(jià)、小計(jì)。注意明細(xì)表里的商品名稱(chēng)要冗余一份商品改名或刪除后歷史訂單仍能還原。下面是建表腳本的核心片段我在 SQL Server 2012 到 2022 上都用過(guò)同一套寫(xiě)法CREATE TABLE dbo.invoice_header ( invoice_no VARCHAR(24) NOT NULL, -- 訂單號(hào)業(yè)務(wù)生成帶日期前綴 user_id INT NOT NULL, -- 收銀員ID member_id INT NULL, -- 會(huì)員ID未登錄可為空 discount_amt DECIMAL(10,2) NOT NULL DEFAULT 0, -- 整單折扣金額 total_amt DECIMAL(10,2) NOT NULL, -- 應(yīng)收總額 pay_amt DECIMAL(10,2) NOT NULL, -- 實(shí)收金額 pay_type TINYINT NOT NULL DEFAULT 1,-- 1現(xiàn)金 2微信 3支付寶 create_time DATETIME NOT NULL DEFAULT GETDATE(), CONSTRAINT pk_invoice_header PRIMARY KEY (invoice_no) ); CREATE TABLE dbo.invoice_line ( id BIGINT IDENTITY(1,1) NOT NULL, -- 行號(hào)自增 invoice_no VARCHAR(24) NOT NULL, product_id INT NOT NULL, product_name NVARCHAR(120) NOT NULL, -- 冗余商品名稱(chēng)防止歷史訂單失真 quantity DECIMAL(10,2) NOT NULL, -- 數(shù)量保留兩位支持稱(chēng)重商品 price DECIMAL(10,2) NOT NULL, -- 成交單價(jià) sub_total DECIMAL(10,2) NOT NULL, CONSTRAINT pk_invoice_line PRIMARY KEY (id), CONSTRAINT fk_line_header FOREIGN KEY (invoice_no) REFERENCES dbo.invoice_header (invoice_no) );訂單號(hào)我不用自增主鍵而是用業(yè)務(wù)流水號(hào)比如20250113120045 收銀臺(tái)編號(hào) 三位流水。這樣好處是兩臺(tái)收銀機(jī)同時(shí)下單不會(huì)撞號(hào)報(bào)表按時(shí)間查也方便。但要用它做主鍵就必須保證在代碼里生成時(shí)不重復(fù)常見(jiàn)做法是用日期加隨機(jī)后綴或者用一個(gè)獨(dú)立的序列表每次取出下一個(gè)序號(hào)。簡(jiǎn)單的門(mén)店系統(tǒng)用日期加收銀臺(tái)編號(hào)加三位循環(huán)號(hào)就夠前提是單臺(tái)收銀機(jī)下單量不大。數(shù)量字段用DECIMAL(10,2)而不是INT因?yàn)槌杏蟹Q(chēng)重商品0.55 千克的蘋(píng)果按 0.55 計(jì)算四舍五入到整數(shù)會(huì)在日結(jié)對(duì)賬時(shí)差出幾毛錢(qián)累積一個(gè)月就成了大問(wèn)題。2.3 連接串、字符集與主鍵策略三個(gè)在建庫(kù)前就要定下來(lái)的參數(shù)很多人的 SQL 文件導(dǎo)入失敗翻車(chē)點(diǎn)不在業(yè)務(wù)表而在最開(kāi)始幾個(gè)參數(shù)。字符集建議用Chinese_PRC_CI_AS它是簡(jiǎn)體中文常用的排序規(guī)則直接用默認(rèn)的Latin1_General會(huì)出現(xiàn)中文字段排序不按拼音、部分漢字顯示異常的問(wèn)題。數(shù)據(jù)庫(kù)所有表的主鍵和索引放在同一個(gè)文件組就行不需要為小型超市做文件組拆分拆了反而增加備份復(fù)雜度。連接串是另一個(gè)高頻踩坑點(diǎn)。WinForm 程序里連接字符串建議寫(xiě)在App.config中而不是硬編碼在代碼里。這樣換電腦部署時(shí)只需要改配置不用改代碼重新編譯。?xml version1.0 encodingutf-8 ? configuration connectionStrings add nameSuperMarketDb connectionStringData Source.;Initial CatalogSuperMarketDb;User IDsa;Password123456;MultipleActiveResultSetstrue; providerNameSystem.Data.SqlClient / /connectionStrings /configuration連接串里MultipleActiveResultSetstrue值得專(zhuān)門(mén)說(shuō)一句。WinForm 里很容易出現(xiàn)一個(gè)連接對(duì)象執(zhí)行查詢(xún)后又在同一個(gè)連接上執(zhí)行另一條命令的情況不開(kāi)這個(gè)參數(shù)就會(huì)報(bào)“已有打開(kāi)的與此連接相關(guān)聯(lián)的 DataReader”。對(duì)單用戶(hù)小店開(kāi)它不需要付出什么代價(jià)對(duì)多人同時(shí)在線(xiàn)這個(gè)參數(shù)也能減少一部分連接超時(shí)的報(bào)錯(cuò)。另一個(gè)參數(shù)是Connect Timeout默認(rèn) 15 秒如果門(mén)店網(wǎng)絡(luò)環(huán)境不好建議顯式設(shè)為 5讓用戶(hù)快速知道連不上而不是卡住十幾秒看起來(lái)像死機(jī)。連接串的賬號(hào)不要用 sa最低權(quán)限賬號(hào)對(duì)保護(hù)數(shù)據(jù)更有用。系統(tǒng)啟動(dòng)時(shí)先測(cè)一次連通性失敗就彈提示并給出“修復(fù)數(shù)據(jù)庫(kù)連接”的入口而不是在登錄界面上轉(zhuǎn)圈。3. 把登錄、商品、結(jié)算三段邏輯寫(xiě)進(jìn) WinForm能直接抄的代碼與參數(shù)3.1 登錄窗口MD5 哈希 參數(shù)化查詢(xún)擋住萬(wàn)能密碼和拖庫(kù)登錄是每套收銀系統(tǒng)都有的入口但也是最容易被順手寫(xiě)壞的入口。常見(jiàn)做法是把用戶(hù)輸入的密碼直接拼進(jìn) SQL 字符串然后執(zhí)行查詢(xún)這樣遇到 OR 11這類(lèi)萬(wàn)能密碼查詢(xún)條件恒為真整個(gè)系統(tǒng)就被破解了。另一個(gè)常見(jiàn)問(wèn)題是密碼明文入庫(kù)門(mén)店內(nèi)部人員順手打開(kāi)表就能看到所有人的密碼隱私和安全都談不上。正確的做法是密碼存哈希值登錄時(shí)把用戶(hù)輸入的密碼做同樣的哈希再比對(duì)。以下代碼我一般放在登錄按鈕的 Click 事件里數(shù)據(jù)庫(kù)層用參數(shù)化查詢(xún)private string Md5Hash(string input) { using (var md5 System.Security.Cryptography.MD5.Create()) { byte[] bytes Encoding.UTF8.GetBytes(input); byte[] hash md5.ComputeHash(bytes); StringBuilder sb new StringBuilder(); for (int i 0; i hash.Length; i) { sb.Append(hash[i].ToString(x2)); } return sb.ToString(); } } private bool VerifyLogin(string loginName, string loginPwd) { string connStr ConfigurationManager.ConnectionStrings[SuperMarketDb].ConnectionString; string sql SELECT COUNT(1) FROM dbo.users WHERE user_nameloginName AND user_pwdloginPwd; using (SqlConnection conn new SqlConnection(connStr)) using (SqlCommand cmd new SqlCommand(sql, conn)) { cmd.Parameters.AddWithValue(loginName, loginName); cmd.Parameters.AddWithValue(loginPwd, Md5Hash(loginPwd)); conn.Open(); return (int)cmd.ExecuteScalar() 0; } }代碼里有兩個(gè)關(guān)鍵點(diǎn)。一是所有用戶(hù)輸入都走AddWithValue參數(shù)化SQL 引擎會(huì)把輸入當(dāng)作字面量而不是可執(zhí)行代碼萬(wàn)能密碼就沒(méi)用了。二是密碼先做 MD5 再比較數(shù)據(jù)庫(kù)里即使被拖走也只拿到一串哈希。需要說(shuō)明的是 MD5 用在這里并不是密碼學(xué)上的最優(yōu)方案但超市這類(lèi)本地系統(tǒng)它的成本最低。你要更穩(wěn)妥可以改成 SHA256替換哈希函數(shù)時(shí)注意把循環(huán)里的MD5.Create()換成SHA256.Create()其余邏輯不動(dòng)。另外AddWithValue在 SQL Server 里對(duì)NVARCHAR字段偶爾會(huì)引發(fā)隱式轉(zhuǎn)換導(dǎo)致索引失效更嚴(yán)謹(jǐn)?shù)淖龇ㄊ菍?xiě)cmd.Parameters.Add(loginName, SqlDbType.NVarChar, 50).Value loginName;登錄表數(shù)據(jù)量不大影響可以忽略。登錄成功后把用戶(hù) ID 和用戶(hù)名存到一個(gè)靜態(tài)類(lèi)里后續(xù)所有窗口都能取到。還要記錄登錄時(shí)間方便后面做交接班日志。3.2 商品管理DataGridView 綁定數(shù)據(jù)表搜索用 LIKE 參數(shù)化商品管理的核心界面是 DataGridView 加一個(gè)搜索框。很多人在 TextChanged 事件里每次敲一個(gè)字母就去數(shù)據(jù)庫(kù)查一次數(shù)據(jù)量小感覺(jué)不到商品幾千條后開(kāi)始卡頓。常見(jiàn)做法是加載一次商品表到 DataTable然后作為 DataGridView 的數(shù)據(jù)源本地做過(guò)濾。單品數(shù)量在五千以?xún)?nèi)的超市這種方式足夠流暢。加載代碼可以復(fù)用同一段邏輯以減少重復(fù)。private DataTable productTable; private void LoadProducts() { string connStr ConfigurationManager.ConnectionStrings[SuperMarketDb].ConnectionString; string sql SELECT product_id, product_name, spec, unit, stock_qty, sale_price, warn_qty FROM dbo.products ORDER BY product_id; using (SqlConnection conn new SqlConnection(connStr)) using (SqlDataAdapter adapter new SqlDataAdapter(sql, conn)) { productTable new DataTable(); adapter.Fill(productTable); dataGridView1.DataSource productTable; } } private void FilterProducts(string keyword) { if (productTable null) return; DataView dv productTable.DefaultView; if (string.IsNullOrWhiteSpace(keyword)) { dv.RowFilter null; } else { dv.RowFilter string.Format(product_name LIKE %{0}% OR product_id LIKE %{0}%, keyword.Replace(, )); } }這種過(guò)濾方式完全走內(nèi)存比每次敲鍵盤(pán)都查數(shù)據(jù)庫(kù)快幾個(gè)數(shù)量級(jí)。但這里有個(gè)容易翻車(chē)的細(xì)節(jié)RowFilter使用的是 DataTable 的表達(dá)式語(yǔ)法如果搜索詞里包含單引號(hào)會(huì)直接把過(guò)濾表達(dá)式搞壞所以要先把單引號(hào)替換成雙引號(hào)上面代碼里Replace(, )就是專(zhuān)門(mén)做這個(gè)的。從幾百條商品里過(guò)濾出一個(gè)中文關(guān)鍵字對(duì) DataGridView 來(lái)說(shuō)已經(jīng)足夠不必上后臺(tái)線(xiàn)程。DataGridView 相關(guān)的參數(shù)還有一個(gè)常被忽視的如果 DataGridView 只是展示不打算在線(xiàn)編輯一定要把ReadOnly設(shè)為true把SelectionMode設(shè)為FullRowSelect否則用戶(hù)雙擊單元格就能改數(shù)據(jù)誤操作后庫(kù)存就悄悄變了。需要編輯價(jià)格和庫(kù)存時(shí)單獨(dú)彈出一個(gè)編輯窗口保存時(shí)再寫(xiě)數(shù)據(jù)庫(kù)這樣每一步操作都有明確的意圖。3.3 結(jié)算按鈕事務(wù)包裹訂單與扣庫(kù)存避免月底對(duì)賬翻車(chē)結(jié)算是整個(gè)收銀系統(tǒng)里風(fēng)險(xiǎn)最高的一段邏輯。新手最容易犯的錯(cuò)誤是先把訂單主表插進(jìn)去再插明細(xì)最后扣庫(kù)存每一步獨(dú)立提交。任何一個(gè)環(huán)節(jié)失敗數(shù)據(jù)庫(kù)中就會(huì)出現(xiàn)一張缺明細(xì)的訂單或者庫(kù)存扣了但訂單沒(méi)生成月底對(duì)賬時(shí)怎么都對(duì)不上。正確做法是把這幾步包在同一個(gè)數(shù)據(jù)庫(kù)事務(wù)里要么全部成功要么全部回滾。我一般會(huì)先檢查庫(kù)存夠不夠再插入訂單頭、訂單明細(xì)最后扣減庫(kù)存。using (SqlConnection conn new SqlConnection(connStr)) { conn.Open(); using (SqlTransaction tran conn.BeginTransaction()) { try { // 檢查庫(kù)存 string checkSql SELECT stock_qty FROM dbo.products WITH(UPDLOCK, ROWLOCK) WHERE product_idpid; using (SqlCommand cmd new SqlCommand(checkSql, conn, tran)) { cmd.Parameters.AddWithValue(pid, productId); int stock (int)cmd.ExecuteScalar(); if (stock qty) throw new Exception(商品[ productName ]庫(kù)存不足); } // 插入訂單主表 string headerSql INSERT INTO dbo.invoice_header (invoice_no, user_id, total_amt, pay_amt, pay_type) VALUES (invoiceNo, userId, totalAmt, payAmt, payType); // 省略 SqlCommand 參數(shù)賦值細(xì)節(jié) // 插入訂單明細(xì)表循環(huán)商品列表 // 逐條 INSERT 或使用 SqlBulkCopy // 扣減庫(kù)存 string deductSql UPDATE dbo.products SET stock_qty stock_qty - qty WHERE product_idpid; // 省略 SqlCommand 參數(shù)賦值細(xì)節(jié) tran.Commit(); } catch { tran.Rollback(); throw; } } }這段邏輯里有兩個(gè)參數(shù)值得解釋。第一個(gè)是查詢(xún)庫(kù)存時(shí)用了WITH(UPDLOCK, ROWLOCK)鎖提示作用是在事務(wù)里鎖定這一行防止另一臺(tái)收銀機(jī)同時(shí)賣(mài)同一件商品時(shí)讀出舊庫(kù)存造成超賣(mài)。單機(jī)門(mén)店感覺(jué)不到它的存在兩臺(tái)收銀機(jī)同時(shí)運(yùn)行時(shí)這個(gè)提示能避免庫(kù)存變成負(fù)數(shù)。第二個(gè)是扣庫(kù)存的 SQL 用了stock_qty stock_qty - qty而不是先讀出值再減這一步要查的舊值由數(shù)據(jù)庫(kù)自己維護(hù)可以擋住大部分并發(fā)沖突。如果用了SqlBulkCopy批量寫(xiě)明細(xì)注意事務(wù)必須傳給SqlBulkCopy的Transaction屬性否則批量寫(xiě)入不受當(dāng)前事務(wù)控制一旦后面扣庫(kù)存失敗明細(xì)已經(jīng)持久化就失去了事務(wù)的意義。找零計(jì)算不要用 double 或 float用decimal。浮點(diǎn)數(shù)的二進(jìn)制表示會(huì)讓 0.1 加 0.2 不等于 0.3 這類(lèi)問(wèn)題出現(xiàn)在找零里賬目會(huì)差到以分為單位的細(xì)節(jié)上日結(jié)時(shí)想查查不出來(lái)。整單金額、實(shí)收金額、找零金額一律用 decimal控件上輸入的字符串用decimal.TryParse轉(zhuǎn)換轉(zhuǎn)換失敗就提示重新輸入不強(qiáng)行解析。4. SQL 文件怎么組織建庫(kù)、存儲(chǔ)過(guò)程、初始化數(shù)據(jù)三件套4.1 建庫(kù)建表腳本字符集與約束一次寫(xiě)對(duì)“源碼sql文件”里的 SQL 文件不是隨手導(dǎo)出的而是要讓拿源碼的人第一次就能在空數(shù)據(jù)庫(kù)上跑通。一套合格的 SQL 文件應(yīng)該按照固定順序排列建庫(kù)、建表、建視圖、建存儲(chǔ)過(guò)程、插入初始化數(shù)據(jù)。很多人拿到 sql 文件后直接全選執(zhí)行結(jié)果因?yàn)楸碇g外鍵依賴(lài)順序錯(cuò)亂而報(bào)錯(cuò)就是因?yàn)闆](méi)有組織好腳本順序。建庫(kù)語(yǔ)句寫(xiě)在最前面表結(jié)構(gòu)按依賴(lài)順序從主表到子表排列先建不依賴(lài)別的表的表再建有外鍵的表。下面是一個(gè)基礎(chǔ)的商品表腳本示例里面把約束都寫(xiě)清楚了CREATE TABLE dbo.products ( product_id INT IDENTITY(1,1) NOT NULL, product_code VARCHAR(20) NOT NULL, -- 商品條碼掃的就是它 product_name NVARCHAR(120) NOT NULL, spec NVARCHAR(50) NULL, -- 規(guī)格如500g/包 unit NVARCHAR(10) NOT NULL DEFAULT N個(gè), stock_qty DECIMAL(10,2) NOT NULL DEFAULT 0, warn_qty DECIMAL(10,2) NOT NULL DEFAULT 10, -- 庫(kù)存預(yù)警線(xiàn) sale_price DECIMAL(10,2) NOT NULL, status TINYINT NOT NULL DEFAULT 1, -- 1在售 0停售 CONSTRAINT pk_products PRIMARY KEY (product_id), CONSTRAINT uq_product_code UNIQUE (product_code) );字段類(lèi)型里有幾個(gè)關(guān)鍵點(diǎn)。product_code用VARCHAR而不是NVARCHAR商品條碼和后臺(tái)條碼本身對(duì)中文做不了什么用定長(zhǎng)字符串空間更省。NVARCHAR(120)用于商品名稱(chēng)因?yàn)橐嬷形?。DECIMAL(10,2)用于價(jià)格和數(shù)量不是 float。status字段用TINYINT而不是直接用 BIT方便以后擴(kuò)展?fàn)顟B(tài)位比如從在售到停售再到清倉(cāng)。每張表都加了主鍵商品表額外做了唯一約束防止重復(fù)條碼進(jìn)系統(tǒng)。執(zhí)行建表腳本時(shí)如果已經(jīng)存在同名表SQL Server 會(huì)報(bào)錯(cuò)可以在腳本開(kāi)頭加IF OBJECT_ID(dbo.products, U) IS NOT NULL DROP TABLE dbo.products;這樣的判斷讓腳本具備重復(fù)執(zhí)行的能力。4.2 統(tǒng)計(jì)與預(yù)警存儲(chǔ)過(guò)程銷(xiāo)售額按日匯總、庫(kù)存低于閾值彈提醒報(bào)表功能在 WinForm 項(xiàng)目里通常用兩條路實(shí)現(xiàn)一條是前端拼接 SQL 查詢(xún)后填 DataGridView另一條是提前建好視圖和存儲(chǔ)過(guò)程前端只調(diào)用。小店系統(tǒng)沒(méi)有復(fù)雜到必須上 OLAP但把統(tǒng)計(jì)邏輯放進(jìn)存儲(chǔ)過(guò)程有一個(gè)明顯的好處換一個(gè)前端界面統(tǒng)計(jì)口徑不用重寫(xiě)。我一般至少建兩個(gè)存儲(chǔ)過(guò)程日銷(xiāo)售匯總和庫(kù)存預(yù)警查詢(xún)。日銷(xiāo)售匯總 stored procedure 核心邏輯是按支付類(lèi)型分組求銷(xiāo)售額同時(shí)把現(xiàn)金、微信、支付寶分開(kāi)看CREATE PROCEDURE dbo.usp_DailySalesReport businessDate DATETIME AS BEGIN SET NOCOUNT ON; SELECT pay_type, COUNT(1) AS order_count, SUM(total_amt) AS sale_total, SUM(pay_amt - total_amt) AS discount_total FROM dbo.invoice_header WHERE CONVERT(DATE, create_time) CONVERT(DATE, businessDate) GROUP BY pay_type; END這里CONVERT(DATE, create_time)的作用是忽略時(shí)間部分只按天對(duì)比。參數(shù)businessDate由前端傳入日期最好在傳入時(shí)就固定為當(dāng)天的零點(diǎn)而不是傳DateTime.Now因?yàn)閳?bào)表的“業(yè)務(wù)日期”和“實(shí)際運(yùn)行日期”不同晚班單據(jù)可能跨到第二天凌晨按計(jì)算機(jī)時(shí)間匯總會(huì)導(dǎo)致前一天少記。庫(kù)存預(yù)警存儲(chǔ)過(guò)程更簡(jiǎn)單直接查出庫(kù)存低于預(yù)警線(xiàn)的商品清單然后前端用 MessageBox 或者小窗口彈出來(lái)。閾值不要寫(xiě)死在代碼里商品表里已經(jīng)有warn_qty字段讓每個(gè)商品可以單獨(dú)設(shè)置比如雞蛋的預(yù)警線(xiàn)是 50 盒洗發(fā)水可設(shè)為 5 瓶。存儲(chǔ)過(guò)程寫(xiě)完千萬(wàn)別忘了給執(zhí)行權(quán)限。很多門(mén)店電腦上 SQL Server 登錄賬號(hào)權(quán)限很小默認(rèn)沒(méi)有EXECUTE權(quán)限前端調(diào)存儲(chǔ)過(guò)程會(huì)報(bào)“對(duì)象名無(wú)效”或權(quán)限不足別把精力花在冤枉路上。4.3 初始化數(shù)據(jù)與備份恢復(fù)第一次雙擊就能登進(jìn)去SQL 文件的最后一部分是初始化數(shù)據(jù)。至少要包含一個(gè)默認(rèn)管理員賬號(hào)、一個(gè)測(cè)試商品列表、一個(gè)會(huì)員示例。管理員密碼不要用明文直接預(yù)置 MD5 哈希值這樣首次登錄不用先找密碼表再改系統(tǒng)。很多分享的源碼把用戶(hù)名密碼寫(xiě)在 README 里但用起來(lái)不方便別人拿到后沒(méi)有善后可能就直接帶著默認(rèn)密碼上線(xiàn)風(fēng)險(xiǎn)太高。我在編寫(xiě)初始化腳本時(shí)會(huì)往用戶(hù)表里插一個(gè)admin賬號(hào)密碼哈希值是e10adc3949ba59abbe56e057f20f883e也就是 123456 的 MD5首次登錄后強(qiáng)制改密。初始化商品數(shù)據(jù)可以做成 INSERT 一段幾十條記錄覆蓋飲料、零食、日用、生鮮幾類(lèi)典型商品條碼用真實(shí)超市常見(jiàn)碼模擬。如果你要部署到自己的門(mén)店不要直接用這些演示數(shù)據(jù)要把商品檔案重新導(dǎo)入否則收銀臺(tái)上掃碼槍掃出來(lái)的價(jià)格是別人的。SQL 文件里還要帶上備份恢復(fù)說(shuō)明至少給出一個(gè)標(biāo)準(zhǔn)備份腳本BACKUP DATABASE SuperMarketDb TO DISK ND:\backup\SuperMarketDb_202501.bak WITH INIT, COMPRESSION;恢復(fù)時(shí)的腳本也要附上但需要注意恢復(fù)前要強(qiáng)制斷開(kāi)現(xiàn)有連接ALTER DATABASE SuperMarketDb SET SINGLE_USER WITH ROLLBACK IMMEDIATE; RESTORE DATABASE SuperMarketDb FROM DISK ND:\backup\SuperMarketDb_202501.bak WITH REPLACE; ALTER DATABASE SuperMarketDb SET MULTI_USER;備份文件命名里帶日期每天凌晨用 Windows 計(jì)劃任務(wù)跑一次比任何高深的備份策略都實(shí)在。小店不會(huì)有人天天記得手工備份自動(dòng)化是唯一可靠的路。5. WinForm 收銀系統(tǒng)避坑手冊(cè)五條踩坑記錄現(xiàn)象原因解決一條條對(duì)5.1 界面假死和跨線(xiàn)程崩潰Timer 刷新和 UI 線(xiàn)程打架現(xiàn)象系統(tǒng)跑一會(huì)兒就卡住尤其在高峰期點(diǎn)擊按鈕沒(méi)反應(yīng)過(guò)幾秒又活過(guò)來(lái)。如果讓后臺(tái)線(xiàn)程直接操作控件程序直接拋異常崩掉。原因WinForm 的 UI 控件只能在創(chuàng)建它的主線(xiàn)程里操作。很多人在代碼里開(kāi)了后臺(tái)線(xiàn)程查庫(kù)存查詢(xún)完成后直接執(zhí)行l(wèi)abel1.Text ....運(yùn)行時(shí)遇到跨線(xiàn)程操作就會(huì)拋InvalidOperationException。另一方面如果所有查詢(xún)都堆在主線(xiàn)程執(zhí)行數(shù)據(jù)庫(kù)響應(yīng)慢時(shí)界面就假死看起來(lái)像整個(gè)程序停擺。解決跨線(xiàn)程更新控件用Control.BeginInvoke把操作調(diào)度回 UI 線(xiàn)程不要用Control.CheckForIllegalCrossThreadCalls false壓制報(bào)錯(cuò)那是把隱患?jí)合氯ズ竺鏁?huì)讓數(shù)據(jù)不同步得更邪門(mén)。后臺(tái)線(xiàn)程只負(fù)責(zé)取數(shù)據(jù)拿到結(jié)果后丟回 UI 線(xiàn)程更新。如果是主線(xiàn)程等待數(shù)據(jù)庫(kù)考慮把查詢(xún)封裝成異步方法。門(mén)店系統(tǒng)數(shù)據(jù)量不大最簡(jiǎn)單的做法是收銀臺(tái)結(jié)算時(shí)給主界面一個(gè)“正在結(jié)算”的提示讓用戶(hù)知道系統(tǒng)在工作而不是卡死。5.2 中文亂碼SQL 文件導(dǎo)入后整表問(wèn)號(hào)現(xiàn)象運(yùn)行別人給的 sql 文件商品表里的中文變成一排問(wèn)號(hào)或者導(dǎo)入時(shí)報(bào)“字符串或二進(jìn)制數(shù)據(jù)將被截?cái)唷?。原因SQL 文件本身保存的編碼和 SQL Server 解析時(shí)使用的編碼不一致。用記事本另存為 ANSI 的腳本導(dǎo)入到 SQL Server 2012 以上實(shí)例中秋風(fēng)掃落葉一樣把中文字符解析錯(cuò)。另一個(gè)原因是 INSERT 語(yǔ)句里的中文字符串沒(méi)有加N前綴導(dǎo)致隱式轉(zhuǎn)換后亂碼。解決SQL 文件統(tǒng)一保存為帶 BOM 的 UTF-8 編碼在 SSMS 打開(kāi)時(shí)選擇“Unicode UTF-8”。所有插入中文的字符串常量都寫(xiě)成N中文例如INSERT INTO dbo.products (product_name) VALUES (N可口可樂(lè))。文件已經(jīng)亂碼的只能用文本編輯器重新把內(nèi)容保存為正確編碼再執(zhí)行沒(méi)有別的后悔藥。部署到門(mén)店時(shí)建議把 SQL 文件放進(jìn)源代碼目錄一起走不要從微信聊天記錄里復(fù)制微信傳輸會(huì)動(dòng)文件編碼。5.3 掃碼槍輸入自動(dòng)觸發(fā)按鈕焦點(diǎn)控制與回車(chē)攔截現(xiàn)象掃碼槍掃一個(gè)商品條碼商品沒(méi)有被添加進(jìn)購(gòu)物車(chē)反而彈出了登錄窗口或者把當(dāng)前編輯框的內(nèi)容提交了收銀臺(tái)操作完全混亂。原因大多數(shù)掃碼槍是“鍵盤(pán)模擬器”相當(dāng)于在聚焦的控件上快速輸入一串字符再敲一個(gè)回車(chē)。如果焦點(diǎn)剛好在“查詢(xún)”按鈕上回車(chē)就觸發(fā)了按鈕的 Click 事件。這個(gè)行為在 WinForm 里特別容易讓人一頭霧水看起來(lái)是程序亂跳其實(shí)是焦點(diǎn)和回車(chē)事件在作祟。解決為掃碼槍做一個(gè)專(zhuān)門(mén)的輸入框不讓焦點(diǎn)跑到其他按鈕上。在輸入框的 KeyPress 事件里判斷如果按下的是回車(chē)就取出完整條碼去查詢(xún)并添加購(gòu)物車(chē)同時(shí)用e.Handled true吞掉這個(gè)回車(chē)事件。這樣掃碼槍的自動(dòng)回車(chē)不會(huì)再觸發(fā)按鈕人工鍵盤(pán)在輸入框里按回車(chē)也只會(huì)添加商品。如果系統(tǒng)里有多個(gè)窗口都希望響應(yīng)掃碼把掃碼輸入的邏輯統(tǒng)一封裝到一個(gè)控件里不要在每個(gè)窗口里各寫(xiě)一遍否則改一處忘一處。private void txtScan_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar (char)13) { string barcode txtScan.Text.Trim(); AddProductToCart(barcode); txtScan.Clear(); txtScan.Focus(); e.Handled true; // 關(guān)鍵攔截回車(chē)防止觸發(fā)按鈕 } }5.4 庫(kù)存變負(fù)數(shù)兩臺(tái)收銀機(jī)并發(fā)扣減同一件商品現(xiàn)象月底盤(pán)點(diǎn)發(fā)現(xiàn)庫(kù)存比賬面少了甚至出現(xiàn)負(fù)數(shù)。日志里看不到誰(shuí)刪過(guò)數(shù)據(jù)數(shù)據(jù)庫(kù)也找不到異常操作。原因兩臺(tái)收銀機(jī)同時(shí)賣(mài)同一件商品時(shí)兩邊的程序都先查詢(xún)庫(kù)存查到的都是 10各自判斷庫(kù)存足夠后扣減 1結(jié)果兩次 UPDATE 后庫(kù)存變成 8實(shí)際只賣(mài)了 2 件卻扣了 2 次庫(kù)存。這種問(wèn)題在單品數(shù)量少、價(jià)格高的小超市特別常見(jiàn)一瓶貴價(jià)酒被賣(mài)成負(fù)數(shù)。解決扣庫(kù)存的 SQL 用原子更新不再先查后改。UPDATE dbo.products SET stock_qty stock_qty - qty WHERE product_id pid AND stock_qty qty這一步如果影響行數(shù)為 0說(shuō)明庫(kù)存不足或商品不存在再在事務(wù)里回滾并提示用戶(hù)。配合上一章提到的UPDLOCK鎖提示兩臺(tái)收銀機(jī)同時(shí)點(diǎn)擊結(jié)算時(shí)數(shù)據(jù)庫(kù)會(huì)在行級(jí)串行化處理不會(huì)再出現(xiàn)各自讀舊庫(kù)存的競(jìng)態(tài)。如果你把商品表放到內(nèi)存緩存里做扣減一定要保證緩存更新和數(shù)據(jù)庫(kù)更新在同一事務(wù)里否則緩存與數(shù)據(jù)庫(kù)不一致的坑更大不建議小系統(tǒng)做這么復(fù)雜。5.5 換電腦跑不起來(lái)連接串與安裝打包的坑現(xiàn)象源碼在自己的電腦上運(yùn)行正常打包安裝到門(mén)店另一臺(tái)電腦上打開(kāi)就報(bào)“在與 SQL Server 建立連接時(shí)出現(xiàn)與網(wǎng)絡(luò)相關(guān)的或特定于實(shí)例的錯(cuò)誤”。原因最常見(jiàn)的是連接串寫(xiě)死了電腦名或 IP拿到新環(huán)境后數(shù)據(jù)庫(kù)實(shí)例名、賬號(hào)密碼都不一樣而代碼里后綴是寫(xiě)死的.或者開(kāi)發(fā)機(jī)的實(shí)例名。其次是目標(biāo)機(jī)器沒(méi)裝 SQL Server 或者只裝了 Express連接串卻連接的是默認(rèn)實(shí)例。還有人忘了把App.config一起發(fā)布導(dǎo)致新機(jī)器拿不到配置。解決連接串讀ConfigurationManager部署時(shí)直接改App.config文件不用重新編譯。打包工具我一般用 Inno Setup比 VS 自帶的 InstallShield 直觀一些主程序、運(yùn)行庫(kù)、配置文件一起打包。門(mén)店電腦必須有 SQL Server 實(shí)例裝 Express 也可以用但連接串要寫(xiě)成Data Source.\\SQLEXPRESS并且配好賬號(hào)。如果你用 ClickOnce 發(fā)布注意App.config會(huì)被轉(zhuǎn)換調(diào)試好的連接串可能被覆蓋得在發(fā)布選項(xiàng)里排除配置文件或者部署后重新設(shè)置。一個(gè)更省心的做法是程序啟動(dòng)時(shí)檢測(cè)數(shù)據(jù)庫(kù)連接失敗則彈出一個(gè)小窗口讓維護(hù)人員填服務(wù)器地址、賬號(hào)、密碼自動(dòng)寫(xiě)回App.config。這樣新門(mén)店部署時(shí)就不需要任何開(kāi)發(fā)者到場(chǎng)多出一段二十行的配置對(duì)話(huà)框能省掉不知道多少個(gè)電話(huà)和遠(yuǎn)程。6. 今晚就能做的性能驗(yàn)證把收銀臺(tái)反應(yīng)時(shí)間壓到一百毫秒以?xún)?nèi)收銀臺(tái)體驗(yàn)好壞核心指標(biāo)是掃一個(gè)商品到購(gòu)物車(chē)多了一行這個(gè)過(guò)程用戶(hù)能不能感到“秒開(kāi)”。如果掃完條碼還要轉(zhuǎn)圈等一秒高峰期排隊(duì)的顧客就能感受到這家店系統(tǒng)很慢負(fù)面影響直接反應(yīng)在門(mén)店口碑上。這套 WinForm 系統(tǒng)性能瓶頸不在 WinForm而在數(shù)據(jù)庫(kù)訪問(wèn)頻率。我建議你今晚做三個(gè)測(cè)試不需要改架構(gòu)只需要在現(xiàn)有代碼上加一層優(yōu)化。第一個(gè)測(cè)試是商品緩存。收銀臺(tái)掃商品時(shí)程序每次去數(shù)據(jù)庫(kù)按條碼查一條商品這是最常見(jiàn)的慢點(diǎn)。幾百毫秒的數(shù)據(jù)庫(kù)往返加上網(wǎng)絡(luò)延遲疊加每個(gè)商品查一次結(jié)賬十條商品的訂單就多出好幾秒。改法是在程序啟動(dòng)時(shí)把商品表加載進(jìn)一個(gè)Dictionarystring, ProductCacheItem鍵是條碼掃一個(gè)取一個(gè)完全不打數(shù)據(jù)庫(kù)。緩存里的stock_qty只在結(jié)賬扣庫(kù)存后才更新同時(shí)后臺(tái)每隔五分鐘刷新一次緩存。第二個(gè)測(cè)試是 DataGridView 虛擬模式。商品多到萬(wàn)級(jí)時(shí)直接綁定 DataTable 滾動(dòng)會(huì)肉眼可見(jiàn)地卡。把 DataGridView 的VirtualMode設(shè)為 true自己實(shí)現(xiàn)CellValueNeeded事件只提供當(dāng)前屏幕需要顯示的幾十行滾動(dòng)極流暢。虛擬模式的代價(jià)是失去自動(dòng)排序和自動(dòng)編輯但收銀系統(tǒng)根本不依賴(lài)這些功能適合純展示場(chǎng)景。第三個(gè)測(cè)試是批量寫(xiě)入。一個(gè)訂單十條明細(xì)如果用十個(gè) INSERT 語(yǔ)句逐條執(zhí)行每條都有連接往返放本地還好走網(wǎng)絡(luò)就連累結(jié)賬速度。改成SqlBulkCopy一次性把明細(xì)表寫(xiě)入數(shù)據(jù)庫(kù)或者用表值參數(shù)傳入存儲(chǔ)過(guò)程能把這十次往返變成一次。SqlBulkCopy 要記得把事務(wù)對(duì)象傳進(jìn)去否則訂單主表成功明細(xì)表失敗數(shù)據(jù)完整性直接破防。我以前接手過(guò)一家門(mén)店的收銀系統(tǒng)結(jié)賬高峰期顧客排了四條隊(duì)還是慢查了半天發(fā)現(xiàn)他們?cè)诿骷?xì)循環(huán)里每次都寫(xiě)日志文件日志寫(xiě)盤(pán)和數(shù)據(jù)庫(kù)查詢(xún)串行執(zhí)行把整個(gè)收銀速度拖到了三秒一單。去掉日志同步寫(xiě)加一個(gè)商品緩存整體響應(yīng)時(shí)間壓到一百毫秒以?xún)?nèi)。那次之后我養(yǎng)成了一個(gè)習(xí)慣任何收銀系統(tǒng)優(yōu)化第一件事永遠(yuǎn)是看數(shù)據(jù)庫(kù)請(qǐng)求次數(shù)而不是糾結(jié)界面美觀。先把掃商品不查庫(kù)、結(jié)算只寫(xiě)一次庫(kù)這兩件事做到收銀臺(tái)就基本不會(huì)再被吐槽慢。希望這些經(jīng)驗(yàn)和踩過(guò)坑的參數(shù)能幫到你照著這個(gè)方向調(diào)完你再回來(lái)看這套 WinForm 項(xiàng)目就會(huì)覺(jué)得處處都能解釋得通了。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
丁香五月开心婷婷| 久久人人人人妻| 久久激情五月婷婷| 五月丁香六月激情欧美综合| 亚洲色婷婷激情| 成人短视频在线免费观看| 激情五月天婷婷丁香| 激情www.98com| 婷婷六月色情| 日韩精品呦呦va| 999热在线视频| www.99色在线| 五月婷婷六月色| 99热精品在线播放| 丁香五月激情鲁| 久操大香蕉| 九久久婷婷| 五月丁香人妻| 丁香亚洲婷婷五月| 99小视频在线| 玖玖爱综合网| 欧美亚洲成人在线| 超碰国产在线播放| 99色在线视频| AV在线资源| WWW.桔色成人.COM| 天天色天天爱天天舔| 六月婷婷七月丁香| 婷婷 伊人 久久| 欧美三级A做爰在线观看| 91wwmm导航| 思思热闹这里只有精品| 丁香五月在线人妻| 五月丁香久久| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 4399伦理午夜| www.99久久久久99| 色婷婷最新域名 | 激情综合五月丁香| 激情综合区| 甈你aaaaa| 色婷婷婷av| 色播五月天婷婷老师| 婷婷在线中文字幕| 国产精自产拍久久久久久蜜| 日韩中文字幕| 国产古装妇女野外A片| 国产毛片精品一区二区色欲黄A片| 影音先锋男人av资源站| 丝袜熟女一区二区三区| 日本少妇AA一级特黄大片| 亚洲精品色| 久久综合性| 九九热在线视频观看| 丁香五月激情综合在线观看| 99这里只有精品在线| 午夜婷婷丁香| 色婷婷激情小说网| 久久96热| 婷婷丁香五月亚洲17cao| 26uuuu精品一区二区| 97色在线| 思思久久思思| 操操操Av| 婷婷精品在线| 26uuu国产| 五月色丁香| 色色色免费视频| 五月婷婷丁香六月| 亚洲色网络| 色婷婷五月天视频在线| 亚洲在线资源| 香蕉久久av一区二区三区| 色五月激情网| www天堂99| 国模九区| 中文字幕AV网址| 97色97干| 五月婷六月天| 99婷婷国产最新视频| 婷婷人人操| 狠狠色婷婷7777久| 91聚色综合网| 秋霞性爱AV| 操操啪| 色碰碰| 天天做天天爱高潮片| 亭亭玉立国色天香| 五月六月婷婷| 色综合色色| 香蕉综合网| 影音先锋自拍网| 伊综合蕉| 快乐激情五月色婷婷| 深爱激情小说五月婷婷| 91色吧网| 艹B高清无码| 人妻视频一区而且二区| 91操碰| 管管補管管紱| 九九热99免费视频| H亚洲| 婷婷丁香综合| 五月婷婷在线网站| 丁香六月五月天| 色.五月综合网| 婷婷综合另类| 亚洲色情一区二区三区四区| 丁香五月在线自慰| 五月天婷婷久草丁香| 综合五月婷婷| 可以免费观看的av| 操操综合网婷婷| 久久sp免费视频| 色色是色N一| 五月天色婷婷伊人网| 成人免费在线电影| 亚洲永远av在线播放| 综合激情在线视频| 亚洲六月色| 激情五月天婷婷| 超碰成人影视| 天天色天天噜| 天天操天天插| 婷婷丁香色性爱| 丁香五月婷婷激情123| AV在线免费播放| 电影91久久久| 婷婷激情丁香五月婷婷激情丁香五月婷婷 | 九月激情婷婷丁香| 亚洲视频在线观看99| 97色女人在线| 天堂综合久| 六月婷伊人| 色天堂在线| 色九九综合色| 久久深爱激情网| 国产成人综合网| 婷婷新网址| 色婷婷六月激情| 丁香六月啪| 色色97丁香婷婷五月天| 五月婷婷人妻| 91黄色五月天视频| 五月天婷婷人妻| 综合久| 天堂久久性| 久久亚洲婷婷| 亚洲日比视频| 五月深爱激情网| 丁香五月综合| 99这里只有精品视频免费| www,超碰| 九月影院義母在线播放| 97av在线视频| 天天日天天做天天舔 | 99热这里只有精品3| 懂色av蜜臀av粉嫩av永陈冠希| 26uuuavcom| 99操碰| 香蕉综合网| 在线中文av| 久久色9| 婷色五月天| 色婷婷另类| 亚洲人人操BD| 婷婷色在线播放| 色婷婷五月综合| 欧美超碰亚洲| 大香蕉婷婷五月| 亚洲天99| 涩涩五月天| 99热这里只有99| 婷婷六月啪啪| 五月丁香狠狠地噜噜噜噜| 图片区 小说区 区 亚洲五月| 九九久久五月天| 超碰人人操人人干| 538在线| 成人无码精品1区2区3区免费看| 五月丁香亭亭成人电影| 综合五月激情| 五月丁香成人| 五月婷婷激情色情网| 国产一区二区三区影院| 婷婷色5月激情网| 五月激情婷婷四射| 91欧美日韩综合| 亚洲综合99| 综合97五月| 亚洲精品V天堂中文字幕 | 日本不卡一区二区三区| 九久9精品| 天天综合网站| 色播激情五月天| 操婷婷基地| 99精品在线| 婷婷丁香五月天影院 | 五月停停99| 可以免费看AV网站| 8区视频在线| 色色com| 亚洲亚洲激情| 无码九九九九| 欧美人与性动交CCOO| 五月天婷婷永久免费视频| 97偷拍对白视频| 97色女人在线| 丁香六月视频免费观看| 97精品自拍| 亚洲亚洲人成综合网络| 天天干,夜夜爽| 中文字幕视频在线播放| 好叼操在线观看| 99只有精品| 激情丁香五月婷婷| 五月开心深爱激情网| 五月丁香网站| 色五月开心久久网| 99噜噜噜在线播放| 色九月婷婷| 五月综合六月丁| 色婷婷影| 日韩小视频在线99| 九九色色| 国产免费一区二区在线A片视频| 狠狠狠人妻| 玖玖婷婷婷丁香五月| 日本色婷婷| 国产无套精品一区二区| 久久 这里只有精品1| 五月天婷综合| 九九综合网| 九九这里都是精品| 久久思思99| 激情五月丁香五月| 精品人妻一区| 色噜噜狠狠一区二区三区| 久久这里只有精品07| 六月丁香天堂| 亚洲精品九九| 成人超碰网| 狼人久草| 丁香成人五月天| 五月天综合图片| 亚洲婷婷丁香五月天激情小说| 午夜九九九九九九九九九九九九九| 日产精品一线二线三线芒果| 国产特级毛片AAAAAAA高清| www.99精品在线| 久草xx性爱视频| 丁香五月 综合| 国产精品日日躁夜夜躁| 婷婷午夜天| 婷婷六月天精品| 亚洲色色色色色| 久99热在线观看| 97婷婷五月激情六月丁香伊人| 99网| 日本黄色一级| 亚洲一二三网| 综合 蜜月 婷婷| 五月婷婷丁香| 裸睡玩奶头(高H)| 大香蕉精品视频| 人人摸人人澡人人| 网色99| 久99久在线观看| 女高怪谈在线观看| 五月天综合网| 岛国AV网| 丁香五月天啪啪| 久久婷婷综合五月天| 狠狠色噜噜狠狠狠狠综合| 一丁香五月天月AV| 丁香六月啪| 五月丁香啪啪| 亚洲12p| 伊人久久丁香狠狠婷婷综合香蕉 | 色婷婷五月在线| 婷婷激情五月天在线| 丁香五月人妻熟女| 色五月丁香网| 色五月激情综合网| 人妻熟人中文字幕一区二区 | 五月丁香久久久| 久久性爱99国产| 婷婷丁香五月天综合激情| 久久99热网| 99精品综合| 超爽内射| www。五月天激情| 99精品色色| 79色色免费| 色婷五月天激情| 五月丁香色婷婷| 色综合久久天天综合网| 欧美日韩欧美| 日本欧美在线| 另类小说婷婷色| 六月丁香婷婷色69| 色爽九九| 全部老头和老太XXXXX| 久久婷婷综合五月| 色天堂A| 99热插| 婷婷丁香激情综合色情| 久久久久9999| 天天插综合网| 欧美搡BBBBB摔BBBBB| 99色综合久久| 五月丁香六月综合情在线观看 | pacopacomama 070722_670 素人奥様初撮りドキュメント 103 大久保純子 | 国产在线自| 99日本精品视频热| 五月天亚洲色| 久久性爱视频| 猫咪伊人久久| 国色天香伊人狠狠色| 天天插天天爽| 超碰精品在线| av人人操| 另类图片 五月激情| 综合色色色色色色| 丁香五月av| 久久人人做人人妻人人玩精品va| 五月丁香综合精品欧美| www激情| 色五月综合婷婷| 婷婷五月综合网| 99国产精品白浆在线观看免费| 人妻在线网站| 六月婷色六月| 久久婷婷色| 激情五月天婷婷丁香| 热的五码久久精品| 亚洲另类婷婷综合| 新激情综合| VA国产在线综合网站| 色五月播五月| 色在线免费观看| 激情五月综合色| 五月天播播| 熟女强人妻一区二区三区四区无| 天天做综合| 97色色视频| 欧美性生交xXxX久久久| 亚洲久久视频| 97色色色| 亚洲综合99| 色五月婷婷激情| 亚洲综合五月天婷婷丁香| 丁香六月av| 天天狠狠色| 第九色区av天堂| 男女99免费视频| 色婷婷电影网| 丁香六月| 色停停香蕉视频| 94干大香蕉| 婷婷五月久久| 97超碰99热99| 五月天成人综合| 久久五月天 91| 婷婷六月插屄激情| 五月丁香综合色婷婷| 色婷婷五月六月丁香综合视频| 成人在线综合| 91干视频| 伊人婷婷五月天| 国产精品人妻欲求不满| 91久久久久久久久久久| 欧美日综合| 久久大香蕉同僚| 亚洲综合五月天婷婷丁香| 狼人狠狠操| 亚洲一区国产传媒| 26uuu欧美日本| 99久久网站| 天天色播| 亚洲激情五月婷婷日日| 免费色婷婷| 亚洲A色| 丁香五月激情啪啪综合| 在线观看婷婷5月| 天天操五月天| 色综合色五月| 99色看这里只有精品| 97色碰| 亚洲综合激| 色婷婷成人做爰A片免费看网站| 亭亭玉立国色天香| 亚洲午夜成人av电影网| 婷婷久久免费看| 可以看的av| 久色国产| 92久久| 天天色播| 色五月女| 51XX午夜影福利| 久久久性爱视频| 天天日天天插天天操| 亚洲亚洲人成综合网络| WWW.婷婷| 97人人射| 99热有精品在线观看| 综合久久人妻| 婷婷丁香五月综合| 色综合99无码 | 欧美久久一级内射wwwwww.| 五月色俺婷婷| 人妻精品在线| 超极99精品| 97超碰在线免费观看| 综合色色网| 国产日产亚系列精品版优势| 91精品综合久久婷婷九色| 九九99久久| 国产69久久久欧美黑人A片| 婷婷五月天视频在线观看| 日美三级| 无码人妻精品一区二区蜜桃色欲| 九九热精品| 色色色视频| 色婷亚洲| 久99久视频精品| 丁香婷婷六月天| 秋霞电影理论| 狠狠色丁香久久久婷| av操B网站| www.色五月| 激情小说婷婷五月| 99re在线观看视频| 亚洲综合激情五月久久| 狠狠色婷婷7777久综合| 日本不卡高字幕在线2019| 九月av| 伊人婷婷激情| 九九家庭影院| 丁香婷婷六月天| 激情综合网激情五月婷婷| 丁香婷婷五月天激情四射| 偷拍视频五月天| 色播综合| 丁香五月激情棕合| 婷色视频| 亚洲区1| 荡乳尤物3HP1V5| 亚洲综合草草| 黄色一级影片| 精品色色| 99热久| 色婷婷激情视频| 婷婷在线观看五月天在线视频| 97香蕉人人在线观看| 人人色人人弄人人操| 色色色色色色网站| 五月婷婷无码| 九九久久五月天| 婷婷六月色丁香视频在线观看| 9久久久久久久久久久| 黄页免费一级视频懂色| 碰人人97| 亚洲精品一区中文字幕乱码| 日本综合久久| 人妻久久久| 另类专区在线观看| 久99热| 99乱视频| 97人妻碰碰中文无码久热丝袜| 婷婷五月天小说| 激情五月天激情小说| 欧美啄木乌丝袜人妻系列| 亚洲精| caopeng97日韩| 国产五月天激情小说| 九九蜜臀精品| 精品综合久久久久久五月天| 九九这里精品| 情婷婷五月天| 丁香六月婷婷| 日本三级韩三级99久久| 六月丁香啪啪| 任你草| 成AV人片一区二区三区久久| 亚洲第一成人无码A片| 国产成人精品一区二三区熟女在线 | 天天插天天插| 疯狂做受XXXX高潮A片| 老师的粉嫩小又紧水又多A片视频| 色婷婷亚洲婷婷| 97人妻碰碰中文无码久热丝袜| 欧美性丁香色色五月天干干| 欧美性猛交 XXXX 乱大交| 任你草| 99这里只有精品| 五月天婷婷AV| 午夜婷婷| 婷婷激情五月天桃花网| 久99热在线观看| 久久综合五月天| 91碰碰碰| av操一操| 日本欧美在线| 久久桃花网色婷婷| 天天综合网~91综合网| 久久黄色网扯| 婷婷六月天激情| 久热人妻| 久久久久亚洲AV综合| 久久丁香婷婷色情综合| 99热青青草| www.婷婷网| 牛牛碰免费| 亚洲婷婷激情综合激情999精品| 91九色国产| 99视频| www.综合久久| 26UUU成人网| 色五月综合在线| 狠狠色噜噜狠狠狠狠综合| 婷婷五月天开心网| 色色国产| 97日本操| 99ri精品视频在线观看| 夜夜撸天天操| 色五月婷婷五月天| 色五月自偷自拍婷婷婷婷| 日本超碰在线| 欧美α√| 99久久精品免费精品国产_国产精品久久久久久_国产在线|日韩_久久国产精品电影 | 五月丁香婷婷色| 99九九99九九九视频精品| 激情九月婷婷| 久久性爱视频网站| 99在线精品免费视频| 九九九九九九热| 国产日比| 99热资源在线| 99玖玖视频| 久久这里只有精品07 | 野战J办公桌椅H| 99碰网站| 五月色天情| 日日夜夜狠狠| 综合久久综合久久| 久久久天天啊| 婷婷激情五月天桃花网| 天干天天干天天天天天| 精品人妻一区二区三区四区不卡在| 午夜AV网| 色综合性视频| www.狠狠| 久热这里只有精品性色AV| 丁香五月偷拍| 中文婷婷狠狠| 久久婷婷一级片| 99性爱| 大香蕉久久草| 六月婷婷啪啪| 婷婷色操| 开心五月天激情网| 极骚大香蕉伊人| 色五月婷婷天天干| 九九99精品视频在线观看| 五月天狠狠色| 狠狠色丁香| 97色碰碰公开视频| 久久这里只有欧美| 亚洲天堂婷婷| 3pAV| 草草女人亚洲| 99色一| 三男玩一女三A片| 五月天婷婷黄色视频| 五月丁香婷婷色| 99久在线观看| 丁香五月色色| 婷婷五月av| 97热精品| 丁香五月色色| 99热啪啪| 只有精品视频在线观看| 久久精品99| 精品九九在线观看视频| 99热乎| 99精品在线播放| 婷婷丁香六月五月天| 婷婷性爱| 天天爽—爽| 激情五月激情综合网| 99热在线免费观看精品| 另类在线免费视频| 亚洲成人va| 热99一二三| 五月天另类激情在线| 99九九视频| 丁香六月色婷婷| 丁香五月电影| 成熟妇人A片免费看网站| 五月丁香网中文字幕| 婷婷影视久久| 少妇人妻人伦A片| 中文无码婷婷| 成年人丁香五月| 狠狠人妻久久久久久综合丁香| 色婷婷五月综合激情中文字幕| 五月婷婷激清网| 伊人大香蕉综合在线| 最新va在线播放| 91久久婷婷| 国产全是老熟女太爽了| 99re视频精品| 中文字幕黄色片| 九九无码| 狠狠综合网| 91天天操天天干天天射| 激情五月婷婷| 五月天婷婷免费视频| 九九久久精品| 操逼视频网址| 天天干夜夜想| 激情综合色婷婷六月天| 婷婷五月丁香基地在线视频官网| 97干干干丁香| 伊人超碰| 狠狠撸激情综合丁香五月天俺来啦| 欧美性交一区二区三区| 婷色五月天| 五月婷婷,六月丁香| 久久婷婷五月天| 久久综合26p| 五月丁香婷中文| 日日噜狠狠色综合久久| 九九99精品视频在线观看| 婷婷亚洲五月丁香综合在线 | 9久热免费视频99| 亚洲另类在线观看| 婷婷在线综合| va亚洲中文在线| 狠狠综合网| 91日本在线免费| 色婷婷在线视频| 99在线观看精品视频| 人妻内射麻豆视频| 色情五月婷| 91大操| 91一起操| 9久精品视频| www.99成人视频| 五月开心婷婷中文字幕| 婷婷丁香亚洲色综合91| 69人人操人人爽| 色婷婷成人做爰A片免费看网站| 天天干,夜夜爽| 国产熟女日日骚五月丁香爱| 五月丁香婷婷色色| A片天天| 丁香五月手机在线| 9l视频自拍9l九色成人| 久9久成人精品视频| 日日噜狠狠色综合久久| 97视频.干com| 五月丁香综合影院| 日韩日比视频| 激情综合婷婷久久| 大香蕉天堂色| 超级碰 久久9| 丁香婷婷浪潮AV久久综合| www.婷婷五月天| 人妻中文在线| 色999亚洲人成色| 99噜噜| 99re6久热只有精品6在线直播| 五月天狠狠干| 激情综合激情五月| 亚洲婷婷婷| 色五月丁香激情视频| 888精品福利地址| 天天日天天做天天舔| 亚洲视频五区| 欧美日韩99| 67194成I人在线观看线路1| 久久天堂女人| 亚洲六月婷| 色婷婷色久综| 丁香五月色五月婷婷宗合| 五月婷婷久久内射| 人人看人人草人人摸| caopeng97日韩| 亚州日本欧州韩美高青高潮一| 色婷婷成人在线| 激情五月激情综合网一级丸片| 五月天婷婷三级黄| 丁香久久AV| 色婷婷五月综合在线| 99色一| 亚洲aV写真天天综合网久久| 十月色综合| 五月天婷婷7米| 五月天婷婷影院| 六月婷婷激情图片| 五月天婷婷基地| 国产精品99久久久久久久女警| 欧美性生交XXXXX无码小说| 乱岳熟女50岁| 曰本aaaaaa丈片| 色婷婷色综合激情91| 99激情网| 激情五月丁香色婷婷| 久热这里只有精品99re,久热这里只有精品7| 婷婷五月开心中文字幕色| 内射丰满人妻| 亚洲丁香婷婷丁香五月天激情| 97碰碰在线看视频免费| 九九久久99| 大香蕉综合视频在线| 久热伊人在91| www。五月天激情| 色情激情五月| 激情 婷婷| 五月婷婷综合在线| 操精品9| 亚洲 视频 导航 一区| 久久综合九九| 婷婷综合在线观看视频| 免费看欧美成人A片无码| 欧美人妻一区二区| 久久婷婷六月综合国际| 亚洲色图81p| 色婷婷五月天av在线| 黄页大全十八禁| 婷婷丁香五月激情| 色婷婷亚洲婷婷| 亚洲综合碰| 五月天激情丁香| 99啪啪视频| 五月婷婷久久大片| 99久久网站| 伊人久久丁香婷婷六月五月综合| 久青操| 5月丁香美女影院| 久久久8| 天天色激情| 99爱在线视频| 99亚洲精美视频在线观看| 色播五月丁香婷婷| 久久久91| 牛牛色av| 99re26视频| 婷婷五月天影院| 人人操人人添人人摸97| 五月情四婷婷| 狠狠爱综合| 97操在线资源| 2020夜夜操天天爽| 激情五月婷婷在线观看| 婷婷五月另类网站| 深爱开心激情网| 五月天免费色| 五婷婷六月合| 日本婷久久| 亚洲成人噜噜| 天天天天天日| 波多野结衣AV无码Porn| 开心五月综合激情综合五月| 综合网五月| 午夜成人综合| 99亚洲视频| 日本欧美成人片AAAA| 123日本不卡在线| 梁铮版《蜘蛛女侠》在线| 久婷婷婷| 91碰超| 婷婷色五月丁香六月欧美啪| 五月丁香综合色婷婷| 亚洲色婷婷色| 九九精品热| 五月婷婷中文字幕| 婷婷五月综合色拍| 婷婷色五月开心五月| 五月丁香六月激情欧美综合| 国产一级黄色影片,| 婷婷中文字幕版| 97久久视频| www色婷婷久久综合久色| 99热免费在线| ww亚洲ww在线观看| 色婷婷五月天在线观看| 欧美va精品va老师va| 丁香色六月婷婷| 97操男人的天堂| 亚洲成人乱码av网站| 狠狠五月婷婷| 色区域网站视频| 国产婷婷五月中文字幕高清| 96丁香六月婷婷蜜桃综合久久| 九九人人操| 亚洲精品大片| 综合激情网五月激情| 涩五月婷婷| 五月夜丁香| 91久久日日| 成人性爱无码| 草草影院爱爱| 亚洲激情AV| 精品国产va久久久久| 色婷婷成人做爰A片免费看网站| 99爱免费在线观看| 97caop| 婷婷五月天BBw| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 影视av久久久噜噜噜噜噜三级| 婷婷九月狠狠色| 成片免费播放| 日韩狠狠色婷婷| 香蕉久操| 五月天婷婷免费视频| 色色色婷| 久久久中文| 色色综合视频| 色噜噜五月天| 色色色999| 五月天夜夜爱夜夜操| 亚洲精品又粗又大又爽A片 | 一级操逼内射在线视频| 五月天社区婷婷丁香社区| 丁香五月婷婷影院| 夜夜操夜夜姧| 91色在线 | 日韩| 色爱五月天| 色婷婷丁香五月天激情综合网| 超碰99热在线观看| 亚州色色色| 婷婷激情啪啪| 色婷婷免费视频| 天天干天天日天天操| 国产热精品| 狼人婷婷综合| 99ri在线视频| 色欲丁香久久| www.色婷婷.com| 欧美顶级少妇做爰HD| 九九热在线精品| 国产xxxxx在线观看| 99热99日天天干| 激情五月综合网| 午夜国产精品AV在线播放| 亚洲一级色电影| 综合色五月亭亭| 日韩AV片| 色五月六月| 丁香五月婷婷久久久| 丁香六月青青草| 北京熟妇搡BBBB搡BBBB| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 中文av网站| 婷婷五月天无码视频| 色玖玖综合| 婷婷综合性爱网| 色~性~乱~伦~噜| Www.狠狠| 五月丁香在线婷婷蜜桃| 超碰免费人妻| 久久超级碰视频| 4399无码视频| 五月色亚洲| 六月丁香婷婷综合狠狠爱夜夜爱| 亭亭社区五月天| 婷婷四月 成人 狠狠干| 丁香六月婷婷综合欧美| WWW色色色COM| 极品少妇XXXX精品少妇偷拍| 人人干av| 最新激情五月天| 五月婷婷激情性爱| 91操屁股| 丁香婷婷六月| 1024亚洲无码| 婷婷五月花| 夜夜骑夜夜撸| 丁香五月婷婷亚洲综合精品| 丁香六月婷婷综合缴| 天天看夜夜看| 六月丁香射婷婷欧美色图片| 色播五月婷婷| 91超碰在线观看| 成人av观看| 啪精品| 丁香六月综合激| 影音先锋五月天婷婷丁香在线观看| 日本精品久久久久中文字幕| 六月激情网| 26uuu欧美日本| 四虎成人精品永久免费AV九九| 婷婷五月天第三页| 色色色免费视频| 人人爽人人射-美女久久久久久久久久-成人AV| 9 大屁股在线视频精品| 丰满女老板BD高清A片| 91久久久久久久久18| 天天综合影院| 色播五月丁香综合| 激情开心五月婷婷| 婷婷五月天xxx| 色99亚洲| 蜜桃婷婷丁香五月天狠狠久久综合| www九九热| 色很很96| 无码网| 伍月激情天| 6080av| 丁香五月23111| 日韩精品无码99| 色婷婷狠狠18| 丁香六月婷婷| 九九色之九九色88| 一级性感黄色内射视频| 婷婷成人在线| 丁香伊人网| 丁香五月天在线观看视频| 色婷婷五月影视| 婷婷丁香五另类网站| 色色亚卅| 天天综合网亚洲网站| 五月天成人小说| 欧美 日韩 成人在线| 久久久久久性爱视频| WWW.桔色成人.COM| 99re思思久久| 无码激情AAAAA片-区区| av婷婷六月丁香社区在线观看| 亚洲色99综合天堂| 丁香五月黄色| 激情文学久久| 夜夜夜夜操| 无码任你操| 色婷婷免费观看| 六月色色| 久9热在线免费观看| 九九综合九色欧美狠狠| 成人精品网站在线观看| 久9热视频| 99超在线| 色 色 色综合com| 综合久久综合| 欧美日本韩国亚洲| 九色PORNY在线精品酒店| 另类亚洲2| 婷婷五月激情片| 婷婷久久丁香| 99这里有精品视频| 91熟妇大香蕉| 97人人射| 黄色AAAAA| 五月丁香综合中文| 99精品国产在热久久| 日韩美女羞羞网站在线观看| eeuss人妻| 另类激情五月天| 天天激情站| 伊人狼人干| 久久久五月天| 五月婷婷综合精品| 丁香五月婷婷基地| 欧美啪啪网| 美女婷婷六月色| 久久99大全| 五月婷在线| 婷婷欧美激情综合| 99在线国| 激情五月六月婷婷| 婷婷伊人綜合中文| 蜜臀A∨在线水帘洞| 舔色婷婷| 操人妻AV| 激情色播| 日日杆天天| 亚洲亚洲人成综合网络| 色综合久久天天综合网| VA婷婷亚洲| 99久久99九九99九九九| 久久日九九| 亚洲日韩26uuu| 色九月| 97艹| 99免费视频精品| 大香蕉啪啪网| 亚洲狠狠婷婷| 欧美婷婷五月天综合| 六月丁香激情网| 五月天国产婷婷精品视频在线| 91色色色| 日韩狠狠色| 岛国AV网| 久久六月婷婷| 天天综合网91| 99免费视频网| 无码激情AAAAA片-区区| 快乐激情五月色婷婷| 五月天成人在线播放| 91av无码| 99综合免费视频| 野战J办公桌椅H| 五月天·www·com| 99re思思久久| 欧美五月婷婷| 国产婷婷综合在线免费视频| 9999热精品| 丁香婷婷十月| 久久婷婷七月丁香| 四虎婷婷五月天| 99热在线观看| 久一这里有精品国产| 亚洲操操操| 激情五月天婷婷直播| 五月丁香啪啪激情| 色婷| 婷婷丁香五月麻豆| 五月色婷婷中文字幕| WWW.桔色成人.COM| 色婷成人狠干| 国产精品久久7777777精品无码| 区欧美日韩成人| 五月好婷婷| 国产av一区二区三区| 婷婷五月天激情在线观看| 九九热在线视频| 日 日干 日日做| 丰满老熟妇BBBBB搡BBB| 99色热视频| 久久婷综| 五月天婷婷久色| 五月婷狠狠| 深爱五月日韩| 婷婷狠狠97| 国产精品视频免费看| 亚洲国产成人在线| 五月婷婷六月丁香| 色情·com| 99国产精品久久久久久久久久久 | 五月综合视频| 久婷婷五月激情| 深爱激情丁香| 久久综合热17c| 亚洲精品国产A久久久久久| 亚洲六月婷| 亚洲AV电影美洲AV电影| 婷婷五月天网| 操B五月天| 丁香啪啪| 性天天中文网| 国产操B视频| 99免费在线| 五月丁香狠狠爱婷婷综合| 亚洲精品又粗又大又爽A片| 色久五月| 成人午夜在线视频| 欧美色色色色色| 婷婷综合网在线| 久久在线视频免费观看| 99热这里只有精品最新网址| www.99操| 99久在线精品99re8| www.99热视频在线观看| 日本久久色| 欧美色99| 婷婷深爱五月亚洲综合| 97婷婷丁香五月天激情图片| 99rewww| 香蕉曰比| 色五月激情五月开心五月| 免费婷婷| 超91热| 色色色欧美| 伊人婷婷五月| 伊人婷婷大香蕉| ..真实国产乱子伦对白在线_欧| 五月天色影院| 精品婷婷五| 在线不卡的视频| 久久香蕉网| 激情综合网激情五月丁香| 婷婷激情性爱| 日本精品人妻无码77777| 丁香五月激情网| 婷婷 亚洲图片 丁香| 超碰93在线观看| 婷婷99视频在线| 狠狠干婷婷| 六月亚洲| 操一区| 婷婷五月a| 色狠狠色噜噜AV天堂五区| 五月丁香六月玩女人| 色婷婷丁香五月高清在线| 婷婷色操| 琪琪布丁香社区激情五月天| 99自拍网| 六月丁香婷婷色综合| 色婷网| 免费成人网在线观看| 99视频只有精品| 人妻激情在线| 婷婷五月天亚洲丁香| 九九这里只有精品在线视频| 伊人久久大香线蕉AV最新午夜| 激情开心五月天| 97干欧美| 这里只有免费精品| 欧美久久五月婷婷| 五月丁香成人网| av成人在线播放| 天天色2017| 99精品在线| 丁香五月综合| 66成人网| 91大屁股| 九九热这里精品| 国产成人av在线播放| 一本九九色| 六月婷婷综合网2| 色婷婷丁香五月| 人人操99| www.五月天色色.com| 五月婷六月丁香| 久热最新视频| 亚色网站小视频| 国在线激情网| 婷婷精品在线| 激情婷婷久久| 亚洲AV免费国产电影| 亚洲成人AV电影网| 激情开心五月天| 无码激情AAAAA片-区区| 中文字幕在线免费观看视频| 五月天激情四射| 97在线综合| 久久五月激情| 日本一毛片| 美女激情综合| 小视频久久久aaa| 九九婷婷网五月天| 五月婷婷综合在线视频小说| 婷婷五月天欧美图片在线播放电驴| 另类激情五月天| 六月丁香久久| 婷婷天天日婷婷| 丁香五月婷婷大香蕉| 日本三级中国三级99| 色欲久久久久久综合网综合网| 日日.c| 五月天综合图片| 五月天激情无码| 天天综合中文| 婷婷情爱五月天6| 99热只有| 色婷久九| 丁香五月天网站| 日韩成人精品中文字幕| 99精品久久| 国产精品日本一区二区在线播放| αv中文字幕在线观| 色和综合网| ZpRSw| 日本毛片内射| 五月婷婷啪啪啪| 婷婷99狠狠躁天天躁| 激情婷婷五月黑人| 国产 码在线成人网站| 公的粗大挺进了我的密道 | 性色九九| 色婷婷五月丁香色| 亚洲第一影院高清无码网站| 特级操b片| 91九色国产| 久一这里有精品国产| www.夜夜騎夜夜狠| 亚洲天堂aaaa| 亚洲五月婷婷| 婷婷久久久| 丁香婷婷狠狠97| caopeng97人人| 五月丁香婷婷色色| 天天操天天操| 亚洲激情网| 色偷偷综合| 国产精品成av人在线视午夜片| 操日本色| 九月色婷婷| 中文不卡一二区| 婷婷五月色综合| 免费看欧美成人A片无码| 99日热在线视频| 丁香九月综合激情| 日本熟女三区| 综合性视频99| 五月丁香久久网| 99精品偷自拍| 99玖玖视频| 丁香婷婷激情综合五月激情 | 高清一区二区三区日本久| 殴美97色| 97婷婷色| 久久欧洲综合网| 六月婷婷激情| 色青青电影色五月| 欧美久久网| 日韩av干| 91婷婷在线| 大香蕉综合视频在线| 色播五月丁香| 五月成人天| 97精品综合| 色婷婷五月影院| 色婷婷综合中心| 五月丁香久| 人人妖人人97| 超碰久热| 嫩草乱码一区三区四区| 婷婷久久网| www.99日本| 激情综合网激情五月丁香| 五月婷六月| 四射综合网| 色五月婷婷视频| 婷婷精品视频| 久久五月情| 激情五月婷婷综合网| 9久久精品| 久艹伊| 五月天精品综合在线| 六月婷婷五月天| 亚洲四色五月| 爱婷婷久久视频| 国产成人+综合亚洲+天堂| 97久久五月丁香婷婷| 99视频久久免费视频| 夜夜骑天天操| 日本少妇裸体做爰高潮片| 久久久久网站| 色五婷婷| 男同91| 99色综合网| 五月婷婷啪啪网| 69精品人妻不卡视频| 亚洲国产精品综合色区| 色99在线| 无码四色色色| 99热亚洲| 超碰99热精品| 色婷婷综合视频| 欧美A A A A A| 丁香婷五月| 五月婷亚洲精品AV天堂| 日本三级中国三级99| 涩婷婷五月天在线精品视频| 97碰91| 色五婷婷| 婷婷五月精品| 国产va在线视频| 国产乱人偷精品人妻A片| 99爱免费在线观看| 天天爽天天操| 狠狠 婷婷| 国产亚洲成AV人片在线观黄桃|