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

ARTICLE DETAIL

資訊詳情

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

C# Winform酒店管理系統(tǒng)開(kāi)發(fā)實(shí)戰(zhàn):從數(shù)據(jù)庫(kù)設(shè)計(jì)到部署避坑指南

C# Winform酒店管理系統(tǒng)開(kāi)發(fā)實(shí)戰(zhàn):從數(shù)據(jù)庫(kù)設(shè)計(jì)到部署避坑指南 簡(jiǎn)介這是一份基于C# Winform窗體的酒店管理系統(tǒng)完整項(xiàng)目面向C#課程大作業(yè)、畢業(yè)設(shè)計(jì)以及對(duì)管理類(lèi)軟件開(kāi)發(fā)感興趣的初學(xué)者與開(kāi)發(fā)者。系統(tǒng)采用C#與SQL Server作為技術(shù)棧內(nèi)置管理員和學(xué)生兩類(lèi)用戶支持管理員信息維護(hù)、學(xué)生信息維護(hù)、課程開(kāi)設(shè)與查詢(xún)、成績(jī)錄入與統(tǒng)計(jì)等典型管理功能能夠幫助讀者深入理解Winform窗體布局、數(shù)據(jù)表關(guān)系設(shè)計(jì)、數(shù)據(jù)庫(kù)連接以及基礎(chǔ)增刪改查操作的實(shí)現(xiàn)方式。壓縮包內(nèi)共包含六百一十七個(gè)文件涵蓋三十九個(gè)C#源代碼文件、六十六個(gè)數(shù)據(jù)庫(kù)文件、一百九十二個(gè)GIF操作演示圖、一百九十二個(gè)SSK皮膚美化資源以及動(dòng)態(tài)鏈接庫(kù)、項(xiàng)目配置文件、資源文件、可執(zhí)行文件、圖標(biāo)與音頻等輔助材料整體壓縮包大小約為九十六點(diǎn)五八兆字節(jié)。其中GIF動(dòng)畫(huà)可直觀展示系統(tǒng)各功能的運(yùn)行流程SSK皮膚與資源文件負(fù)責(zé)界面美化可執(zhí)行文件適合快速預(yù)覽整體效果源碼和數(shù)據(jù)庫(kù)文件則可直接重新編譯與調(diào)試。目前已經(jīng)有一百七十三人學(xué)習(xí)下載。同時(shí)包內(nèi)提供完整的解決方案工程、項(xiàng)目配置與數(shù)據(jù)庫(kù)文件并附帶運(yùn)行所需的各類(lèi)資源和演示素材目錄結(jié)構(gòu)規(guī)整便于按功能模塊快速檢索定位。既可以直接運(yùn)行查看系統(tǒng)效果也可以對(duì)照源碼研究業(yè)務(wù)邏輯在此基礎(chǔ)上進(jìn)行模塊擴(kuò)展與二次開(kāi)發(fā)是完成課程設(shè)計(jì)、畢業(yè)設(shè)計(jì)或面試項(xiàng)目時(shí)可復(fù)用的參考版本。1. 為什么酒店管理系統(tǒng)用C# Winform而不是網(wǎng)頁(yè)拿到這個(gè)基于C# Winform窗體的酒店管理系統(tǒng).zip別急著解壓跑起來(lái)。它對(duì)應(yīng)的是很多中小賓館、民宿仍在用的桌面管理模式前臺(tái)電腦上裝一個(gè)exe連一份本地?cái)?shù)據(jù)庫(kù)客人來(lái)了開(kāi)房、退房、結(jié)賬全部操作都發(fā)生在Winform窗體里。相比網(wǎng)頁(yè)版它不用部署Web服務(wù)器斷網(wǎng)也能收銀配合小票打印機(jī)、身份證讀卡器、門(mén)鎖管理這些本地外設(shè)反而更順手。如果你是剛接觸C#的開(kāi)發(fā)者或者正在做課程設(shè)計(jì)、接手這類(lèi)小系統(tǒng)這篇就把從代碼結(jié)構(gòu)到運(yùn)行流程的落地路徑講清楚。2. 把系統(tǒng)拆成模塊與數(shù)據(jù)表先設(shè)計(jì)再寫(xiě)窗體2.1 酒店管理系統(tǒng)的核心模塊與數(shù)據(jù)模型拿到zip后我一般不會(huì)先找登錄窗體而是先打開(kāi)數(shù)據(jù)庫(kù)腳本或者 .mdb 文件。Winform窗體只是皮真正的業(yè)務(wù)邏輯在表結(jié)構(gòu)和SQL里。酒店管理系統(tǒng)繞不開(kāi)這幾個(gè)模塊房型和房間、入住登記、退房結(jié)賬、客戶檔案、系統(tǒng)用戶外加一份訂單/消費(fèi)明細(xì)。表設(shè)計(jì)花不了多少時(shí)間但決定了后面寫(xiě)窗體順不順利。常見(jiàn)的核心表如下表名作用關(guān)鍵字段SysUser系統(tǒng)登錄用戶UserId, UserName, Password, RoleIdRoomType房型定義TypeId, TypeName, Price, BedCountRoom房間信息RoomId, RoomNo, Floor, TypeId, StatusCustomer客戶檔案CustomerId, CustomerName, Phone, IdCardOrders入住訂單OrderId, OrderNo, RoomId, CheckInTime, CheckOutTime, Amount, Deposit, Status, OperatorIdOrderItem消費(fèi)明細(xì)ItemId, OrderId, ItemName, Price, Quantity其中Room.Status建議用int枚舉0空閑、1入住、2臟房、3維修、4預(yù)訂。把狀態(tài)存在單獨(dú)一張表也可以但是會(huì)多一次join小系統(tǒng)用int最省事。Orders.Status則建議用0進(jìn)行中、1已結(jié)賬、2已取消。要注意的是Amount不在入住時(shí)寫(xiě)死而是退房時(shí)按實(shí)際消費(fèi)重新計(jì)算避免后來(lái)加床、加餐改不了。下面這段建表SQL是精簡(jiǎn)版實(shí)際還可以加入樓層、房間備注等字段CREATE TABLE RoomType( TypeId INT IDENTITY(1,1) PRIMARY KEY, TypeName NVARCHAR(20) NOT NULL, Price DECIMAL(10,2) NOT NULL DEFAULT 0, BedCount INT DEFAULT 1 ); CREATE TABLE Room( RoomId INT IDENTITY(1,1) PRIMARY KEY, RoomNo NVARCHAR(10) NOT NULL UNIQUE, Floor INT, TypeId INT FOREIGN KEY REFERENCES RoomType(TypeId), Status INT NOT NULL DEFAULT 0 ); CREATE TABLE Orders( OrderId INT IDENTITY(1,1) PRIMARY KEY, OrderNo NVARCHAR(20) NOT NULL, RoomId INT, CustomerName NVARCHAR(50), CheckInTime DATETIME, CheckOutTime DATETIME, Amount DECIMAL(10,2) DEFAULT 0, Deposit DECIMAL(10,2) DEFAULT 0, Status INT DEFAULT 0, OperatorId INT );說(shuō)明RoomNo用了UNIQUE房間號(hào)不能重復(fù)。Price放RoomType而不是Room因?yàn)橥啃徒y(tǒng)一價(jià)格如果要做淡旺季調(diào)價(jià)就需要再拆一張PriceRule表。數(shù)據(jù)庫(kù)腳本里最好再補(bǔ)一段初始化數(shù)據(jù)把默認(rèn)管理員賬號(hào)和兩三個(gè)房型先插進(jìn)去否則程序第一次啟動(dòng)連登錄都進(jìn)不去。管理員密碼不要直接寫(xiě)明文可以在C#初始化工具里生成一次MD5再寫(xiě)入。2.2 為什么是C/S架構(gòu)選Winform不選網(wǎng)頁(yè)的三個(gè)硬理由很多新手會(huì)問(wèn)“都什么年代了還學(xué)Winform”這里不想爭(zhēng)論技術(shù)新老只說(shuō)酒店前臺(tái)這個(gè)場(chǎng)景桌面程序有三個(gè)Web頁(yè)面很難替代的優(yōu)勢(shì)。第一是本地硬件訪問(wèn)。小票打印機(jī)、身份證讀卡器、門(mén)鎖系統(tǒng)、現(xiàn)金錢(qián)箱這些設(shè)備大多提供Windows驅(qū)動(dòng)或串口接口Winform通過(guò)引用廠商DLL或者直接操作串口就能連上瀏覽器反而受權(quán)限沙箱限制經(jīng)常要自己封裝服務(wù)端再走WebSocket。第二是離線可用。酒店前臺(tái)不能因?yàn)橥饩W(wǎng)斷了就結(jié)不了賬桌面程序只要數(shù)據(jù)庫(kù)在局域網(wǎng)或本機(jī)斷網(wǎng)照常運(yùn)行。第三是開(kāi)發(fā)效率。有經(jīng)驗(yàn)的開(kāi)發(fā)者用Winform拖拖拽拽幾天就能跑通一個(gè)能演示、能交付的版本改起來(lái)也很直觀。網(wǎng)頁(yè)版雖然好打包但需要處理路由、權(quán)限、部署環(huán)境成本明顯更高。當(dāng)然也有邊界如果要做多門(mén)店連鎖、小程序訂房、在線支付Winform就免為其難了。那種場(chǎng)景應(yīng)該改用Web后端加小程序前端Winform只留給門(mén)店收銀端。認(rèn)識(shí)到這個(gè)邊界才不會(huì)被“老技術(shù)”三個(gè)字帶偏。2.3 數(shù)據(jù)庫(kù)選型與項(xiàng)目分層數(shù)據(jù)庫(kù)選型方面我看zip的App.config或引用就能猜個(gè)大概。如果connectionStrings里providerName是System.Data.SqlClient就是SQL Server如果用了System.Data.OleDb多半是Access。SQL Server部署時(shí)難度略高但穩(wěn)定Access勝在免安裝但多用戶并發(fā)能力和32/64位驅(qū)動(dòng)經(jīng)常讓人翻車(chē)。如果這個(gè)項(xiàng)目是要長(zhǎng)期維護(hù)的我一般會(huì)建議改成 SQLServer Express 或者 SQLiteSQLite可以用NuGet的System.Data.SQLite一個(gè)DLL搞定學(xué)習(xí)項(xiàng)目完全夠用。工程結(jié)構(gòu)上常見(jiàn)的做法是模擬三層Models放實(shí)體類(lèi)DAL放SQLHelper和各個(gè)表的數(shù)據(jù)操作BLL放業(yè)務(wù)規(guī)則UI層放Winform窗體。這樣換數(shù)據(jù)庫(kù)或改結(jié)賬規(guī)則時(shí)不用一個(gè)一個(gè)窗體去翻。一個(gè)最簡(jiǎn)單的分層可以這樣Solution ├─ Hotel.Model ├─ Hotel.DAL ├─ Hotel.BLL └─ Hotel.Winform有些壓縮包里可能把所有類(lèi)堆在同一個(gè)項(xiàng)目也能跑但后續(xù)改起來(lái)很痛苦。我會(huì)先把入口Form和DAL分離至少保證窗體里不出現(xiàn)“select * from”這種裸SQL。這一步做好后面的坑少一半。3. 用Winform把核心流程跑通登錄、開(kāi)房、退房最小實(shí)現(xiàn)3.1 連接配置與SQLHelper封裝在Winform里最基礎(chǔ)的是連數(shù)據(jù)庫(kù)。不要在窗體里到處寫(xiě)SqlConnection然后開(kāi)關(guān)連接那樣會(huì)出現(xiàn)連接泄漏和代碼重復(fù)。我習(xí)慣先寫(xiě)App.config再封裝一個(gè)靜態(tài)SQLHelper。App.config里這樣配configuration connectionStrings add nameHotelDb connectionStringData Source.\SQLEXPRESS;Initial CatalogHotelDb;Integrated SecurityTrue; providerNameSystem.Data.SqlClient / /connectionStrings /configuration然后寫(xiě)一個(gè)簡(jiǎn)單的SQLHelperpublic static class SqlHelper { private static readonly string _connStr ConfigurationManager.ConnectionStrings[HotelDb].ConnectionString; public static DataTable ExecuteQuery(string sql, params SqlParameter[] parms) { using (var conn new SqlConnection(_connStr)) using (var cmd new SqlCommand(sql, conn)) { if (parms ! null) cmd.Parameters.AddRange(parms); var dt new DataTable(); conn.Open(); new SqlDataAdapter(cmd).Fill(dt); return dt; } } public static int ExecuteNonQuery(string sql, params SqlParameter[] parms) { using (var conn new SqlConnection(_connStr)) using (var cmd new SqlCommand(sql, conn)) { if (parms ! null) cmd.Parameters.AddRange(parms); conn.Open(); return cmd.ExecuteNonQuery(); } } }邏輯說(shuō)明ExecuteQuery用于查詢(xún)并返回DataTableExecuteNonQuery用于增刪改using確保連接和命令自動(dòng)釋放不需要頻繁打開(kāi)關(guān)閉連接。參數(shù)用SqlParameter數(shù)組能防SQL注入尤其是客戶名、備注這種字符串字段。使用該類(lèi)需要在項(xiàng)目里引用System.Configuration并在頂部using System.Data.SqlClient。3.2 登錄窗體驗(yàn)證用戶并傳遞角色登錄是第一個(gè)要跑的流程。點(diǎn)擊登錄按鈕后做三件事校驗(yàn)空值、查用戶表、進(jìn)入主窗體。密碼我這里用MD5轉(zhuǎn)一下雖然還不是絕對(duì)安全但至少不會(huì)在表里明文存密碼。private void btnLogin_Click(object sender, EventArgs e) { if (string.IsNullOrWhiteSpace(txtUser.Text) || string.IsNullOrWhiteSpace(txtPwd.Text)) { MessageBox.Show(用戶名和密碼不能為空); return; } string sql SELECT UserId, UserName, RoleId FROM SysUser WHERE UserNameun AND Passwordpwd; var dt SqlHelper.ExecuteQuery(sql, new SqlParameter(un, txtUser.Text.Trim()), new SqlParameter(pwd, GetMd5(txtPwd.Text))); if (dt.Rows.Count 0) { MessageBox.Show(用戶名或密碼錯(cuò)誤); return; } CurrentUser.UserId Convert.ToInt32(dt.Rows[0][UserId]); CurrentUser.RoleId Convert.ToInt32(dt.Rows[0][RoleId]); var main new MainForm(); main.Show(); this.Hide(); }參數(shù)說(shuō)明un和pwd分別綁定用戶名和密碼避免了在SQL里拼字符串。GetMd5是寫(xiě)在工具類(lèi)里的方法用SHA256也可以。CurrentUser我一般設(shè)計(jì)成全局靜態(tài)類(lèi)保存UserId和RoleId后續(xù)窗體直接用省得在主窗體構(gòu)造函數(shù)里層層傳遞。3.3 開(kāi)房登記事務(wù)保證訂單和房間狀態(tài)一起變開(kāi)房不只是往Orders里插一條記錄還要把對(duì)應(yīng)房間狀態(tài)改成“入住”。這兩個(gè)操作必須在一個(gè)事務(wù)里否則會(huì)出現(xiàn)訂單已建但房間還是空閑的矛盾狀態(tài)。下面是一個(gè)能直接抄的實(shí)現(xiàn)private void btnCheckIn_Click(object sender, EventArgs e) { string connStr ConfigurationManager.ConnectionStrings[HotelDb].ConnectionString; using (var conn new SqlConnection(connStr)) { conn.Open(); using (var tran conn.BeginTransaction()) { try { var cmd conn.CreateCommand(); cmd.Transaction tran; cmd.CommandText INSERT INTO Orders(RoomId, CustomerName, CheckInTime, Deposit, Status, OperatorId) VALUES(roomId, name, time, deposit, 0, opId); SELECT SCOPE_IDENTITY();; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue(roomId, comboRoom.SelectedValue); cmd.Parameters.AddWithValue(name, txtCustomer.Text.Trim()); cmd.Parameters.AddWithValue(time, DateTime.Now); cmd.Parameters.AddWithValue(deposit, numDeposit.Value); cmd.Parameters.AddWithValue(opId, CurrentUser.UserId); int orderId Convert.ToInt32(cmd.ExecuteScalar()); cmd.CommandText UPDATE Room SET Status1 WHERE RoomIdroomId; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue(roomId, comboRoom.SelectedValue); cmd.ExecuteNonQuery(); tran.Commit(); MessageBox.Show($入住成功訂單號(hào) {orderId}); LoadRooms(); } catch (Exception ex) { tran.Rollback(); MessageBox.Show(操作失敗 ex.Message); } } } }邏輯說(shuō)明先用ExecuteScalar取新訂單的ID再更新房間狀態(tài)。事務(wù)保證兩步要么全成功要么全回滾。AddWithValue的寫(xiě)法比較簡(jiǎn)潔但如果字段是datetime或decimal我建議顯式創(chuàng)建SqlParameter并指定DbType避免隱式轉(zhuǎn)換把時(shí)間截掉或把金額精度弄丟。3.4 退房結(jié)賬計(jì)算金額并置房間為臟房退房則是反過(guò)來(lái)更新訂單的離店時(shí)間和金額把房間狀態(tài)從“入住”改成“臟房”。金額計(jì)算可以按小時(shí)也可以按天下面給一個(gè)按小時(shí)乘以房型價(jià)格的思路string sql SELECT o.CheckInTime, rt.Price FROM Orders o JOIN Room r ON o.RoomId r.RoomId JOIN RoomType rt ON r.TypeId rt.TypeId WHERE o.OrderIdorderId; var dt SqlHelper.ExecuteQuery(sql, new SqlParameter(orderId, orderId)); double hours (DateTime.Now - Convert.ToDateTime(dt.Rows[0][CheckInTime])).TotalHours; decimal price Convert.ToDecimal(dt.Rows[0][Price]); decimal amount (decimal)Math.Ceiling(hours) * price;這樣計(jì)算出來(lái)的金額是最簡(jiǎn)模型。真實(shí)酒店通常會(huì)有“鐘點(diǎn)房頭兩個(gè)小時(shí)xx元之后每半小時(shí)xx元”的階梯規(guī)則那部分不是Winform的難點(diǎn)而是業(yè)務(wù)規(guī)則建議單獨(dú)放到BLL層寫(xiě)一個(gè)CalculateFee方法別在按鈕Click里堆。退房還需要把房間狀態(tài)更新為2臟房。這一步和更新訂單用同一個(gè)事務(wù)做法和開(kāi)房一致。到這里最小閉環(huán)就通了登錄-開(kāi)房-退房-查房。4. 把界面從“能跑”做到“能交付”美化、布局與狀態(tài)反饋4.1 Winform視覺(jué)升級(jí)第一步去掉默認(rèn)控件味道默認(rèn)的Winform窗體看起來(lái)像不穿衣服的控件排列交付給酒店老板很難過(guò)關(guān)。我自己做這種項(xiàng)目時(shí)界面美化寧可少加特效也要先把配色和布局統(tǒng)一。最常見(jiàn)的就是把Button的FlatStyle設(shè)為FlatBackColor換成深藍(lán)色或青色ForeColor設(shè)為White。然后在窗體上放一個(gè)左側(cè)PanelDockLeft里面垂直排列功能按鈕點(diǎn)擊按鈕時(shí)右側(cè)內(nèi)容區(qū)切換不同的UserControl或窗體。很多資料里會(huì)提“菜單折疊箭頭怎么繪制”其實(shí)不需要去繼承復(fù)雜的控件。如果你想要一個(gè)可折疊的側(cè)邊欄只需要一個(gè)Button在它的Paint事件里畫(huà)一個(gè)向右或向下的三角形箭頭private void btnSidebar_Paint(object sender, PaintEventArgs e) { var btn sender as Button; if (btn null) return; Point[] pts; if (menuCollapsed) { pts new Point[] { new Point(btn.Width - 20, btn.Height / 2 - 4), new Point(btn.Width - 12, btn.Height / 2 4), new Point(btn.Width - 20, btn.Height / 2 4) }; } else { pts new Point[] { new Point(btn.Width - 20, btn.Height / 2 - 4), new Point(btn.Width - 12, btn.Height / 2), new Point(btn.Width - 20, btn.Height / 2 4) }; } e.Graphics.DrawLines(Pens.White, pts); }說(shuō)明Paint事件里根據(jù)一個(gè)bool變量切換三角形的頂點(diǎn)。DrawLines只畫(huà)箭頭輪廓如果希望三角形成填充樣式用Graphics.DrawPolygon并設(shè)置一個(gè)SolidBrush也可以。菜單折疊的本質(zhì)不是動(dòng)畫(huà)只是切換子按鈕的Visible和刷新箭頭方向別把簡(jiǎn)單問(wèn)題復(fù)雜化。4.2 透明窗體、DPI縮放與高分屏“透明窗體”是Winform里一個(gè)很吸引人但容易翻車(chē)的話題。如果只是讓整個(gè)窗體半透明直接設(shè)置Form.Opacity0.9即可這個(gè)屬性對(duì)頂層窗體有效。但如果你期望讓某個(gè)Panel透明、露出后面的桌面壁紙Winform原生做不到需要調(diào)用DwmEnableBlurBehindWindow等系統(tǒng)API有性能和平臺(tái)版本限制一般不建議放在酒店管理系統(tǒng)里。高分屏問(wèn)題倒是必須處理的?,F(xiàn)在很多前臺(tái)電腦是4K顯示器如果不做DPI感知窗體上的文字會(huì)發(fā)虛、控件會(huì)錯(cuò)位。常見(jiàn)做法是兩處在Program.cs里調(diào)用SetProcessDPIAware把每個(gè)窗體的AutoScaleMode設(shè)為Dpi或Font。下面是最小啟用代碼[STAThread] static void Main() { if (Environment.OSVersion.Version.Major 6) SetProcessDPIAware(); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new LoginForm()); } [DllImport(user32.dll)] private static extern bool SetProcessDPIAware();說(shuō)明SetProcessDPIAware必須在Application.Run之前調(diào)用否則整個(gè)進(jìn)程的DPI縮放已經(jīng)按系統(tǒng)默認(rèn)處理控件坐標(biāo)會(huì)被二次縮放。另外還要盡量避免在窗體構(gòu)造函數(shù)里直接給控件設(shè)死Width和Height多用Anchor、Dock和TableLayoutPanel這樣高分屏下才會(huì)跟隨縮放。4.3 StatusStrip、進(jìn)度條與后臺(tái)任務(wù)前臺(tái)系統(tǒng)不能讓界面卡死。比如導(dǎo)出今天的入住報(bào)表數(shù)據(jù)量不大也可能會(huì)耗時(shí)一兩秒如果把查詢(xún)直接放在UI線程窗體就會(huì)轉(zhuǎn)圈圈。我會(huì)用StatusStrip放一個(gè)ToolStripStatusLabel顯示當(dāng)前用戶和連接狀態(tài)再用ToolStripProgressBar配合BackgroundWorker顯示進(jìn)度。private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e) { for (int i 0; i 100; i) { Thread.Sleep(20); backgroundWorker.ReportProgress(i); } } private void backgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e) { toolStripProgressBar.Value e.ProgressPercentage; }邏輯說(shuō)明BackgroundWorker的ProgressChanged回調(diào)運(yùn)行在UI線程所以可以直接更新進(jìn)度條。如果你直接用普通Task在回調(diào)里更新控件必須用Invoke不然就是第5章要講的跨線程異常。小項(xiàng)目里Task一開(kāi)始很爽但遇到控件交互時(shí)BackgroundWorker的“少樣板代碼”優(yōu)勢(shì)就出來(lái)了。5. Winform酒店管理系統(tǒng)的常見(jiàn)翻車(chē)點(diǎn)與排查清單這一章來(lái)點(diǎn)直接的踩坑記錄。下面幾條都是我見(jiàn)過(guò)或?qū)嶋H踩過(guò)的每條按現(xiàn)象、原因、解決的順序?qū)憽?.1 部署到其他電腦提示“找不到服務(wù)器/連接未打開(kāi)”現(xiàn)象程序在自己的開(kāi)發(fā)機(jī)跑得好好的拷貝到前臺(tái)電腦后點(diǎn)擊登錄就報(bào)“無(wú)法打開(kāi)連接 SQL Server”或“未找到服務(wù)器”。有些運(yùn)氣好一點(diǎn)的能進(jìn)系統(tǒng)但一點(diǎn)查詢(xún)就崩。原因連接字符串里的Data Source寫(xiě)的是開(kāi)發(fā)機(jī)名或“.\SQLEXPRESS”目標(biāo)電腦的SQL Server實(shí)例名不一樣或者目標(biāo)機(jī)器根本沒(méi)裝SQL Server只把exe和數(shù)據(jù)庫(kù)文件拷過(guò)去了。這不是程序問(wèn)題是運(yùn)行環(huán)境沒(méi)對(duì)齊。解決最簡(jiǎn)單的方案是放棄拖拖拉拉找服務(wù)名改成SQLite數(shù)據(jù)庫(kù)或者用用戶實(shí)例。如果堅(jiān)持用SQL Server那就把部署步驟寫(xiě)明白先在目標(biāo)機(jī)裝SQL Server Express再執(zhí)行腳本建庫(kù)再改App.config里的Data Source。連接字符串我通常會(huì)在交付時(shí)留一個(gè)占位參數(shù)并附上一句注釋“這里改成目標(biāo)機(jī)器的實(shí)例名”。另外一定要檢查SQL Server的TCP/IP協(xié)議是否啟用很多開(kāi)發(fā)機(jī)上用命名管道能連換到局域網(wǎng)就失敗就是因?yàn)門(mén)CP/IP沒(méi)開(kāi)。5.2 后臺(tái)線程直接更新UI控件就拋異?,F(xiàn)象在BackgroundWorker或Task里執(zhí)行 toolStripStatusLabel1.Text 完成界面瞬間拋出“正在創(chuàng)建窗口的線程上不能調(diào)用其他線程對(duì)此控件進(jìn)行操作”。原因Winform控件不是線程安全的UI控件只能在主UI線程更新。使用Task或者Thread的時(shí)候回調(diào)所在的線程是線程池線程沒(méi)有訪問(wèn)控件的許可。解決要么改用BackgroundWorker用ReportProgress和ProgressChanged更新控件要么手動(dòng)Invoke。下面是手動(dòng)升級(jí)的式子this.Invoke(new Action(() { toolStripStatusLabel1.Text 查詢(xún)完成; }));說(shuō)明Invoke是同步等待主線程處理BeginInvoke是異步投遞。在連續(xù)更新進(jìn)度條場(chǎng)景用BeginInvoke更順但要注意不要大批量連續(xù)調(diào)用否則界面反而跟不上。5.3 DataGridView 數(shù)據(jù)源更新后界面還是舊數(shù)據(jù)現(xiàn)象在內(nèi)存里修改了一個(gè)房型對(duì)象的價(jià)格重新查詢(xún)數(shù)據(jù)庫(kù)發(fā)現(xiàn)數(shù)據(jù)變了可DataGridView卻顯示舊值必須重新設(shè)置DataSource才變。原因直接給DataGridView的DataSource賦了一個(gè)List 而List 不通知界面自己變了。只有在重新綁定時(shí)才會(huì)刷新。解決如果只是內(nèi)存修改把列表?yè)Q成BindingList 如果是數(shù)據(jù)庫(kù)操作后再刷新就重新查一次DataTable并重新賦值。重新賦值外加一句 bindingSource1.ResetBindings(false) 能避免列表數(shù)據(jù)變化后界面不動(dòng)。更穩(wěn)妥的做法是每次增刪改后都調(diào)用同一個(gè)LoadRooms()方法讓窗體回到“查詢(xún)-綁定”這個(gè)統(tǒng)一入口。5.4 按日期查詢(xún)訂單數(shù)據(jù)明明有卻查不到現(xiàn)象用戶選擇“今天”作為查詢(xún)條件列表是空的。但直接在數(shù)據(jù)庫(kù)看數(shù)據(jù)今天的訂單明明存在。原因DateTimePicker生成的日期是今天的00:00:00SQL里如果用“CheckInTime begin AND CheckInTime end”那么end等于今天零點(diǎn)剛好把所有今天的訂單排除掉如果拼接字符串日期格式也可能因?yàn)閰^(qū)域設(shè)置造成錯(cuò)配。解決結(jié)束時(shí)間改用“第二天0點(diǎn)”用小于號(hào)而不是小于等于。常用寫(xiě)法是DateTime endDate dateTimePicker2.Value.Date.AddDays(1); string sql SELECT * FROM Orders WHERE CheckInTime begin AND CheckInTime end; cmd.Parameters.AddWithValue(begin, dateTimePicker1.Value.Date); cmd.Parameters.AddWithValue(end, endDate);說(shuō)明加一個(gè)“第二天零點(diǎn)”是查詢(xún)?nèi)掌诜秶畛R?jiàn)的習(xí)慣能避免用DATETIME精度導(dǎo)致的90%邊界漏數(shù)據(jù)。如果你還要查小時(shí)級(jí)別再往前回?fù)芤幻搿?.5 中文亂碼代碼拷到新電腦變成問(wèn)號(hào)現(xiàn)象同一份源碼從一臺(tái)電腦拷貝到另一臺(tái)打開(kāi)后SQL腳本里的中文注釋和插入語(yǔ)句全變成問(wèn)號(hào)窗體標(biāo)題或DataGridView列名在界面上也顯示成亂碼。原因文件編碼不一致。Visual Studio保存的.cs文件默認(rèn)可能是帶簽名的UTF-8但如果曾經(jīng)用記事本或舊版工具編輯并存成ANSI再放到新電腦上就可能亂。SQL Server的數(shù)據(jù)庫(kù)排序規(guī)則如果不支持中文比如默認(rèn)的SQL_Latin1_General_CP1_CI_AS插入中文也會(huì)變問(wèn)號(hào)。解決統(tǒng)一把.cs、.sql和App.config保存為“帶簽名的UTF-8”。SQL Server建庫(kù)時(shí)指定排序規(guī)則為Chinese_PRC_CI_AS或者建表時(shí)用NVARCHARN。這個(gè)坑很難查因?yàn)榇a邏輯完全沒(méi)變只是字符集導(dǎo)致。遇到亂碼我第一步會(huì)看數(shù)據(jù)庫(kù)排序規(guī)則和文件編碼而不是改代碼。6. 驗(yàn)證系統(tǒng)與后續(xù)擴(kuò)展一臺(tái)電腦上把驗(yàn)收流程走完最后這一步不是跑通一個(gè)登錄就算結(jié)束而是把狀態(tài)流轉(zhuǎn)在空白環(huán)境下完整走一遍。我通常會(huì)把下面這張流程表過(guò)一遍步驟操作預(yù)期結(jié)果1在全新環(huán)境執(zhí)行數(shù)據(jù)庫(kù)腳本無(wú)報(bào)錯(cuò)表結(jié)構(gòu)齊全2登錄一個(gè)不存在的用戶拒絕進(jìn)入3登錄管理員新增房型和房間房間列表出現(xiàn)4選擇空閑房間客戶入住房間變?nèi)胱∮唵慰刹?退房結(jié)賬金額正確房間變臟房6切換另一操作員登錄看不到與自己無(wú)關(guān)的訂單或按鈕灰化驗(yàn)證時(shí)多留意兩個(gè)細(xì)節(jié)一是在退房后立刻再次入住同一個(gè)房間看狀態(tài)是否正常從“臟房”變成“空閑”再變成“入住”二是把系統(tǒng)時(shí)間改到昨天創(chuàng)建一筆訂單再退房看跨天計(jì)算小時(shí)數(shù)對(duì)不對(duì)。這兩個(gè)點(diǎn)能過(guò)濾掉80%的狀態(tài)機(jī)bug。后續(xù)擴(kuò)展方面如果這套代碼要真正投入營(yíng)業(yè)我會(huì)優(yōu)先做三件事打印小票P(pán)rintDocument System.Drawing.Printing幾行代碼就能把賬單內(nèi)容發(fā)給熱敏打印機(jī)、導(dǎo)出Excel報(bào)表用ClosedXML或NPOI避免Office COM依賴(lài)、按角色控制菜單在MainForm加載時(shí)根據(jù)CurrentUser.RoleId隱藏“系統(tǒng)設(shè)置”等按鈕。我自己做這類(lèi)項(xiàng)目時(shí)最深刻的教訓(xùn)是在交付前把數(shù)據(jù)庫(kù)腳本在空白電腦上重新跑一遍而不要用開(kāi)發(fā)環(huán)境的數(shù)據(jù)庫(kù)“演示成功”。因?yàn)閾Q一臺(tái)機(jī)器后連接字符串、SQL Server實(shí)例、排序規(guī)則都可能翻車(chē)。把這些寫(xiě)進(jìn)一個(gè)readme比在群里發(fā)聊天記錄修復(fù)問(wèn)題要省太多時(shí)間。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
五月深爱网| 熟妇人妻中文字幕无码老熟妇| 九九Y精品热播| www天天色天天射| 9久久精品视频| 99re久久| 丁香五月无码| 五月天色婷伊人| 大香蕉AV电影在线| 丁香五月欧美| 五月婷婷五月天在线| 大香蕉精品视频| 超碰人人艹| 五月天五月色婷婷综合| 97热精品| 色婷婷丁香AV综合| 五月天啪啪| 思思色综合网站| 欧美日韩成人在线免费| 狠狠一日| 亚洲视频一区| 综合色色网| 欧美视频在线观看噜噜| 亚洲欧美婷婷五月色综合| av亚洲国产小电影| 亚洲色频| 亚州色婷婷| 五月色丁香激情| 丁香五月激情婷婷| 久久新地此| 中国丰满熟女A片免费观| 七七九色| 五月丁香欧美综合| 婷婷丁香五月婷婷| www.操.com| 色婷婷五月天综合网| 五月婷婷久久久| 久久久免费图片视频| 99视频| 香蕉综合在线| 一起草av| 日本欧美成人片AAAA| 色五月AV| 丁香美女五月天婷婷| 日日夜夜爽爽| 26uuuuuuuu国产| 99热这只有| 亚洲区,视频区,视频区免费| 99热网站| 永久99免费视频网站| 丁香九月婷婷综合| 激情五月天色网站| www.主妇. com| 武则天精品久久| 99久久色| 综合激情在线| 操碰97| 99精品久久久| 亚洲操人| 色色成人網| 桃色五月婷婷| 六月丁香五月亭亭| 五月天久久网站| 国产精品蜜臀99| 四虎婷婷五月天| 精品无码人妻一区| 深爱激清网| 色欲久久久久| 99热1| 极品另类| 色综合久久888| 狠狠草狠狠草| 国产精产国品一二三在观看 | 五月天综合区| 天天五月情| 日本激情五月天‘| 五月综合激情网| 开心五月婷婷| 噜噜噜久久| 九九热最新地址| 免费观看的av| 激情婷婷丁香五月| 色狠狠综合入口| 狠狠色噜噜狠狠| 91婷婷伊人牛牛| 超碰在线国产9| AV在线大香蕉| 亚洲 在线 性爱 | 欧美日韩大黄| 99成人免费热视频| 亚州色婷婷| 日本天天操| 九九九激情网| 婷婷六月色开| 五月草影视| 婷婷五月花| 五月丁香综合激情| 九九九激情网| 日韩成人电影AV| 五月婷婷综合网在线播放| aaa日韩| 久久五月激情| 美女被操一区二区| 91久操| a v色婷婷| 蜜桃五月天| 久久综合丁香| Blackedraw视频一区二区| 久久婷婷五月天激情新地址| 成人国产欧美大片一区| 丁香五月激情六月| 国产综合色婷婷精品久久| 婷婷大香蕉| 精品一二三区久久AAA片| 日本英国美国欧美亚洲国产精亚洲日韩精品在线观看 | 久久综合最新网址| 丁香五月激情天AV无码| 五月婷婷免费在线观看视频| 性做久久久久久久免费看| 97在线天堂| 天天肏在线观看| 99区视频| 九九久久五月天| 99ER热精品视频| 免费观看高清无码| 天天干-天天日| 棕合影院色色| 婷婷色基地在线看| 婷婷深爱五月丁香网| 日本99在线| 亚洲V国产V欧美V久久久久久| 密视AV综合在线| 激情综合五月激情17| 五月天激情AV| BBWCUCKOLD精品熟妇| www,色综合| 丁香 婷婷五月| 婷婷成人五月天| www.色五月| 婷婷五月综合网| 欧美97p| 欧美色图天堂网| 五月丁香婷婷激情图片| er99免费视频在线| 丁香五月偷拍| 激情桃色网| 天天插天天干| 91婷婷五月丁香碰| 99久久极情精品一区| 婷婷九月激情| 东京热免费视频| 欧洲一区二区| 成人在线不卡| 久9久9久9久9久9久9| 婷婷五月花西瓜| 中国女人内射6XXXXX| 生活片五区| 人人爱人人添| 99在线综合视频| 五月丁香在线国产 | 极品人妻videosss人妻| 精品国产乱码久久久久夜深人妻| 激情五月黄色小说| 玖玖色综合| 91操熟女| 九九精品热| 一月婷婷色色| 97九色| 亚洲小电影在线观看黄999| 色婷婷五月天不卡| 美女伊人久久| 在线天堂9| 久久中国毛毛片爱久久| 99热99热在线| 久久99久久久| 99精品在线观看视频| 玖玖99精品视频| 色婷婷小说| 久热精彩视频98| 激情九九综合网| 少妇高潮A片无套内谢麻豆传| 久久XX| 丁香六月婷婷色XXXXX| 99热这里只有精品1025| 九九伊人网| 99ri在线视频| 狠狠狠狠狠狠| 思思热国产| 99久久婷婷精品视频| 婷婷9月天| 2025天天爽天天摸| 婷婷丁香五月天大香蕉| 国产精品电影网| 超碰91人人操| 久热无码| http://www.sd-xiangsu.com/| 亚洲天堂婷婷| 91久久电影| 99re热在线视频观看| 开心五月天激情网| 亚洲综合九九| 97色婷婷| 丁香五月天婷婷中文字幕| 日韩免费99| 极品另类| 婷婷六月色丁香视频在线观看| 精品国产AV色一区二区深夜久久| 停停五月天激情网| www.91操| 万月丁香狠狠爱| 丁香六月婷婷综合啪啪| 色色婷婷丁香| 亚洲日比视频| 99黄色性生活| 99热这里只有精品一区| 色五月琪琪| 日日夜夜天天| 婷婷99狠狠| 国产午夜成人AV在线播放| 五月婷婷伊人久久| 97碰久久| 日本久久激情| 97碰碰在线看视频免费| 五月的婷婷六月丁香| 欧美,日韩成人在线| 狠狠色噜噜狠狠狠888| 亚洲精品无码久久| 色色色1网址| 五月婷婷丁香啪啪| 五月天激情中文字幕| 91主播在线| 六月婷婷激情图片| 五月开心深爱激情网| 国产精品久久..4399| 99re热视频这里只精品| 久久色五月| 色噜噜伊人| 99在线视频喷水| 99精色| 狠狠狠五月婷婷六月丁香| 久久182| 久久婷婷色| 婷婷久久六月费| 色欲五月婷婷| 性爱激情久久| 欧美韩国日本| 亚洲丁香花色| 伊人婷婷五月天| mmm1717.6dbm人人爱人人操| 九九99精品视频| 综合网亚洲| 久久婷婷成人视频| 日本色图综合| 性爱激情小说AV五月丁香花| 五月婷婷丁香日韩在线| 狠狠干综合| 成人色图情色成人网 www.5b5b5bcom 五月天| 伊人大香五月天| 黑人无码一区| 久热爱大香蕉在线蜜臀悦色 | 五月天婷婷视频小说| 99热国产这里只有| 99久在线精品99re8| yw国产AV| 色婷婷伊人激情在线观看| 免费黄色视频网址| 九九九色综合| 亚洲天堂99| 久久婷婷六月综合| 玖玖资源站中文| 午夜九九电影| 小视频一区| 这里只有精品视频国产| 亚洲激情图文小说| 久er7久热| 九月激情网| 成人超碰AV| 超碰激情网| 久久这里精彩免费在线观看| 丁香五月激情婷婷视频| 狠狠情色| 夜夜大香蕉婷婷丁香| 婷婷性爱综合| 色五月偷偷| 9视频1在线| 99热大| 影音先锋91视频| 丁香,开心成人,久久| 激情五月综合| 国产69久久久欧美黑人A片| 91久久久久久久| 久久免费精彩视频| 五月激情五月婷婷五月天在线| 99热成人精品| 三级成人网站| 天天日天天干天天插天天射| 2025年最新亚洲在线欧美| 国产五月婷| 五月婷婷开心色伊人| 久久五月丁香婷婷| 九九在线精品| 亚洲免费观看高清完整版AV线| 少妇出轨做爰高潮A片| 亚洲妇女熟BBW| 日产精品久久久久久久蜜臀| 97干干干丁香| 日本高清不卡免费一区二区三区| 美女91一起草| 九九黄色网| 狠狠搞五月天| 深爱五月天 开心网| 五月天激情美女久久| 色色综合视频| 亚洲综合另类| 亚洲精品成人| 99cao婷婷| 日韩 mm 不卡| 一逼色综合| 亚洲国产婷婷色五月| 欧美久热| 日本色超碰| 天天操天天插| 久久98| 99久久久久| 亚洲字幕AV一区二区三区四区| 超碰日韩成人| 婷婷综合网性| VA国产在线综合网站| 丁香久久五月天视频在线观看 | 丁香五月网址| 五月激情婷婷开心五月| 婷婷色丁香六月| 饮料下药迷倒漂亮女同事强干| 婷婷五月色激情欧美激情| 日本视频99| 婷婷综合网站| 综合99在线| 欧美va视频| 五月婷在线色视频| 久久六月天| 丁香综合伊人| 天天撸夜夜爽| www.99热视频| 人碰人人人玩91| 人人搡人人| 一级片sese片.COM| 激情久久久久| 狠狠狠狠狠操| 琪琪色五月天| AV片在线观看| 天天色月| 婷婷天天婷婷天天澡| 大香蕉五月天| 亚洲国产网址| mmm1717.6dbm人人爱人人操| 激情五月综合| 五月丁香本色在线观看| 丁香五月电影| 人妻六月天| 五月婷婷丁香成人网| 麻豆WWWCOM内射软件| 99久| 5月丁香婷婷| 婷婷深爱五月| av在线免费播放观看| 狠狠五月激情丁香六月| 色五月首页| 丁香婷婷影院| 啪啪黄页网| 伊人狠狠综合| 被男人添B超爽视频| 激情丁香九九五月综合网| 思思久久96热在精品国产,| 超碰在线超碰| 久久综合五月婷婷| 99热这里有精品首页10| 婷婷丁香人妻天天| wwwav大香蕉| 能看的av| 加勒比色色| 久热9| 婷婷丁香六月天激情四射网| 插插插色综合网| 久久三级视频| 中文字幕,综合,91| 思思久日精品视频| 午夜不卡久久精品无码免费| 天天激情视频| 五月婷色| 中文字幕婷婷五月天| 色色五月婷婷久久| 超碰99热精品| 激情第四色| 久久婷五月影院| 五月天激情网址| 26uuu亚洲| 日本久久人人| 久热综合| 九九99在线免费在线观看视频| 色狠狠色综合久久久绯色aⅴ影视| 成人色五月天婷婷| 色综合久久88色综合天天| 91啪啪| 九九九九综合| 大地9中文在线观看免费高清 | 无码se| 亚洲激情av| 熟女网站久久| 色婷婷久久综合| 91色在线| 久久伊人大香蕉| 丝袜人妻| 天天日日夜夜| 色噜噜,噜噜色| 欧洲色区| 亚洲欧州色情在线观看| 久99精品视频| 日韩性视频| 99色热视频| 99热国产精品| sS丁香五月婷婷| 激情综合丁香| 成人AV在线中文版| 丁香五月激情站| 荫道BBWBBB高潮潮喷| 五月夜丁香| 内射在线CHINESE| 丁香婷停五月激情综合深爱| 大香蕉视频婷| 97色热| 午夜丁香| 高潮毛片又色又爽免费| 婷婷丁香人妻天天| 色99在线视频| 久久A V无码视频| 婷综合六月| 六月激情综合| 精品九九在线观看视频| 91av传媒高清在线视频网| 六月天丁婷婷| 91成人电影| 五月深爱激情网| 婷婷五月丁香综合激情| 久久狠婷婷| 快乐婷婷五月天| 丁香五月激情五月| 日本操逼九九九九58日本操逼| 啪啪色激情五月天| 久久色情| 99爱免费视频| 婷婷五月激情欧美| 久久激情中文| 特黄三级片| 99热精品少| jiujiuxiangjiaowang| 影音先锋91资源站| 狠狠擼综合| 9热久久在线| 操97| 色婷婷视频综合| 色婷婷五月综合在线| 直接看的av| 丁香五月激情视频在线| 九九热99热| 九九热这里| 亚洲精品永久久久久久| 色色无码| 日日日影院| 91无码视频| 成人无码髙潮喷水A片| 97热这里只有精品| 久一这里有精品国产| 五月婷久久综合| 操碰97| 性生活久久人妻| 高清不卡一区| 91九色PORNY中文啦| 99这里只有精品视频| 婷婷综合色播网| 婷婷五月天在线看| 大香蕉Av在线| 婷婷福利影院| JAPANRCEP老熟妇乱子伦视频| 79精品视频在线观看,| 久久婷婷丁香五月一二三| 丁香婷婷综合色五月激情国产基地| www.第四色99| 婷婷五月色综合香五月| 激情婷婷丁香色五月| 狠狠狠激情网| 色婷婷五月天成人网| 日韩AV免费电影在线播放| 丁香五月情| 丁香五月中文字幕久色| 丁香五月婷婷姐| 99人人操人人操人人精| 成人视频免费观看高清完整版在线观看| 婷婷五月天堂| 久久色天堂| 五月色影院| 午夜不卡成人一区二区| 丁香五月婷婷啪| 亚洲av日韩无码| 丁香av网| 伊人99久久| 五月天激情小说| 日韩欧洲亚洲| 亚洲99综合| 色婷婷电影网| 色色色综合网| 婷婷五月天影视首页| 日韩999| 丁香五月天婷婷大香蕉| www狠狠| 色五月婷婷久久| 狠狠干综合| 搡BBBB搡BBB搡18| 9色在线视频精品观看| 99久久婷婷国产综合精品草原| 婷婷玉月丁香五月在线视频| 女人露出p毛视频www网站| 深爱丁香激情| 人妻操逼视频| 99热性色| 日日激情网| 五月丁香激情啪啪| 99草视频在线观看| 66精品成人免费网站在线观看| 人人摸人人操人人爽| 99se丁香| 天天摸天天日天天舔| 五月天婷婷色在线视频免费观看| 成人精品在线| 色很很96| 色久在| 五月丁香久久网| 国产色丁香| 激情综合4月| 激情综合女人网五月播播| 欧美性二区| 开心六月婷| 99久久久国产大片| 久久婷婷六月综合资源| 色五月婷婷激情| 久久99免费视屏| 91综合国免费久入| 丁香五月六月综合激情| www99热| 97干在线观看视频| 亚洲激情五月天| 九九色逼| 国产亚洲AV人片在线| 亚洲狠狠丁香婷婷香蕉| 大香蕉伊然在亚洲90| 丁香五月婷婷高清| 站长推荐无码播放| 激情小说五月天社区丁香| 99色色热| 五月婷婷无码专区| 99热这里只有精品在线观看| 91大神操美女| 九九亚洲视频| 激情综合九| 五月叮香啪| 超碰在线观看99| 五月天婷亚洲天综合网综合| 色五月婷婷激情基地| 久久久久久久8| 五月丁香综合啪啪| 怡红院精品视频久久久久久久久| 怡红院一二三| 欧美日韩成人| 婷婷五月五月丁香| 久操福利| 五月婷婷久久内射| 五月丁香影视| 五月丁香色婷婷| 在线观看日韩12345区| 丁香 亚洲 久久| 天天色天天搡| 五月激情婷婷六月| 综合啪啪| 九九精品免费视频99| 狠狠久久婷婷| WWW丁香五月| 天天操综合网站| 五月婷婷丁香综合| 国产精品电| AV动漫不卡无码免费| 五月丁香六月日逼| 婷婷成人五月天| 色婷婷影视| 久久99精品久久久久久青青AR| 五月婷婷性爱| 日韩五月丁香| 国色天香成人网| 五月婷婷六月丁香首页| 六月婷伊人| 五月婷婷深深爱| 午夜少妇在线观看视频| 日韩久久色| 五月色精品| yazhou seshipin| 久久人人妻| 亚洲精品久久久无码| 丁香五月婷婷欧美激情-中文天堂最新版在线观看| 婷婷五月天最新综合你懂的 | 日日操,夜夜撸| 99人妻碰碰碰久久久久禁片| 综合婷| 婷婷深爱五月天在线| 在线成人视频免费| 精品视频二级九九| 思思久久精品视频| 91九色精品女同系列| 五月天社区婷婷| 婷婷丁香色五月亚洲| 天天爽夜夜爽夜夜爽精品视频| av大香蕉| 97在线视频观看| 五月天播播| 九久久婷婷| 亭亭丁香久久五月| 99啪啪视频| 伊人大香蕉综合在线| 五月天婷婷青青| 久久六月天| 五月久久网| 激情六月婷| 噼里啪啦完整版中文在线观看| 亚州色婷婷| 91se在线观看| 99久久色| 激情深爱综合网| 丁香五月欧美婷婷综合| 色五月在线| 大香蕉综合在线| 91偷拍视频| 丰满人妻一区二区三区| 国产亚洲色婷婷久久99精品91 www.riverspirits.org www.hnnun.com www.changh | 亚洲成人中心| 色色影院黄大片| 99性爱视频网站| 亚洲精品国产A久久久久久| 精品九九在线观看视频| 婷婷六月丁香五月| 日本精品在线噜噜噜| 玖玖爱综合网| 五月丁香操婷逼| 色婷婷9| 日本精品干| 亚洲色色色| www.99精品视频| 五月丁香在线观看| www.99热这里精品| AV成人在线播放| enecarbon-materials.com污K127封锁请涟系@wip1688 | 伊人激情AV一区二区三区| 婷婷四月 成人 狠狠干| 久久99网站| 99热这里只有精品国产免费| 超碰久热| 亚洲男人的天堂婷婷色五月| 婷婷五月天久草在线| 丁香五月成人在线| 99视频日韩| 五月丁香婷婷欧美| 99精品视频偷拍| 亚洲成人影视在线观看| 99色精品视频| 国产小精品| 五月婷婷乱| 最新婷婷五月丁香| 色婷婷在线视频| 亚洲婷婷91丁香| 久久久久这里只有精品| 狠狠草婷婷| 中文字幕在线视频播放| 婷婷五月婷婷| 五月天亚洲图片婷婷| 欧美色五月| 五月婷婷婷婷婷婷艺术| 欧美操我| 久热无码| 六月色色婷婷| 1024欧美日韩精品久久久| 99热1| 高清无码.com| 久久久久9久无码视频| 天天爱天天操| 激情综合自拍五月婷婷色五月| 亚洲亚洲人成综合网络| 丁香五月婷婷激情蜜桃| 丁香婷色| 激情内射人妻1区2区3区| 亚洲激情.com| 色综合婷婷| 国产看真人毛片爱做A片| 青草激情综合| 日本综合久| 六月婷综合| 99久超碰| 国产26uuu视频| 久操97| 人人爱操| 亚洲丁香五月天视频| 日本老女人黄页在线播放| seuuu婷婷| 91人妻人人做人碰人人爽九色| 久久与婷婷| 天天网曰日曰夜夜综合永久免费| 激情五月久久| 久久久久er热| www色婷婷久久综合久色| 热婷婷在线视频| 久热这里| 丁香五月偷拍| 亚洲婷婷六月天| 综合久久高清| 五月婷婷影视| 色噜噜狠狠色综合日日| 狠狠狠狠狠狠狠狠| 热99热| 991国产精选视频在线播放下载| AA丁香综合激情| 开心婷婷五月| 99热这里只有精品50| 九色婷婷| 国产4P视频精品五区| 国产精品第一国产精品| 激情婷婷丁香五月天| 久久丁香五月婷婷| 《诡秘之主》在线观看 | 久久婷网| 99在线小视频| 国产精品91抖高| 五月婷婷成人| 大香蕉99| 日韩1区2区| 人人爽人人爽人人爽人人爽| www激情| 日本九九网| www99精品日韩| 人妻AV在线| 婷婷射丁香| 丁香五月六月综合激情| 天堂AV在线看| 五月婷婷久久爱| 丁香蜜臀黄色婷婷五月天| 五月丁香激情综合啪啪| 欧美69色| 婷婷九九色| 一本色道久久88加勒比| A久久| 九九视频在线观看| 成人网址在线观看| 久久激情五月婷婷| 久久精品系列| 亚洲色热| 五月天婷婷社区| 香蕉AV777XXX色综合一区| 色五月天网| 婷丁香五月天| www.国产亚洲69ty.久久久久久久久久久久 | 久热99| 久久久噜噜噜久久人妻| 亚洲激情四射| 日韩视频99| 五月综合色| 五月婷婷丁香综合| 亚洲AV网站在线观看| 五月婷婷亚洲色视频| 丁香激情五月少妇| 婷婷激情五月综合| 色婷婷五月在线| 五月丁香亚洲婷婷| 精品久久久人妻| 五月婷婷六月综合| 26uuu精品国产| 六月丁香五月天| 99这里只有精品|v| 婷婷五月草| 久久人妻精品| 欧日韩成人| 婷婷激情综合| 婷婷精品| 亚洲欧美成人在线| 噼里啪啦完整版中文在线观看| 色五月婷婷网| 超碰免费成人网站| 人五月天婷婷喷水| 五月天婷婷激情四射综合| 激情婷婷综合网| 久久综合婷婷五月| www.久久久.com| 草综合网| 欧美天天干五月丁香| 偷拍视频五月天| 午夜丁香五月天综合| 婷婷五月丁香在线视频| 日本婷婷在线| 五月丁香六月婷婷网| 久久丁香| 国产亚洲AV人片在线| 92久操视频| 久婷久婷| 五月丁香婷婷综合在线| 五月天激情日色在线| 99热在线精品观看| 亚洲在线资源| 五月天色五月| 五月丁香天堂| 五月丁香91| 99er6| 亚洲激情.com| 天天久久狠狠色综合| 五月丁香婷婷色| 熟妇高潮一区av| av激情在线| 五月花综合| 激情五月丁香六月婷婷| 久久五月天色婷婷| 人妻久久久| 国产原创视频91九色| 91九色精品| 九九热只有精品6| 九九免费精品| 99热99干| 影音 五月 婷婷 久久| 99伊人性爱在线影院| 婷婷五月天视| 亚洲激情五月天| 丁香六月激情| 97ai婷婷| 色婷婷五月天中文字幕| 欧美va欧美va差| 天天色播| 婷婷黄色网| 丁香成人五月天| 婷婷色Av| 老司机日日夜夜青草| 射满了还射免费在线观看 -午夜版全集-新视觉影院 | 九九激情视频| 五月久久噜噜| 欧美日韩成人在线网| 国产毛片精品一区二区色欲黄A片| 99久热在线精品99re6热| 国产 码在线成人网站| 欧美成人精品老美女噜噜噜| 色狠狠色| 久久精品天| 亚洲精品操一操、噜一噜、摸一摸、爽 | 天天天天干| 91在线操| 五月丁香青草综合啪啪| 玖玖在线视频| 久操人| 思思色综合网站| 日本啪啪天堂| 久久色吧| 丁香五月狠狠综合欧美| 丁香六月婷婷综合激情欧美| 91人妻人人操| 美臀自射自家人妻| 亚洲啪啪啪啪| 99热这里只有精品国产首页| 五月丁香激情综合网| 97碰人人操| 丁香五月在线观看完整版| 色五月天电影| enecarbon-materials.comWu染请涟系Bao护@wip1688 | 超碰成人在线免费观看| 五月久久噜噜| 91操人视频| 婷婷五月丁香色播| 密桃激情五月天综合网| 能看的av| 丁香五月婷婷色| 五月婷啪啪| 六月婷婷最新网址| 五月天伊人手机在线播放AV| 丁香五月激情综合| 99在线观看| 日本久久婷婷| 正宗黄色毛片| 五月丁香六月婷婷在线观看| 日韩综合成人| 久久婷婷六月综合资源| 99久久99九九99九九九| 色欲婷婷五月天| 91丁香五月| 91在线看免费 九九九九| 婷婷五月深爱五月| 色五月综合激情网| 婷婷色5月天在线。| 综合激情五月丁香| 婷婷丁香五月天婷婷| 亚洲俩性性爱图片久久第六页| 婷婷五月综合社区| 黑人无码一区| 婷婷五月天av| 日韩伊人大香蕉| 婷婷伊人网| 噜噜五月天综合| 国产色色色色| 久久婷婷色综合老司机| 欧美人妻一区二区| 亚洲a片免费观看| 婷婷五月视频| 婷婷九月丁香中文| 六月 丁香 视频| 啪啪视频99| 99视频网| 色色网91| 九九亚洲| 五月综合激情| 欧美婷婷| 久久五月天精品视频| 色婷婷激情| 久久这里只有精品07| 五月丁香影院| 亚洲 在线 性爱| 五月天丁香婷婷久久九| 色婷婷丁香五月综合| 久久综合9| 久久免费精彩视频| 欧美大香蕉视频| 精品五月天| 电影爱拉战争免费观看| XX色综合| 99成人免费热视频| 色婷婷激情五月天| 99在线观看视频| 久久五月天大美女| 夫妇交换刺激做爰| 99爱无码| 免费AV在线| www.国产色| 色婷婷欧美在线| 任你搞免费视频观看| 五月婷在线观看| 97干在线| 天天爽夜夜爽夜爽精品| 激情综合在线播放| 丁香色色网| 激情网站综合五月天| www.婷婷com| www.minyis.com【JT】实力收量可预付QQ2101460746 | 99少妇精品| 超碰女人天堂| 激情五月天开心网丁香无码| 男同色五月开心五月激情五月| 日本五月天激情| 丁香九月婷婷综合| 熟女人妻一区二区三区免费看| 久色国产| 激情综合五| 免费无码毛片一区二区A片| 天天搞天天色综合| 99热久草| 亚洲深喉aV| 另类激情五月在线视频欧美| 色五月天影视| ZpRSw| 91热在线| 少妇人妻凹凸视频| 在线观看亚洲AV| 九九热在线视频| 天天舔天天操| 狠狠操之狠狠操| 亚洲综合欧美色丁香婷婷888月图片| 琪琪色五月天| 开心五月婷婷激情网| 欧美性猛交99久久久99| 黑人糟蹋人妻HD中文字幕| 玖玖婷婷五月天| 另类色视频| 99在线播放| 激情av| 国产这里只有精品| 五月婷庭丁香在线| 99日精品视频| 色色欧美色色色| 欧洲不卡视频| 操熟女成人网| 婷婷激情四射| 91综合色噜噜| 亚洲精品字幕在线观看 | 丁香花五月天社区| 99欧美| 五月丁香六月激情综合| www.人人操人人看人人想人人摸 人人人人操,COM | 亚洲欧美成人在线| 日本操逼九九九九58日本操逼| 996热| 婷婷丁香www视频日本韩国| www.99色| 99久在线观看| 另类综合婷婷五月天欧美视频| 热九九在线| 97热久久| H亚洲| 五月婷婷激情综合| 丁香婷婷六月天| 亚洲激情综合免费| 五月婷婷色播网| 99久久99九九99九九九| 五月婷婷国产| 在线中文AV| 五月天激情小说网| 丁香婷婷色| 久久国产色| 深爱丁香激情| 久久网站观看免费欧洲国产| 在线观看免费狠狠色丁香香综合| 91婷婷视频| 激情五月天综合网| 色一情一乱一乱一区91Av| 五月天婷婷激情综合| 色色色欧美色色| 99re这里只有精品国产99| 九九九热精品| 欧洲S级在线观看| 婷婷丁香黄色| 美女久久婷婷| 黑人糟蹋人妻HD中文字幕| 99精品在线播放| 婷婷五月电影| 色婷婷五月天激情在线观看| 国产另类综合| 天天射影视综合网| 五月激情视频网| 伦乱美欧| 狠狠狠婷婷五月综合| 色五月激情综合网| 激情五月丁香社区| 91人人澡人人爽人人看| 婷婷五月18永久免费网站| 久久免费干| 91黄色五月天视频| 5月丁香美女影院| 色狠久| 亚艹艹| 热99AV网站| 夜夜撸天天操| 婷婷激情小说| 五月丁香五月婷婷| 播播网色播播| 99综合网| 五月婷六月| 九九青草热| 欧美综合123区| 久久婷.com| 九九人人操| www.婷婷五月天.com| 激情婷婷六月天| 久久人人看| 日日夜夜干| 成熟妇人A片免费看网站| 伊人激情AV一区二区三区| 少妇人妻丰满做爰XXX| 欧美亚洲色色色色| 久操香蕉| 牛牛色av| 91丁香五月| 久久九九爽| 丁香五月AV综合| 五月天色官网| 婷婷五月天婷婷| 成人性爱无码| 少妇性按摩无码中文A片| 久久五月天视频| 日本不卡中文字幕| 婷婷五月激情网| 丁香网站| 久久久精品婷婷五月天| 久久久九九视频精品18| 亚洲免费av在线| 狠狠色婷婷777| 六月婷婷六月天天在线免费| 五月丁香综合久久| 久久视频在线| 欧美色宗和激情| 99热久| 婷婷欠久少妇| 日韩无码系列| 思思99热这里只有精品| 婷婷五月天无码熟女| 五月香六月婷| 九九性爱网| 激情五月综合亚洲另类| 激情图片亚洲| 99热99操| 人人操Av| 中文在线视频久1| 91成人品| 青草视频在线播放| 国产精品视频网| 婷婷六月丁香激情| 噜噜噜精品欧美成人在线观看| 26uuu| 人妻久久久| 另类国产欧美视频| 国产精品久久久久久白浆色欲| 五月天色官网| 丁香六月激情综合| 色综合久久888| 在线不卡的视频| 久久性爱视频| 五月涩涩网| 超碰成人在线观看| 色婷婷在线电影| 日本在线视频播放91| 深爱婷婷色| 五月丁香色综合| 亚洲经典三级| 日韩精品一品二区三区的使用体验| 丁香六月婷婷综情欧美| www.深爱激情| 婷婷狠狠干| 五月婷在线| httpwww色com日本| 超碰免费人妻| 丁香五月综合在线观看| 欧美久热| 五月婷久久综合| 人人色婷婷五月天| 婷婷激情图片| 久久精品国产AV一区二区三区 | 人妻激情视频| 五月天激情图| 五月天色不卡| 青青日韩| 另类激情五月| 五月天色社区| 五月叮香啪| 99热骚货| 亚洲第一第二网站| 婷婷久久在线| 亚州视频九九99| 色婷婷电影网| 丁香五月很很肏| AV美美午夜| 深爱激情五月婷婷| 婷婷综合日本| 99热最新网址| www狠狠| 91色逼| 色五月综合在线| 国产精产国品一二三在观看| 丁香五月网址| 超碰操日| 九九熱最新視頻| 干一干xxxx| 大香蕉视频99| 五月天开心色情网| 婷婷五月天综合在线| 激情五月天的婷婷| 丁香九月婷婷色| 国产成人精品亚洲线观看| 操久久网| 九九性爱网| 亚洲婷婷综合视频| 激情婷婷六月| 国产在线aaa片一区二区99| 久操婷婷| 色婷婷免费观看| 超碰精品国产首页| 99免费视频网| 琪琪色五月婷婷老师| 99热 免费| 久久性爱视频网站| 国产熟女一区二区三区五月婷| 丁香美女五月天婷婷| 激情碰碰碰| 丁香五月亚洲| 一本色道久久综合狠狠躁一二三| 日本色婷婷综合| 亚洲激情久久| 九九成人精品免费视频| 婷婷综合五月天| 久久98热re| a久久| 婷婷综合av| 日韩1区2区| 久久婷婷东京热大香樵| 婷婷狠狠干| 91碰碰碰久久久久| 五月天久久丁香| 大香蕉婷婷婷| 这里只有精品免费观看网占| 97操资源婷婷| 欧美啄木乌丝袜人妻系列| 婷婷五月丁香基| 操熟女成人网| 91女人18毛片水多国产| 97婷婷五月| 国产人人操| 天天五月天综合网址| 99啪啪骑| 婷婷五月天亚洲五码| 丁香玖玖| 天堂中文国产| 91天天操天天干天天射| 丁香五月Av| 婷婷久久婷婷色五月| 日韩精品AV一区二区三区| 天天操天天爽天天爱| 国产真实乱了老女人视频| 操逼在线视频| 久综合4| 99在线小视频| 99热99极品观看| 五月丁香婷中文| 99re思思热在线视频| 亚洲人妻av伦理| 激情五月com| www.玖玖婷婷在线| 播播网色播播| 综合色99| 国产美女精品| 蜜臀综合久草| 狠狠人人婷婷| 91九色国产| 91五月天| 天天精品视频在线观看视频| 丁香狠狠操| 久久婷婷五月丁香网| 无码地址| 色婷婷性爱网| 久久99网| 久久色区| 国产亚洲精品久久久久久郑州| 五月丁香六月花| 国产精品丝| 99操逼| 五月丁香婷婷激情澎湃四射| 91视频综合网| 99热在线观看| 亚洲五月天婷婷综合| 丁香六月婷婷色播| 少妇综合网| 久久婷婷五月天激情唯美| 任你日热视频| 六月丁香网| 日本熟女内射| 色99在线视频| 成人.在线日韩| 丁香六月激情综合| 综合久久婷婷五月丁香| 精品综合网在线| 久久多色| 天天干天天干天天干天天干天天| 99啪在线| 婷婷久久网| 婷婷色正月| 欧洲激情网站| av一区免费看| 丁香六月欧美| 99综合激情久久精品久久| 激情四射网| 欧美性爱丁香五月| 日韩成人综合网| 色色 9| 婷婷六月激情小说网| 在线亚洲综合|