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

ARTICLE DETAIL

資訊詳情

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

C#資產(chǎn)管理系統(tǒng)開發(fā)實(shí)戰(zhàn):WinForms+SQL Server三層架構(gòu)設(shè)計(jì)

C#資產(chǎn)管理系統(tǒng)開發(fā)實(shí)戰(zhàn):WinForms+SQL Server三層架構(gòu)設(shè)計(jì) 簡(jiǎn)介企業(yè)固定資產(chǎn)管理是企業(yè)信息化建設(shè)中的基礎(chǔ)環(huán)節(jié)涉及資產(chǎn)臺(tái)賬、領(lǐng)用歸還、盤點(diǎn)折舊等多類業(yè)務(wù)場(chǎng)景。開發(fā)此類系統(tǒng)時(shí)數(shù)據(jù)庫設(shè)計(jì)決定數(shù)據(jù)一致性三層架構(gòu)決定代碼可維護(hù)性而界面技術(shù)選型則直接影響用戶操作效率。本文以C#語言為核心結(jié)合WinForms與DevExpress控件詳細(xì)講解從數(shù)據(jù)庫表設(shè)計(jì)到功能模塊實(shí)現(xiàn)的完整路徑涵蓋SQL Server腳本初始化、事務(wù)處理、權(quán)限控制等關(guān)鍵實(shí)踐并針對(duì)數(shù)據(jù)連接、并發(fā)控制、部署兼容性等高頻問題進(jìn)行剖析。無論是課程設(shè)計(jì)還是企業(yè)內(nèi)部工具這套基于三層架構(gòu)的資產(chǎn)管理系統(tǒng)源碼與設(shè)計(jì)思路都提供了可直接落地的工程參考。 做資產(chǎn)管理系統(tǒng)這個(gè)項(xiàng)目說來挺有意思。很多人覺得這不就是個(gè)增刪改查嘛但真正在企業(yè)里跑過一套完整的資產(chǎn)管理系統(tǒng)之后你會(huì)發(fā)現(xiàn)坑比想象中多得多。最近正好在整理一套基于C#的資產(chǎn)管理系統(tǒng)源碼與數(shù)據(jù)庫文件從需求分析到數(shù)據(jù)庫設(shè)計(jì)再到WinForm界面前前后后迭代了好幾個(gè)版本。這篇文章我就把整個(gè)項(xiàng)目的核心思路、表結(jié)構(gòu)設(shè)計(jì)、踩過的坑和一些關(guān)鍵代碼實(shí)現(xiàn)一次性說清楚。這個(gè)項(xiàng)目適合誰看如果你正準(zhǔn)備做課程設(shè)計(jì)、畢業(yè)設(shè)計(jì)或者公司內(nèi)部正好有這個(gè)需求想找一個(gè)能直接跑的框架那這套系統(tǒng)的設(shè)計(jì)思路和源碼結(jié)構(gòu)都值得參考。當(dāng)然我也得提前說一句真實(shí)業(yè)務(wù)里的資產(chǎn)管理和學(xué)校里的課程設(shè)計(jì)差距真的很大文章后面我會(huì)重點(diǎn)聊這塊。1. 項(xiàng)目整體設(shè)計(jì)與思路拆解1.1 資產(chǎn)管理系統(tǒng)到底要解決什么問題先把業(yè)務(wù)場(chǎng)景聊明白。資產(chǎn)管理系統(tǒng)的核心用戶是行政、財(cái)務(wù)和IT運(yùn)維這三撥人他們?cè)谝獾狞c(diǎn)完全不一樣行政關(guān)心哪些資產(chǎn)在哪個(gè)部門、誰在用、什么時(shí)候該歸還財(cái)務(wù)關(guān)心資產(chǎn)原值多少、折舊到哪一年了、凈值還剩多少IT運(yùn)維關(guān)心這臺(tái)設(shè)備買的什么配置、過保沒有、維修過幾次一套稱職的資產(chǎn)管理系統(tǒng)必須同時(shí)滿足這三類視角的查詢和統(tǒng)計(jì)需求而不是簡(jiǎn)單做一個(gè)資產(chǎn)信息登記表。拿我做的這套系統(tǒng)來說核心訴求可以拆成四條一是資產(chǎn)臺(tái)賬統(tǒng)一管理所有固定資產(chǎn)、辦公設(shè)備、IT耗材都能入庫登記二是領(lǐng)用歸還流程可控每一件資產(chǎn)從入庫到分配再到回收全程有記錄可查三是盤點(diǎn)功能實(shí)用年底盤點(diǎn)時(shí)能快速核對(duì)賬面數(shù)量與實(shí)物數(shù)量四是統(tǒng)計(jì)報(bào)表直觀資產(chǎn)總額、部門分布、折舊情況一眼看清。這套系統(tǒng)我最終采用的界面方案是WinForms DevExpress控件庫數(shù)據(jù)庫用SQL Server 2019開發(fā)環(huán)境是Visual Studio 2022.NET Framework 4.7.2。選這個(gè)組合的原因后面細(xì)說先看整體設(shè)計(jì)。1.2 為什么選WinForms而不是WPF或Web關(guān)于界面技術(shù)選型我糾結(jié)過一段時(shí)間。WPF的界面確實(shí)好看動(dòng)畫、樣式、數(shù)據(jù)綁定都強(qiáng)于WinForms但考慮到實(shí)際使用場(chǎng)景我還是選了WinForms原因很直接第一這套系統(tǒng)的用戶是公司內(nèi)部行政和財(cái)務(wù)人員他們更看重操作效率而不是界面炫酷程度。WinForms的DataGridView做列表展示和編輯在數(shù)據(jù)量幾千條以內(nèi)的時(shí)候響應(yīng)速度非??煊脩舨恍枰却撁嫠⑿隆5诙inForms部署成本極低。直接把Release目錄下的exe和dll拷到目標(biāo)機(jī)器裝個(gè).NET Framework就能跑。WPF雖然也差不多但WPF項(xiàng)目一旦引入復(fù)雜樣式和第三方主題運(yùn)行時(shí)的兼容性問題會(huì)多一些。第三項(xiàng)目源碼的閱讀門檻低。對(duì)很多剛?cè)腴TC#的朋友來說WinForms的事件驅(qū)動(dòng)模型非常直觀——雙擊按鈕寫Click事件拖個(gè)DataGridView綁定數(shù)據(jù)源這種開發(fā)方式上手極快。WPF的MVVM模式雖然先進(jìn)但需要理解命令、綁定、依賴屬性等一系列概念學(xué)習(xí)曲線陡不少。當(dāng)然如果你的場(chǎng)景是云端部署、多人異地協(xié)同辦公那Web方案肯定更好這套系統(tǒng)定位就是局域網(wǎng)內(nèi)單機(jī)或者共享數(shù)據(jù)庫模式WinForms完全夠用。1.3 三層架構(gòu)設(shè)計(jì)讓代碼不變成一坨早期做課程設(shè)計(jì)的時(shí)候我也寫過那種所有代碼全堆在Form1.cs里的項(xiàng)目?jī)蓚€(gè)窗體之間互相new來new去改一個(gè)需求牽扯全身。這套資產(chǎn)管理系統(tǒng)我老老實(shí)實(shí)用了三層架構(gòu)UI層WinForms窗體只負(fù)責(zé)界面展示和數(shù)據(jù)收集不寫任何SQL語句BLL層業(yè)務(wù)邏輯層處理領(lǐng)用歸還流程、折舊計(jì)算、權(quán)限驗(yàn)證等業(yè)務(wù)規(guī)則DAL層數(shù)據(jù)訪問層封裝所有數(shù)據(jù)庫操作基于ADO.NET或EF Core實(shí)現(xiàn)三層之間有嚴(yán)格的依賴關(guān)系UI引用BLLBLL引用DALDAL不反向引用任何上層。有人可能會(huì)說你個(gè)幾百條數(shù)據(jù)的系統(tǒng)搞什么三層架構(gòu)不是過度設(shè)計(jì)嗎我的觀點(diǎn)是三層架構(gòu)的核心價(jià)值不在于代碼量大小而在于需求變化時(shí)你能精準(zhǔn)定位改動(dòng)范圍。舉個(gè)例子系統(tǒng)上線后財(cái)務(wù)提出資產(chǎn)折舊算法要改成當(dāng)月新增下月計(jì)提這個(gè)需求只涉及BLL層的折舊計(jì)算模塊DAL層完全不用動(dòng)。如果是單層架構(gòu)你還得在一堆窗體代碼里檢索折舊邏輯散布在哪幾個(gè)地方。1.4 功能模塊劃分整套系統(tǒng)的功能模塊我劃分成了五個(gè)部分每個(gè)部分之間有明確的數(shù)據(jù)流轉(zhuǎn)關(guān)系功能模塊核心功能點(diǎn)關(guān)聯(lián)數(shù)據(jù)表系統(tǒng)管理用戶登錄、角色權(quán)限、操作日志Sys_User, Sys_Role, Sys_Log資產(chǎn)臺(tái)賬資產(chǎn)登記、編輯、查詢、導(dǎo)入導(dǎo)出Assets, Asset_Category領(lǐng)用歸還領(lǐng)用單、歸還單、借用登記Asset_Apply, Asset_ApplyDetail維護(hù)保養(yǎng)維修記錄、保養(yǎng)計(jì)劃、報(bào)修處理Asset_Repair, Asset_Maintain盤點(diǎn)報(bào)表資產(chǎn)盤點(diǎn)、折舊統(tǒng)計(jì)、分布報(bào)表Asset_Stocktake, Asset_StocktakeDetail2. 數(shù)據(jù)庫設(shè)計(jì)與核心表結(jié)構(gòu)解析2.1 表結(jié)構(gòu)設(shè)計(jì)的幾個(gè)關(guān)鍵決策數(shù)據(jù)庫設(shè)計(jì)是整個(gè)項(xiàng)目的重中之重。我見過不少資產(chǎn)管理系統(tǒng)表設(shè)計(jì)得亂七八糟資產(chǎn)信息、領(lǐng)用記錄、維修記錄全塞一張表里時(shí)間一長(zhǎng)數(shù)據(jù)冗余到不可收拾。這套系統(tǒng)的數(shù)據(jù)庫一共設(shè)計(jì)了十幾張表核心表包括資產(chǎn)信息表、分類表、領(lǐng)用表、歸還表、維修表、盤點(diǎn)表和用戶權(quán)限表。最核心的資產(chǎn)信息表Assets我這樣設(shè)計(jì)CREATE TABLE Assets ( AssetId INT IDENTITY(1,1) PRIMARY KEY, AssetCode NVARCHAR(50) NOT NULL UNIQUE, AssetName NVARCHAR(100) NOT NULL, CategoryId INT NOT NULL, Brand NVARCHAR(50), Model NVARCHAR(50), SerialNumber NVARCHAR(100), PurchaseDate DATETIME, OriginalValue DECIMAL(18,2), NetValue DECIMAL(18,2), DepreciationRate DECIMAL(5,2), DepartmentId INT, CustodianId INT, Location NVARCHAR(200), Status INT DEFAULT 0, Remark NVARCHAR(500), CreateTime DATETIME DEFAULT GETDATE() )這里有幾個(gè)字段設(shè)計(jì)上的考量值得展開說說。AssetCode為什么必須唯一資產(chǎn)管理里最怕的就是資產(chǎn)編號(hào)重復(fù)。一物一碼是資產(chǎn)管理的基本盤不管是后續(xù)打印資產(chǎn)標(biāo)簽還是做掃碼盤點(diǎn)資產(chǎn)編碼都是唯一索引。我生成編號(hào)的規(guī)則是資產(chǎn)分類拼音首字母年月日四位流水號(hào)比如DN-20250612-0001代表2025年6月12日入庫的第一臺(tái)電腦這種規(guī)則在后續(xù)盤點(diǎn)聽到資產(chǎn)編碼就能大致判斷資產(chǎn)類型和入庫時(shí)間。NetValue為什么不直接計(jì)算凈值字段雖然可以由原值減累計(jì)折舊得出但我還是在表里專門存了一個(gè)字段。原因是折舊計(jì)算涉及折舊月份、是否已提足等多種情況在查詢列表時(shí)直接讀取字段要比每次都做子查詢快得多。當(dāng)然新增資產(chǎn)和每月折舊計(jì)提時(shí)這個(gè)凈值字段都需要做更新這是個(gè)折中的甜點(diǎn)方案。Status字段用int資產(chǎn)狀態(tài)我用int類型存儲(chǔ)0-在庫、1-已領(lǐng)用、2-維修中、3-已報(bào)廢。有人喜歡用varchar直接存中文狀態(tài)但實(shí)際開發(fā)中用int更利于做權(quán)限控制和流程判斷界面上再通過枚舉或者字典表轉(zhuǎn)換顯示文本。2.2 領(lǐng)用歸還流程的表設(shè)計(jì)資產(chǎn)領(lǐng)用歸還這部分我采用了主從表設(shè)計(jì)。Asset_Apply表存單據(jù)主信息Asset_ApplyDetail表存明細(xì)。為什么要主從表因?yàn)橐淮晤I(lǐng)用申請(qǐng)可能包含多件資產(chǎn)比如一個(gè)新員工入職一次性領(lǐng)電腦、顯示器、鍵鼠套裝三樣?xùn)|西。如果每件資產(chǎn)單獨(dú)生成一張單據(jù)那員工簽字的場(chǎng)景就非常別扭。主表結(jié)構(gòu)大致如下CREATE TABLE Asset_Apply ( ApplyId INT IDENTITY(1,1) PRIMARY KEY, ApplyNo NVARCHAR(50) NOT NULL, ApplicantId INT NOT NULL, DepartmentId INT NOT NULL, ApplyType INT DEFAULT 0, -- 0-領(lǐng)用 1-借用 2-歸還 ApplyTime DATETIME DEFAULT GETDATE(), Status INT DEFAULT 0, -- 0-待審批 1-已通過 2-已駁回 ApproverId INT, ApproveTime DATETIME, Remark NVARCHAR(500) )明細(xì)表記錄具體資產(chǎn)編號(hào)和歸還狀態(tài)CREATE TABLE Asset_ApplyDetail ( DetailId INT IDENTITY(1,1) PRIMARY KEY, ApplyId INT NOT NULL, AssetId INT NOT NULL, IsReturned INT DEFAULT 0 -- 0-未歸還 1-已歸還 )這套結(jié)構(gòu)在實(shí)現(xiàn)未歸還資產(chǎn)列表某部門資產(chǎn)占用情況這類查詢時(shí)非常舒服。你只需要根據(jù)ApplyId關(guān)聯(lián)明細(xì)表再通過AssetId關(guān)聯(lián)資產(chǎn)信息表一條JOIN就出來結(jié)果。2.3 數(shù)據(jù)庫腳本的設(shè)計(jì)與初始化數(shù)據(jù)源碼包里附帶了一個(gè)完整的數(shù)據(jù)庫腳本文件包括建表語句、索引、視圖和初始數(shù)據(jù)。這里我特別想說一下初始數(shù)據(jù)的重要性。很多初學(xué)的朋友交付項(xiàng)目時(shí)只給表結(jié)構(gòu)不給數(shù)據(jù)結(jié)果用戶打開系統(tǒng)就是一片空白連登錄都進(jìn)不去。我在這套系統(tǒng)里預(yù)置了三個(gè)角色管理員、資產(chǎn)管理員、普通用戶五個(gè)用戶賬號(hào)admin、zhangsan、lisi、wangwu、zhaoliu最常見的資產(chǎn)分類臺(tái)式電腦、筆記本電腦、顯示器、打印機(jī)、投影儀、辦公桌椅、服務(wù)器、網(wǎng)絡(luò)設(shè)備二十條左右的示例資產(chǎn)數(shù)據(jù)這樣用戶登錄后立刻能看到臺(tái)賬效果數(shù)據(jù)庫腳本使用SQL Server Management Studio直接執(zhí)行即可腳本開頭判斷了庫是否存在不存在則創(chuàng)建數(shù)據(jù)庫然后建表、插入初始數(shù)據(jù)最后創(chuàng)建幾個(gè)常用視圖和存儲(chǔ)過程。這種腳本形式比直接附加mdf文件要穩(wěn)得多不同SQL Server版本之間遷移不折騰。3. 核心功能實(shí)現(xiàn)與實(shí)操代碼3.1 數(shù)據(jù)庫連接與通用數(shù)據(jù)訪問類DAL層我封裝了一個(gè)通用的SQLHelper類核心就是通過配置文件讀取連接字符串統(tǒng)一執(zhí)行增刪改查方法。這個(gè)類看起來簡(jiǎn)單但有幾個(gè)細(xì)節(jié)值得注意。配置文件App.config中的連接字符串connectionStrings add nameAssetManagerDB connectionStringData Source.\SQLEXPRESS;Initial CatalogAssetDB;User IDsa;Password123456;MultipleActiveResultSetsTrue providerNameSystem.Data.SqlClient/ /connectionStrings這里我踩過一個(gè)大坑。最初連接字符串里的MultipleActiveResultSets沒有設(shè)置導(dǎo)致程序里一個(gè)SqlConnection上同時(shí)執(zhí)行兩個(gè)DataReader時(shí)直接報(bào)錯(cuò)已有打開的與此命令相關(guān)聯(lián)的DataReader。SQLHelper里最核心的查詢方法我這樣寫的public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters) { using (SqlConnection conn new SqlConnection(connectionString)) { conn.Open(); using (SqlCommand cmd new SqlCommand(sql, conn)) { if (parameters ! null) { cmd.Parameters.AddRange(parameters); } SqlDataAdapter adapter new SqlDataAdapter(cmd); DataTable dt new DataTable(); adapter.Fill(dt); return dt; } } }注意這里的關(guān)鍵點(diǎn)using語句確保連接對(duì)象釋放SqlParameter參數(shù)化查詢防止SQL注入DataAdapter.Fill一次性將結(jié)果集加載到內(nèi)存。這套系統(tǒng)定位是幾千條數(shù)據(jù)的小型管理系統(tǒng)這個(gè)方法的性能完全夠用。但如果數(shù)據(jù)量上了十萬條需要考慮分頁和流式讀取這個(gè)后面會(huì)提。3.2 資產(chǎn)登記模塊的實(shí)現(xiàn)要點(diǎn)資產(chǎn)登記界面看起來就是個(gè)表單表格但真做起來有幾個(gè)考量點(diǎn)。首先是分類聯(lián)動(dòng)。我在窗體上放了一個(gè)ComboBox顯示資產(chǎn)分類用戶選擇大類后自動(dòng)篩選出對(duì)應(yīng)子類。這里我沒有在窗體加載時(shí)把所有分類一次性讀出來而是用了兩級(jí)聯(lián)動(dòng)查詢大類變化時(shí)重新查詢子類數(shù)據(jù)。這樣做的好處是分類特別多的時(shí)候界面響應(yīng)不會(huì)卡頓。private void LoadCategories(int parentId) { string sql SELECT CategoryId, CategoryName FROM Asset_Category WHERE ParentId parentId; DataTable dt SQLHelper.ExecuteDataTable(sql, new SqlParameter(parentId, parentId)); cboCategory.DataSource dt; cboCategory.DisplayMember CategoryName; cboCategory.ValueMember CategoryId; }然后是資產(chǎn)編號(hào)自動(dòng)生成。在點(diǎn)擊新增按鈕時(shí)我調(diào)用一個(gè)存儲(chǔ)過程來生成編號(hào)保證并發(fā)情況下也不會(huì)出現(xiàn)重復(fù)編號(hào)CREATE PROCEDURE Proc_GenerateAssetCode CategoryPrefix NVARCHAR(10), AssetCode NVARCHAR(50) OUTPUT AS BEGIN DECLARE dateStr NVARCHAR(20) CONVERT(NVARCHAR(8), GETDATE(), 112) DECLARE maxSeq INT SELECT maxSeq ISNULL(MAX(CAST(RIGHT(AssetCode, 4) AS INT)), 0) 1 FROM Assets WITH (UPDLOCK) WHERE AssetCode LIKE CategoryPrefix - dateStr -% SET AssetCode CategoryPrefix - dateStr - RIGHT(0000 CAST(maxSeq AS NVARCHAR(4)), 4) END這個(gè)存儲(chǔ)過程用了UPDLOCK鎖定遇到兩個(gè)用戶同一秒新增同類型資產(chǎn)時(shí)也能保證編號(hào)不沖突。3.3 領(lǐng)用歸還流程的狀態(tài)流轉(zhuǎn)控制資產(chǎn)領(lǐng)用和歸還看起來簡(jiǎn)單難的是狀態(tài)流轉(zhuǎn)的嚴(yán)謹(jǐn)性。比如一件資產(chǎn)已經(jīng)領(lǐng)用出去了就不能再次被領(lǐng)用已經(jīng)報(bào)廢的資產(chǎn)不能出現(xiàn)在領(lǐng)用下拉列表里。我實(shí)現(xiàn)領(lǐng)用單時(shí)采用了先選單據(jù)信息再選資產(chǎn)最后提交的三步式操作。提交時(shí)在事務(wù)中執(zhí)行兩個(gè)操作插入領(lǐng)用主表和明細(xì)表同時(shí)更新資產(chǎn)狀態(tài)為已領(lǐng)用。事務(wù)保證兩步操作要么都成功要么都失敗using (SqlTransaction trans conn.BeginTransaction()) { try { // 1. 插入主表 SqlCommand cmd1 new SqlCommand(INSERT INTO Asset_Apply(...) VALUES(...), conn, trans); // 執(zhí)行后拿到新的ApplyId // 2. 循環(huán)插入明細(xì) foreach (DataRow row in selectedAssets) { SqlCommand cmd2 new SqlCommand(INSERT INTO Asset_ApplyDetail(...) VALUES(...), conn, trans); // ... // 3. 更新資產(chǎn)狀態(tài) SqlCommand cmd3 new SqlCommand(UPDATE Assets SET Status 1 WHERE AssetId assetId, conn, trans); // ... } trans.Commit(); } catch (Exception ex) { trans.Rollback(); throw ex; } }有同事跟我說過你這邏輯還不夠嚴(yán)謹(jǐn)因?yàn)槭聞?wù)提交之后如果程序崩潰狀態(tài)還是可能不一致。嚴(yán)格來說確實(shí)應(yīng)該引入狀態(tài)機(jī)加冪等控制但對(duì)這套內(nèi)部管理系統(tǒng)來說數(shù)據(jù)庫事務(wù)已經(jīng)能擋住99%的問題。另外領(lǐng)用的時(shí)候我在UI層還加了一個(gè)限制條件一個(gè)員工如果在未歸還資產(chǎn)里已經(jīng)有同型號(hào)的電腦再領(lǐng)電腦時(shí)彈窗提醒。這個(gè)邏輯在DAL層查一次未歸還列表就能實(shí)現(xiàn)但從產(chǎn)品角度幫用戶避免了很多重復(fù)領(lǐng)用的情況。3.4 資產(chǎn)盤點(diǎn)功能的實(shí)現(xiàn)思路盤點(diǎn)功能是資產(chǎn)管理系統(tǒng)里最有實(shí)際價(jià)值的部分但也最容易被忽略。很多初版系統(tǒng)壓根不設(shè)計(jì)盤點(diǎn)模塊但財(cái)務(wù)年底做固定資產(chǎn)盤點(diǎn)時(shí)幾十上百件資產(chǎn)一件件核對(duì)Excel表格根本不夠用。我的盤點(diǎn)功能設(shè)計(jì)是管理層發(fā)起盤點(diǎn)任務(wù)系統(tǒng)根據(jù)當(dāng)前資產(chǎn)臺(tái)賬生成盤點(diǎn)清單盤點(diǎn)人員在線下核對(duì)實(shí)物后在系統(tǒng)里標(biāo)記盤盈盤虧正常三種結(jié)果最后提交生成盤點(diǎn)差異報(bào)表。盤點(diǎn)差異的核心SQLSELECT a.AssetCode, a.AssetName, a.DepartmentId, CASE WHEN sd.DetailId IS NULL THEN 盤虧 WHEN sd.IsChecked 0 THEN 盤盈 ELSE 正常 END AS CheckResult FROM Assets a LEFT JOIN Asset_StocktakeDetail sd ON a.AssetId sd.AssetId WHERE sd.StocktakeId stocktakeId OR sd.StocktakeId IS NULL這個(gè)左連接的思路是以資產(chǎn)臺(tái)賬為基準(zhǔn)看盤點(diǎn)明細(xì)表里有沒有對(duì)應(yīng)記錄沒有記錄本身就意味著賬上有實(shí)物沒找到標(biāo)記為盤虧。3.5 權(quán)限控制與登錄模塊系統(tǒng)預(yù)置了管理員、資產(chǎn)管理員、普通用戶三個(gè)角色對(duì)應(yīng)的權(quán)限差異是功能管理員資產(chǎn)管理員普通用戶資產(chǎn)登記/編輯允許允許不允許領(lǐng)用/歸還申請(qǐng)?jiān)试S允許允許審批操作允許不允許不允許盤點(diǎn)管理允許允許不允許系統(tǒng)用戶管理允許不允許不允許登錄驗(yàn)證我用了MD5加鹽存儲(chǔ)用戶密碼而不是明文。這個(gè)基本安全常識(shí)很多人會(huì)忽略尤其是做內(nèi)部系統(tǒng)的時(shí)候覺得無所謂。實(shí)際上密碼明文存儲(chǔ)在數(shù)據(jù)庫里一旦數(shù)據(jù)庫文件泄露所有用戶的密碼就全暴露了。public static string MD5Encrypt(string input, string salt) { string combined input salt; using (MD5 md5 MD5.Create()) { byte[] bytes Encoding.UTF8.GetBytes(combined); 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(); } }4. 常見問題與排查技巧實(shí)錄4.1 無法加載一個(gè)或多個(gè)請(qǐng)求的類型的經(jīng)典報(bào)錯(cuò)這個(gè)報(bào)錯(cuò)常出現(xiàn)在WinForms項(xiàng)目引用第三方DLL時(shí)。我系統(tǒng)里用了DevExpress控件在用戶機(jī)器上首次運(yùn)行時(shí)經(jīng)常蹦出這個(gè)錯(cuò)誤提示信息是有關(guān)更多信息請(qǐng)檢索LoaderExceptions屬性。排查思路先看是不是有DLL文件缺失。DevExpress的DLL數(shù)量很多發(fā)布時(shí)如果只拷貝了主exe沒拷貝依賴的DLL就會(huì)觸發(fā)。最簡(jiǎn)單的方法是用項(xiàng)目的bin\Release目錄整體拷貝不要手動(dòng)挑文件。另外一個(gè)容易被忽略的原因是版本不一致——本機(jī)開發(fā)用的DevExpress版本和部署機(jī)器上安裝的DevExpress版本不同也會(huì)導(dǎo)致加載失敗。如果必須在沒有安裝DevExpress的機(jī)器上跑兩種方案一是把用到的所有DevExpress DLL都拷到exe同目錄下二是在項(xiàng)目里把各DLL的本地復(fù)制屬性設(shè)為True讓生成時(shí)自動(dòng)輸出到目標(biāo)目錄。4.2 連接數(shù)據(jù)庫報(bào)用戶sa登錄失敗開發(fā)時(shí)我本地用的SQL Server認(rèn)證代碼里寫死sa賬號(hào)密碼但交付給別人使用時(shí)經(jīng)常連不上庫。常見原因有兩個(gè)。第一個(gè)是SQL Server的登錄模式是Windows身份驗(yàn)證不接受sa登錄。需要修改服務(wù)器屬性安全性里選擇SQL Server和Windows身份驗(yàn)證模式。第二個(gè)是SQL Server服務(wù)沒有啟用TCP/IP協(xié)議。這可以在SQL Server配置管理器里設(shè)置啟用Named Pipes和TCP/IP并重啟SQL Server服務(wù)。還有一種情況是防火墻攔了1433端口。局域網(wǎng)內(nèi)其他電腦連數(shù)據(jù)庫時(shí)Windows防火墻默認(rèn)會(huì)阻止1433端口需要在防火墻入站規(guī)則里放行。這些步驟我在項(xiàng)目文檔里都寫了但實(shí)際中還是經(jīng)常遇到用戶直接跳過不看。4.3 數(shù)據(jù)庫文件附加失敗或腳本執(zhí)行報(bào)錯(cuò)我提供的是SQL腳本而不是mdf文件原因是mdf附加到不同版本的SQL Server時(shí)經(jīng)常遭遇版本不兼容問題。但腳本執(zhí)行時(shí)也可能遇到一個(gè)小坑——腳本里包含了CREATE DATABASE語句和USE語句有些用戶直接雙擊腳本文件用默認(rèn)工具打開執(zhí)行到指定數(shù)據(jù)庫上下文時(shí)找不到對(duì)象。正確的打開方式是在SSMS里新建查詢把整個(gè)腳本粘貼進(jìn)去先選中第一段CREATE DATABASE執(zhí)行再選中后續(xù)建表語句執(zhí)行。更簡(jiǎn)單的方式是直接在SQLCMD模式下執(zhí)行整個(gè)腳本。我在源碼包里的README文檔里單列了一節(jié)專門說明數(shù)據(jù)庫初始化步驟照著做基本不會(huì)出錯(cuò)。如果你自己開發(fā)過程中需要更輕量的數(shù)據(jù)庫可以換SQLite版本代碼System.Data.SQLite或用Microsoft.Data.Sqlite連接字符串改成Data SourceAssetDB.db就能跑源碼里替換DAL層的數(shù)據(jù)庫訪問實(shí)現(xiàn)即可。但注意SQLite對(duì)并發(fā)寫入支持不如SQL Server多用戶同時(shí)操作時(shí)可能遇到數(shù)據(jù)庫鎖死的報(bào)錯(cuò)。4.4 DataGridView綁定數(shù)據(jù)后行號(hào)不更新這個(gè)屬于WinForms的經(jīng)典問題不算報(bào)錯(cuò)但很影響體驗(yàn)。DataGridView在數(shù)據(jù)源變動(dòng)后如果你在RowPostPaint事件里繪制行號(hào)數(shù)據(jù)刷新后行號(hào)不會(huì)自動(dòng)變化。解決辦法是每次數(shù)據(jù)源變化后調(diào)用一次Refresh()或者在RowPostPaint事件里強(qiáng)制讓DataGridView重繪private void dgvAssets_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e) { var grid sender as DataGridView; string rowIndex (e.RowIndex 1).ToString(); var centerFormat new StringFormat { Alignment StringAlignment.Center, LineAlignment StringAlignment.Center }; e.Graphics.DrawString(rowIndex, grid.Font, SystemBrushes.ControlDarkDark, new Rectangle(e.RowBounds.Location.X, e.RowBounds.Location.Y, grid.RowHeadersWidth, e.RowBounds.Height), centerFormat); }4.5 局域網(wǎng)多人同時(shí)操作時(shí)數(shù)據(jù)庫連接池耗盡這個(gè)問題是用戶量上來之后才暴露的。最開始十個(gè)人以內(nèi)都正常后來行政、財(cái)務(wù)、IT加起來三四十人在線系統(tǒng)突然變得卡頓后臺(tái)日志顯示數(shù)據(jù)庫連接超時(shí)。排查發(fā)現(xiàn)每執(zhí)行一條SQL都打開一個(gè)新連接雖然用了using釋放但在高并發(fā)場(chǎng)景下頻繁創(chuàng)建和銷毀連接的開銷很大。解決思路是使用連接池。ADO.NET自帶的連接池默認(rèn)是開啟的關(guān)鍵是要保證連接字符串一致這樣連接才能復(fù)用。如果連接字符串里每次動(dòng)態(tài)傳數(shù)據(jù)庫密碼連接池就失效了。另一個(gè)優(yōu)化是把查詢分頁。資產(chǎn)臺(tái)賬表我加了一個(gè)分頁查詢方法用ROW_NUMBER()或者OFFSET-FETCH每次只取當(dāng)前頁的數(shù)據(jù)。數(shù)據(jù)量幾萬條時(shí)這個(gè)差異非常明顯不翻頁的grid加載速度能差出好幾秒。5. 擴(kuò)展方向與實(shí)際經(jīng)驗(yàn)沉淀5.1 從課程設(shè)計(jì)到真實(shí)系統(tǒng)差距在哪里項(xiàng)目做完之后我一直在想這套系統(tǒng)如果直接拿到小公司里去跑還缺什么總結(jié)下來有三點(diǎn)。第一是資產(chǎn)二維碼標(biāo)簽。真實(shí)場(chǎng)景里資產(chǎn)盤點(diǎn)靠掃碼槍或手機(jī)掃碼效率遠(yuǎn)高于肉眼核對(duì)資產(chǎn)編號(hào)。這套系統(tǒng)的數(shù)據(jù)庫已經(jīng)預(yù)留了AssetCode字段后續(xù)可以在打印報(bào)表時(shí)用Zebra或TSC標(biāo)簽打印機(jī)輸出二維碼配合手持PDA或者手機(jī)小程序做掃碼盤點(diǎn)。第二是審批流的靈活性?,F(xiàn)在領(lǐng)用審批是固定一級(jí)審批但真實(shí)公司可能根據(jù)資產(chǎn)金額分級(jí)審批比如超過5000元的資產(chǎn)需要部門經(jīng)理財(cái)務(wù)總監(jiān)雙審批。這需要額外設(shè)計(jì)一張審批規(guī)則配置表把審批節(jié)點(diǎn)、審批人、審批條件都配置化。第三是資產(chǎn)的圖片和附件管理。很多資產(chǎn)需要保存購買合同、發(fā)票掃描件、保修卡照片現(xiàn)在的方案只是在Assets表里加一個(gè)附件路徑字段把文件存到服務(wù)器某個(gè)目錄下。更好的方案是用文件服務(wù)器或者對(duì)象存儲(chǔ)統(tǒng)一管理數(shù)據(jù)庫里只存文件ID。5.2 源碼交付時(shí)文檔和注釋的重要性最后聊聊源碼交付這件事。我見過太多課程設(shè)計(jì)或者畢業(yè)設(shè)計(jì)代碼功能都實(shí)現(xiàn)了但文檔一塌糊涂。接手源碼的人光是要搞明白數(shù)據(jù)庫表之間怎么關(guān)聯(lián)、哪些存儲(chǔ)過程被哪個(gè)窗體調(diào)用就得花幾個(gè)小時(shí)。這套系統(tǒng)的源碼里我做了幾件事所有公共方法都寫了XML注釋數(shù)據(jù)庫腳本開頭有表關(guān)系說明項(xiàng)目根目錄放了README文件說明部署步驟和賬號(hào)。剛開始寫代碼的時(shí)候覺得這些花時(shí)間但到了后期維護(hù)尤其是在兩臺(tái)開發(fā)機(jī)上切換修改注釋的回報(bào)率遠(yuǎn)超你的付出。評(píng)論區(qū)里如果需要我可以把核心模塊的單表結(jié)構(gòu)DDL語句和幾個(gè)典型存儲(chǔ)過程的實(shí)現(xiàn)細(xì)節(jié)貼出來。做資產(chǎn)管理系統(tǒng)本身不復(fù)雜但想做得讓用戶覺得好用、讓維護(hù)的人覺得省心很多細(xì)節(jié)是需要耐心打磨的。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
中文字幕乱轮| 99精品在线观看视频| 热婷婷av| 99热国产免费| 五月精品| 99免费视频网| 狠狠干2007| 99热官网精品在线| 丁香五月av| 九九在线这里只有精品视频 | 99∨VTV| 五月婷婷色| 欧美色综合天天久久综合精品 | 人妻无码视频网| 激情都市丁香婷婷| 丁香六月高清视频| 综合婷婷六月| 日本老女人黄页在线播放| 天久综合91综合首页| 69久久99精品久久久久婷婷| av操一操| 天天日日爽| 操碰97| 新激情婷婷| 久草A片| 婷婷丁香五另类网站| 成人网页在线观看| 色色色色色色色色色色色色色五月天| AV色色天堂中文| 99热这里只有精品免费| 综合婷婷| 大香蕉综合网| 国产日比| 五月香婷婷| 久久国产高潮白浆免费观看99| 999久久久国产精品| 六月丁香深深爱| 五月婷婷熟女| 日韩亚洲视频| 好好干Av| 思思热闹这里只有精品| 婷婷五月大| 久婷婷五月综合欧美| 我淫我色婷婷五月天激情四射| 97人妻碰碰中文无码久热丝袜| 可以直接看的AV| 99热国内| 六月婷婷色宗合| 五月天婷婷黄色视频| 亚洲人妻电影| 久久9精品视频| 久久综合九色综合88i| 天堂草在线观| 拳交大逼| 国产亚洲精品久久一区二区三区| 99精品在线观看视频| 婷婷六月色情| 99热这里只有精彩| 婷婷五月激情的图片| 五月亚洲| 国产.亚洲.欧洲视频在线| 能直接看的av网站| 五月婷啪| 日本一级一级一级一级| 五月丁香色停停啪啪啪| 亚洲第二AV| 色天使久久综合| 97在线观视频免费观看| 日韩啪啪自拍| 99热免费精品| 婷婷五月天激情偷拍| 色婷婷五月天中文字幕| 噜色精品| 狠狠插狠狠操| 婷婷色五月天在线观看| 超碰在线网站9| 婷婷五月丁香激情| 久久hd| 9视频1在线| 99热在线精品播放| 天天舔天天摸天天射| 91dy.av| 婷婷四色成人综合色视| 色婷婷www| 五月色网| 狠狠爱五月婷婷综合六月| 综合久久十| 婷婷久久天堂网| 五月丁香偷拍| 欧美激情丁香五月天久久婷婷一区| 九九热这里都是精品6| 五月色导航| 99热99热不卡| 26uuu日韩| 99热91| 欧美槡BBBB槡BBB少妇| 久久九久久| 亚洲性爱AV| 久久婷婷六月综合| 色婷婷色丁香色欲av| 啪啪东京热| 99久久婷| 欧美亚洲操逼| 亚洲综合五月天婷婷丁香| 青草视频在线播放| 殴美日比视频| 婷婷五月天香蕉| 99视频自拍| 91操人人操| 久久人五月| 久久99这里只有精品| 国产成人va在线| 五月丁香综合| αV电影| 另类天堂| 激情久久五月天| 免费看欧美成人A片无码| 综合婷| 激情丁香婷婷六月天| 婷婷开心激情综合五月天| 天天射影院| 99久久国产成人精品| 激情六月综合| 26uuu欧美| 五月婷婷无码| 日日爱678| 五月天天爽| 亚洲免费婷婷| 99热在线观看| 婷婷伊人网| 亚洲AV日韩在线观看| 久久五月网| 久久伊人日日夜夜| 色无码| 色停停影院五月天| WWW.开心五月天.COM| 激情综合无码| 日韩成人无码人妻| 丁香久久五月婷综合| 大香蕉视频99| 99r这里只有精品在线观看| 日韩AV大全| bukadeavzaixian| 五月丁香综合网色欲| 人人摸人人搞| 日韩色色一区| 天天干天天操天天射| 九九激情| 婷婷五月天视频亚洲| 99国产精品白浆在线观看免费| 9l视频自拍9l视频自拍九色学生| 亚洲中文乱字字幕在线永久| 四射综合网| 日韩久久这里只有精品| 久久久亚洲成人无码A片| www.夜夜操.con| Av九九| 九九热91| WWW.99视频| Caoub青青超碰 | 另类亚洲电影| 天天天天干| 丁香色婷婷色手机免费在线| 米奇影视资源婷婷狠狠色激情欧美五月丁香 | 五月丁香色| 色色综合激情| 色五月综合激情| 六月婷婷久久| 丁香色五月婷婷17C| 91热久久| 99热热九九| 欧美槡BBBB槡BBB少妇| 啪啪一区| 99ER热精品视频| 五月婷婷色综图片| 五月婷婷之综合激情在线| 久久开心五月婷婷| 欧美伊人9| 国产va视频| Aα在线免费观看| 婷婷开心久久| 久久激情五月| 婷婷丁香激情五月天色色色| 五月亭亭网成人在线视频| 丁香五月www| 夜夜爱网站| 操逼巨乳91| 1024操逼视频| 五月婷婷色播视频| 婷婷黄色网| 五月婷婷激情视频| 久久久18| 久9热插入| 五月婷婷激情中文字幕| 激情播丁香| 亚洲视频综合网| 五月六月婷婷| 婷婷五月综合欧美在线播放| 香蕉伊人综合| 亚洲色久| w婷婷五月婷婷w| 俺来也综合网精品一区 | 五月天激情视频五月天| 91色综合网| 狠狠草在线观看| 久久久久综合激动五月天| 亚洲V国产V欧美V久久久久久| 日韩在线五月天婷婷| 综合性爱网| 成人av免费观看| 97色伦另类图片小说视频 | 精品久久婷婷| 婷色五月天| 五月丁香婷婷激情澎湃四射| www.五月婷婷.com| #NAME?| 99热精品观看| 五月婷婷丁香色吧网| 午夜成人综合| 内射 无码 伊人| 婷婷六月色开| 婷婷伊人激情婷婷| 天天肏视频| AV中文网| 国产熟女日日骚五月丁香爱| 国产在线黄色| 丁香五月成人自拍| 亚洲偷| 婷婷六月激情| 五月婷婷丁香网| 五月天久久久| 久九九热| 九一娱乐在线观看视频| 国产又爽又猛又粗的视频A片| 噜噜视频| 五月丁香激情婷婷综合| 婷婷丁香一月| 五月在线婷色| 五月婷俺去也| 狠狠香蕉| www.五月婷婷.com| 91久久五月天| 婷婷五月六月丁香| 欧美精品999| 99热6色| 另类的婷婷| 六月激情婷婷综合| av操一操| 婷婷综合一二三| 丁香五月婷婷天激情| 丁香九月激情| 婷婷色播婷婷| AV在线免费播放| www,婷婷| 五月丁香婷婷六月| 俺去也五月天| 十一月婷婷激情四射| 婷婷激情5月| 九九热a| 色99免费视频中文| 亚洲综合在线视频| 九九热精品在线| 天天cha成人综合网| 五月综合视频在线| 狠狠夜夜五月丁香| 亚洲亚洲激情| 婷婷丁香高潮了| 97色婷婷成人综合在线观看| AV在线大香蕉| 99精品热| 色色色视频| 九九热九九| 手机在线日韩视频中文字幕| 婷婷月综合| 国产1区2区| 热久久婷婷| 2050人人操免费工开爱| 激情五月天色色色| 六月丁香啪啪啪| 色婷网| 综合久久影院| AV性爱网| 色和综合网| 国产成人综合亚洲| 丁香五月激情综合婷综| 综合久久高清| 再綫Av免费視品| tingtingjiqingwuyue| 最新日本A片| 天天爱天天日| www.激情五月天| 婷婷性爱五月天| 停停五月丁香| 激情综合亚洲| 色伊人91在线视频| 久久九⑨| 99精品在线播放| 在线成人va| 天天色中文字幕女优AV| 五月天丁香久久| 99热免费精品| 婷婷另类开心| 五月天开心婷婷激情网站 | 99精品久久| 五月丁香六月在线欧美| 色婷婷激情视频| 九九99视频| 五月天 婷 欧美亚洲| 婷婷99狠狠| 国产精品一区在线观看你懂的| 日韩av手机在线观看| 色天使久久综合| 久久丁香社| 99精品自拍视频| 天天色伊人| 大香蕉久久久| 五月天婷婷高清无码| 日日天天干| 丁香六月婷婷开心| 色播色丁香五月| 91超碰九色| xx综合网| 丁香六月啪| 色网五月婷婷| 开心婷婷中文字慕| 激情五月婷黄版| 色婷婷综合网| 丁香五月欧美色综合| 日日操夜夜操狠狠操| 久久五月综合| 99久久精品免费精品国产_国产精品久久久久久_国产在线|日韩_久久国产精品电影 | 月婷婷亚洲| 婷婷丁香五月高清| 色噜噜狠狠色综合日日| 亚洲午夜一区二区| 亚洲 五月 婷婷 成人| 婷婷伊人综合中文字幕| 久久久九九九 99| 天搞天天天天天| 五月丁香六月婷婷亚洲视频| 国产超碰在线| 天天噜日日噜综合无码| 无人精品在线视频| 9视频在线成人网站| 色五月天堂| 丁香六月天婷婷开心综合| 大香蕉伊人99| 噜噜狠狠色综合久| 91色涩| 99热这里只有精品69| 99精品在线观看视频| 中文字幕无码人妻少妇免费视频| 婷婷丁香花五月天| 久久激情五月| www.色情五月天.com| jiujiu无码五区| 五月丁香啪啪网| 九九热99精品| 亚洲视色| 五月丁香激情啪啪网| wwwC0maV五月花| 裸睡玩奶头(高H)| 九九自拍网| 深爱综合网| 婷婷欠久少妇| 午夜激情五月| www.9色色色| 国产黄色av| 色婷綜合网| 久久九九99| 五月天丁香六月综合| 91色五月| 在线婷婷| 天天天天天天操| 色婷婷导航| 色综合区| 噜综合| 色99在线视频| 亚洲va日| 色色色色丁香| 色五月天综合网| 影音先锋综合网| av操一操| 色碰干| 九九热视频99| 国产欧美日韩性爱| 国产欧美熟妇另类久久久 | 草草夜夜操| 丁香五月成人论坛| 99九九这里有免费视频| 激情视频91| 天天爱综合网| 久热大香蕉| 婷婷五月天伊人| 琪琪理论片| 欧美交换配乱吟粗大25P| 天堂爱爱| 亚洲精品444久久久久久| 亚洲六月色| 99偷拍视频在线日本| 色婷六月| 美女va| 人人操av| 少妇达人正片在线播放_ikun_福利吧| 久久人人超| 99色视频| 天天日夜夜帕| 亚洲精品无码久久| 伊人久久丁香狠狠婷婷综合香蕉 | 久久久精品色| 九九草热在线观看| 99视频在线| 精品视频这里只有精品| 久草婷| 五月丁香激情综合啪啪| 美女五月激情| 涩 五月 婷婷 狠狠| 婷婷综合色| 五月天免费色| 九九热99熟女| 无码少妇高潮喷水A片免费| 99r这里| 狠狠色丁香久久婷婷综合五月| 国产免费AV网站| 九月婷婷丁香| 色综合久久888| 综合色五月亭亭| 九九这里是免费的视频5| 亚洲综合视频天天精品| 99色日本| 狠狠爱成人综合网| 五月婷婷综合在线| 99热精品在线观看| 色五月人妻| 日韩人妻无码一区二区| 色综合色色| 婷婷色五月天在线观看| 激情黄色五月天| 激情五月,激情综合网| 免费观看18视频网站| 99超级碰碰| 久热最新视频| 综合激情五月综合激情五月激情1| 五月丁香视频色色| 人人操婷婷| 色婷婷丁香五月| 天天操夜夜操| 丁香五月激情在线| 天天干天天 亚洲| 啪啪激情综合| 激情人妻综合| 九九色播五月丁香| 第四色色六月色综合| 国产精品久久久久久久久久| 久久激情五月| 色一情一乱一乱一区91| 少妇人妻人伦A片| 久久人妻高清中文| 99re这里有精品手机在线| 99色婷婷视频| 99re66热这里只有精品| 激情五月综合| 99re6热在线精品视频播放速度| 在线超碰91| 日本网站久久| 国产精品 的国产| 激情五月九九九| 少妇出轨做爰高潮A片| 一本色道久久综合狠狠躁小说| 色欲影香| 欧美久久婷婷| 狠狠综合网| 99热这里只有精品9| www、色色色| 久久开心五月婷婷| 五月婷婷激情久久| 天天插综合网| 五月婷婷偷拍| 99久久久免费| 另类图片五月天| 天天爱天天爽| 成人中文网| 91男同视频| 99热人人艹| 狠狠色中色| 秋霞av不能| 伦99热| 五月婷婷黄色| 五月婷婷co.m| 天天综合精品| 六月丁香五月婷婷| 五月婷三级片| 色婷婷激情五月天| 婷婷久久久| 日日夜夜狠狠婷婷色| 色婷婷国产精品综合在线观看| 人妻videos人妻高清| 这里只有国产精品在线| 五月色天情| 日本在线va| 日本三级中文字幕| 大香蕉综合| 国精产品一区一区三区免费视频| 婷婷五月色综合香五月| 99在线资源| 人妻性爱av网站| 五月丁香网中文字幕| 久久综合天天综合| 国产avapp 网| 国产日产亚系列精品版优势| 丁香六月婷婷开心婷婷网| 一区视频网站| 俺去也在线官网| 99热在线播放| 久久99热这里只频精品6学生| 99久久综合狠狠综合久久| 亚洲天堂九九九| 日韩成人AV在线| se99在线| 丁香激情网| 不卡在线视频| 色婷婷久久综合| 亚洲99在线视频| 伊人久久婷| 97五月天| 久久综合中文字幕| 人人看人人草人人摸| 久久婷婷五月综合色丁香| 天天天天操| 六月色 亚洲| 丁香色五月直播| 99免费视频网| 99在线精品免费视频| 婷婷自拍| 丁香婷婷色五月天| 91九九| 欧美VA视频| 五月丁香欧美| 超碰99在线观看| 熟美女麻豆| 国熟女视频| 亚洲AV人人操| 色五月婷婷伊人| 亚洲人人干| 日韩成人免费电影| 五月丁香综合成人社区| 亚洲另类噜噜| 羞羞嫩草视频| 精品一区二区三区木瓜| 嫩草AV久久伊人妇女超级A| 久久丁香五月| 丁香六月激情综合| 欧美亚洲成人在线| 99国产这里只有精品| 亚州美女| 婷婷伊人无码| 婷婷五月激情网| 久久大香蕉同僚| 亚洲成人婷婷| 青青草五月天| 五月丁香啪啪网| 97久久超视频| 九九视频这里只有精品| 99riAV成人在线视频| 激情五月综亚网| 丁香六月激情| 大狠狠在线| 国产精品久久欧美久久一区| 婷婷四月 成人 狠狠干| 99热综合| 五月丁香久久网| 色情婷婷| 五月丁香六月婷婷啪啪综合| 99啪啪| 亚洲啪啪啪啪| 久久综合婷婷| 综合色五月亭亭| 五月丁香色婷婷婷基地| 99视频内射三四| www.av视频xx999.com| 综合色99| 操丝袜视频影院导航| 新激情五月天| 26uuu亚洲欧美日本| 在线不卡的视频| 99精品小视频| www.射伊蕉婷婷| 啪啪91| 亚洲精品网站色视频| 天天干天天爽| 色情激情五月| 五月情涩综合婷婷| 97人人操人人爽| 九九热视频精品2| 色婷五月| 亚洲人妻一区二区| 久xxxx| 五月激情综合网| 精品色情一区二区三区四区| 淫视馆av三区| www.婷婷五月天| 丁香六月婷婷久久综合八月| 五月婷婷影视| 影视av久久久噜噜噜噜噜三级| 91一起艹| AV中文网| 高清不卡一区| 三级大香蕉网| 天天操无码| 少妇性按摩无码中文A片| 国产乱妇乱子伦| 五月丁香久久呀| 激情综合婷婷| 五月激情小说网| 九九99在线免费在线观看视频| 日日做A爰片久久毛片A片英语| 欧美激情凹凸丁香网| 久久久性爱网| 天天色天天操天天射| 五月丁香六月色| 久久这里只有国产| 欧美婷婷丁香五月| 国产成人精品亚洲线观看| 天天天天爽爽天干| 久久er这里只有精品| 婷婷热色| 婷婷97狠狠成人网站| 天天色视频| 久久99最新| 亚洲色综久久五月| 俺也去五月婷婷丁| www.色99| 五月天六月色| 三十路磁力链接| 午夜色婷婷| 91久女| 免费观看的av| 99热久草| 五月丁香色六月激情干大屄| sS丁香五月婷婷| 六月丁香婷婷色狠狠久久| 久久小说| 天天爽夜夜操| 男人天堂99| 婷婷丁香人妻天天久久| 色婷婷成人影片| 亚洲在线操| 噜噜五月天综合| 国产看真人毛片爱做A片| 久久精品婷婷| 99热综合色图| 激情欧美五月丁香| 欧美激情综合色丁香婷婷五月天| 丁香香五月激情免费视频| 国产精品电影网| 五月婷视频在线观看| 亚洲乱码日产精品BD| 日韩999| 亚洲综合另类| 可以看的av网站| 五月丁香AV在线| www.99热最新视频8| 色欲丁香| 亚洲九九夜夜| 亚洲成人网无码| 97在线视频人妻九色| 久久嘟嘟丁香| 色播五月天婷婷老师| 日韩精品VIP| 五月丁香另类网| 亞洲自怕| 亚洲无码AV片| 九九综合网色全集| 偷拍91九色| 免费看成人747474九号视频在线观看| 婷婷九月丁香天堂丁香天堂| 99热一本久道| 六月丁香婷婷色狠狠久久| 91久久免费| 99热九九在线| 996热re视频精品视频| 大香蕉天堂| 狠狠色狠狠| 久久99免费视屏| 亚洲艹网| 色久五月| 天天狠天天叉| 婷婷情色五月天| 欧美五月婷婷| 婷婷五月色天| 人人插操| 综合精品99| 思思99久久| 97婷婷色| 一本道综合网| 色播播五月| 五月天丁香综合| 五月天成人综合| 搡BBBB搡BBB搡18| 综合五月激情| 久久婷婷成人| 狠狠操天天操天天操| 色色免费网战视频| 六月99天天婷婷激情综合| 五月丁香人妻| 99热热热天天人人人超超碰| 涩九九九九| 婷婷丁香六月五月天| 99久久成人| 日本狠狠网| 久99| 99A片| 色噜噜狠狠色综合网| 五月在线婷色| 淑女丝袜bi操逼123| 一起草av| 操逼综合激情网| 日韩黄黄| 开心五月婷| 99久久婷| 伊人狼人干| 久久久激情视频| 日日夜夜青青草| 激情五月天网| 51精品国自产在线| 久久9精品视频| 五月天婷婷伊人| 天天综合色| 激情又色又爽又黄的A片| 久久9RE热视频精品98| 侠女刀之记忆电影在线看免费| 男人的天堂五月丁香| 狠狠草狠狠草| 九九视频在线观看视频在线播放69| 另类亚洲2| 色偷偷狠狠| 亚洲无码99| 九九视屏| 色婷五月| 99亚洲天堂| 久久婷婷综合国产| 婷婷5月九九| 色区久久| 色播五月丁香| 五月婷婷五月天| 久久婷婷七月丁香| 激情综合五月激情| 97人人超| 丁香五月婷婷99| 激情五月天免费视频| 99久久久久| 亚洲一级色电影| 五月天婷婷在线AN| 噢美99| 人妻乱码久久久| 丁香五月婷婷基地| 大香蕉伊人爱在线| 精品乱码久久久久| 九色视频入口91| 久久一二三视频| 亚洲经典三级| 激情的五月婷婷蜜桃| 色婷婷综合网站| 久婷婷五月天影院| 亚洲色热| 五月天另类图片区99| 婷婷六月久久综合导航| 亚洲春色奇米影视| 六月伊人婷婷| 久久er99热精品一区二区| 激情综合网丁香| 亚洲中文字幕av| 影音先锋色婷婷| 超碰激情网| 大香蕉网站,大香蕉综合| 久久精彩免费视频| 日本色色网站| 久久色五月天| 五月婷婷中文字幕| www久久久| 九九熱最新視頻| 色五月婷婷在线| 色婷婷六月性| 成功精品影院| 深爱激情网婷婷| 超碰在线观看三级片| 婷婷综合网伊人| 碰超亚洲| 婷婷天天婷婷天天澡| 99日本视频| 婷婷的色色五月天| 中文字幕av久久爽一区| 99热只有| 99久久思思| 久久婷婷艹| 丁香五月婷婷在线| 玖玖爱综合网| 久久久网站| 2020夜夜操天天爽| 9久9久9久女女女九九九一九| 99热费观看| 玖玖婷婷综合| 久久XX| 亚洲综合狠狠艹| 综合久久六月| 色色激情| 99色色最新视频| 色婷婷另类| www.色99| 日日操日日射| www,com,五月色色| 色播综合| 亚洲六月色| 色综合九九| 91久久久久久久久久18| 色婷婷五月综合| 久久大香蕉| 99欧美精品99日本精品| 夜夜躁婷婷AV| 五月六月丁香婷婷在线观看| 国产精品A片在线| 大香蕉五月天婷婷| 第一区久久网站| 日本九九视频| 亚洲字幕AV一区二区三区四区| 色五月天在线观看| 久热只有这里有精品| 九月性爱网| 婷婷丁香色五月| 中文国产五月天| www99精品| 欧美十二区| 婷婷五月天在线观看| 在线免费观看激情视频| 可以直接看的AV| 五月丁香六月婷婷无码| 亚州精品久久久久AV无码| 超碰在线99热| 香蕉久久国产AV一区二区| 亚洲va在线∨a天堂va欧美va| 开心五月婷婷激情| 日本在线观看aaa 99| 色色色色色色色色综合网| 2w在线视频| 婷婷午夜| 国产激情在线观看| 五月婷婷色欲| 任你艹| 青青草激情网| 六月五月久久丁香| 色五月婷婷色| 日韩综合久| 久久ri精品| 少妇综合网| 9有码中文| 99er精品视频| 99视频精品8| 六月丁香深深爱综合网| 玖玖精品婷婷| 91国产精品视频播放| 五月天激情国产综合婷婷婷| 丁香婷婷五月综合| 丁香五月无码| 天天操夜夜夜拍拍拍| 国产激情视频在线观看| 色婷婷情片| 亚洲9久久精品| 思思久久99热只有频精品66| 激情综合网五月天| 丁香五月激情啪| 色婷婷婷婷| 天天插天天| 伊人超碰| 婷婷五月天激情偷拍| 丁香婷婷六月激情文学| 91婷婷丁香五月| 在线99色| 日韩无码91| 激情五月天第四色| 91久久精品视频| 久久免费高| 婷婷丁香无码专区| 五月日韩中文字幕| 午夜成人片400| 日韩精品AV一区二区三区| 九九在线视频| 丁香六月婷婷久久综合| 久热99| 草草视频91| 超碰在线观看99| 99re视频在线播放| 美欧日韩国产成人在战| 婷婷成人AV| 丁香五月情| 91视频精品99| 久久性爱视频| 色婷婷狠狠| 色婷婷电影| 亚洲乱码日产精品BD| 成人免费120分钟啪啪| 大战熟女丰满人妻AV| 亚洲V国产V欧美V久久久久久| 99国产精品久久久久久久久久久| 欧美成人AAA片一区国产精品 | 99热久久这里只有精品| 国产精品人人做人人爽人人添| av大香蕉| www.色多多婷| 久热久re| 五月婷婷深深爱| 精品成人久久久久久久_一二三四视| 久操无码| 538在线| 婷婷五月开心中文字幕在线| av网站中文| 激情www| 991国产精选视频在线播放下载| 久久大香蕉同僚| 深爱五月激情| 少妇AB又爽又紧无码网站| 五月天开心色色网| 综合九九久久| 欧美久热| 欧美综合在线五月天色婷婷| 五月丁香六月婷婷欧美综合| 色五月色图| 久久婷婷六月综合| 97超级碰人人| 日韩在线9| 激情涩涩网| 66精品成人免费网站在线观看| 思思热视频在线观看| 激情AV| 97啪在线观看视频| 色人久夂| 婷婷开心青青草| 亚洲色热| 五月丁香六月婷| 五月天婷婷涩涩| 婷婷丁香社区网| 五月色网| 色香欲综合| 99热色综合| 99re最新地址视频| 日屌日日操日日色| 色综合激情| 久久五月天 91| 人妻狠狠操| 99九九精品| 色99色| 激情综合在线播放| 草操网| 婷婷五月天av| 激情文学综合婷婷五月天丁香花| 五月香蕉婷婷| 五月婷婷伊人久久| 五月丁香婷婷综合| 婷婷丁香五月天色色| 全亚洲最大的婷婷五月天网站COM| 久久这里只有精品1| 一区二区三区视频| 9色操| 秋霞午夜理论| 免费国产视频| 黄色激情网站在线观看| 美女天天久久| 婷婷成人AV| 1级欧美日韩| 五月婷婷在线短视频| 丁香五月婷婷香| 成人无码髙潮喷水A片| 91九色国产| 色色色色色色网| 97超碰,人人舔,人人操,人人摸| 97干97色| 九九99久久| av中文网| 丁香五月AV综合| 亚洲综合久| 久久99久久久| 久久久人妻门| 嫩BBB搡BBBB榛BBBB| 91黄址| 九九成人视频| www.久操| 婷婷伊人久久综合| 免费无码毛片一区二区A片 | 桃色五月天| 综合色色网| 色婷婷五月综合在线| 久草婷| 婷婷丁香五月天亚洲| 久久99综合| 最新热中文字幕| 色五月综合激情| 六月婷婷七月丁香| 日本色五月婷婷| 国产亚洲色婷婷久久99精品9j| 天天操夜夜爱| 99精品丁香五月| 欧美视频在线观看噜噜| 亚洲日本韩国| 五月婷婷成人网首页| 婷婷精品| 五月婷婷综合网在线播放| 五月天婷婷色| 一夜福利不卡| 欧美韩国日本| 久久久月丁香| 777精品久无码人妻蜜桃| 成人婷婷桔色| 99噜噜噜在线播放| 婷婷五月天六月综合| CHINESE熟女老女人HD视频| 99热6这里之有精品| 亚洲精品字幕在线观看| 欧美久久五月婷婷| 国产古装妇女野外A片| 秋霞电影理论| 操97在线观看| 丁香婷婷色五月| 亚洲人人艹| 天天综合 99久久婷婷| 14色综合婷婷| 婷婷激情六月| 综合网激情五月天| 久久综合五月天激情小说网站| 狠狠撸激情综合丁香五月天俺来啦| 婷婷福利影院| 色婷婷丁香五月| 中文字幕视频在线播放| 色色com| 五月色婷婷AV| 26uuu色五月| 激情网五月| 成人国产综合| 大学生高潮无套内谢视频| 5月丁香六月情| 激情五月天婷婷色色色色色色色色色色色| 国产亚洲色婷婷久久99精品91| 激情综合网址| 婷婷综合激情| 色日本网| 色色五月天网站| 激情综合五月天| 色J香五月天| 久久免费9| 免费无码毛片一区二区A片| 丁香五月亚洲天堂| 99狠狠| 99精品无码| 婷婷五月天激情五月天深爱五月天| 亚州操逼网| 六月婷婷激情| 五月天综合视频网| 丁香五月激情宗合网| 青柠影视免费高清电视剧| 永久精品| 天天搞夜夜六| 九九美女视频| 色综合伊人网| 婷婷五月另类网站| 婷婷五月色| 婷婷热色| 五月天婷婷久久| 婷婷涩涩五月天| 7月婷婷六月丁香| 中文字幕在线人妻| 婷婷五月天基地| 这里只有精品免费| 精热在线综合网| 激情av网| 99热| 色吧婷婷| 丁香五月天激情网| 日本色色网| 色吊丝av中文字幕| 精品亚洲国产成AV人片传媒| 五月婷婷婷丁香播| 久久五月天黄色五月天色网址| 久久9999| 狠狠插.com| 激情五月婷婷五月| 色婷婷www| 婷婷色五月天第7色| 精品99在线看| 亚州欧美黄色电影| 婷婷视频网| 91久久九久久九久久九久久九久久| 丁香综合伊人AV| 国产欧美日韩性爱| 国产精品国产| 天堂二区| 国产精品a无线| 色999亚洲人成色| 五月婷婷av| 26UUU精品一区二区c〇m| 亚洲国产婷婷色五月| 97日在线视频| 永久天堂日本| 免费三级黄色| 色婷婷成人| 99ri在线视频| 日韩黄色电影| 亚洲五月色| 亚洲婷婷丁香五月视频| 五月欧美色播| 碰碰91| 任你搞网站| 色五月婷婷伊人| 婷婷五月丁香成人网| 丰满少妇猛烈A片免费看观看| 色综合色色色| av九九| 99爱爱| 综合大香蕉| 六月丁香综合| 狠狠爱婷婷丁香| 亚洲丁香五月天视频| 丁香五月综合AV在线| 色婷婷色人人射| 无码婷婷五月天| 99热精这里只有精品| 婷婷区日本| 五月丁香狠狠爱婷婷综合| 99热这里只有精品98| 99热 这里只有精品 国产 日韩| 天天操屄网| 五月丁香婷婷潮喷中文字幕| 丁香五月激情性色郤| 日韩综合大黄| 五月开心婷婷| 久久九精品| 激情九九这里只有精品| 欧美久久婷婷| 五月激情六月婷婷| 色色网站| 婷婷在线播放| www久久久久久久97| av在线观看免费| 激情色播| www.色99| 大地9中文在线观看免费高清| 日本欧美成人片AAAA| 五月婷婷综合激情小说| 九九热视频精品999| 九九伦子片| 色综合香蕉| 九九久久五月天| 五月丁香爱婷婷深深| 99在线观看精彩视频| 欧美五月丁香在线观看| 青青草原99热| 五月天婷婷久久| 日韩性视频| 91婷婷| 亚韩精品视频1区| 久久aaaaa| 五月丁香婷婷综合久久| 99re熱| 欧洲亚洲激情五月天在线| 婷婷五月天第三页| 玖玖在线视| 亚洲欧洲另类| 婷婷热色| 九色91国产| 五月天婷婷自拍图片在线观看| 天天成人丁香美女AV| 天天爱综合网| 婷婷五月AV| 91一起操| 久久永久网址| 伊人天天色| 婷婷操婷婷干婷婷射| 丁香激情网| 亚洲乱码精品久久久久..| 亚洲av综合在线| 大香蕉婷婷五月| 婷婷六月爽| 噜噜狠狠色综无码久久合欧美| 六月丁香激情网| www,99视频| 超碰在线观看9| 色五月婷婷色| 久久久九九九 99| 婷婷五月在线免费| 狠狠色婷婷六月激情网| 色婷婷操逼| j五月香在线| 国产9色在线/日韩| 深爱激情网噜噜色| 91人人网| 99热10在线高清播放| 九九re精品视频在线观看| 插插插色综合网| 色五月五月婷婷| 日本人妻伦在线中文字幕| 大香蕉人在线65| 亚洲激情视频网| 国产精品成人AV在线| www.97视频| 91九色国产| 亚洲天码视频www蛋播视频| 五月丁香六月成人| 91怕怕网| 五月开心六月婷婷在线播放网站| 人人爱摸视频| 婷婷五月天免费99| 综合激情婷婷| 丁香六月婷婷综合缴| 性按摩玩人妻HD中文字幕| 欧洲不卡视频| 五月丁香六月婷婷网| 裸体做A爰片毛片A片免费| 狠狠爱激情网| 这里有精品2| 亚洲欧美在线观看| 99热最新网址| 99热国产免费| 五月天色软件| 色国产五月| 天天噜噜| 久操激情| 五月天亚洲综合网| 五月丁香六月激情| 九热在线这里有精品6| 激情五月综合网最新| 激情av网| 操逼棍操逼| 激情综合五月天| 九九色精品| 激情综合99| 碰碰碰91| 欧美色爱五月天| 碰碰碰碰碰99| 亚洲12p| 国产激情综合五月久久| 色五月亚洲| 美女xx不卡| 五月激情婷婷女| 大香蕉五月婷婷丁香| 久久这里只有精品07 | 99er这里只有精品| 成人电影在线免费试看| 狠狠九九婷婷韩| 激情五月丁香六月综合AVXXXX| 91操人人操| 久久这里只有精品无码| 亚洲精品V天堂中文字幕| 丁香五月六月久久综合| 婷婷六月激情| 色情综合| 99爱爱| 97久久久| 五月天婷婷激情小说电影| 久操婷婷| 亭亭玉月丁香| 精品婷婷| 日韩一区二区在线播放| 色色色网站| 狠狠香婷婷五月| 亚洲激情四射| 五月丁香激情综合网官网| 99在线精品免费视频| 我爱va亚洲va52| 亚洲综合色激情色五月|