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

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
返回資訊列表
丁香五月婷婷影院| 天天插天天爽| 色播五月天天| 色色丁香婷婷| 五月婷婷五月天在线| 日本九九九九九九| 欧美人与性动交CCOO| 天天插天天操| 开心婷婷五月天电影院| 五月丁香成人| 色婷婷影视99| 久久99热网| 五月丁香六月婷婷姐| 综合性爱网| 色婷婷成人| 婷婷无码五月天| 激情六月下句是什么| 国产亚洲成人综合| 成人无码髙潮喷水A片| 婷婷九月丁香| 欧美综合激情丁香五月六月婷| 色情性爱视频网址| 97精品欧美91久久久久久久| 亚洲碰碰碰| 狠狠色婷婷| 天天爽天天操| 一起草性爱不卡视频| 99在线观看亚洲| 久色88| 成人做爰A片免费看视频| 久久激情五月婷婷| www.日日夜夜.com| 天天爽天天草| 99综合一区| 婷婷综合激情| 综合色99| 五月婷婷熟女| 久久久久网站| 婷婷月综合| 在线超碰精品| 久久99精品久| 9一精品视频观看| 国产看真人毛片爱做A片| 亚洲色五月天| 这里只有精品视频在线| 99热这里只有精品8| 久久久久亚洲AV成人无码电影| 六月合五月婷| 亚洲激情五月天| 小视频一区| 五月丁香日本片| 超碰成人在线观看| 免费黄色片子| .操區COm| 开心五月婷婷在线视频免费观看| 亚洲六月婷| 91凹凸在线| 午夜福利成人AV91| 98永久精品| 色原狠狠综合| 婷婷人人操| 婷婷终合色图| 九九美女视频| 五月天丁香成人| 婷婷va| 4399在线观看免费高清毛片| 婷婷久久五月天中文字幕在线观看| 影音先锋 萱萱| 欧美激情性做爰免费视频| 五月香婷婷| 丁香五月天电影| 婷婷99狠狠躁| 婷婷九月亚洲| 激情综合五月| 九月丁香八月婷婷加勒比| 99色| 久久五月天丁香| 91九色PORNY中文啦| 中文超碰视在线| 丁香婷婷影院| 色色五月天丁香婷婷| 午夜成人综合| 日本丁香五月婷婷| 俺也去在线视频| 丁香六月婷婷激情| 无码人妻激情| 香蕉AV777XXX色综合一区| 三级黄色大片视频| 伊人婷婷五月天av| 五月丁香久人妻中文| 99开心五月五月丁香激情| 婷婷五月成人有| 天天拍天天做视频| 丁香五月欧美| 色婷婷视频在线| 超碰av在线| 人妻丰满精品一区二区A片| AV成人在线网站| 午夜在线成人网站免费观看| 国产白丝在线一区| 婷婷激情五月综合丁| 天天视频亚洲| 五月婷在线观看| 99精品久久| 久久97久久99久久综合欧美| 色吊丝永久访问网址 | 人妻操逼视频。| 99er精品| 这里只有精彩视频| 91男同视频| 欧美碰碰碰| AV在线大香蕉| 五月婷婷人妻| 久色激情| 色色色色色色色色色色色色色97| 五月丁香久久久日婷婷久久婷婷日| 五月丁香婷在线| 婷婷五月色| 九九黄色网| 精国产品一区二区三区A片| 丁香五月停停av| 色欧美影院| 性爱在线播放av| 丁香六月激情国产| 99视频内射三四| txt五月激情四射网综合俺也来了| 久久激情五月婷婷| 五月婷婷免费看| 夜夜骑夜夜撸| 亚洲XX网| 色婷婷裸体色性在线| 亚洲婷婷91丁香| 亚洲乱码日产精品BD| 九月色婷婷婷| 久久 这里只有精品1| 狠狠穞A片一區二區三區| 五月天婷婷丁香| 色五月色五天色情网址| 青青五月天婷婷| 婷婷午夜综合| 久久38视频| 丁香五月天AV在线| XX久久| 五月丁久久| 激情六月婷婷| 婷婷婷久久久| 婷婷五月天午夜激情影院| 99在线精品免费视频| 看全色黄大色大片| 日本色视| 国产婷婷久久| 人人爽亚洲| 五月丁香综合激情| 五月丁香啪啪啪| 99re热视频这里只精品| 天天色2017| 天天爽天天爽天天爽天天爽天天爽天天爽天天| 中文字幕视频在线播放| 激情图片婷婷| 五月天婷综合| www.婷婷,com| 99玖玖在线视频| 青青草六月丁香| 色播五月| site:xiongshengzz.com| 婷婷狠狠操| 人妻丰满精品一区二区A片| 五月婷婷婷综合网| 日本天堂免费99| 91男人资源站| 狠狠操狠狠操| 久久久久8888| 色噜噜狠狠色综合日日| 深爱婷婷基地| 91一起操| 激情合网婷婷| 九九精品大香蕉| 99热久久最新地址| 97碰碰草| 五月开心激情| 色五月婷婷激情基地| 人妻久久久久久久久妻久久久久| 国产在线aaa片一区二区99| www九九热| 97人人超| 丁香五月天社区| www.久久久久久久| 婷婷丁香五月激情| 亚洲色爽| 亚洲免费综合一区| 婷婷六月丁| 十二区无码| 天天干肏夜夜| 久久婷婷五月综合色天| 色婷婷五月在线| 婷婷五月天激情电影| 九九热精品视频在线观看| 成人在线视频男人的天堂4399| 夜夜夜夜撸夜夜操| 九九这里是免费的视频5| 亚洲热视频| 男人天堂AV在线一区二区| 色婷婷www| 久久九九99桃花视频| www.婷婷五月| 五月丁香婷婷爱激情综合网| 免费无码毛片一区二区A片| 激情美女五月天| 99精品无码| 色欲五月天| 韩国不卡AC视频| 色综合日日| 欧美日韩成人h| 日本五月婷婷| 国产亚洲色婷婷99精品| 五月天丁香婷婷久久九| 六月婷婷久久| 五月婷婷丁香伦理网| 色婷婷色综合久久精品V| 深爱婷婷丁香五月激情| 亚洲综合1024| 99五月香婷婷丁香在线视频| www.9797国产| er99免费视频在线| 91精品91久久久中77777久久玖玖九九 | 国产在线网址1| 五月花综合视频| 激情99热| 91se精品国产| 久热大香蕉| www..com色爱| 午夜成人网站在线观看| 91无码一区人妻A片蜜| 天天成人丁香美女AV| 色色五月天com| 九九99热| 99色热视频| 99热99| 免费视频无码| 五月婷婷六月丁香在线视频免费在线观看| 综合玖玖性爱免费视频| www.亚洲激情.com| 色婷婷狠狠18禁| 天天操天天草天天草天天| 色综合视频| 丁香激情五月天| 激情五月综合网最新| 91超碰在线播放| 51精品国自产在线| 婷婷99中文字幕| 五月婷婷干| 黄网免费观看| 激情国产五月| 婷婷 激情 五月| 国产色色小草视频| 国产看真人毛片爱做A片| 991精品在线视频| 婷婷五月天成人五月天| 丁香五月影视| 狠狠se| 成人精品视频99在线观看免费| 久久色9| 婷婷激情五月天色| 五月色情婷婷| 激情综合网址| 五月丁香色婷基地综合久久| 91 久热| 久热只有精品| 色婷婷狠狠| 五月婷视屏在线观看| 久久色五月天| 淫视馆aV二区一区| 99色热视频| 少妇水多A片太爽了| www.久久久久久久| 91久久九久久九久久九久久九久久| 激情综合网,五月| 亚洲九九夜夜| 国产67194| 99热资源在线| 射琪琪| 91re色综合视频| 成人在线日韩| 久久xxxx| 涩五月婷婷| 婷婷丁香五月亚洲17cao| 色国产五月| 激情四射五月天| 久久久五月天网站| 激情宗合 激情宗合| 日韩在线观看网址| 9国产在线视频| 九久9精品| 五月婷色色| 99在线免费视频| 五月丁香天堂网| 爱婷婷五月| 日日色五月天| 好吊丝aV| 99热这里有精品2| 成人片久久网站| 爱射综合| 性色av大香综合| 婷婷五月乱交换| wwww.9免费视频| 99ER热精品视频| 国产肥白大熟妇BBBB视频| 精品人妻一区| 久热无码| 亚洲国产精品VA在线看黑人| 欧美情色电影一区二区| 草草色情综合网| 久久99热网| 五月天婷婷激情| 99热精品在线| 五月婷婷色色爱| 亚洲乱码日产精品BD| 国产偷人爽久久久久久老妇APP | 婷婷色五月天色色| 婷婷五月综合色拍| 九九这里只有精品在线视频| 丁香五月婷婷六月婷| 精品国产va久| 久久婷婷五月综合啪| 五月丁香黄色| 日本色色网站| 丁香五月色五月| 人人人操| 亚洲视频在线观看| 五月天网址在线刘玥| 色婷婷激情Av久久久| 亚洲在线网站| 欧美啪啪9| 丁香激情网| 欧美在线视频99| 婷婷九月激情| 思思久久思思| 超碰色综合| 99精品在这里| 色啦啦视频| 日日夜夜亚洲一区| 日韩欧洲亚洲| 五月综合六月婷婷| 日韩欧美成人片| 狠狠操狠狠操AV| 国产做A爰片毛片A片美国| 亚洲宗合激情| 亚洲成人高清在线| 五月丁香在线精品| 99精品国产在热久久婷婷| www.91婷婷| 99色色| 五月天丁香久久综合| 色综合久久无码| 777久久久| 欧美性爱五月天| 久久伊人日日夜夜| AV五月丁香| 九九热精品99| 五月婷三级片| 色色激情五月天| 夜夜夜叫天天天做| 亚洲精品无码久久| 91 久热| 狠狠色丁香久久| 婷婷五月天视| 五月婷亚洲精品| 婷婷五月婷婷| 新激情综合| 欧美日比视频| 色六月视频| 亚洲综合九九| 91超级碰人人操| 色婷婷视频| 久久婷婷五月综合色和| 欧美美女视频| 7超碰自拍| 天天爽,天天操。| 欧美日韩成人在线网| 日产精品久久久久久久蜜臀| 99色天堂| 丁香五月开心亚洲| 久久久久亚洲AV综合| 日本成人综合| 五月成人天| 97干在线| 色噜噜狠狠色综合日日| 激情五月四色| 免费看欧美成人A片无码| 久久99婷婷| 情色五月天 网站| 丁香五月激情六月综合| 风流少妇A片一区二区蜜桃| 人人爽网| 麻豆AV一区二区三区| 六月丁香婷婷色狠狠久久| 天天摸天天舔天天爽| WWW免费视频碰碰碰碰| 艹B高清无码| 五月天狠狠网站| 视频免费精品免费精品免费精品免费精品免费精品免费精品免费99 | 五月天另类激情在线| www.夜夜| 99热99在线| 夜夜躁婷婷AV| 91在线操| 26uuu欧美| 婷婷99综合| 26uuu国产色| 狼人久草| 久久xx| 可以免费观看的av| 九九爱激情| 久操b网| 92久久| 亭亭五月基地在线| 丁香五月婷婷色情综合| 综合性爱网| 欧美激情 日韩无码 婷婷 五月天| 99视频久久免费视频| 91性高潮久久久久久久久| 激情综合网站| 婷婷五月天播播| 天天操天天插天天射| 五月天四色房丁香| 五月丁香婷婷欧美色图视频五月丁香777电影 | 久久久人妻不卡| 五月婷婷色影院| 九九青草热| 五月天婷婷无码| 日韩三级视频一区二区| 五月天综合在线观看| 亚洲日比视频| 青青草原福利在线| 亚州第一A片| 一级二级香港秋霞欧美欧美秋霞| yw国产AV| 婷婷免费视频| xx久久| 五月婷激情影院| 亚洲无码yw| 丁香五月六月| 五月丁香啪啪啪啪| 日韩aaaaa| 99在线免费视| 久久免费少妇高潮99精品| 色爱终和网| 99热热热99精品婷婷| 色五月婷婷激情五月| 五月激情四射网站| 99爱视频在线观看这里只有精品| h亚洲| 欧洲综合视频| 秋霞三级影视资源| 中文字幕操比影片| 免费看欧美成人A片无码| 91狠狠色丁香| 另类视频在线| 久久久久99精品成人片| 天色色综合网| 国产成人综合网| 亚洲 日韩色色| 丁香伍月婷电影全集| 激情五月天无人视频在线| 天天艹| 秋霞A V毛片| 婷婷色播色五月五色五月天色妇| 成人片黄网站色大片免费毛片| 国产日产成人亚洲欧美国产VA| 91日韩在线| 伊人色综在线| 中文字幕视频在线播放| AAA级久久久精品| 国产欧美va| 久久性爱视频| 成人在线观看精品| 久久婷婷网站| 日本欧美成人片AAAA| 色色综合网络| 五月丁香婷婷色色| 国产古装妇女野外A片| 激情五月婷婷老师| 亚洲综合激情五月久久| 91九九九九九九| 99日本黄站| 五月婷深深爱激情网| 婷婷色中文| 99这里有精品视频| 9久热在线视频精品| 久久综合热17c| 9视频在线成人网站| 五月婷婷丁香五月婷婷丁香| www.精品99| 春色激情| 99操视频| 激情综合九月| 婷婷激情社区| 婷婷日| 97丁香视频| 色综合五月| 夜夜躁爽日| 天天色情站| 久久超级碰视频| 婷婷五月花| 超碰国产AV| 偷拍视频五月天| 99在线免费视频| ..真实国产乱子伦对白在线_欧 | 一区二区三区视频| www.色五月| 久久婷婷91| 综合激情综合啪啪| 五月婷婷综合热| 99re久热只有精品6在线直播.com| 五月天婷婷综合网| 色五月超碰| 综合激情网激情五月。| 成人va在线观看视频| 在线不卡中文字幕| 超碰成人影视| 亚洲天堂热| 久久多色| 九九干视频| 婷婷色狠狠| 夜夜操少妇| 天天做天天要天天爱| 国产44页| 色五月色情| 一区二区成人电影免费播放| 色婷婷成人做爰A片免费看网站| 秋霞A V毛片| 天天爽,夜夜爽| 色丁香五月综合网| 色情激情五月| 五月天激情国产综合AV| 影音先锋 91工厂| 亚洲日本激情| 亚洲免费观看高清完整版AV线| 久久婷婷五月综合色和| 91久久久久| 久久久久亚洲AV综合| 激情综合五月天| 日日干日日| 日日夜夜狠狠| 婷婷在线视频| 99热| 河北真实伦对白精彩脏话| 丁香大香蕉| 成人欧美日韩| 97在线视频人妻九色| 9l视频自拍九色9l视频在线观看| 大天天伊人| 激情综合网五月婷婷| 丁香五月婷婷色偷偷| 天堂草在线观| 精品成人a v无码内射| 九九热这里只有精品31| 五月深爱激情网| 丁香激激情网| site:feetmall.com| 综合色五月天| 九九无码视屏| 天天综合精品| 99久久9| 日本久久婷| 色五月色五天色情网| 婷婷五月亚洲综合| 人妻中文在线| 淫五月停停| 婷婷香蕉香| 亚洲蜜乳AV| 欧美色图天堂网色| 色婷婷电影网| 巴基斯坦粉嫰无码视频| 日日夜夜爽| 婷婷干五月综合在线播放| 婷婷深爱五月| 色噜噜婷婷| 婷婷五月激情网| 操碰91| 伊人久久丁香狠狠婷婷综合香蕉| 五月婷色丁香| 久久99精品九九久久久婷婷| 黄色大片又大粗又爽| 99亚色色色| 襙比视频| 影音先锋天天日| 草草视频91| 香蕉久久国产AV一区二区| 亚洲精品字幕在线观看| 99热黄| 国产无人区大片| 草综合网| 国语精品探花| 无码色| 开心激情网在线| 9久久狠狠的| 日韩操啪| 九九激情网| 五月天婷婷久色| 五月天久久婷婷| 丁香五月在线| 狠狠色综合无线观看| 婷婷97碰碰| 无码一区二区三区四区五区| 色色色免费视频| 九九99精品| 四川BBB搡BBB爽爽视频| 伊人五月婷婷国产视频| 欧美日韓成人亚洲精品另类| 五月色综合网| 国产人妻777人伦精品HD| 亚洲黄色av网站| 99婷婷五月天| 色五月综合| 天天干,天天日| 丁香五月 激情文学| 青青草性爱视频| 亚洲免费99| 精品五月天| 激情碰碰碰| 99这里只有精品国产| VfJxEwPH| 人人操av| 九色91视频| 丁香五月天av| 色激情五月天| 久久伦乱| 国产精品香蕉| 99ER热精品视频| 91九色无码日韩| 欧洲亚洲激情五月天在线| 九九久久五月天| 丁香影院五月综合| 无码天天操| 日韩性视频| 96色婷婷| 久久久99精品| 丁香五月激情五月| 色综合久久888| 五月丁香香蕉| 超碰在线资源| av在线超清中文| 日本天堂爱爱| 超碰在线观看成人视| 99福利视频| 国产超碰在线| 深爱婷婷基地| 色色色五月婷婷| 日韩野外 无套| WWW.桔色成人.COM入口| 九九热在线99| 91视频精品99| 日日噜噜夜夜狠狠久久丁香六月| 9l视频自拍九色9l黑人| 欧美色六月婷婷| 丁香婷婷啪啪| 亚洲中文字幕AV| 9久热在线视频精品| 青青草网武则天| 色色色欧美色色| 亚洲亚洲人成综合网络| 精品网站99| 六月激情综合| 天天插天天狠| www.婷婷亚洲基地| 97人人做| 伊人久久大香蕉网| 亚洲婷婷丁香| 涩涩五月天| 久久免费试看120秒| 色五月婷婷五月天激情综合| 日韩二区搞逼插逼毛片| 综合色色婷婷| 免費观看aV在线网址| 思思热在线视频99| 激情五月天 婷婷| 91Chinese在线| 久久综合激情| 人人草公开操| 久久精彩免费视频| se色99| 国产成人精品一区二区三区视频 | 欧美综合五月丁香六月婷| 99视频| 囯产精品一品二区三区| 六月成人网| 99er久久| 97久操视频| 天天综合色| AV在线免费网站| 91丨九色丨大屁股| 人人干天天舔| 久久精品一区二区三区四区| 丁香欧美| 99热久久日本| 五月天伊人久久久久| 人人97操| 97碰啪啪| 色五月天中文字幕| 风流少妇A片一区二区蜜桃| 色五月天 丁香| 色频玖玖五月天| 久久久99精品免费观看| 99日这里只有精品| 操97免费超级视频| 五月丁香五月综合欧美| 偷拍视频五月天| 人人干人人操外国| 五月婷婷综合激情网| 五月情丁香色| 操草草草| 激情久久久| xxx综合在线| 五月丁香天堂| 色色婷婷丁香| 99视频这里只有精品10| 大香蕉婷婷丁香天堂AV| 国色天香成人网| 久久精品人妻| www.婷婷五月天啪啪| 激情网 久久| 综合五月网| 99ri国产在线| 91嫩草国产线观看亚洲一区二区| 激情五月天啪啪| 婷婷在线五月天观看| 人人肏逼视频在线一区二区| 综合AV在线| 五月激情婷婷色| 99精品国产在热久久婷婷| av九九| 丁香五月香蕉| 婷婷激情中文综合| 97色精品视频 | 丁香五月成人| EEUSS鲁片一区二区三区| 久热这里只有精品3| 在线日本www| 色五月丁香婷婷| 婷婷激情五月综合| 久久国产精品乱子伦_靑青草…| 欧美日本99| 日日夜夜天天| 丁香五月另类色婷婷麻豆| 日本va视频| 草综合网| 97碰免费精采视频| 色色欧美色色色| 五月婷婷久久大香蕉| 六月婷婷影院| 欧美日韩91| 五月丁香888| 久久99综合| www.91在线观看| 深爱五月最新网址| www..com色爱| 69热在线| 日韩久久色| 亚洲另类AV| 江苏少妇性BBB搡BBB爽爽爽| 久热这里只有精品6| 5月丁香啪啪啪| 婷婷色日本| 欧洲永久精品| 丁香六月综合激情| 亚洲顶级VA在线观看-高清完整版在线影院观看-S022AV | 怡红院视频| 我要色综合五月婷婷| 色优久久| 婷婷五月天激情文学| 综合伊人久久| 人妻啪啪啪| 亚洲综合视频一下| 中文字幕在线免费观看视频| 91疯狂操操操操| 九九99视频精品| 亚洲色图欧美色图日本视频| 国产午夜成人免费看片无遮挡| 超碰99在线| 丁香五月激情啪| 久久怡红院| 91久久电影| 五月婷婷激情综合av| 久久久精品色色色| 人。妻久久| 99久久大片| 五月综合缴情网| 人人看人人草人人摸| 亚洲99视频| 伊人狠狠狠综合| 婷婷六月网| 思思久久思思| 日逼免费视频| 夜夜撸天天日| 亚洲成人五月天| 精a品a| 99日本视频| 九九九九中文字幕| 久久精品五月| 永久免费一区二区三区| 午夜日韩久久久网站| 任你操精品免费| 亭亭色网| 色综合色| 久久午夜理论| 伊人深爱综合| 丁香五月婷中字幕| 97视频91| 色色色免费视频| 婷婷五月天av| 免费看成人AA片无码视频吃奶| 九九婷婷五月天| 91久久国产自产拍夜夜91久久精品文字>91麻豆精品国产 | 久久婷婷五月综合激情国产 | 操丝袜视频影院导航| 五月丁香婷在线| 夜夜撸天天操| 色停停香蕉视频| 亚洲综合五月| 亚洲12p| 色婷在线视频| 久久亚洲婷婷| 欧美婷婷五月激情| 性生活久久朋友人妻| 婷婷五月天亚洲综合| 亚洲综合激情五月久久| CHINESE熟女老女人HD视频| 亚洲精级| 久热AA| 激情五婷精品网在线观看网址| 九九九九九九九热| 九九热最新视频| 亚洲啪啪啪啪| 99精品成人无码A片观看金桔| 九九热内射| 日本欧美国产| site:picc-up.com| 泰州成人视频| 色色色免费视频| 51精品国自产在线| 爆乳熟女一区二区三区爆乳| 国产xxxxx在线观看| 天堂va久久久噜噜噜久久Va| 狠狠se| 99综合色色色| 五月天激情无码专区| 久久多色| 色九四色| 精品人人操| 极品人妻videosss人妻| 久久天堂网| 中字幕视频在线永久在线观看免费| 精品五月花| www.91.com黄| 久久激情五月天| 67194成I人在线观看线路1| http:色情日本com| 婷婷五月综合社区| 亚洲人妻一区二区 | 五月丁香婷婷综合网| 亚洲不卡123| 另类天堂| 九热视频| 国产黄大片在线观看画质优化| 99久久.www| 综合久色五月| 色欲久久综合| 婷婷成人av| 狠狠色婷婷7777久| 伊人婷婷大香蕉| 天天干、天天日日| 亚洲操操| 激情人妻综合| 婷婷激情五月天在线| 久色资源| 99久久久久久| 丁香六月在线| 大战熟女丰满人妻AV| 国产成人网| 五月婷婷婷婷| A片试看50分钟做受视频| 超碰a女人的天堂| 亚洲激情色色| 久热九九| 综合五月婷婷| 色99视频| 影音先锋五月婷婷| 狠狠五月丁香色婷| 99热最新| 一级二级色大片| 欧美成人性爱网| 99国产在线精品视频| 超碰免费人人| 色色A| 激情五月天.色网| 丁香五月AV综合激情| 五月天婷婷久久视频| av网址在线| 五月丁香六月婷| 婷婷丁香激情五月天色色色| www。五月天。com| 97久久超碰| 久久免费9| 超碰在线免费| 色欲久久久久久综合网综合网| 五月婷婷免费视频| 欧亚成人A片一区二区| 99re热精品在线视频| 这里只有精品视频在线| 久久久久久久久久久44| 99热6色| 婷婷最新地址| 99热在线这里只有精品| 久久久GOGO无码啪啪艺术| 激情com| 日韩啊啊啊| 99欧美| www色色色com| 婷婷五月天在线看| 丁香五月综合| 99热最新地址在线| 五月丁香婷婷综合网| 五月天丁香网| 久久婷婷六月综合| 五月婷婷综合激情| 狠狠色丁香| 婷婷在线播放av| 九九99精品视频在线观看| 成人网址在线观看| 91色噜噜狠狠狠狠色综合| 亚洲午夜一区二区| 色噜噜狠狠色综合网| 色五月色五天色情网| 五月丁香啪啪啪综合网| 日本69日人视频| 久久XX| 五月婷婷 六月丁香| 五月丁香久久| 久久欧洲综合网| 99ri6在线视频| 亚洲婷婷免费| 丁香六月激情| 狠狠色噜噜狠狠狠狠综合| 在线观看熟女少妇| 97很鲁在线视频| 五月丁香六月综合激情网| 激情碰碰碰| 天堂综合久久 | 丁香五月在线观看完整版| 五月天怕怕| 国产婷婷五月天| 久久精品99| 国产精产国品一二三在观看| 亚洲综合婷婷五月天| 久久久久久婷| 99热大香蕉| 26UUU一区二区| 中国丰满熟女A片免费观| 色五月女| 玖玖色综合网| www.五月天| 深爱五月日韩| 91日视频| 极品人妻VIDEOSSS人妻| 这里只有精品视频在线看| 伊人久久综合| 欧美精品99久久久| 丁香六月天之亚州热女| 在线观看亚洲视频影院| 丁香五月天堂网| 深爱激情久久| 99福利导航| 欧美色五月| 丁香六月亭亭久久综合| 爱操人妻| 亚洲情综合五月天| 久久在线人妻| 成人五月天丁香| 天天日天天爽| 97五月天| 伊人久久激情图区五月| 一区二区无码视频| 九九色色| 操熟女成人网| 亚洲AVDVD| 亚洲亚洲人成综合网络| 色播五月天激情| 情情五月天色| 大香蕉免费9| 99热精品在线在线| 色婷婷精品视频| 开心婷婷五月天电影院| 狼人婷婷久久| 久久久久久久久久久-久五月天婷婷| 26UUU精品一区二区| 天天摸,天天爽| 婷婷爱五月| 公的粗大挺进了我的密道| 五月婷婷六月天| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 综合色99| 色色色1网址| 五月丁香婷婷基地| 九九热精品视频| wwxx日本| 成人av在线网址| 婷婷五月天亚洲综合网| 人人干av| 91九色无码日韩| 九热视频这里只有精品| 久草大| 激情婷婷五月少妇| 免看黄大片AA | 婷婷五月天综合网| 五月丁香五月婷婷| 色婷婷五月网| 琪琪理论片| 91狠狠综合网| 99在线视频操999| 色婷婷激情| 超碰色综合| 五月天开心婷婷激情网站 | 红桃91人妻爽人妻爽| 色综合开心五月深爱五月| 99精品综合| 色综合五月天| 五月丁香六月| 五月天色婷婷视频| 99er6免费视频热播| 99玖玖精品| 9久热精品在线视频| www.99热这里只有精品| 99在线免费视频| 婷婷五月天激情小说网站| 人妻操逼视频。| 午夜色丁香| 欧美在线ee日韩| 亚洲亚洲人成综合网络| 97超碰人人操| 在线观看婷婷5月| 五月丁香婷婷综合| 开心五月激情婷婷| 久久婷婷五月草视频| 五月丁香WWW| 亚色网站小视频| 色情综合网| 9l视频自拍九色9l视频自拍九色9l社区| 日本天堂免费99| 久久久婷婷色五月资源网| 五月天综合色| 国产亚洲AV人片在线| 大地9中文在线观看免费高清| 欧美色婷婷| 亚洲va成人va成人va在线观看| 色情综合网| 99视频自拍| 天天骑天天操| 五月花免费视频| 久久综合激情| 丁香六月婷婷久久综合| 在线观看中文字幕亚洲| 久久人人看| 人妻综合网| 青青草成人网| 激情五月影院| 色五月综合| 精品夜夜澡人妻无码AV| 99色在线| 婷婷在线中文字幕| ..真实国产乱子伦毛片| 婷婷丁香六月天激情四射网| 五月精品99综合| 精品国婬伦V无码久久久| 六月丁香啪| 丁香婷婷五月人体| 亚洲无aV在线中文字幕 | www.刺激色网站www.| 七月激情六月婷婷综合在线播放| 大香蕉九九热| 久久伦乱| 九九99免费视频| 99热在这里只有免费精品| 亚洲激情无码久久| 五月天激情综合10p| 亚洲激情网站| 婷婷丁香亚洲色综合91| 色停停香蕉视频| 亚洲激情五月天| 青青草伊人婷婷| 1024久婷| 五月丁香啪啪啪综合网| 久久最新色色色| 色五月六月婷婷| 亚洲天天| 人人干av| 国产精品久久久久久喷浆| 日韩在线看AV| 丁香五月 激情文学| jiujiujiuwuyuetian| 欧美成人无码一区二区三区| 婷婷成人丁香色情基地30| 99在线小视频| 超碰成人在线观看| 丁香六月天| 九九热狼人| 人妻激情在线| 都市激情蜜桃婷婷五月天| 五月色无码| 99久久五月婷婷| 99精在线| 草榴成人影片| 99干视频| 五月丁香色狠狠干大屄| 五月丁香成人视频| 涩涩五月天| 婷婷丁香色五月天| 久9久9久9久9久9久9| 一本久久亚洲五月婷婷| 狠狠色成人影片| 亚洲天天操| 老美AA片| 影音先锋一区| 爱草视频在线观看| 操日视频| 五月天色综合| 大香av| 天天爽—爽| 婷婷六月天| 色色婷婷丁香| 97超级操操| 久久99热这里| 亚洲综合另类| 色欲一区二区三区精品A片| 久久婷婷五月综合啪| 综合在线网| 香焦网五月天| 精品亚洲国产成AV人片传媒| 97色久| 蜜臀嫩草| 香蕉综合在线| 嫩模草| 丁香九月婷婷综合| 五月天激情电影| 国产激情综合五月久久| 婷婷丁香成人五月天| 啪啪啪啪五月天| 操碰91| 婷婷综合干| www.91有码.com| 日韩成人AV在线播放| 五月天婷婷色综合| 色一区高清| 亚洲AV日韩无码| 日韩熟女啪啪视频| 亚洲avjiujiur91| 五月婷婷日| Caoub青青超碰 | 99综合| 野外99热| 五月天伊人手机在线播放AV| 六月色狠狠色| 天天操夜夜肏| 51国精产品自偷自偷综合| 久久3级片| 色色色在线播放| 亚洲色夜| 玖玖九九9999在线观看视频精品| 久久99热这里只有| 秋霞AV淫| 综合亚洲AV| 狠狠插狠狠| 亚洲精品又粗又大又爽A片 | 精品在线网站| 98色花堂98t.R| 色八戒操婷婷| 就爱射中文字幕资源网| 色欲天天综合网| 亚洲五月婷婷| 六月丁香中文字幕| 四月婷婷五月丁香| 丁香婷婷婷五月| 六月色丁香婷婷| 日日干夜夜撸夜夜骑| 欧美日韩999| 五月丁香啪啪网| 婷婷伊人网| 噜噜色五月| 色丁香五月| 色婷婷色| 丰满人妻一区二区三区| 黄色aa观看aaguochan| 午夜色丁香| 激情亚洲五月| 欧美天天干天天草| 欧洲电影在线观看免费版英语版| 婷婷久久免费看| 亚洲中文字幕av| 99精品这里只有免费视频| 无码激情| 五月丁香久久精品在线观看| 亚洲五月婷婷| 天天噜日日噜综合无码| 99ri在线视频| 99热这里都是精品| 婷婷六月色| 婷婷中文字幕| 大香蕉啪啪网| 婷婷丁香五月视频| AAA级久久久精品| 五月天色官网| 亚洲成人日韩无码精品| 色情五月天婷婷| 婷婷激情五月天激情小说| 激情开心五月天婷婷基地丁香社区| 激情婷婷五月综合| 欧美一级操逼视频| 丁香五月天天| 五月天亭亭俺也| 色婷婷综合综合网| 丁香六月欧美| 色欲Av五月天| 人妻无码视频网| 欧美日本一区二区三区| 日韩天堂久久| 欧美激情五月天| 婷婷五月天色色| 婷婷六月色| 亚洲十月婷婷综合| 九九精品大香蕉| 婷婷娌伦网| 开心六月婷| AA片在线观看视频在线播放| 婷婷五月精品中文字幕| 久久99免费视频网站| 99男人的天堂| 99精品在线播放| 思思热在线视频精品| 六月丁香婷婷开心综合基地| 欧美日韩成人h| 99视频在线播放大全| 美女天天久久| 99热 精品在线| 亚洲婷婷欧美婷婷| 欧洲不卡视频| 亚洲精品久久久无码| 亚洲色A| 五月丁香好婷婷A片网| 超碰99在线| 婷婷黄色五月天在线视频| 色色色1网址| 激情五月丁香六月综合AVXXXX| 艹天天射| 色五月婷婷在线| 97操操| 香港九九六区八区99| PORNY九色9l自拍视频成人| 婷激情五月天视频导航| 五月 婷 久| 久久五月激情综合| 五月天婷婷激情小说| 丁香五月婷婷高清| 久久婷婷成人综合色怡春院| 韩国婷婷丁香五月| www激情网站| 色狠狠色噜噜AV天堂五区|