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免费视频| 五月久久婷婷成人网| 91啪级电影| 婷婷丁香五另类网站| 婷婷深爱五月丁香网| 色色射| 色五月丁香婷婷综合| 色色欧美色色| 色九月婷婷| 黄网在线免费观看| 色哟呦av| 欧美在线操| 天天做天天爱天天爽夜夜揉| 色婷婷九月| 99热碰碰热| 人妻av在线| 99久久国产综合精品五月天喷水\| 六月婷婷最新网址| 激情六月下句是什么| 五月丁香婷婷人体| 成人国产综合| 九色亚洲| 思思久久网| 内射丰满人妻| 日韩啪啪网| 青青久在线视频免费观看| 亚洲色图在线视频| 丁香久久AV| 九九在线这里只有精品视频| 婷婷五月综合激情| 丁香熟女乱| 色婷网| 五月综合婷婷久久在线| 狠狠干狠狠色| 4438全国最大视频成人网站在线观看| 91狠狠综合久久| 六月丁香五月激情网| 久久婷婷五月天激情| 天天草天天爽| 日本乱论99| 久久网站观看免费欧洲国产| 丁香五月色五月| 亚洲激情四射| 九九99在线| 久久丁香五月综合六月激情红杏视频| 偷拍五月丁香| 香蕉AV777XXX色综合一区| 日韩在线观看亚洲| 丁香五月,激情五月,深爱五月| 日韩AAAAAAAAAAA片| 99热只有这里有精品| 亚洲一二三网| 婷婷丁香久久五月综合| 婷婷大香蕉| 婷婷五月性感| 妻久久久久| 96丁香六月婷婷蜜桃综合久久| 深爱五月婷婷| 欧美色图天堂网| 丁香5月婷婷| 大香蕉网站,大香蕉综合| 久久婷婷九月国产精品| 久久er九九| 日本色图综合| 9久久网| 99热国产这里只有| 色色五月婷| 久草x色在线观看99 | 色婷婷综合网站| 久草丁香婷婷五月天婷| 五月婷婷丁香狠狠撸久久| 另类图片五月天| 五月间天堂综合| 26UUU亚洲欧美| 丁香五月婷婷亚洲综合精品| 97人妻碰碰碰久久久久-最近国语高清| 亚洲五月天天| 亚洲色婷婷五月天| 亚洲精久久| 99综合| A片试看120分钟做受图片| 日本99视频| 婷婷五月天亚洲综合| 免費观看aV在线网址| 五月天婷五月天综合网在线观| 五月婷婷与六月丁香图片激情| 夜夜AVV| 99色色最新视频| 99亚洲视频| 五月婷婷色色网址| 人人摸人人搞| HD久久精品视频| 天天碰天天插天天操| 狠狠操狠狠操AV| 黄色一级影片| 九色无码| 9人人操人人看| 天天久| 色综合五月| 视频这里只有精品16| 天天艹夜夜艹| 色五月婷婷狠狠撸| 国产成人网| 大香蕉手机视频| 色五月偷偷| 婷婷综合av| 五月丁香基地| 色婷婷另类| 五月婷婷综合潮喷| 久久五月天 91| 婷婷丁香五月噜噜噜| 五月天久久久| 五月天婷婷爱丁香中文字幕| 日本色色色色色色色色一色二色| WWW激情五月天| 爱久久小说下载网| 久久九九蜜| 桃色五月婷婷| 毛片色五月| 精品AV无码超碰| 五月婷AV| www.99免费视频| 久久99精品久久只有精品| 超碰九热| 性天堂久久| 96丁香六月婷婷蜜桃综合久久| 一婬一伦一区二区三区| 五月丁香另类图片| 91操在线视频| 婷婷99狠狠| 亚洲性天天| 激情五月天色播| 色色无码日韩| AA片在线观看视频在线播放| 99免费视频网| 五月婷久草| 黄色激情五月天| 人人操人| 色五月天堂| AV在线资源| 九月色婷婷综合| 激情丁香五月天| 日韩综合久| 91视频一起草| 天天婷婷天天| 色综啪啪啪啪啪啪| 天天摸天天做天天爱天天爽| 婷婷精品在线| 午夜一区| 天花AV无码| 六月丁香激情| 丁香六月开心| 黄色中文字目| 亚洲五月天激情| 日韩人妻无码精品| 香蕉AV福利精品导航| 婷婷久久综合久| 狠狠色噜噜狠狠| 高清无码中文字幕aVDV| 岛国av电影网站| 婷婷丁香五月综合网上 | 五月天激情小说欧美激情| 影音先锋偷偷色男人站| 天天干天天爽| 天天干夜夜欢| 97干视频在线| 丁香五月综合| 亚洲最大在线| 色婷婷呢狠禁久禁| 激情五月天婷婷图| 操逼视频网址| 人妻AV在线| 一夜福利不卡| 综合色婷婷| 色综合激情| 狠狠88综合久久久久噜噜噜| 久热久re| 99这里只有精品| 99亚洲色| 99久久9| 国产精品久久久久久久久久久久 | 97人人操| seuuu婷婷| 婷婷激情六月视频| 日韩AAA| 久久全色| 中文字幕日产A片在线看| 91精品综合久久久久久五月丁香 | 五月丁香六月色婷婷| www.99久久久久99| 五月天激情小说| 六月丁AV| 婷婷在线五月天观看| 亚洲视频1区| 色婷婷视频| 99热精国产这里只有精品| 97干在线看| 丁香婷婷综合激情五月色| 四月丁香五月婷婷久久| 五月色婷婷综合丁香精品无遮挡| 婷婷激情四射网| 丁香婷婷综合激情五月色| 人人操五月天| 婷婷五月婷婷五月| 六月丁香婷婷拍拍| 久久久99日本大片| 日韩乱轮AV| 色欲天天综合| 这里只有精品免费视频| 色色亚卅| 丁香久久| 激情av在线| 91se视频| 色综合五月天| 狠狠久久婷五月| 激情五月天免费视频| 武则天精品久久| aaa久久久| 思思热在线| 婷婷五月永远18免费久久久| 五月天色导航婷婷资源婷婷| 曰曰久久| 久久九⑨| 色99久草在线| 精品少妇人妻AV无码专区偷人 | 91久久免费| 99热久久这里只有精品| 激情五月婷婷五月| 草五月| 婷婷色五月久久| 无码人妻电影| 五月 激情视频| 91干婷婷| 北京熟妇搡BBBB搡BBBB| 五月激情影视| 天天肏视频| 国产午夜精品久久久观看| 秋霞午夜理论 | 99视频| 激情五月天视频| 天天狠天天叉| 五月婷色激情五月| 色婷婷a三区麻| 天天爱天天日| 婷婷午夜| 99操逼| se99热久久一本| 婷婷丁香日韩五月| 婷婷丁香综合网| 午夜大香蕉| 中文字幕永久免费| 久9热| 久久丝袜婷婷| 99视频35精品视频在线观看| 欧美99视频| 欧美丁香婷婷五月天| 久久96热| 伊人午夜综合色啪| 色日本网| 婷婷五月天高清无码| 色综合久久88色综合中文字幕| www,8050,午夜三级| 激情久久五月天| www.色婷婷.com| 丁香六月婷婷色XXXXX| 久热伊人91| 亚洲色无码A片一区二区麻豆| 五月丁香在线| 99精品偷自拍| 五月天开心色色网| 不卡成人免费| 39视频第二区| 五月天停停日日| www.久99| 中文字幕天天干| 狠狠色综合久久久久| 丁香五月综合网| 丁香激情综合| 丁香青青五月天| 一本狠婷婷综合| 六月五月天婷婷涩播在线| 青青草伊人婷婷| 日本黄 色 片| 亚洲人成网站999综合| 日韩aⅴ视频| 骚逼视频一区2区| 淫视馆av三区| 狠狠狠狠狠狠草| 精品9久| 婷婷激情五月天激情小说| 丁香亭亭激情四射| 丁香六月| 色综合久久久久| 久久黄A片| www.av视频xx999.com| 99无码免费视频| 丁香六月av| 春色激情第四色| 99热青青草原| 色播五月| 99热网站| 国产肥白大熟妇BBBB视频| 婷婷五月色播天| 久久久久久久久久久久久久久久久精典| 奇米影视777在线_在线观看午夜_h小视频在线观看_岛国大片 | 在线播放中文字幕| 亚洲精品字幕在线观看| 日操夜操天天操不卡| 一区中文字幕电影| 伊人www22综合色| 日韩九区| 丁香五月婷婷亚洲另类| 99热这里只有精彩| 99热在线播放| 日韩无码AV电影网站| 极品嫩草| 六月激情婷婷| 人妻videos人妻高清| 开心五月综合| 五月天婷婷伊人| www.婷婷五月| 久月久在线视频| 五月丁香久久色| 五月丁香啪啪啪啪| 色五月婷婷大| 狠狠五月激情丁香六月| 精品一二三区久久AAA片| 久久久婷婷五月天| 丁香五月综合激情啪啪| 99热免费精品热久久66| 国产色五月| 超碰人人91| 久久激情网| 色综合激情图区| 婷丁香五月天| 天天草天天舔| 亚洲顶级VA在线观看-高清完整版在线影院观看-S022AV | 久机视频这只有精品| 免费无码毛片一区二区A片| 日日操无码| 色婷婷婷婷| 五月天婷婷丁香蜜桃91| 成人网在线视频| 69精品人人人人| 久热伊人91| 超碰com| 色综合五月婷婷狠狠干| 日韩综合久久| 色色婷婷综合| 色吧五月| 色偷偷色婷婷| 99精品视频在线观看| 毛v一区二区视频| 99久在线精品| 久久久久思思热| AV中文在线| 婷婷丁香五月在线观看91| 91综合国免费久入| 婷婷瑟瑟五月天| 亚洲AV成人精品日韩在线播放| 婷婷伊人久久无码色五月| 99热费观看| 综合狠狠干| 五月激情天| 中文字幕 码精品视频网站| 婷婷激情综合色五月久久91| 婷婷五月丁香高清无码| 9l视频自拍9l九色成人| 久久丁香九| 欧洲亚洲免费视频9| 99热精品在线在线| 一本久久婷婷| 色久婷婷网| 天天色粽合合合合合合合| 亚洲妇女熟BBW| 五月丁香啪啪综合网| 五月婷婷激清网| 激情五月天综合| 久久九⑨| 久久人妻在线| 99热这里只有精品4| 9超碰在线| 五月丁香婷婷国产精品综合| 婷婷五月天久久久| 国产avapp 网| 天天透天天爱| 99热在线极品极品| 色。 日日日| 国产67194| 成人精品视频99在线观看免费| 色99日韩| 色婷婷丁香五月| 99九九这里有免费视频| 五月婷婷狠天天色综合| 色婷婷丁香| 美女激情综合| 激情五月婷婷丁香| 爱99干99| 六月婷伊人| 天天色宗合| 玖玖婷婷精品| 婷婷日欧美在线观看| 五月丁香综合色婷婷| 婷婷九月激情| 精品人妻伦一二三区久久| 综合色色色| 久9精品视频| 久久这里都是精品| 97丨九色丨国产丨PORNY| 人人爱干人人爱草| 丁香五月天电影| aa久久| 日日干天天| 日韩有码一区| 噜噜精品| 成人一区在线观看| 26uuu亚洲| 色插人人| 五月天色婷婷网| 激情五月婷婷老师| 深爱开心五月天| 日日操天天操| www色婷婷久久综合久色| 成人在线日韩欧美| 99久久婷婷五月综合| 丁香婷婷六月| 影音先锋91| 五月天激情久久| 99久久婷婷五月| 五月天六月婷| av无码电影| 婷婷激情综合| 天天综合网在线| 久久综合婷婷| 涩涩五月天| 欧美综合婷婷欧美综| 九九热视频在线观看| www.zbzhongsen.com| 日良久久| 五月天国产成人| 亚洲综合五月天婷婷| 丁香五月最新地址| 激情第四色| 九九99热| 五月丁香婷婷综合| 综合婷婷六月| 九月激情婷婷丁香| 五月丁香免费看| 高清a片基地| 狠狠草狠狠草| 操逼巨乳91| 成人五月天视频| 99.N在线视频| 色啪影院| 狠狠色婷婷丁香六月| 久久五月天婷婷| 精品99这里有| 97日韩无套内| se99视频| 久久Xx| 欧美日综合| 《诡秘之主》在线观看| 久久AV无码精品人妻系列试探| 大香蕉院线| 午夜爱爱爱成人| 久久久.COM| 久操热线| 亚洲激情婷婷| 五月丁香久久综合精品| 久久久久视剧HD| 国产亚洲色婷婷久久99精品91| 日本色图综合| 一本大道嫩草AV无码专区| 婷婷伊人久久综合| 色五月婷婷综合在线| 久久视频这里有精品99| 激情五月婷婷综合视频| 五月婷婷黄网站大全| 99色色| 久久综合九九| 色婷婷成人色网| 九九激情| 久热这里只有精品在线观看 | 狠狠综合| 色色999三级片| enecarbon-materials.com污K127封锁请涟系@wip1688 | 激情六月婷婷| 国产Va视频| 一区=区操屄高清大全av| 久久婷丁香五月| 99热99思午夜精品| 五月亭大香蕉| 九九热精品视频在线观看| 狠狠色噜噜狠狠| 久久五月丁香婷婷| 久草x色在线观看99| 五月综合丁香婷婷| 色婷婷五月天堂资源| 午夜成人综合| 男同91| 亚洲色色色| 26UUU成人网| 碰超在线九色| 伊人五月天| 激情五月天婷婷五月天| 热的国产,热的综合,热的有码| 欧美一线视频| 在线理论片| 偷拍91九色| www.日日夜夜| 91美女被操| 亚洲成人在线电影网站| 久久丁香五月天| 黄色AAAAA| 大香蕉五月天婷婷丁香91| 亚洲精品一区中文字幕乱码| 黄色成人网站在线播放| 亚洲色婷婷婷婷人人爽| 欧美日韩成人一区二区| 婷婷九月久久| 色色五月婷婷| 欧美五月婷婷| 99热6精品| 精品国产va久| 玖玖综合网| 一本婷婷丁香久久| 色婷婷基地| www.婷婷| 色综合天天天天做夜夜| 天天粽合合合合| 久99视频在线观看| 91碰九色| 青青久在线视频免费观看| 久久99视频| 99在线观看视频| 精品无码色| 五月丁香免费视频| 久操97| 五月丁小婷婷激情四射| 狠狠爱综合网| 五月天婷婷视频| 亚洲第一综合| 色色色色av色色色色| 夜夜操少妇| 丁香五月影院| 久久草中文日韩欧美| 久久99久久99www| 成人国产欧美大片一区| 99日韩| 久久久精品AV| 青青草轻轻操| 51国精产品自偷自偷综合| 婷婷丁香五月,狠狠综合| 9久久精品| 黄色精品五月婷婷| 狠狠综合区| 99久操视频| 无码成人AAAAA毛片AI换脸| 五月丁香大香蕉| 97干视频在线| 狠狠久久婷五月| 激情五月婷婷视频一区二区三区| 激情小说婷婷五月| 婷婷在线免费| 亚洲欧美另类在线23p| 深爱五月天 开心网| 天天激情综合| 综合激情五月丁香9999久久精| 久久99久久久久久| 91干| 亚洲婷婷在线播放十月| 日本一级黄色电影| 久久九区| 国产精品电影| 伊人婷婷五月天| 色婷婷成人网| 成人啪啪色婷婷久| www一起操| 久久aaaaa| 在线sebiav精品视频| 国产99久9在线+|+传媒| av首页在线| 久久99大| 日本久久极品| 欧美一线视频| 99爱爱网| 一级性感黄色内射视频| 五月丁香婷婷色色| 婷婷色婷婷亚洲成人| 欧美在线97| 色情久久久| 97碰碰视频在线观看| 午夜成人网站在线观看| 久久这里精彩免费在线观看| 久久综合这里只有精品1 | 丁香五月亚洲综合| 丁香婷婷老司机久操| 婷婷色情五月| 91丨九色丨白浆| 日本操碰碰| 婷婷五月天成人| 高清无码.com| 婷婷丁香五月天色区| www.狠狠干com| 婷婷五月天色综合| 丁香狠狠色婷婷久久无码视频| 丁香午夜天| 开心激情站| 国产欧美第五十五页| 激情五月天影院| 五月婷婷啪啪| 青青草原99热| 噜噜在线| 婷婷色五月天在线观看| 开心婷婷五月| 大香蕉啪啪啪| 久久日婷婷| 综合www色| 色五月婷婷在线| 99热只有精品在线播放| 婷婷五月天人妻| 亚洲欧美国产高清vA在线播放| 蜜臀av粉嫩av懂色av| 九九99久久| 99热这里只有精品9| 亚洲狠狠爱婷婷| 六月丁香啪| 久综合| 婷婷大美在线| 色亚洲欧洲| 日韩av在线电影| 涩五月婷婷| 青吴乐视频| www.久久综合| 情五月亚洲婷婷| 开心五月深爱婷婷| 91大神操美女| 久久国产一区二区三区| 久久精品日| 久久综合干| 激情校园 亚洲| 国产午夜一区二区三区| 欧美精品999| 大地资源色婷婷视频在线| 黄色AAAAAAA| 亚洲操操| 色播丁香婷婷五月激情| 亚州操操| 大香蕉综合视频在线| www.日本91| 丁香六月狠狠| 亚洲久久激情| 五月婷婷综合网| 一本狠婷婷综合| 在线观看五月婷婷网| 九一99| 久久性爱视频| 97人人操人人插| 色色色国产| 久久黄色网扯| 久久婷婷色综合| 日本人妻伦在线中文字幕| 影音先锋高清无码资源网| 91丨九色丨丰满人妖| 五月激情综合婷婷| 99色热视频在线| 激情综合五月| 婷婷趴趴| 欧美综合五月丁香六月婷| 丁香 久久| 婷婷不干网| 色综合色五月| 99在线亚洲| 色婷婷九月| 色色日本欧美| 五月婷婷在线网站| 9999久久久久| 大香婷婷| 99热99这里有免费的精品| 99热老网站| 91人无码久久久久久| 激情久久四色| 婷婷综合视频| 99热人人操人人操| 色小说婷婷五月天天天| 中美日韩成人在线| 超碰在线94| 另类图片 五月激情| 五月天国产| AV操操操| BBWCUCKOLD精品熟妇 | 五月丁香在线观看| 七七色色综合| 天天操天天操天天操天天操天天操天天操| 99久久九九| 91打屁股视频网站| 亚洲色情网站| 亚洲深喉AV| 99热福利| 综合色99| 婷婷天堂视频| 五月婷婷官网色| 超碰成人公开| 99热无码精品| 久久一热| 久热中文字幕| 婷婷成人视频| 久99久视频精选| 99re热视频| 国产成人网址| 可以免费观看的av网址| 人妻综合网| 亚洲天堂有码| 爱婷婷五月| A片试看50分钟做受视频| WWW,激情五月天,COM| 婷婷五月色综合| 玖玖热99| 丁香六月婷婷| 91一起操| 久9免费视频| 国产毛片精品一区二区色欲黄A片| 岛国AAAV| 我爱va亚洲va52| 少妇被下春药玩弄A片| www.天天干.com| 开心五月深爱五月| 99亚洲精品视频在线观看| 欧美色宗和激情| 精品99在线看| 久久五月婷婷丁香| 国产九九一区二区三区| 丁香激情五月天| 久久五月情| 婷婷久久丁香| 亚洲精品中文字幕成人片| 婷婷丁香五月高清| 久久人视频| 激情内射p| 欧美色激情四射| 五月综合影院| 久久免费高| www.六月丁香看AV| 成人久碰| 91精品久久久久久综合五月天| 97超级碰碰碰久久久| www.深爱激情| 丁香熟女乱| 五月丁香综合影院| 在线观看av网站| 色情五月丁香| 青草青草久热这里只有精品| 99久久这里只有精品| 国产亚洲色婷婷99精品| 开心激情站| 99re这里只有精品国产99| 天天日天天爽| 日本熟妇人妻在线| Www.久久| 99热在线观看免费精品| 色天使色婷婷| 丁香五月色| 五月婷婷视频啪啪美女| 久久婷婷五月综合色区| 久久婷婷六月综合| 97色图片中文字幕视频在线观看 | 五月婷婷综合激情| 久草热久草在线视频| WWW.开心五月天.COM| 五月婷狠狠| 婷婷五月天狠狠色| 91人妻人人做人碰人人爽九色| 久久人妻视频| 丁香5月啪啪| 日韩操啪| 午夜免费试看| 色五月婷婷成人视频| 亚洲午夜国产成人电影VA国产欧…| 五月激情六月宗合| 在线成人网站| 中字幕视频在线永久在线观看免费| 99惹精品视频| 狠狠草网| 99久在线精品99re8| 丁香伊人激情| 亚洲成人精品三区| AV在线大香蕉| 成人婷婷五月天| 亚州欧美黄色电影| 激情五月天激情五月天| 丁香五月欧美成人| 五月丁香六月| 天天干天天干天天干天天干天| 超碰京东热av男人的天堂| 亚洲欧美成人在线| 丁香五月婷婷成人综合| 丁香五夜激情四射夜夜夜| 超碰在线视屏| 五月天色官网| 欧美日韩国产伦精品日韩人妻一| 色五月欧美| 五月天激情婷婷丁香| 九九热99热| 大香蕉av在线| 婷婷久久欧美| 日本色99网站| 久久伦乱| 99久久国产宗和精品1上映| 碰久久精品w| 91亚洲视频| 色欲婷婷五月天| 五月综合激情综合久| 91久草五月天婷婷| 久久综合激情| 午夜婷婷五月天在线| 五月天综合久久丁香91| 丰满少妇猛烈A片免费看观看| 五月丁香黄色视频| 六月丁香婷婷综合色播| 丁香9月婷婷| 亚洲热视频| 六月综合在线| 五月激情婷婷图片基地| 九九中文字幕九| 久久98| 五月婷婷综合在线视频小说| 六月丁香基地| 大香蕉七区| 在线18av | 五月婷啪啪| 五月丁花色综合网| 日韩人妻白浆视频系列| 激情综合网五月| 色狠狠综合| 天天操五月天| 色色欧美。| 色玖玖综合网| 五月天色在线| 婷婷五月网图片区| 高潮毛片又色又爽免费| 日日干天天射| 亚洲激情电影五月天色婷婷丁香一起草| 探花搜索结果 - 黄上黄| 天天日天天久久青青| 九九碰九九爱97超| 思思久久99热只有频精品66| ss五月天激情| 99精品人人| 色吊丝99| 大陆极品少妇内射AAAAAA| 日韩九区| 色婷婷亚洲六月婷婷中文字幕| 丁香六月av| 九月影院義母在线播放| 99热伊人综合| 无码激情AAAAA片-区区| 丁香五月电影| 免费97碰碰| 中文字幕色色| www.夜夜操.con| 91超碰在线播放| 婷婷色色宗合网| 成人 在线观看国产| 天天插天天爽| 99热这里都是精品| 五月天六月婷婷| 玖玖资源天天无码| 日本色婷婷久久99精品91| 亚洲成人无码网站| 六月丁香啪| 色爆五月| 另类少妇人与禽zOZZ0性伦| 婷婷五月天AV| 任你爽精品免费视频6| 欧美丁香婷婷五月| 99热99热不卡| 性爱电影科技贸易有限公司| 丁香五月激情婷婷视频| 五月婷婷啪啪啪| 婷婷99丁香| 亚洲欧洲小视频9| 99热传媒| 欧美大片免费观看| 97精品综合| 夜夜操狠狠操| 国产亚洲在线| 国产精品国产| 婷婷五月天视频亚洲| 久热播这里只有精品| 蜜桃五月天色| 色噜噜97视频在线观看| 9久9久| 丁香五月WWW| WWW、日本色丁香、co m| Aaa久久| 激情综合色婷婷啪啪五月天| 中文成人在线| 色香欲综合| 婷婷开心激情| 九九激情网| 91九色国产| 五月婷婷综合久久| 丁香五月91| 99热这里只有精品3| 天天综合影院| 色婷婷五月天不卡| 婷婷激情五月色综合| 久久久精品人妻录| 狠狠五月激情丁香六月| 色综合久久88色综合天天| 五月婷av| 夜夜躁爽日| 五月婷婷五月| 五月色丁香| 99爱在线视频| 五月丁香综合中文| 色色色在线观看| 日本不卡中文字幕| 丁香婷婷基地| 五月婷婷影院| 另类小说五月天| 中文字幕网伦射乱中文| 亚洲六月色| 亚洲不卡123| 九九九九无码| 色色五月婷婷久久| 国产ava| 在线不卡视频| 天天操夜夜啊| 99久久成人| 激情婷婷综合五月少妇| 丁香五月婷老师| 欧洲色色| 久久久无码精品成人A片小说 | 国产SUV精品一区二区883| 丁香网五月天| 啪啪色激情五月天| 另类国产区| 丁香激情网| 天天激情综合| 激情5月天天天| 色色色图| 中文字幕不卡+婷婷五月| 99热网站| 日本操天堂| av一区二区电影免费在线观看| 天天综合色| 专区无日本视频高清8| av网站不卡在线| 玖玖热99| AV五月丁香| 久久AAAA片一区二区| 五月婷婷在线网站| 美女天天爽| 大香蕉综合| 免费无码毛片一区二区A片| 人与禽A片啪啪| 亚洲欧美国产A片免费观看| 久久久性爱网| 99超在线| 日韩在线五月天婷婷| 五月婷婷久久大香蕉| 五月婷婷啪啪| 热99视频精品在线| 永久免费一区二区三区| 丁香六月婷婷综合色| 初夜av| 中文av网| 日日噜噜夜夜狠狠久久丁香六月| 婷婷五月天97干| 丁香 亚洲 久久| 激情五月天啪啪视频| 五月婷六月天| 久操综合| 粉嫩AV久久一区二区三区| 丁香婷婷五月人体| 激情小说五月天| 久热播这里只有精品| 99色中文| 99人妻碰碰久久久禁片| 高清成人综合| 婷婷五月天AV激情| 精品久久这里热66| 久久精彩免费视频| 熟女国产在线一区二区三区四区| 久久激情视频| 婷婷五月丁香综合人妻| 婷婷亚洲色| 熟女强人妻一区二区三区四区无| 91色操| 五月天全国最大成人网| 久综合| 无码激情AAAAA片-区区| 五月婷婷天堂| 天天操天天日天天爽| 五月婷精品| 丁香六月在线综合| 丁香五月天网站| 操一操| 激情五月婷婷视频一区二区三区| 五月婷婷综合天天操| 婷婷六月激情小说网| 五月天狠狠草| 另类图片五月天| 中文字幕不卡视频| 五月综合777| 婷婷色啪| 第九色区AV在线| 色婷婷综合久久久久| 蜜桃婷婷丁香| 五月天综合色| 大香蕉七区| 欧美丁香六月激情视频| 色色丁香婷婷综合| 色婷婷丁香AV综合| 成人操呦av| 五月天色五月| 九月激情婷婷丁香| 国产色色在线| 亚洲va国产va天堂va综合va| 午夜一区| 色婷婷影视99| 五月丁香五月激情综合色综合| 99免费热视频在线| 日本A片一区| 丁香婷婷丁香五月欧美人| 激情五月天综合网| 狠狠久久婷五月综合色| 欧美日本综合网| 深爱激情婷| 久久AV无码精品人妻系列试探| 色综合色色| 亚洲热热视频| 操逼五月婷婷| 天天操夜夜啊| 91九色精品女同系列| 日噜噜色| 精品色色网| 天天爽天天爽| 色色色色色色色色五月先| www.henhengan| 婷婷五月天天| 凹凸7777操操操| 激情av| 五月久久网| 第四色婷婷丁香五月| 综合久久激情久久| 思思视频这里是精品| 久久婷五月| 成人在线日韩欧美| se影音资源在线观看| 7EzOBIhNq85TO| 五月婷婷久久激情| 亚洲天天操| 婷婷综合五月天| 久热这里| 成人国产网站| 96性爱视频| www.99视频| 久久综合九九| 婷婷涩五月| 久久久久久久久99精品| 五月婷婷丁香婷婷| 亚洲综合欧美色丁香婷婷888月图片| 九九热视频免费观看| 欧美交换配乱吟粗大25P| 无码se| 狠狠综合网| 久久久性爱视频| 激情99| 色99在线看| 亚洲激情五月| 综合激情sV| 人人射人人高潮| 99啪视频在线观看| 亚洲五月丁| 狠狠精品干练久久久无码中文字幕| 99热久只有| 五月天丁香| 美女五月天婷婷| 96丁香六月婷婷蜜桃综合久久| 99久久久| 天天日,天天插| 永久无码色| 99九九玖玖| 激情四射婷婷| 丁香激情久久| 国产欧美第五十五页| 婷婷丁香五另类网站| 五月婷啪啪| 婷婷五月色情天| 日本久热| 日韩AAAAA| 激情桃色网| 99热这里只有精品8| 伊人丁香五月婷婷潮吹| 色婷婷久综合久久一本国产AV| 激情碰碰碰| 色五月AV| 婷婷综合97| 大香蕉av在线| 婷婷色播色五月五色五月天色妇| 操操啪| 玖玖色资源站| 99ER热精品视频| 免费精品66| 色综啪啪网| 欧美日本va| 久久99三级在线视频| 99热99精品| 噜噜噜狠狠色综| 婷婷激情六月| 天天婷婷天天| 成人五月丁香花| 婷婷五月无码| 日熟女| 99久久久| 五月香婷婷| 极品人妻VIDEOSSS人妻 | 综合久久综合五月天婷婷| 99热在线观看精品免费| 婷婷五月丁香A∨| 亚洲第一黄网| 操操操www.com| 97在线99| 狠狠干综合网| 国产av基地| 综合色播| 五月丁香六月情婷婷久久| 成片免费观看大全| 噜噜狠狠色综合久| 久久xx| 色色欧美色色色| 五月婷天天搞视频| www.91九色| 五月天婷婷基地| www夜夜操wwwcon| 婷婷五月天中文字幕| 五月丁香综合| 久久五月天黄色五月天色网址| 思思热99er| 伊人久久大香蕉网| sS丁香五月婷婷| 婷婷五月综合性爱| 激情五月色婷婷| a色色片| 伊人激情综合| AV在线免费播放| 99热在线里有精品| 丁香社92视频| 婷婷五月免费观看| 欧美性猛交AAAA片黑人 | 五月天综合在线观看| 99无码超碰| av大片在线| 天天日日爽| 一起草Av| 日本色色影片| 狠狠综合网| 性爱在线播放av| 亚州精品成人片| 五月天婷婷色色| 婷婷五月六月激情| 日本一级| 久久婷婷七月丁香| 青青草原亚洲天堂| 青青草深爱激情网| 色色色五月婷| 色色色色色色色色网站| 日日狠狠久久偷偷四色综合免费| 五月婷色色| 欧美三级巜人妻互换| 在线中文亚洲| 99亚洲欧洲| 99精品97| 99热 精品在线| 亚洲免费av在线| 激情狠狠丁香月| 爱操人妻| 影音先锋 萱萱| 综合五月婷婷| 啪啪亚洲综合| 亚洲色情久久| 五月天久草| 9999久久久久| 婷婷激情六月| 九九视频精品这里只有| 99.N在线视频| 婷婷导航| 久色激情| 久久99色色| 99精品自拍| 日本在线wwww| 亚洲V国产V欧美V久久久久久| 激情网五月天| 开心五月婷婷在线| 91丨九色丨熟女高潮| 97人人操人人拍| 嫩草AV久久伊人妇女超级A | 97在线/亚洲| 久久九网| 婷婷五月激情综合| 97在线刺激| 伍月婷丁香花全集| 婷婷丁香六月五月天| 黄网在线免费播放| 国产免费性爱| 九九热在线观看视频| 这里只有精彩亚洲视频推荐| 国产乱码久久| 9久热免费视频99| 婷久久高清| 久久精彩视频| 午夜免费试看| 久久久久久人妻久久久久久久久久人妻久久久 | 久久久免费精彩视频| 天天干天天色天天干| .操區COm| www,色婷婷| 中文字幕不卡视频| 青青草青青草五月天| 亚洲天堂色色| 91人人网| 激情五月丁香五月| 96性爱视频| 琪琪秋霞| 99综合视频| 人妻激情视频| 91av无码| 五月伊人91| 91操操| 综合网天天| 强伦轩人妻一区二区电影| 五月婷婷六月丁香在线视频| 婷婷丁香激情综合色情| 俺去也综合| 5月丁香六月婷婷| 一根材五月婷成人| 激情综合色| 14色综合婷婷| 91热久| 天堂在线伊久| 免费看欧美成人A片无码| 激情内射p| 天天摸人人摸| 另类综合国产| 久久66er久久| 日日骑夜夜撸| 久久综合干| 色综合久久8| 色五月综合网站| 丁香婷婷欧美综合| 79精品视频在线观看,| 老司机日日夜夜青草| 丁香九月久久| 丰满熟女人妻一区二区三| 五月丁香六月婷婷的女人| 婷婷综合激情五月综合| 丁香色五月婷婷17C| 婷婷导航| 九九热a| 九九大香视频| 五月婷啪啪| 97色色色| 粉嫩av懂色av蜜臀av熟妇| 久久婷婷色综合|