99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

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
返回資訊列表
五月天伊人网| 色综合五月天| 五月丁香久久| 成人免费120分钟啪啪| 日韩激情婷婷五月天| 桃色五月天| 翔田千里aV中文字幕| 中文字幕日产A片在线看| 激情网站综合五月天| 五月网站| AV成人在线播放| 久草A片| 99操久久| 成人狠狠成人狠狠成人狠狠成人狠狠| 天色色综合网| 91人人爽狠狠狠| 色狠狠综合| 思思热视频在线| 爱之国产色情综合| 五月婷婷丁香五月| 9久热在线精品| 天天色噜| 婷婷五月天AV在线| 久久综合婷婷五月| 久久久无码精品成人A片小说| 国产精品噜噜在线视频| 99在线观看这里都是精品 | 啪啪操超碰| 69色婷婷| 久久婷婷五月丁香| 91婷婷丁香| 欧美激情五月天| 激情网婷婷婷| 天天久久人人| 久久婷婷的综合色丁香五月| 伊人久久艹| 五月婷婷婷自由综合| 9色免费网| 97人人射| 九九99九九99九九99视频网| Aaa久久| 国产精品成人AV在线| 国产永久一二一起草| 色图亚洲91| 激情亭亭五月| 极品五月天| 99人人操人人操人人精| 老师高潮流白浆喷水的A片| 欧美黄色韩日网| 色色成人網| 强奸幻女毛片| 少妇丁香婷婷| 少妇丁香婷婷 | 日韩AV免费电影在线播放| 色五月天成人在线| 99热在线播放| 中文字幕丰满人妻无码专区| 人人超碰99| 天天精品视频免费观看| 26uuu国产| 很很操很很操| 欧美情色一区| 久久九九综合| 大香蕉九九| 婷婷五月天欧美图片在线播放电驴| 久久激情五月婷婷| 亚洲热久| 婷婷六久久| 夜夜夜夜夜操| 中文字幕在线播放视频| 丁XX 成人| 狠狠色无码| 男女99免费视频| 无语停婷丁香网| 丁香五月天啪啪| 国产精品色婷婷99久久精品| www.狠狠艹| 色婷婷五月丁香在线观看| 99色天堂| 啪啪五月天啪啪| 婷婷五月综合在线视频| 9精品在线| 看片视频在线免费日产在线看| 人妻AV中文系列| 成人丁香婷婷| 9色在线| 激情五月天婷婷图| 黄色成人网站在线播放| 色综合天堂| 五月丁香A片| 亚洲爆乳无码精品AAA片蜜桃| 久青操| 激情五月天激情小说| 婷婷五月天少妇| 久久婷婷激情| 天天色播| 欧美99| 日韩AV中文字幕在线| 亚洲精品国产A久久久久久| 五月丁香六月激情欧美综合| 99热这里只有精品1025| 日韩成人电影在线播放| 欧美日韩成人在线观看| 天天天天干| 激情五月丁香六月婷婷| 丁香激激情网| 五月激情丁香| 亚洲激情免费视频| 久久婷婷五月综合伊人| 成片免费播放| 天天日日人| 五月久久五月激情| www,超碰| 99在线精品视频| 激情综合网色播五月| 久久这里只有国产视频| 99色在线观看视频| 精品成人a v无码内射| 综合狠狠干| 开心 五月 综合| 久热婷婷| 嫩草AV久久伊人妇女超级A| 色欲五月婷婷| 99视频久久| 欧美在线视频99| 中文字幕日韩成人| 91精品91久久久中77777| 国产一级片色色| 丁香五月手机在线| 97人人看| 九九热在线视频观看| 激情综合网五月婷婷| 99热国产在| 亚洲性爱99在线| 色人久久| 色琪琪一综合久久激情五月视频| 国产视频婷婷| 超碰在线观看caop| 天天操夜夜爽歪歪| 九热网站| 婷婷伊人久久| 99热自拍| 亚洲精品白浆高清久久久久久| 狠狠穞A片一區二區三區| 五月婷婷色| 六月婷婷五月丁香| 婷婷久久爱| 婷婷综合玖玖五月| 美欧日韩国产成人在战| 色五月丁香六月资源站| 九九婷婷五月天影视| 另类激情五月| 97人人干| 天天 青草 丝袜制服 在线| 丁香五月婷婷激情蜜桃| 色色激情网| 人妻无码精品一区| www。久久久久一b。Cc| 色五月大香蕉婷婷| 性韩日色婷婷五月天激情啪啪XXX| 欧美激情综合| 色欲资源网| 99re6久热只有精品6在线直播| www.9797国产| 丁香五月AV| co超碰在线观看| 天天综合在线网| 色9999综合久久| 婷婷五月天com| 成人 在线 日韩| 91精品久久久久| 五月天社区| 婷婷六月丁香五月图区| 久久久精品AV| av免费人人| 五月天婷婷久久视频| 久草A片| 综合九九| 日日夜夜狠狠| 婷婷日本色| 超碰操网| 激情五月狠狠| 亚洲中文乱字字幕在线永久| 国产激情视频在线观看| 色婷婷激情四射视频| 亚洲综合字幕色色| 精a品a| 六月丁香综合| 五月婷婷 婷婷五月 一区二区 久久久| 999久久久国产精品| 九九热色视频| 天天日天天爽| 日本女色人人| 色色精品色| 丁香五月开心五月激情| 97色干| 婷婷丁香五月网| 亚洲激情精品| 丁香六月婷| 五月伊人综合| 五月丁香婷婷综合久久| 精品综合久久久久久五月天| 五月天色婷婷激情综合| 五月天综合| 天天操综合网| 亚卅毛片| 色狠狠色综合| 色婷婷基地 | 亚洲另类av| 国产亚洲色婷婷99精品| 国产精品爽爽久久久久久| av大香蕉| 久久综合中文| 中文AV在线观看| www.第四色99| 亚洲欧洲色色| 丁香五月色色| 色婷婷综合影院| 天天草婷婷五月| 久久香蕉丁香| 久热久re| 亚洲色 视频| 99精品综合| 超碰人人妻| 天天日天天插天天操| 色五婷婷开心缴| 日日做A爰片久久毛片A片英语| 亚洲激情在线| 人与禽A片啪啪| 91九色在线视频| 色五月婷婷91| 五月婷综合性中心| 婷婷色操| 牛牛热这里只有jingpin| 国产精品成人在线| 国产avapp 网| 2015WWW永久免费观看播放| 日日天天天| 久久丁香综合| 九月婷婷激情久久| 久久久久久丁香五月| 天天综合精品| WWW.五月天9999| 婷婷激情九月| 亚洲精品国产setv| 欧美在线干| www.婷婷五月天.com| 国产黄色大片| 天天日天天干天天插天天射| 五月婷视频| 九九热10| 男女啪啪做爰高潮无遮挡| 午夜天堂啪啪| 精品色| 丁香激情四射| 激情丁香九九五月综合网| 91碰碰碰久久久久| 丁香五月六月综合欧美| 欧美激情伊人| www.六月丁香看AV| 97人人操com| 99热| 色婷婷综合网站| 婷婷激情综合网| 五月丁香激情四射| 伊人www22综合色| 色欲天天综合| 婷婷激情五月吧| 色欲婷婷五月天| 亚洲视频二区| 六月撸婷婷| 热99热久| 久久性操| 色就是色婷婷五月亚洲激情| 婷婷五月成人| 森林影视大全,最好看的2019年视频 | www久久99| 亚洲不卡| 久久亚洲色导航| 久热婷婷| 五月丁香六月婷婷综合网缴情| 久久91久久精品久久| 无码人妻一区二区三区免费九色| 伊人激情综合| 91人操人人人操人| 婷婷丁香69精华| 俺去也婷婷| 伊人在线另类| 99色视频| 思思99热这里只有精品| 99精品偷自拍| 国产在线中文字幕| 99热这里是精品| 亚洲乱码w在线观看| 色天堂A| yellow视频在线观看91| 丁香六月激情| 韩国三级五月天婷婷。| 五月婷婷影| 99热久| 99热网站在线观看| 97色一二三| 综合一区二区三区| 婷婷五月丁香五月| 亚洲综合色婷| AV成人在线播放| 99热精品在线| 激情都市另类| 五月丁香成人| www,com,五月色色| 欧美性爱五月天| 色五月婷婷91| 久久九九网| 婷婷五月丁香色情| 亚洲天99| 久久久亚洲精品一区二区三区浴池| 五月婷婷激情中心| 婷婷五月丁香久久| 婷婷丁香五月社区亚洲| 久久婷婷国产| 人人干Av| 97碰啪啪| 果冻传媒A片一二三区| 色婷婷丁香五月| 亚洲V国产V欧美V久久久久久| 亚洲激情六月丁香| 秋霞影音91人妻久久| 深爱五月天| 五月丁香婷婷色| 色婷婷AV在线观看| 天搞天天天天天| 性做久久久久久久免费看| 色爽九九| 日本一道久久| 丁香五月之久操视频| 无人精品在线视频| 五月丁香好婷婷姑娘综合网| 99久久97久久欧美综合网| 五月丁香婷婷综合网| 色五月婷婷久久| 色婷婷深爱五月| 五月婷婷中文字幕| 日本色99| 婷婷五月综合国产精品| 天天做天天爱天天要| 这里只有精品免费在线视频| 色婷婷久久9.com| www久久久| 日本五月视频| 婷婷激情五月天激情在线| 久久蜜臀婷婷| 三男玩一女三A片| 大香蕉久久婷婷| 午夜爱爱爱成人| 国产精品操| www激情| 日本九九九九| 好吊丝aV| 99视频| 99热久只有精品首页| 色综合激情| 久久婷婷激情久久| 99在线精品视频| 五月天成人在线视频丁香| 丁香五月天日韩无码| 涩五月婷婷| 五月丁香婷婷网在线在线| 五月情婷婷五月| XX久久| 狠狠爱婷婷五月天| 9久久狠狠的| 婷婷五月色播放| 亚洲综合99| 婷婷五月丁香基地在线视频官网| 9久久婷婷国产综合精品性色| 丁香8月手机综合| 激情综合五月婷婷| 五月丁香久久| 91大操| 美国天天操无码| 成人做爰A片免费看网站找不到了 噼里啪啦在线观看免费完整版视频 | 色婷婷啪啪| 成人免费黄色短视频| 99热这里只有精品4| 久久婷婷五月综合啪| 久久ER视频com| 九九热这里只有精品7| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 少妇丁香婷婷 | 婷婷五月丁香狠狠| 日日爱激情| 日韩成人影片在线观看| 五月天婷婷久久| 亚洲成人AV在线播放| 一本久道综合色婷婷五月| 99re热在线视频| 日韩成人电影AV| 丁香开心深爱| 婷婷色情五月| 日本狠狠干| 夜夜天天天天天干天天爽| 91人人人人人| 五月综合缴情网| 在线成人网址| 99在线观看精品| 五月花免费视频| 成人在线精品| 丁香五月激情啪啪综合| 91精品久久久久久77777| 久久视频这里都是精品| 黄色五月婷| 狠狠操狠狠爱| 俺也去在线视频| 五月婷婷欧美| 天天插操| 天天综合网在线| 欧美性丁香色色五月天| 激情涩涩网| 日韩婷婷| 97香蕉碰碰人妻国产欧美| 开心五月激情网| 九九日本视频| sewuyuejiqingwang| 婷婷五月天com| 激情综合色婷婷啪啪六月天| 99在线资源| 亚洲无线视频| 激情丁香婷婷六月天| 综合久久婷婷五月丁香| 婷婷五月天激情亚洲小说| 99热青青草原| 婷婷婷婷婷婷婷婷| 婷婷色中文字幕| 亚洲精品V天堂中文字幕| 五月丁香婷婷成人网| 久久综合五月天激情小说网站| 色色六月| 久久婷婷网| 激情AV| 99热精品10| ss99热| 色婷婷社区| 色色色热| 久9视频| 成人午夜天| 青草视频在线播放| 六月婷婷综合久久| 亚洲第一色色色色| 五月色色激情网| 中文资源在线a| 久热免费视频| 五月色情婷婷| 国产色网站| 极品少妇XXXX精品少妇偷拍| 婷婷免费视频| 色色五月婷婷| 五月色亚洲| 色噜噜狠狠色综合伊人| 狠狠色综合网| 色婷婷久久久| 337p大胆噜噜噜噜噜91Av| 色射7856五月天激情四射| av操B网站| 色色欧美。| av大香蕉| 99精品偷自拍| 色狠狠色噜噜AV天堂五区| 激情www| 色婷婷五月综合| 999热这里只有精品| 99热在线观看免费| 狠狠激情五月天| 五月婷婷色播| 337久久| 国产操B视频| 日本狠狠爽| 天天操天天爱天天日| jiujiujiuwuyuetian| 精品综合爱| 黄色91在线观看| 日本在线观看aaa 99| 蜜臀av 粉嫩av 懂色av| 91日综合欧美| 天天综合久久| 丁香花五月天激情| 无码网| 丁香五月婷婷丫| 天天操天天爽天天爱| 无码天天操| 天天操天天操天天操| 亚洲色优| 五月综合久久| 97干在线免费| 九九人人操| 久久国产成人9999久久久久| 99re99热| 成人AV中文字幕| 日韩无码AV电影网站| 特黄三级片| 六月婷婷久久大全| 国产成人精品123区免费视频| 五月丁香六月停停停| 色久婷婷五月| 亲子乱AV一区二区三区下载| 久久丁香婷婷五月| www天天爽| 影音先锋女人AA鲁色资源| 色婷婷伊人| 五月播播| 久9精品视频在线| Se.婷婷五月天| 96精品久久久久久久久| 精品色情一区二区三区四区| 亚洲色婷婷久久99精品91| 好吊操这里只有精品| 日韩久久视频| 大香蕉人人人| 五月婷婷 激情五月| 男妓跪趴把舌头伸进我的嘴巴| 91热在线| 激情五月天综合网| www.五月天色色色| 在线播放中文字幕| 大香蕉丁香婷婷| 婷婷操久久| 狠狠色无码| 五月婷婷六月丁香五月| 风流少妇A片一区二区蜜桃| 激情性爱婷婷| 色色色在线免费视频| 婷婷综合色五月天| 99自拍视频| 六月丁香激情| 亚洲综合色丁香婷婷六月| 丁香六月天| 开心五月天激情网| 色色综合色视频| 99爱视频在线观看这里只有精品| 亚洲高清在线| 久久婷婷五月天蜜桃| 操逼在线视频| 婷婷五月婷婷| 91人碰| 日韩无码人妻一区二区三区综合| 久久精品婷婷| 五月天婷婷色情| 深爱五月最新网址| 色婷婷基地 | 国产免费一区二区三州老师F1F1| 欧美日韩AAAA| 婷婷干| 天天干夜夜操A片| 国产精品爽爽久久久久久| 99日热在线视频| 男人天堂亚洲综合| 三级三久久线久久99久目本WW| 99热青青草| 色色婷婷五月天| 色综合夜夜| 91精品丝袜久久久久久| AV美美午夜| 午夜无码熟熟妇丰满人妻| 4399在线观看免费高清毛片| 久久久这里有精品| 久久与婷婷| 大香蕉啪啪网| 九九视频免费| 国产99久| 99这里只有精品视频| av无码电影| 久久久久9| 天堂爱爱| 大香蕉婷婷婷| 丁香九月综合激情| 5月婷婷视频网站综合| 亚洲无码色色| 婷婷五月天激情五月天| 五月婷婷日| 九九RE视频在线精品| 熟女婷婷网站一婷婷五月一丁香婷婷一婷婷激情网 | 九九热自拍| 婷婷激情社区| 亚洲女婷婷五月基地综合久久久| 九久热| 99九九热在线观看| 97成人丁香婷婷| 老美AA片| www.激情五月| 97精品综合久久| 国产美女无遮挡裸体毛片A片| 一本伊人色婷| 91精品91久久久中77777久久玖玖九九| 中文字幕在线日亚洲9| 五月丁香花激情综合网| 中文字幕日产A片在线看| 亚洲一区二区无码蜜乳av| www99精品在线观看| 中文字幕精品推荐免费在线观| 亚洲另类在线观看| 天天操夜夜啊| 天天综合网色欲香| 激情婷婷六月天| 五月天婷婷青青草| 丁香九月婷婷综合| 亚洲综合五月天婷婷| 久艹大香蕉| 狠狠色综合777| 国产黄色av| 99精品免费视频| 欧美激情凹凸丁香网| www久久久久久久97| 国产午夜精品AV一区二区麻豆| 久久五月天色| 色五月婷婷天天干| 无毒黄色网址| 噜噜在线| 中文字幕,综合,91| 先锋男人99资源| 色欲影香| 丁香五月婷婷色综合| 91九色丨国产丨爆乳| 99热99精品在线观看| 国产av基地| 国产精品色情AAAAA片软件| 99色| 婷婷综合网站| 五月丁香综合啪啪啪啪啪| 成人免费网站免费看| 五月婷婷六月天| 免费看成人747474九号视频在线观看| 婷婷六月天精品| 五月婷婷久久大香蕉| 99久久欧美| 五月天色不卡| 天天操中文字幕| 狠狠五月天婷婷激情网。| 98国产精品综合一区二区三区| 九月婷婷丁香| 另类视频一区| 国产44页| 丰满人妻妇伦又伦精品国产 | 丁香五月www| 日韩另类| 亚洲AV中文在线| 天天综合亚洲综合| 久久视频婷婷视频| 狠狠色九月| 99热18| 色优久久| 情色五月天网站| 夜夜夜夜夜操| AAA亚洲AV| 婷婷五六日| 色九九综合| 国产亚洲网站在线| 啪啪色激情五月天| 丁香啪啪中文字幕| 五月婷婷 激情按摩| a网站免费观看| 久久九九网| 激情五月综合网| 九九热99热| 俺去啦综合网| 国产精品久久久60086| 人色五月天婷婷| 婷婷五月天天天日日夜夜| 五月婷婷与六月丁香图片激情| 五月丁香婷婷激情四射迷人| 久草婷| 久久婷婷五| 99综合久久| 97久操视频| 草久私拍| 日本99婷婷| 精品综合网在线| AV在线不卡播放| 国产亚洲精品AAAAAAA片| 五月香婷婷| 婷婷五月天伊人网| 日韩无码色色| 天天拍天天操| 亚洲精品无码久久| 亚洲精品国产成人AV在线| 色爱99| 五月天激情国产综合婷婷| 激情婷婷五月天日本系列| 国产69久久久欧美黑人A片| 99在线免费观看| 五月天激情丁香| 亚洲丁香婷婷丁香五月天激情| 人人草开心五月天| 97色女人在线| 九九久久99| 少妇AB又爽又紧无码网站| 亚洲精品午夜国产va久久成人| 欧美日综合| 欧美婷婷综合| 免费看欧美成人A片无码| 免费做A爰片77777| 色婷婷综合久久| 91高潮喷水久久久久久久久| 涩涩婷婷五月| 丁香五月首页| 第2色五月婷| 99精彩视频在线观看| 九九热这里只有精品9| 丁香婷婷色五月天| 激情五月天综合婷婷网| 五月丁香久久| 色婷婷视频| 色婷婷亚洲婷婷| 国产精品天天狠天天看| 超碰五月婷婷五月天| 在线观看亚洲AV| 91精品久久久久久久| 国产乱码久久| 天天爽天天干天天| 丁香婷婷色情| 婷婷成人五月天| 日本视频久久| 97干在线看| 99色在线视频| 六月婷色六月| 大香蕉欧美在线| 五月天精品视频| 亚洲V国产V欧美V久久久久久| 波多婷婷久久| 97婷婷狠狠| 色色色视频免费无码 | 狼人狠狠操| WWW.桔色成人.COM入口| 色婷婷综合视频| 丁香五月综合婷婷| 日本强伦片中文字幕免费看| 婷婷五月六月| 色色是色N一| 五月丁香婷婷伊人| 婷婷八月丁香激情综合| 五月天激情小说网| 色在线免费观看| 五月丁香性爱| 天天综合天天玩夜夜玩天天玩夜夜玩| 开心婷婷丁香五月| 五月婷在线| 中文不卡av| www婷婷| 这里只有九九精品| 天天摸天天肏| 国产99久9在线+|+传媒| 色色婷婷五月天| 精品久久久久久久人妻| 五月丁香婷婷色色| 玖玖91| 99日韩| 婷婷丁香色五月| 激情综合一| www:99热视频| 热99视频精品| 超碰男人色| 久久久婷婷五月天| 欧美操人| pacopacomama 070722_670 素人奥様初撮りドキュメント 103 大久保純子 | 婷婷五月激情综合啪啪| 五月丁香激情片| 色狠久| 激情五月婷婷视频一区二区三区| 丁香六月婷婷久久综合| 香蕉AV福利精品导航| 激情图片婷婷| WWW夜夜| 欧美日韩AAAA| 99精品久久久| 五月天堂六月丁香亚州中文字幕久久| 久久婷婷五月国产色综合激情| 色噜噜狠狠色综合日日| 免费观看欧美成人AA片爱我多深| 天天综合久久| 永久地址 色| 99色综合| 久久东京热婷婷五月| 五月婷婷开心综合| 99精品偷自拍| 超碰99热| 五月丁香婷婷网在线在线| 91在线操逼视频| 久久只有这里精品免费| 99热9999| 六月婷婷九月丁香| 九九精品在线观看视频6| 99国产精品久久久久久久久久久| AV在线资源| 丁香六月婷婷综合缴| www.色色色com| 狠狠婷婷爱| 超碰碰碰碰| www.99精品在线| 亚洲六月色| 婷婷在线中文字幕| 丁香六月中文| 99色在线| 天天日日夜夜爽| 激情五月丁香社区| 久久9RE热视频精品98| 久热播这里只有精品| 国产69久久久欧美黑人A片| 青青草原中文字幕| 日韩成人精品中文字幕| 久久九⑨| 日本天天色| 激情电影五月婷婷| 五月婷婷狠狠干| 成人 在线观看国产| 亚洲舔观看| 狠狠综合网| 五月丁香好婷婷姑娘综合网| 国产日韩欧美性爱| 天天日天天舔天天摸| 日本一道久久| 夜夜 操无码| 97碰碰人人| 人人操插| 色欲一区二区三区精品A片| 久激情网| 丁香五月久久| 99啪啪| 岛国AV网| 五月天婷婷综合久久| 九九视频精品在线免费| 91紱請| www.粉嫩av.com| 人妻操操色| 99热个人在线| 久久婷婷欧美| 在线看AV| 五月婷婷天天| 激情五月天的婷婷| 99riAV国产精品视频| 9精品视频在线观看| 色呦呦美女| 99在线69| 91精品丝袜久久久久久| 色愛综合网| 色色热| 激情婷婷五月天伊人在线观看 | 激情五月婷婷五月丁香五月开心五月| 成人做爰黄A片免费看直播室男男| 国产一区男女| 丁香婷婷综合影院| 79精品视频在线观看,| 好色婷婷| 亚洲综合婷婷| 婷婷欧美激情综合| 狠狠色狠狠操| 五月天婷婷开心| 五月久久丁香| 婷婷五月天美女21p| 99日逼视频| 天天综合在线网| 久久在这里有精品| AV操一操| 激情99热| 五月丁香婷婷网网网网| 夜夜夜夜夜操| 亚洲欧美综合7777色婷婷| 天天久久婷婷| 日木WWW视频| 丁香桃色网| 日韩综合久| 五月丁香婷婷潮喷中文字幕| 狠狠艹狠狠艹| 久9视频| 91网站黄| 人妻中文av| 深夜婷婷 丁香| 99re6久热只有精品6在线直播| 夜夜操夜夜操| 欧美激情综合色综合色| 午夜激情婷婷| 久久久香| 热99精品视频| 五月间天堂综合| 一级片无码| 国产精产国品一二三在观看| 欧美啪啪9| 森林影视大全,最好看的2019年视频 | 狠狠色性| 丁香婷婷五月天色综合| 97人人干人人操| 色噜噜狠狠色综合网| 五月激情综合性爱| 亚洲成人网站在线| 嫩草国产| 另类亚洲视频| 五月天婷婷色情| 狠爱婷色| 国产美女主播vip| 99噜噜噜| 丁香五月激情网| 色婷婷色九月| 五月婷婷影| 婷婷五月天综合久久| 丁香五月激情五月色综合| 男女啪啪做爰高潮无遮挡| 被男人添B超爽视频| 夜夜穞天天穞狠狠穞AV美女按摩| 激情五月丁香五月| 六月丁香婷| 婷婷色五天| 丁香婷婷性爱| 欧美日韩一区二区三区四区| WWW.婷婷| 欧美交换配乱吟粗大25P| 99亚洲精品| 国外亚洲成AV人片在线观看| 欧美槡BBBB槡BBB少妇| 亚洲欧洲中文日韩久久AV乱码| 高清一区二区三区日本久| 精品国产AV色一区二区深夜久久| 草了bav视频在线观看| 天天干狠狠| 久久99最新地址| 色九九九综合| 97色啪| 丁香花色色网| 丁香五月婷婷呀| 开心五月婷婷在线视频免费观看| 色综合日日| 亚洲精品婷婷| 大香蕉婷婷丁香天堂AV| 夜夜躁爽日日| 成人αV视频免费观看| 婷婷玖玖丁香| 97久久人人操| 狠狠干2007| 草逼大片| 亚洲99综合| 中国女人内射6XXXXX| 亚洲黄网在线| 狠狠爱五月婷婷| 无码地址| 成人精品99| 五月开心深深爱激情综合| 亚洲成人在线免费| 99ER热精品视频| 五月婷九九草| 日本色道视频网站| 狠狠干在线视频| 97人妻碰碰碰久久香蕉| www.婷婷| 成人免费视频一区| 色五月婷婷婷婷婷婷婷婷婷婷| 欧美成人精品三区综合A片| 9久久精品| 亚洲色婷婷久久99精品91| 婷婷的久久网站| 九九视频精品在线免费| 激情六月色| 五月丁香综合激情| 婷婷玖玖五月天| 丁香五月天天日| 五月天国产| 少妇熟女视频一区二区三区| 99精品偷拍视频| 亚洲色色图片| 激情深爱五月天| 国产精产国品一二三在观看| 五月天婷婷激情在线色图| 色情·com| 99热只有国产在线精品| 婷婷综合网| 九一牛视频探花| 五月综合视频在线| 婷婷五月天激情小说| 风流少妇A片一区二区蜜桃 | 深爱五月激情五月| 日韩性爱无码| 五月婷婷开心激情六月蜜桃| 97色啪| 丁香8月手机综合| 狠狠香婷婷五月| 丁香五月AV| 五月天sesese| 天天激情综合| 亚洲AV网址| 9久久精品视频| 99色热综合| 看片视频在线免费日产在线看| 亚洲欧美国产A片免费观看| 亚洲欧洲色色| 91人操人人人操人| 日韩欧美性爱| 99色1| 五月天婷婷久久日| 天堂中文国产| 九九综合网色全集| 激情婷婷五月天日本系列| 五月香婷婷| 九九精品热| 午夜成人网站在线观看| 色婷婷色综合激情91| 婷婷五月天天aV| 日韩中文字幕| 婷婷6月综合网| 久月婷婷| 婷婷五月激情网| 天天爱天天秀天天做| ...婷婷五月综合不卡,国产在线手机| 丁香婷婷久久老熟女综合网| www.婷婷| www.狠狠干| 国产激情久久久| AV伊人青草丁香六月| 五月丁香成人小说| 四川女人毛多水多A片| 日操| 成人做爰A片免费看网站找不到了| 久久丝丝热| 久草热在线视频| 毛v一区二区视频| 五月色综合网| 九九精品少妇| 99热在线观看| 婷婷综合视频| 大香蕉久久久久| 99噜噜| 五月婷精品| 狠狠综合网| 99re热视频这里只精品| 99久久久久| 五月天另类视频| 五月婷婷这里都是精品| 四川女人毛多水多A片| 六月天六月婷| 婷婷酒色网| 五月婷婷丁香啪啪| 午夜成人AV在线| 成人在线99| 亚洲精品欧洲精品| WWW、99热| 色五月播五月| 99热在线精品播放| 99视频久久| 精品九九视频| 1024你懂的欧美曰韩| 五月丁香色综合| 五月丁香六月婷综合成人综合| 十月丁香九月婷婷综合| 五月婷婷偷拍| 天天综合色| 97色色色色色色色色色色色色色| 99热香港| 五月天久久婷婷| 亚洲五月丁香综合网| 久久小说| 99热这里只有精品1| 九九激情视频| 色噜噜婷婷| http://www.lingjunshare.com/ | 91狠狠色丁香| www.色五月.com| 婷婷伊在线| 97碰碰免费.视频| 丁香五月人妻| 国产乱码久久| 天天视频精品9| 欧美性猛交99久久久99| 日本怕怕视频| 丁香花五月天婷婷成人社区| 激情久久丁香| 国内婷婷丁香社区在线播放| 激情五月最新网址| 99精品视频网| 91凹凸在线| 国产精品天天狠天天看| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 六月婷婷影院| 天堂久久婷婷| 成人丁香婷婷| 丁香五月91| 久久成人精品视频| 综合久久高清| 国产精品男人AV不卡| 青青草原亚洲天堂| 99精品7| 9久久久久久久久久久| 激情综合文学| 狠狠干,狠狠操| 天天爽,夜夜爽| 激情涩涩网| 色婷婷综合久久久久| ZpRSw| 婷婷亚洲综合| 婷婷丁香人妻久久在线观看| 热99国产精品| 91碰九色| 野战J办公桌椅H| 97精品欧美91久久久久久久| 久久五月婷天天干| 99激情网| 亚洲午夜电影| 极品少妇婷婷五月| 亚洲V国产V欧美V久久久久久| 日日干日日| 热99热9| www.五月天性.com| 91久久1118| 久久五月情| 97久久久| 狠狠干婷婷| 色综合天天综合成人网| 久久人妻情侣| 久久久久久激情| 狠狠色丁香久久综合婷婷亚洲成人福利 | 99精品在线观看视频| av婷婷丁香| 亚洲狠狠爱婷婷| 久久婷五月天| 亚洲激情网| 婷婷久久草| 激情九九综合网| 色青青五月| 狠狠做五月| 五月丁香六月婷婷综合在线| 99资源在线视频| 五月婷中文娱乐综合| 性按摩玩人妻HD中文字幕| 99∨VTV| 综合久久99| 日本一道久久| 综合爱久久| 五月激情久久综合| 丁香无月在线观看| 综合激情伊人影视在线| 免费国产视频| 91人碰| 五他月天啪啪啪| 亚洲第一影院高清无码网站| 99人人爽| 婷婷久久色五月婷婷久久久| 婷婷金品综合视频| 五月色亚洲| 久久国产色| 天天操天天操天天操天天操天天操| 精品乱码久久久久| 色色丁香| 思思精品视频| 丁香五月天激情综合| 91狠狠综合久久| 亚洲丁香花色| 精品一区二区三区免费毛片爱| 亚洲天堂99| 丰满少妇乱A片无码| 国产又爽又猛又粗的视频A片| 依人大香蕉| 久久九九热视频| 成人综合网站| 射婷婷中文字幕| 99久久婷婷国产综合精品| 色九九一二| 欧美色碰| AV在线免费播放| 五月天婷婷色色| 婷婷另类开心| 丁香六月天婷婷开心综合| 五月丁香欧美在线| 五月激情婷婷开心| 亚洲综合五月天| 爆乳熟妇一区二区三区爆乳照片| 色九区| 一本大道伊人AV久久综合| www,99视频| 色婷婷文字幕| 久久婷婷五月天激情新地址| 激情综合五月色在线| 婷婷五月骚厕所| 婷婷五月丁香久久| 秋霞A V毛片| 亚洲高清在线| 97超级碰| 99精品久久久久久久婷婷| 爱之国产色情综合| 亚洲va在线| 九九在线精点品| 亚洲激情AV| 精品成人在线| 五月婷婷婷| 久草久青福利| 思思热精品在线观看| 亚洲视频五区| 97超碰,人人舔,人人操,人人摸| 九九中文色色| 色五月婷婷基地| 丁香午月AV中文字幕| 天天射夜夜骑| 99热碰碰热| 五月丁香六月情| 九九视频在线观看视频在线播放69| 国产视频福利| 婷婷丁香久久五月综合| 九九在线精点品| 91精品久久久久久77777| 婷婷不卡基地| 天天射夜夜爽| 久久综合丁香激情五月| 婷婷综合网站| 99综合97| 综合激情五月丁香| 婷婷丁香五月天中文字幕| 成人网址在线观看| 爱穴久久| 激情五月开心五月在线视频| 丁香丝袜五月| 色综合色色| av一区二区电影免费在线观看| 三级99热| 1010日日无码| 亚洲色99| 激情五月婷婷她| 激情五月丁香色婷婷| 色情五月婷| 99久99久| 欧美激情五月综合| 五月天社区| 99噜噜噜在线播放| 桃色五月婷婷| 婷婷五月天改成什么了| 色欲久久久久久综合网综合网| 国产AV国片偷人妻麻豆| 色婷婷丁香综合中文字幕| 婷婷五月六月丁香综合| 噜噜在线| 日韩ac不卡无码| 欧美va在线观看| 欧州婷婷五月天综合| www.91.com处女在线直播| 婷婷激情视频| 欧美69久成人做爰视频| 深爱女色婷婷丁香五月亚洲图区| 99综合网| 天天爽人人综合免费7799| 亚洲欧美成人在线| 中文av网| 久久九网| 五月婷丁香在线视频在线| 狠狠色综合网站久久久久| 欧美日本国产欧美日本韩国99| 26uuu国产激情视频| 国产高潮A片羞羞视频涩涩| 日日操夜夜爽白洁| 在线99热| 色吧五月婷婷| 天天综合网91| 精品久久婷婷| 丁香欧美| 99国产99| 五月丁香直播| 26uuu国产激情视频| 九月婷婷久久| 玖玖综合色| 综合婷婷五月天| 国产古装妇女野外A片| 99高级会所久久| 久久久久人妻| 久久久99久久| 67194成I人在线观看线路1| a九九热www|