免费国产精品自在自线-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
返回資訊列表
中文字幕乱码亚洲精品一区| 99视频极品在线香蕉| 5月婷婷综合| 日产精品久久久久久久蜜臀| 久久人人看| 人人舔人人色人人高潮| 日韩欧美成人片| 婷婷五月天丁香| 日本老女人黄页在线播放| 国产肥白大熟妇BBBB视频| 婷婷在线激情| 五月丁香六月婷婷久久久综合| 九九99男女视频在线观看| 婷婷午夜天| 人妻 性久久久久久| 91肏| 丁香九月综合| 天天日日综合| 婷婷综合激情五月综合| 激情五月天激情网| 五月婷在线| 欧美成人猛片AAAAAAA| ji'qi'luan'ren'lun| 人人亚洲| 五月丁香色色综合| 97久久香草精品视频| 香蕉97碰碰碰超视精品| 99精品视频播放| 国产67194| 26uuu欧美亚洲日韩| 日韩精品电影| 日都一级A片| 97超碰,人人舔,人人操,人人摸| 亚洲五月婷婷| 丁香五月偷拍| 五月天精品| 狠狠操天天操天天操| 九九色之九九色之88| 热成人网| 色婷婷裸体色性在线| 99亚色色色| 亚洲 视频 导航 一区| 久9综合| 丁香五月婷婷啪| 五月婷婷和六月| 婷婷天堂综合| 亚洲午夜精品久久久久久人妖| 99久久五月丁香野外| A片试看120分钟做受图片| 综合久久9| 人人摸人人搞| 亚洲婷婷五月| 九九色欲网| 91人人爽久久涩噜噜噜| 亚洲九九免费| 天天日夜夜操五月| 欧美日韩AAA| 欧美性丁香色色五月天综合爱爱| 思思热再线视频| 婷婷五月深深的爱| 天天xxxxxx天天日| 夜夜干夜夜操| 黄色成人网站在线播放| 中文字幕在线播放视频| 99亚洲天堂| 婷婷五月天色色| 久久丁香| 99超超碰| 久re热视频| 婷婷丁香www视频日本韩国| 五月天激情综合网| 国产超碰在线| 五月丁香色狠狠干大屄| 天天舔天天爽| 九九99精品视频在线观看| 丁香五月狠狠在线观看| 五月婷婷六月婷| 伊人久久婷婷五月天激情四射| 五月丁香好婷婷A片网| 亚洲精品乱码久久久久久综合| 色情·com| 五月丁香久久综合| 激情六月综合| 色五月AV| 色婷婷AV在线观看| 色色色色欧洲| 激情五月丁香六月| 97色色网| 中文网婷婷字幕婷| 九九九九九无码| 日韩精品色| 婷婷五月精品中文字幕| 婷婷天堂综合| 大香蕉久久伊人网| 激情婷婷丁香五月天小说| 永久99免费视频网站| 六月丁香婷婷天堂| www.婷婷五月| 中文字幕综合色| 色婷婷情片| 色情婷婷| 丁香五月六月综合激情| 欧美成人AAA片一区国产精品 | 成人 视频免费观看网站| 亚洲久久激情| 9久久久| 天天开心婷婷丁香五月| 99在线观看视频| 久热大香蕉| 国产成人精品一区二三区熟女在线| 99视频在线9| 色99婷婷五月天| 久久久中文| 极品人妻videosss人妻| 久热这里只有精品99re| 色www.con| 思思热这里只有精品视频666| 9这里只有精品| 丁香六月婷婷久久综合| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 97se视频在线| 免费观看日韩成人av| 99自拍视频在线| 99热精品9| 婷婷五月天AV在线| 正宗黄色毛片| 丁香六月婷婷综合啪啪| 性生生活大片又黄又| 超碰97干| www.9797国产| 99日视频在线| www.久久av.com| 色情婷婷五月天| 九九精品碰| 人人色AV| 免费无码毛片一区二区A片| 久婷久婷| 99热在线观看精品| 亚洲成人网址在线观看| 五月丁香激情欧洲啪啪| 国产精品色情AAAAA片软件| 亚洲无码黄色| 五月丁香婷婷爱| 色.五月综合网| 久热久色| 操人无码| 婷婷五六日| 婷婷成人视频| 这里有精品99| 极品人妻VIDEOSSS人妻| 丁香婷五月天| 一级片操逼视频| 亚州精品色情无码A片| 色五月播五月| 91丨九色丨熟女|新版| 五月婷婷五月丁香| 色五月婷婷综合在线| 伊人久久丁香婷婷六月五月综合| 超碰v| 26uuu视频欧美| www色五月| 五月婷婷亚洲色图| AV在线免费播放| 97人妻碰碰碰久久| 婷婷香五月天| 五月丁香综合伦理片| 激情开心五月天| 激情婷婷| 91av传媒高清在线视频网| 色色热99| 丁香婷婷成年| 99∨VTV| 人人操操| 日韩啊啊啊| 婷婷丁香六月五月天| 色情婷婷五月天| 五月丁香六月婷婷综合在线| 人人色人人弄人人操| 激情五月天网页| 色天使色综合| 91在线日| 五月婷婷黄色视频| 97碰人人操| 人人妻人人澡| 五月天另类综合网| 婷婷五月天丁香久久| 久久香蕉丁香| 1024日韩| 激情综合激情五月一起草| 日本全黄一级999| 狠狠狠狠狠狠| 四五月婷婷| 国产精品第一国产精品| 激情五月丁香激情综合网| 20253AV| 丁香婷婷性久久| 久九色| 丁香综合网| 99这里的视频都是精品| 午夜激情久久| 天天综合色| 精品五月视频婷婷在线观看| 91re色综合视频| 五月性色| 天天粽合合合合| 丁香五月-激情综合| 久久久性爱视频| 991国产精选视频在线播放下载| 综合色情网| 婷婷五月天直播| 国产高潮白浆一区二区| 99热这里只有精品9| 五区毛片七区毛片| 久热2025无码| 中文字幕AV在线播放| 久草热8精品视频在线观看| 26uuu亚洲欧美日本| 国产操碰| 六月婷婷九月丁香| 五月天久久小说| 色五月色五天色情网| 情欲综合网| 久久久99精品免费观看| 成人在线视频网| 丁香五月激情婷婷激情| 四月婷婷五月色综合| 久久44| 久青草影院| 综合婷婷都市激情| 色婷婷五月天天天干天天操天天爽| 色碰干| 大香焦啪啪啪| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 五月色影院| 亚洲色在线观看| 色婷婷色五月另类综合| 久久伊人婷婷| 97色97干| 九九综合网色全集| 色婷婷瘦婷婷日韩| 久热99久热| 亚洲日韩一页精品发布| 开心五月婷婷激情| 99热这里只有精品在线观看| 日本久久精品| 色婷婷久久| 天天拍久久| 狠狠色色| 丁香五月婷婷综合视频| 五月婷婷与六月丁香图片激情| 久久人人九| 啪啪操网| 停停综合色色| 大香蕉狠狠爱主页| 9九色首页| ZpRSw| 久久小说网| 99人人干| 变态 另类 在线| 婷婷色婷婷| 婷婷狠狠操| 激情九月综合| 激情五月影院| 三级av在线| 欧美搡BBBBB摔BBBBB| 午夜丁香婷婷| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 5月婷婷性视频| 五月六月丁香激情视频| 亚洲激情无码久久| 丁香综合伊人AV| 丁香五色月婷婷网| 天天插天天很| www.夜夜.com| 丁香五月在线播放| 亚洲精品视频在线播放| 五月丁香婷婷综合网| 天天插天天射| 五月婷婷影| 五月丁香色| www.jiujiujiu| 日韩99视频| 99综合自拍| 天天xxxxxx天天日| 婷婷深爱五月| 亚洲中文字幕AV| 色色五月丁香婷婷| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 婷婷五月天激情小说| 五月婷婷五月天| 色婷久| 91精品无码| 五月丁香六月婷婷网| 九九性视频| 丁香五月在线观看| 色五月在线播放| 精品人妻一区二区| 丁香婷婷综合喷| 99久久.www| 色婷婷久久综合| 天天舔夜夜操www com| 国产成人VA| 91wwmm导航| 无码se| 99在线观看视频蜜臀| 久久久99精品| 色五月超碰| 六月丁香网| 99色综合久久| 亚洲精品亚洲人成人网| 久久96热| 久热免费视频| 日韩无码系列| 日韩五月天婷婷| 五月丁香六月婷婷综合| 婷婷激情综合| 99热在线看片| 综合视频五月| 大香蕉婷婷| 婷婷久综合| 4438激情网| 2014天天爽| 天天舔天天摸视频| 国产精品久久久久久喷浆| 精品九九婷婷| 色丁香在线视频| 激情图片婷婷丁香五月| 老师高潮流白浆喷水的A片| 色色九九五月天| 成人片久久网站| 丁香五月激情网| 热热久久99| 思思99热| 在线婷婷| 92久久| www久久久久久久| 91玖玖| 第四色26uuu| 91久久婷婷| 91/九色黑人| sesesesezonghe| 天天在线XXX| 国产精品久久久爽爽爽麻豆色哟哟| 精品99在线| 热久久77777| 91超级碰碰| 亚洲成人无码片| www.操逼comm| 无码免费人妻A片AAA毛片西瓜| 色婷婷色情| 婷婷婷色五月| 日日干日日| 欧美性爱五月天| 久久综合五月天| 五月色亭丁香| 青草少妇激情| 人人叉久| 五月丁香欧美综合免费视频| 夜夜爽77777妓女免费下载| 99久久婷婷| 久久久久这里都是精品| 岛国AV网| 激情综合4月| 色色色成人网| 99在线观看亚洲| 97碰| 四虎成人精品永久免费AV九九| 五月天综合色| 风流少妇A片一区二区蜜桃| 五月丁香婷婷成人版| 天天操,夜夜骑| http:色情日本com| 九九婷婷五月天影视| 九九综合久久| 丁香六月视频| 色色综合网www| 思思色综合网站| 亚洲五月六月婷婷| 在线1青婷| 久久五月天 91| 99色在线观看视频| 无码A片一区二区免费| 大香蕉院线| 五月婷婷伊| 婷婷五月18永久免费视频| 丁香影院五月综合| 五月天天综合| 欧日美女Va| 97碰碰碰免费公开在线视频| 天天干天天爽天天操| 热99一二三| 97碰超级人人看| 欧美一级色| 天天日天天狠狠操| 秋霞少妇AV网站| 天天成人丁香美女AV| 亚洲成人综合网在线免费观看| 久久久久久久久人妻| Www.狠狠| 99综合网| 久久人妻乱| 99九九玖玖| 色综合五月天| 天天爽免费视频| 欧美激情中文字幕| 大地9中文在线观看免费高清| 亚洲Av入口| 精品动漫 无码av| 激情婷婷色色| 狠狠久综合| 激情精品久久| 激情婷婷丁香| 婷婷丁香久久五月综合| 97碰成超视频免费视频| 五月综合色| WWW,婷婷,COM| 五月天婷婷六月激情网| 久久伊人婷| 色色五月婷婷| 九九热在线视频观看| 婷婷精品视频| 超碰97色| 精品少妇人妻AV无码专区偷人 | 综合激情网| 92久久久| 欧美精品XXXXBBBB| 91爱操| 成人狠狠成人狠狠成人狠狠成人狠狠| www.com亚洲网站在线免费| 激情另类综合| 99精吕视频在线观看了| 丁香婷婷少妇| 国产激情久久久| 日日夜夜九九| 婷婷色色五月天| 欧美激情综合色综合色| 婷婷伊人无码| 一区二区成人电影| 97在线日本| 9+1视频网址| 综合99久久天天综合| 国产精品-第3页-91JQ就要激情网91JQ5.JQJQ926.XYZ | 人人摸人人澡人人| 婷婷5月九九| 婷婷人人操| 国成人网| 九九九九精品精| 久99| 五月婷婷啪啪| 久久色频| 97干在线视频| 日韩超碰在线| 亚洲精品成人片在线播| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 2025天天爽天天摸| 色八月婷婷| 偷偷操99| 五月叮香啪| 大香蕉久久视频久久视频 | 丁香五月开心亚洲| 99视频在线| 激情五月com| 久久亚洲婷婷综合色五月| 99玖玖在线视频| 成人片在线免费看| 91久女| 亚洲V国产V欧美V久久久久久| 婷婷伊人激情婷婷| 丁香九月久久| 久操人妻| 婷婷五月天AV网| 伊人干综合| 色月九九| 99视频在线观看视频| 久久男人网婷婷| 9热成人在线视频| 亚州美女| 色婷婷第四色| 97热久久| 永久的网站AAAA | 99精品久久久久| 91ncm视频| 亚洲成人免费电影| 色青青视频| 丁香5月啪啪| AV国产有码| 丁香五月婷婷天| 五月花亭亭| 丁香婷婷久久综合在线| 色综合久久88色综合天天99| 五月天色婷婷网| 九九热只有精品| 999热在线视频| www.日日夜夜.com| 97婷婷色| 五月丁香网站| 中文字幕亚洲-区久久99婷婷| 色五月大香蕉婷婷| 久热九九| 五月婷六月天| 成人电影在线免费试看| 涩涩网五月天| 综合网五月| 九九热re99re6在线精品| www.五月婷婷久久.com| 99在线精品免费视频| 中文字幕婷婷9月天| 91碰九色| 国产日产成人亚洲欧美国产VA| 思思视频这里是精品| 人妻久久久久久久久妻久久久久久久久| 玖玖资源部在线播放| 五月天伊人日日噜影片AV| 婷婷五月天综合色| 色婷婷久久综合| 开心激情站| 日韩高清久久| 亚州性爱99| 久久伊人大香蕉| 99久久97| 人妻五月天激情开心网| 91碰| 婷婷性爱综合| 人妻久久久久久久久妻久久久久| www.91久久| 色婷婷小说网| 精品久久穴| 级情九色| 日韩精品一区二区亚洲AV观看 | 日韩黄黄| 9久久久| 西瓜美女a片| 色婷婷电影| 狠狠色丁香久久综合婷婷亚洲成人福利 | 日本黄色在线观看| 色婷婷色婷婷五月| 99热个人在线| 五月天开心婷婷久久| 在线看片av| 96色婷婷| 丁香五月六月婷婷殴美综合| 变态 另类 在线| 婷婷六月丁香激情| 淫视馆aV二区一区| 9有码中文| 五月天涩涩| 丰满少妇乱A片无码| 俺来也综合网精品一区| 婷婷综合网站| 欧美色色色色色| 亚洲顶级VA在线观看-高清完整版在线影院观看-S022AV | 五月丁香啪啪综合| 色私五月婷婷| 欧美日韩国产一区| 99人妻碰碰碰久久久久视| www.五月天婷婷| 丁香婷婷婷婷十二月在线观看视频| 2020久久婷婷五月| 激情五月天综合网| 丁香激情六月天婷婷| 色五月综合| 天天色·欧美| 另类少妇人与禽zOZZ0性伦| 玖玖国产视频一区| 成人精品在线| 狠狠狠狠狠狠草| 狠狠狠狠狠| 综合激情网五月激情| 五月天激情久久| 99爱视频精品在线观看| 极品人妻VIDEOSSS人妻| 五月婷无码| 成人国产欧美大片一区| 丁香欧美| 婷五月天丁香婷五月| 开心婷婷中文字幕| 色九月婷婷综合| 99久在线精品99re8热| 丁香啪啪| 三级黄色大片视频| 丁香五月婷婷六月| 五月天婷婷久久| 美女va| 欧美成人精品A片免费一区99| 人妻久久久久久久久妻久久久久| 亚洲正能量欧美| 婷婷六月久久综合导航| 伊人网碰碰| 日日爽日日| 婷婷五月天伊人在线| 人妻丰满精品一区二区A片| 五月开心婷婷| 亚州综合色| 91色久| 丁香五月骚喷水视频| 啪啪日本欧美| 超碰在线观看9| 人人爱干人人爱草| 丁香花综合永久入口| 涩涩五月天| 97色色色色色色色| 亚洲成人综合网在线免费观看| www.夜夜| 激情婷婷综合| 五月情涩综合婷婷| www.婷婷五月天| 天天肏天天爽夜夜爽| 狠狠se| AA丁香综合激情| 丁香五月婷婷色播艳门照| 狼友超碰| 久综合4| 激情九月综合| 日日日日操| 久久婷五月天| www,99色| 专区无日本视频高清8| 日韩AAAAA| 熟女婷婷网站一婷婷五月一丁香婷婷一婷婷激情网 | 大香蕉福利导航| www.色9| 欧美一区二区三区不卡影视| 欧美日本黄色| 九月色婷婷综合亚洲| 婷婷色婷婷| 常久最新免费的色吊丝| 99精品这里只有免费视频| 探花搜索结果 - 黄上黄| 夜精品无码A片一区二区蜜桃| 五月综合色| 六月婷色六月| 精品国产人人爱人人| 五月婷婷黄| 国产AV影片| 可以看的AV| 天天激情欧美美女| 五月天激情小说婷婷基地| 综合久久综合| 99五月婷| 亲子乱av一区二区三区的| 俺去也婷婷| 成人精品在线| 天堂色婷婷| www.狠狠艹| 色狠狠图片| 六月婷婷成人| 97色色色色| 99视频九九热| 五月间天堂综合| 婷婷香蕉香| 日韩黄在免| 色五月首页| 五月婷婷激情网| 精品久久99码| 成人AV在线网站| 九月婷婷激情| www.久久婷婷| 激情丁香久久久久久| 五月激情婷婷偷拍| 欧美色必爱| 99精品丁香五月| 久久人妻少妇嫩草AV| 99热这里都是精品| 午夜少妇在线观看视频| 欧美大肥婆大肥BBBBB| 五月亭亭开心网| 丁香婷婷影院| 五月丁香久久| 日日躁夜夜躁狠狠久久AV| 五月天激情网图片| 日韩少妇内射免费播放| 99人妻碰碰久久久禁片| 99婷五月| 精品一区二区三区三区| 久久综合网桃花| 久久嘟嘟丁香| 激情综合在线观看| 色五月天.con| 色国产五月| 激情五月com| 99热在线观看亚洲区| 五月情婷婷| 五月丁香六月婷婷激情视频在线观看免费| 狠狠干在线| 九九大香视频| 欧美色频| 亚洲久久天堂| 久久在线92| 九色视频91| 91九色超碰| 国产婷婷五月| 色综合com| 少妇激情五月婷婷| 婷婷丁香人妻天天久久| 午夜成人综合| 婷婷久久网| 五月天丁香婷婷网| 国产九九一区二区三区| 婷婷伊人綜合中文字幕| 初夜av| 六月丁香五月天| 久久综合丁香| 国产精品久久久久久妇女6080| 九月激情婷婷丁香| 五月丁香久久呀| 激情五月天在线观看色婷婷| 精品免费99| 亚洲AV网址| 中文毛片无遮挡高潮免费| 激情五月婷色| 综合激情伊人影视在线| 激情五月四色| 色五月在线播放| 欧美十二区| www,色婷婷| www.狠狠操.com| 丰满人妻一区二区三区| 中国女人做爰A片| 99视频在线观看视频| 99热综合在线| 色播五月天激情| 99欧美| 成人资源在线| 久久 这里只有精品1| 99久久婷婷五月综合| 嫩草AV久久伊人妇女超级A| 九色激情网| 五月六月激情婷婷| 亚洲精品五十一区| 激情久久久久久久久久| se色婷婷视频| 五月六月丁香激情视频| 天天搞天天爽| 色婷青青| 五月激情四射婷婷丁香| www999日韩精品| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 强伦轩人妻一区二区电影| 五月色婷婷夜色| 日韩黄黄| 激情小说视频图片| 玖玖爱导航| 在线观看玖玖资源免费观看| 六月丁香五月婷婷| 大香蕉伊人99| 婷婷成人视频| 日逼影音先锋AV男人资源站| 丁香五月天婷婷久久| 五月婷婷黄色| 中文字幕AV网址| 六月丁香五月天| www.婷婷com| 开心五月丁香综合久久| 久久久久这里只有精品| 色色免费网站| 9久国产| 色婷久| 2025色婷婷| 伊人免费视频9| 中文字幕簧片| 亚洲国产精品二二三三区| 99免费综合网| 亚洲无码色色| 五月天色色激情综合| 欧美色久| 五月丁香久人妻中文| 狠狠高潮精品亚洲1| 97超碰色| 激情五月,婷婷五月,丁香五月| 五月综合人妻| 999热成人在线综合网| 日本V在线观看不卡视频网站| 成人欧美一区二区三区在线观看| 激情久久久| 日韩成人网站精品久久大全| 六月天婷婷| 婷婷五月花免费视频在线| 丁香五月天视频| 天天操天天爱天天日| 99热超碰| 视频综合网| www.99视频| 韩国情人在线电视剧免费观看高清版全集| 天天插天天射| 欧美婷婷五月激情| 激情五月综合网丁| 亚洲第79页| 视频在线免费观看欧洲乱码| 五月婷婷AV| 超碰在线精品| 久99热| 激情五月丁香在线观看直播| 中文超碰视在线| 一级性爱视频| 97精品自拍| 亚洲超碰在线| 婷婷六月天亚州| 91九色成人原创视频| 26uuu丁香婷婷五月| 久热婷婷| 99视频在线观看地址| 久久色五月天综合网| 懂色av蜜臀av粉嫩av永陈冠希| 一月婷婷色色| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 丁香五月婷婷六月婷| 99视频免费播放| 人人操av| 凹凸7777操操操| 五月伊人91| 99这里只有精品| 性色欲情 网站| www.色多多婷| www.射伊蕉婷婷| 欧洲婷婷五月天| 97碰 在线视频观看| 色情久久久| 538久久| 97在线干| 五月婷婷激情综合| 79精品视频在线观看,| www.激情五月| 停停五月丁香| 99热欧美在线观看| 99在线小视频| 四色永久成人网站| 丁香六月久久| 日日干综合| 91九色精品| 变态 另类 在线| 久9久9热久热| 国产资源91在线| 婷婷久久久| 久久久久九九九九视屏小说88| 色婷婷大香蕉| 99热这里只有是亚洲国产| 久草五月| 99啪在线视频| 国产69精品久久久久999小说| 丁香五月婷婷大香蕉| 丁香五月激情婷婷激情| 97干免费视频| 日本天堂网站99| 狠狠干婷婷| 日本在线视频播放91| tingtingzonghewang| 99碰碰视频| 婷婷五月综合基地| 久碰视频| 久久久8| 久久99热这里只有精品| www.伊人天堂偷偷婷婷| 91久久久久久久久久久| 91日精品| 九九精品9| 777影视理论片大全在线观看| 欧美精产国品一二三区| 天天色综网| 狠狠色五月| 亚洲日本激情| 五月天婷婷激情综合| 99热大| 99九九99九九九视频精彩| 丁香五月电影| 色五月婷婷91| 成人AV片播放| 色婷婷五月天不卡| 日逼免费视频 | 97干在线| 五月激情五月婷婷五月天在线| 91超碰人人操| 久久婷婷激情四射五月天| 蜜臀久久99精品久久久久久酒店| 少妇激情五月天| av在线免费网站 | 丁香五月天综合| 婷婷综合色五月天| 天天做综合网色综合| 思思99精品视频在线观看| 激情欧美婷婷| 激情五月综合网| 五月丁香综合啪啪| 91偷拍视频| 五月婷婷啪啪网| 综合激情在线视频| 久草视频一,二三四| 免费看成人747474九号视频在线观看| 亚洲综合欧美色丁香婷婷888月图片| 五月美女婷婷风骚| 色婷婷丁香女女| 五月色情| 五月精品99综合| 欧美A级成人婬片免费看理论| 婷婷丁香社区| 香蕉AV777XXX色综合一区| 野战J办公桌椅H| 五月美女婷婷风骚| 激情五月天.色网| 9久9久9久女女女九九九一九| 欧美偷偷操| 丁香五月天激情四射网络不好| 色激情网| 日本久久人| 强伦轩人妻一区二区电影| 在线网黄| 密黄站| 天干天天干天天天天天| 99热首页在线30| 天天夜夜六月丁香五月婷婷老师| 人人爽欧美婷婷久久久五月丁香| 婷婷五月激情图片| www..999热久| 狠狠综合网| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 五月天婷婷色在线视频免费观看| 丁香五月激情宗合| 日日色五月天| http://www.sd-xiangsu.com/| 天天日天天草| 丁香久久| 成人美女网| www.爱婷婷.com| 亚洲av成人在线| 99热99思午夜精品| 色五狠狠| 婷婷99中文字幕| 嫩BBB槡BBBB搡BBBB| 狠狠操狠狠色| 六月丁香激情| 久久er这里只有精品| 91啪级电影| 可以看的av网站| 欧美性爱五月天| 九九九激情网| 超碰成人在线观看| 丁香五月在线观看综合| 99综合网| 伊人综合网站| 狠狠色大香蕉| 色国产五月| 五月亭亭网成人在线视频| 26uuu精品一区二区| 色色色com| 久久9精品| 操一操插一插| 婷婷九月丁香| 日韩日比视频在线| 婷婷色网| 色综合色色| 欧美激情综合色综合啪啪五月| 欧亚中文A V| 五月婷婷伦理| WWW,五月| 日逼影音先锋男人资源站| 日韩另类| 五月丁香婷婷综合视频| 激情五月综合| 99精品久久久久久久| ss99热| 色九网| 丁香青青五月天| 亚洲性图一区二区三区| 亚洲综合无码| 9999热免费视频视频| 婷婷丁香77777| 99视频在线播放大全| 丁香激情综合| 五月婷婷与六月丁香图片激情| 激情综合五月婷婷| 伊人婷婷福利网| 五月丁香婷婷福利| 成人在线不卡| 伊人久久中文网| 五月婷婷六月奇米网丁香| 丁香五月五月婷婷| xx久久| 天天狠狠六月婷丁香影院| 中国女人内射6XXXXX| 狠狠舔| 大香蕉啪啪| 六月婷婷视频| 婷婷五月另类网站| 六月婷婷综合网2| 婷婷五月天777| 色五月婷婷影院| 婷婷涩五月| 狠狠干综合| 久久五月天免费网站| 日本熟女内射| 婷婷中合| 爱的综合网| 国产暴力强伦轩1区二区小说| 亚洲九九夜夜| 九九99免费视频| 91婷婷色| www.jiujiujiu| 久综合九| 久久精品99久久久久久| 深爱激情五月婷婷| 丁香五月 性爱| 五月丁香六月情婷婷久久| 噼里啪啦完整版中文在线观看| 五月丁香综合啪啪啪啪啪| 色中色综合| 99九九精品| 婷婷色丁香五月| 玖玖爱伊人| 色婷婷av在线观看| 九九九这里只有精品| 91操碰| 色色是色N一| 色色五月丁香| 五月婷成人网| 4438亚洲欧美| 丁香激情婷婷网| 99热在线极品极品| 可似看的AV| 冬月かえでAV无码播放| 婷婷色综合av| 五月天丁香综合久久国产| 国産精品| 无码se| AA丁香综合激情| 色欲五月天| 99在线视频网址在线观看| 婷婷五点亚洲| 天久久久久| 久久曰曰| 色情五月丁香婷婷网| 国产又色又爽又黄又免费| 五月综合六月婷婷| 97日本在线| 色色吧综合| 五月婷婷视频啪啪美女| 黄色av网站在线免费播放| 九九热在线观看视频| 中文字幕AV在线| 国产精品久久欧美久久一区| 99er6热在线观看精品6| 2015WWW永久免费观看播放| 久热欧美| 五月综合亚洲| 吾爱AV导航| 五月婷婷六月丁香| 思思色综合网站| 婷婷五月a| 色播五月婷婷| 五月婷丁香亚洲| enecarbon-materials.comWu染请涟系Bao护@wip1688| 日良久久| 久久九九99字幕| 97成人在线视频精品| 五月天色影院| 五月婷婷丁香六月| 人人干人人看| 精品国产va久久久| 日韩亚洲视频| 99操九九网| 乱码操操| 色婷婷九月综合| 国产免费一区二区三区三州老师F1F1.CC | 热热久久精品视频| 亚洲电影中文字幕| 另类视频一区| 五月丁香久久丝袜啪啪| 91精品91久久久中77777久久玖玖九九| 综合色五月| 天天做天天摸| 性色欲情 网站| 91色欲综合| 超碰在线99| 丁香五月影院| www 五月天 com| 激情黄色小说色五月| 91色综合网站在线| 可以直接看的av| 99热精品在这里| 天天日夜夜B久久| 91大屁股精品| 色和综合网| 激情五月综合网| 九九色综合九九色| 天天草天天爱| 色域五月婷婷丁香| 婷婷99狠| 色色五月天婷婷| 狠狠操狠狠| 俺去也在线www色官网| 久久婷婷视频| 婷婷 丁香 久久| 久久婷婷丁香花综合网| 天天色天天日| 国产精品视频免费看| 狠狠五月天激情| 99爱在线| 久久精彩综合视频| 丁香五月婷婷激情尤物| 奇米色大香蕉| 国产性av| 激情五月综合网| 婷婷操逼| 色色五月婷婷久久| www,99热| 五月婷婷手机在线| 日日噜噜久久婷婷五月天 | www.91在线观看| 五月婷婷人妻| 丁香五月婷婷激情视频播放| 视频综合网| 超碰亚洲天堂| 伊人网大香| 337p大胆噜噜噜噜噜91Av| 婷婷九月丁香| 五月丁香色| 色永久| 免费视频这里只有精品| 日在线V视频在线播放| 五月花综合网| 五月总合激情网| 久久五月婷| 大香蕉婷婷色| 9久久婷婷国产综合精品性色| 九九美女视频| 青青操成人福利| 亚洲性图一区二区| 99热这只有| 六月婷婷天天操夜夜爽视频| 色色五月天丁香婷婷| 丁香婷婷色情| 在线天堂9| 99狠狠色| 成人一级片| 91热在线| 色99在线| 九玖视频这里只有精品| 精品视频这里只有精品| 99热99ai| 色综合爱综合| 精品人妻久久久| 五月综合婷婷久久在线| 99热这里只有免费| 亚洲热久久| 五月天色区| 成人一级片| 婷婷午夜天| 99视频自拍| 少妇人妻丰满做爰XXX| 日韩艹比| 五月天综合色| h亚洲| 色色丁香| 五月丁香婷色| 激情色视频| 激情五月婷婷| 色香蕉影院| 六月色婷婷| 婷婷大香焦| g00d人体西西| 91日本在线观看| 亚洲成色综合网站免费观看| 黄桃AV无码免费一区二区三区| 中文字幕网伦射乱中文| 九九伦子片| 色女人久久| 五月天婷婷三级黄| WWW.99热| 99亚洲视频| 亚洲色色色| 黄色激情网站在线观看| 丁香五月开心亚洲| 女性自慰系列第五页| 婷婷天天综合| 婷婷五月天小说| 五月天六月色| 五月天丁香啪啪网| 97碰碰在线观看视频| 色婷婷婷av| 五月草影视| 五月丁香婷婷基地| 男同91| 秋霞日本免费毛片A片| 丁香六月AV| 五月天婷婷无码视频| 日日噜狠狠| 大香蕉久久综合网| yellow视频在线观看91| 丁香六月激情综合网| 亚洲婷婷五月天| 五月丁香| 国产免费av在线| 美臀自射自家人妻| h在线看免费版在线看| 99热亚洲| 丁香六月| 六月婷婷狠狠做| 9l视频自拍九色9l视频自拍九色9l社区| 天天综合精品| 日本久久超碰| 欧美婷婷五月天综合| 中文字幕成人| 亚洲电影中文字幕| 婷婷丁香六月五月天| AV性爱在线| 熟妇人妻中文字幕无码老熟妇| 欧美婷婷丁香五月| 色五月丁香一区在线| 91色噜噜狠狠狠狠色综合| 爆乳熟妇一区二区三区四区| 婷婷91| 人人干人人看| 欧美色男人网站| 日本老女人黄页在线播放| 久久99热在线观看| 亚洲精品无人区| 五月婷婷激情刺激| 五月婷婷亚洲色视频| 琪琪色综合网站| 国产1区2区3区在线观| 思思久久精品| 香蕉影院色| 婷婷六月丁香开心深深爱| 色五月大| 9久热在线精品| 婷婷五月久久| www.色婷婷| 九九Av| 五月色婷婷中文字幕| 五月天婷婷色色首页| 精品99只有。| 欧美大片免费播放器| 金桔一区二区ab地址| 4438激情网| 97日本在线| 婷婷久久亚洲| 国产99久| 日本婷婷色| 色六月天| 538在线精品| 有码人妻久久| 久久婷婷色| 丁香五月情色| 新97人人上人人| enecarbon-materials.comWu染请涟系Bao护@wip1688 | 五月六月播婷婷| 色五月成人| 色婷婷免费视频| 成人版视频在线观看| 日本丁香久在线| 日日干日日| 亚洲四色五月| 欧美Va日本Va| 色综合香蕉| 五月丁香色综合| 五月婷婷六月丁香玖玖玫瑰91| 思思热视频在线观看| 97色视频网| 丁香五月影院| 91精产品自偷自偷综合| 五月停停999| 超碰激情网| 久久五月天婷婷| 色久婷婷五月| 国产精品第一国产精品| 婷婷六月色情| .肏屄视频一区二区| 99乱视频|