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视频内射三四| 亚洲国产99| 日日操,夜夜爽| 狠狠色综合精品视频在线| 婷婷午夜天| 激情五月婷婷在线观看| 99热这里是精品| 色婷婷久久| 天天色粽合合合合合合合| 二色AV| www.久热| 亚洲第二AV| 91色九| 99热免费精品热久久66| 99热这里只有精品66| 超碰免费大香蕉| www.99视频| 中文字幕视频色婷婷| 亚洲成人av在线观看 | 丁香五月天黄色片| 久热这里只有精品66| 五月天成人网在线观看| 五月色丁香| 99久久综合狠狠综合久久| 色综合色色色色| 99操逼| 色婷婷六月综合| 综合久久99| 综合色色色| 一本婷婷丁香久久| 婷婷五月激情的图片| 欧美色小说婷婷| 色色色色网| 天天日夜夜| 97香蕉久久超级碰碰高清版| 丁香激情综合| 婷婷放心五日爱| 中文字幕色色色| 狠狠爱婷婷丁香| 99热在线里有精品| 99视频精品全部观看10| 99婷婷狠狠成为人免费视频| 五月婷婷av| 国产熟女日日骚五月丁香爱| 操骚货在线| 精品无码片| 婷婷久草| 丁香久久久| 99热这里都是精品| 99精品久久久| 天天爱天天狠天天透| 中文毛片无遮挡高潮免费| 偷偷操九九| 国产夫妻操逼内射视频| 婷婷综合久久| 骚五月婷婷| 亚洲看av的网站| 黄色成人网站在线播放| 久久一操| 五月天久久丁香| 婷婷午夜天| 久热AⅤ| 久久ER视频com| 婷婷五月激情的图片| 丁香五月天天久久综合小说| 秋霞学生妹一二级| 九九自拍网| 欧洲色区| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | 狠狠干总合| 久久婷婷久久| 色涩影院六月丁香| 五月播播| 九九视频免费| 天天干夜夜欢| 另类在线| 九九热欧美| 五月婷婷福利| 双性美人被调教到喷水A片| 婷婷色吧| 婷婷六月激情| 999精品久久久久久久| 再綫Av免费視品| 激情爱爱网站| 日韩日比视频| 日本丁香五月| 丁香久久九九99| 丁香婷婷五月六月天| site:pnnrt.com| 99人人操人人爱久久久| 天天干天天爽| 日本色色网站| 五月天婷婷丁香导航| 亚洲色图五月丁香五月婷婷| 久久99久久99精品免观看软件| 日本综合久久| 草美女在线观看视频在线播放| 亚洲va在线∨a天堂va欧美va| 国产午夜成人AV在线播放| 1024国产| 久久婷婷六月综合| 丁香六月开心| 婷婷六月天| 久久综合爱| 婷婷九月在线| 婷婷五月成人| 五月丁香啪啪啪| 久久激情网| 思思9久久| 色婷婷国色天香综合| 99re6久热只有精品6在线直播| AV动漫不卡无码免费| 激情五月天免费视频| 婷婷久久大香蕉| 91丨九色丨43老版熟女| 五月天狠狠| 亚洲婷婷91丁香| 亚洲一区二区无遮挡A片| 婷婷色色丁香| 激情婷婷久久| 操操啪| 色婷久久| 色A网| CHINESE熟女老女人HD视频| 成人va在线观看视频| 五月天综合婷婷| 久久婷婷综合网| 久久久97| 伦乱美欧| 蒲京久久无码视频| 亚洲欧美婷婷五月色综合| 麻豆精品| 五月婷婷性爱| 丁香五月98| 色色色香蕉五月婷| 99久久激情视频| 免费操超碰| 色婷婷六月天| 色婷婷视频| 思思热精品在线视频| 六月婷婷综合| 久草热8精品视频在线观看| www.国产亚洲69ty.久久久久久久久久久久| 97久久超碰| 91人妻人人操| 五月亭亭直播| 91精品91久久久中77777| 91操人| 第四色色六月色综合| 婷婷爱五月| 五月丁香成人版| 超碰69天堂| 欧美精品18| 97操在线视频| 丁香婷婷天堂| 久久婷婷五月天激情四射| 丁香六月婷婷综合| 一级AV片| 色婷婷偷拍| 色999亚洲人成色| 67194国产| 婷婷成人小说综合| 婷婷五月天Av| 夜夜爽77777妓女免费下载| 色五月色综合| 在线观看亚洲视频影院| 九九热免费| 噜色精品| 日韩AV中文字幕在线| 国产激情av| 亚洲思思热久| 99操不停| 亚洲久久激情| 99热99色| 色播播五月| 亚洲AV第二区国产精品| 欧洲色| 亚洲VA在线| 五月丁香综合啪啪| 丁香六月高清视频| 天天综合五月| 伊人久久大香线蕉精品| 东京热伊人| 亚洲AV激情五月综合网| 丁香五月婷婷国产av| 99爱视频| 开心五月深爱五月婷| 久操人| 狠狠色综合网| 99re视频精品| 色五月丁香五月激情五月激情| 色色色com| 91avse| 五月丁香狠狠爱婷婷综合| 综合久久伊人| 国产精产国品一二三在观看| 91九色国产| 大伊久久| 婷婷欧美色| 婷婷五月丁香人妻无码高清| 少妇性BBB搡BBB爽爽爽电影| 激情六月婷婷| 色色哒五月婷婷六月丁香| 久久HD| 变态 另类 在线 | 97人人操| 久久婷婷色五月| 日本美女上人| 密视AV综合在线| 日本一级一级一级一级| 99久在线精品| 五月婷婷婷| 青青热久精品视频在线观看| 久热人妻| 国产精品丝| 欧美性猛交AAAA片黑人 | 99re热视频这里只有综合亚洲| 色色欧美色色| 久热伊人| 99操碰| 久久人妻视步| 久久这里只精品66| 九九AV在线| 91丁香婷婷综合久久欧美| 大香网伊人久久综合| 五月天com| 六月丁香射婷婷欧美色图片| 久碰视频| 超碰免费人妻| 狠狠爱五月婷婷| 欧美性猛交99久久久99| 91熟妇大香蕉| 五月停性愛| 色999五月色| 九九综合色综合| 俺去啦综合网| 丁香五月激情视频在线| 干婷婷五月天| 99re在线观看视频| 色久播播| a色色色色色| 国产精品色婷婷久久久精品| 美国不卡视频| 久人人操| 欧美日韩五月婷婷| 国产精品视频网| 色婷婷伊人激情在线观看| 欧美精品999| 九九色影视| 这里有精品| 六月丁香社区| 操操操AV| 五月丁香欧美综合| 女高怪谈在线观看| 亚洲热久久| 嫩BBB槡BBBB搡BBBB视频| 丁香亭亭久久| 丁香六月婷婷综合色| 99热这里都是精品| 91婷婷丁香| www.99精品视频| www,色综合| 久青草大香蕉| 色婷婷激情视频| 激情玖玖综合网| 国产欧美日韩综合精品一区二区| 五月丁香啪啪网| 婷婷丁香宗合888| 99热| 99热碰碰热| 成人综合视频在线| 日韩另类| 性综合网| A片试看120分钟做受图片| 三男玩一女三A片| 丁香五月影院| 被强行糟蹋的女人A片| 激情小说五月天| 色五月激情网| 极品精品一区二区三区在线| Av在线资源| 禁片二区| 一起草无码| 九九热大香蕉| 色婷婷XXXXX| 99re思思热在线视频| 婷婷亚洲五| www.国产亚洲69ty.久久久久久久久久久久| 丁香五月天色| 丁香六月毛片| 免费不卡狠操美女视频网| 色天五月天在线观看视频| 夜夜撸夜夜骑| 久久久久9| 亚洲综合五月| http://www.com久久久精品一区| 色婷婷另类| 99九九中文字幕视频| WWW免费视频碰碰碰碰| 99在线视频精品| 综合婷婷| 深爱激情网噜噜色| 丁香六月婷婷| 夜夜躁爽日日| 久久视9精| 丁香操逼| 婷婷丁香激情综合色情| 久久综合网免费视频| 99久久精品网| 超碰成人av| 色五月婷婷丁香五月| 五月天色五月| 变态另类色图 | 超碰93在线观看| 欧美在线干| 丁香五月天视频| 丁香狠狠干| 人妻中文字幕精品| 亚洲成人网无码| 色插综合网| 亚洲成人噜噜| 九九色热| 性爱111111| www.日韩国产| 五月色婷婷在线观看| 婷婷激情五月天天天开心| 五月丁香人人婷婷在线观看| WWW.17C亚洲精品| 五月婷婷啪啪| 99视频日韩| 九九99九九99| 婷婷香五月综合激情| 99热免费| 亚洲精品一区中文字幕乱码| www热久久yy9| WWW.桔色成人.COM入口| 日本爆乳片手机在线播放| 色中色综合| 色色综合网www| 91碰超| 丁香婷婷丁香五月欧美人| 亚洲第一第二网站| 人人操AV| 久9久成人精品视频| 99精品视频在线免费观看| 亚洲亚洲永久无码777777| 五月丁香婷婷爱| 99亚洲天堂| 9 1 A v久久久| 五月色婷婷在线观看| 99热色在线精品| 亚洲综合久| 91丁香色| 日本啪啪视频HD| 婷婷自拍| 99成人精品| 五月天激情久久| 国产无套精品一区二区| 婷婷色网站| 久久婷婷五月天综合| 五月天六月色| 伊人玖玖网| 色天天久婷婷| se99视频| 久久婷婷内射| 丁香婷婷激情网站| 99热国品| 色婷婷影视| 亚洲成人五月天| 97天堂| 性热视频99精品| 这里只有精品视频看看| 热99这就是精品视频| 狠狠干狠狠操狠狠爱| 六月激情婷婷色| 久久婷婷五月综合啪| 欧美69久成人做爰视频| 9 99免费视频| 亚洲热视频| 美国少妇性做爰| 亚洲综合激情五月久久| 超碰男人色| 狠狠色丁香乆乆| 婷丁香久综合| 久久人人看| 一级性感毛片| 丁香美女主播视频在线观看| 无码人妻精品一区二区蜜桃色欲| 看婷婷五月天网| 天天干天天做| 人人看人人97| 操逼棍操逼| 五月婷婷丁香六月| 婷婷五月色播网| 99热资源在线| 欧美操综合| 色偷偷狠狠| 国产伦亲子伦亲子视频观看| 五月婷婷激情刺激| 五月综合色| 日韩在线观看亚洲| 99精品免费视频| 影音先锋一区二区资源站| site:picc-up.com| 五月婷婷六月丁香| 99超级碰免费视频| 久久伊人婷婷| 婷婷中文字幕网| 91jiuseshunv| 色色性爱视频| 激情碰碰碰| 天天天天天天天操| 婷婷影院A成人| 天天AV导航网| 亚洲爆乳无码精品AAA片蜜桃| 玖玖视频福利| 99色色网| 婷婷五月成人有| 99热手机在线精品| 五月色婷婷在线观看| 五月色色色| 激情五月天综合网| 婷婷无码视频| 欧美黑人大吊| 激情综合五月天| 99久久精彩视频。| AA丁香综合激情| 丁香六月婷婷缴情欧美| 99噜噜噜在线播放| 少妇久久诱惑视频| 九九色婷婷五月天| 婷婷丁香五月综合网上| 青青999| 日本五月婷| 五月天激情日色在线| 人妻久久久久久久久久久| 午夜天天精品视频| 五月四色色| 五月婷婷色在线| 精品一区二区三区木瓜| 97se在线视频| 亚洲精品色| 色色九九五月天| 97色啪| 色99在线视频| 91九色在线| 五月激情综合婷婷| 黄色av网站在线免费播放| 久久免费视频62| 99ri视频在线观看| 日本精品99网站| 99热九九这里只有精品| 国产小精品| 色久综合天天做视频| 色五月色开心开心五月| 久久色亭亭五月天| 激情综合网五月婷婷| 激情网五月天| 99性感视频| 一区二区乱视频码| 丁香五月日韩| 婷婷爱综合| 午夜不卡久久精品无码免费 | 丁香五月婷婷香| 五月丁香六月综合基地| 97精品综合| 狠狠干天天内射| 激情性爱五月天网页| 婷婷五月亚洲一本在线丁香| 五月丁香无码| 亚洲精品久久久久久久久久吃药| 婷婷五月天在线观看第二页| 日本色99| 欧美内射AAAAAAXXXXX| 99视频网| 国产AV不卡福利| 亚洲啪啪网| 在线视频另类| 国产伦亲子伦亲子视频观看| 99综合| 丁香五月天导航| 免费无码毛片一区二区A片| 亚洲色色香蕉| 色性综合| 91九九热| 色日本五月天| 激情网婷婷婷| 五月天综合网| 天天肏视奸| 五月婷婷狠狠干| 婷婷五月AA五月在线| 国产超碰av| 91热99| 亚洲九九九九| 婷婷综合色| www.色五月| 97五月天| 丁香五月亭亭六月综合激情网| 激情婷婷99| 婷婷五月无码| 婷婷色情六月| 激情美女五月天| 久久艹网| 亚洲欧洲另类| 婷婷五月视屏| 日本本土色网第一区| 色yeye色综合| 欧美大肥婆大肥BBBBB| www.夜夜操.com| 综合五月草| 丁香香蕉婷婷| 国产美女无遮挡裸体毛片A片| 久久婷婷视频| 五月婷婷开心六月激情小说| av中文在线| 久久婷婷五月天激情四射| 五月丁香激情五月天| 久草嫩草在线观看| 国产亚洲精品久久久久久郑州| 五月丁香六月激情视频| 99热久久最新地址| 香蕉婷婷| 亚洲精品成人片在线播| 五月丁久久| 色五月丁香五月| 激情五月色综合| 激情综合啪啪啪| av在线观看网址| 97精品人人A片免费看| 亚洲无码成人| 涩涩涩五月天| 黄页大全十八禁| AV大香蕉| 黄色精品五月婷婷| 色停停影院五月天| 人妻熟女一区二区AV| www狠狠| 婷婷五月天a| 成人五月天在线观看| 玖玖色资源| 亞洲自怕| 97在线观视频免费观看 | 国产在线激情视频| 99九九久久| 丁香五月天亚洲视频| 操笔无码| 激情文学 综合 色| 丁香婷婷五月天激情四射| 日本A片一区| 怡红院AV亚洲一区二区三区H| 91九色首页| 五月天婷婷乱论小说| 五月天色视频| 9999色色色色| 婷婷五月丁香基| 天天天久久久| 色色日韩网| 婷婷丁香激情综合色情| 色五月激情综合| 欧美日韩精品一区二区三区钱| 精品一二三区久久AAA片| av人人干| 91综合在线| 91色噜噜狠狠狠狠色综合| 久久婷婷五月天蜜桃| 五月婷婷干| 综合另类激情| 五月开心播播网| 超碰国产在线| 五月丁香大香蕉| 亚洲无码99| 二色av| 婷婷五月综合社区| 九九婷婷综合| 91超碰在线观看| 丁香六月婷| 天天干一干| 六月激情综合| 日本久久人| 色香久久| 性欧美日本| 99热免费精品| 色五月婷婷色| 激情小说视频图片| 亚洲这里只有精品| 97人人操在线| 五月天丁香成人| 97久久精品| 九九这里是免费的视频5| 成人丁香色| 九月丁香亭亭| 超碰精品在线| 欧美性生交XXXXX无码小说| 疯狂做受XXXX高潮A片| 五月婷婷激情| 国产黄色在线观看| 久久久高清| 五月色亭丁香| 人人干女人| AV无码免费| 99九无网码| 色情综合| 久久er九九| 夜夜夜夜操| 深爱激情四射| 婷婷五月激情基地| 五月婷AV| 五月天激情图片| 色色色在线观看| 中文字幕AV在线| 99性色| 九九亚洲| 亚洲av另类在线观看| 97国产精品女人碰碰| 亚洲一区二区无遮挡A片| 亚洲旡码| 综合激情开心五月| 六月丁香好婷婷| 婷婷天天婷婷天天澡| 国产成人高清| 九九热超碰| 色婷婷成人色网| 播丁香五月婷婷欧美| 五月丁香婷婷激情视频| 99热这里都是精品| 日日夜夜天天| 五月婷婷色色爱| 九九re视频在线视频| 人人妻人人澡| 千人斩操逼| 99热99热99热99热| 在线中文av| 中文字幕人妻熟女在线| 91n网站cad入口在线观看| 啪色综合| 26uuu色噜噜精品一区| 五月婷婷综合潮喷| 人妻久久婷婷| 亚洲成av人影院| 久久婷婷六月综合国际| 色九九综合热99| 爱性综合网| 天天夜夜操| 色色激情网| 少妇人妻丰满做爰XXX| 欧美色偷偷大香| 婷婷91| 伊人狠狠操| AA久久| 亚洲愉拍99热成人精品| 五月丁香六月婷婷成人| 婷婷五月激情丁香激情| AA丁香综合激情| 99色在线观看| 操人视频91| 亚洲激情网| 欧美va欧美va差| 99热这里| BlACKEDRAW视频一区二区| 翔田千里 50岁 无码| 五月丁香六月婷婷综合网| 色综合五月天| 男人操女人高潮91视频| 日韩 中文 欧美| 激情五月婷婷综合网| 色综合久久88色综合天天看| 先锋影音av色五月天资源站| 婷婷亚洲综合| 婷婷综合精品视频97| 伊人五月天在线| 大大香蕉综合在线| 日本本土色网第一区| 色色网五月激情| 色色亚洲| 老妇操B| 日日操日日干| www.日日夜夜.com| AV在线收看| 日本特黄aaaaa| 激情综合九月| 婷婷五月欧美| 日日干干天天干| 日本色色网| 韩国三级五月天婷婷。| 婷婷色婷婷| 久久九九国产| 久久久五月四色| 婷婷爱五月| 99免费热视频在线| 欧美噜一噜| 五月婷婷,六月丁香| 伊人热婷婷| 这里只有精品99www| 婷婷综合久久| 麻豆雪千夏| 五月丁香六月婷婷亚洲视频| 日韩精品AV一区二区三区| 网色99| www.五月丁香| BlACKEDRAW视频一区二区| 美女五月激情| 伊人99热| 99九九精品视频| 这里只有精品网| 亚洲九N| 天天舔天天插天天爱| www.91在线观看| 99热www| 天天干天天干天天干天天干天天干天天干天天 | 久操大屁股女人av| 米奇影视资源777狠狠色婷婷五月天激情网| 97色色综合| 婷婷五月天Av| 26uuu国产| 九九色中文| 激情综合激情五月| 日本乱子人伦在线视频| site:xmssd.com| 日本熟妇精品99| 亚洲成人av在线播放| 天天操夜夜爽歪歪| 天天色中文字幕女优AV| 天天综合.com| 天天插天天插天天插天天插| 中文字幕av在线| 另类 在线| 草草影院爱爱| 亚洲欧美丁香五月天亚洲欧美| 99在线小视频| 丁香六月成人| 色97啪啪| 亚洲这里只有精品| 伊人大香蕉综合在线| 丁香月六月| 九月色婷婷婷| 99久久6| 色情五月天导航| 五月婷婷丁香五月婷婷| 日本激情综合| 伊人大综合| 99成人无码| WW婷婷五月天com| 甈你aaaaa| 色99综合色88| 五月婷婷色激情| 精品婷婷丁香五| 久久婷婷五月免费视频| 色婷亚洲五月丁香| 天天肏高清在线| 色婷婷a| 人人妻人人澡| AA丁香综合激情| 五月天激情视频| 五月网激情| 99在线精品免费视频| 中文字幕簧片| 久婷婷视平| 五月开行婷婷色五月| 五月天堂六月丁香亚州中文字幕久久| 五月婷婷天天| 久久在这里99| 久久99热这里只频精品6学生| 99在线免费视| 色一色综合| 五月婷精品| 欧美色偷拍| 激情另类综合| 视频综合网| 亚洲乱码日产精品BD| 99.色| 五月黄色婷婷| 婷婷九月亚洲| 久久色在线视频| 99网| 热99AV网站| 玖玖五月| 五月激情小说| 五月天婷婷深深爱| 色婷婷丁香社综合| 久久丁香五月婷婷| 免费精品66| 欧美一级a | 激情九月婷婷| 嫩草AV久久伊人妇女超级A| 丁香六月天婷婷开心综合| 超碰人人操人人9| 成人版视频在线观看| 这里只有精品免费在线视频| www.夜夜| 天堂AV在线看| 91凹凸在线| 欧美日韩999| 99愛国产| 亚洲综合五月天婷婷丁香| 九九在线精品| 六月合五月婷| 成片免费播放| 热99这就是精品视频| 91久久综合| 99视频内射三四| 日日夜夜爽| 色综合香蕉| 激情五月天网| 久久丁香久久| www.五月婷婷| 秋霞少妇AV网站| 狠狠爱五月婷婷| 久草久青福利| 色开心五月丁香| 五月婷婷av| 色婷婷五月天天天干天天操天天爽| www.综合久久.com| 国产欧美熟妇另类久久久 | 婷婷五月天av| 欧美日韩成人h| 六月激情婷婷| 爱婷婷五月| 在线婷婷| 五月丁香综合色婷婷| 殴美日韩成人| 五月天自拍网| 日本一毛片| 五月丁久久| 99热免费精品| 天天射天天射一道本日本社区| 在线观看996精品| 亚洲日本韩国| 99爽视频| 好激情在线综合网| www.日本久久videos| 色五月婷婷丁香凹凸| 久久三级视频| 国产亚洲精久久久久| 天天婷婷综合| 久婷婷五月综合欧美| 香蕉AV777XXX色综合一区| 六月婷久久| 六月五月婷婷| 国产xxxxx在线观看| 九九超日本| 被强行糟蹋的女人A片| 色婷婷88| 开心五月婷婷激情网| 六月丁香激情| 影音先锋91网站在线观看| 婷婷色在线观看| 色色色图| tingtingzonghewang| 丁香五月天堂| 日韩av网站在线观看| 性生生活大片又黄又| 热99这就是精品视频| 狠狠干五月天| 2025中文在线视频字幕免费观看| 欧美在线看| 在线亚洲综合网| 精品亚洲国产成AV人片传媒| 五月丁香婷婷六月| 26uuu欧美| 久久人妻视步| 激情影院免费视频婷婷五月天| 任你草| 久9免费视频| 婷婷五月欧美| 色五月 婷婷, 大香蕉| 91狠狠综合久久久| 51成人| 国产午夜成人免费看片无遮挡| 人人操人人添人人摸97| 婷婷五月天成人动漫 | 一本色综合色| 亚洲成人乱码av网站| 97干在线视频| 日韩成人电影在线播放| 强壮公让我夜夜高潮A片视频| 99视频久久| 99免费视频| 五月婷婷在线综合| www.婷婷,com| 天堂在线观看视频| 五月色综合| 色九月| 97精品自拍| www.夜夜| 岛国av网站| 欧美国产一区二区三区| 都市激情小说婷婷| 激情婷婷五月色| 婷婷的五月天另类视频| 人人亚洲| VA婷婷| 啪啪啪大香蕉| 人妻久热| 色五月婷婷91| 久久久久98| 九伊人网| 黄色一极大片| 五月丁香毛片| 五月婷婷综合性爱噜噜| 91九色无码内射| 亚洲成人av在线观看| 亚洲精品又粗又大又爽A片 | 深爱1激情网| 欧美激情xxxXX| 色爱综合视频| 欧美久久五月婷婷| 2025最新亚洲激情在线| 激情欧美婷五月| 五月婷高清视频| 激情五月无码| 国产一级婬片毛片| 婷婷亚洲五月色综合| 天天做天天双| 色插综合网| 夜夜夜叫天天天做| 色婷婷亚洲在线| 都市激情小说婷婷| 六月丁香社区| 丁香五月婷婷日本| 少妇人妻人伦A片| 99碰网站| 成人精品人妻| 大香蕉手机视频| www.色婷婷.com| 天天做天天爱天天爽| AA片在线观看视频在线播放| 中文字幕网伦射乱中文| 久久九九激情五月天| 99热精品在线观看| 国产毛片精品一区二区色欲黄A片| 少妇高潮呻吟A片免费看软件| 春色激情| av五月丁香| 成人av观看| 婷婷天堂站| 色9999日韩国产| 99精品视频免费在线播放| 色天天久婷婷| 66精品成人免费网站在线观看| 丁香六月伊人| 中文字幕激情综合| 欧美在线干| 色九九综合| 免费看欧美成人A片无码| 亚洲综合色成丁香五月色| 色婷婷亚洲综合av| 在线中文亚洲| 性爱网久久| 色欲日日躁| 79色色| EEUSS鲁片一区二区三区| 亚洲色啪| 亚洲A片成人无码久久精品青桔| 午夜AV网| 亚洲婷婷基地| 色五月成人婷婷| 涩涩婷婷五月| 丁香婷婷色六月| 欧美激情五月天| 思思热99热| 亚洲视频在线网站| 色涩影院六月丁香| 99久久九九| 五月天婷婷丁香视频| 夜夜谢天天干| 丁香六月狠狠干| 精品一二三区久久AAA片| 91在线人| 亚洲AV网站| 五月丁香六月婷婷玖玖| 综合网视频| 99精品在线播放| 五月天久久婷| 色狠狠色综合久久久绯色AⅤ影视 大香蕉五月天婷婷丁香91 | www.五月天婷婷姐姐| 99精品亚洲| 久久这里只有精品热在99| 五月婷婷影视| 青青草轻轻操| ji'qing'luan'ren'lun| 欧美α√| 亚洲综合久| 丁香8月手机综合| 五月丁香啪啪综合| 狠狠干狠狠干狠狠干狠狠干| 五月天激情婷婷| 天天综合网站| 噜噜狠狠色综合久| 色婷婷视频| 成年人丁香五月| 激情色播| 97干视频| 亚洲亚洲人成综合网络| 任你日热视频| 另类图片五月天婷婷| 婷婷五月天av| 天天影院色| 九九Y精品热播| 九九热色视频| 夜夜干夜夜操| 久久久久久久人妻| 久久婷婷夜| 婷婷六月插屄激情| 99热这里只有精品免费观看| 色五月五月婷婷| 2022久久婷婷| 激情五月天综合图片小说网站| 这里只有精彩视频| 蜜桃五月天| 14色综合婷婷| 天天日天天日天天搞| 婷婷丁香五月综合| www.91AV.com| 思思99精品视频在线观看| 五月天丁香| www.99热国产| 思思99久久| 日本操逼九九九九58日本操逼| 可以看的av| 成人网丁香五月| 激情黄色小说五月天| 日日天天干| 啪精品| 婷婷五月综合在线视频| 九九视频这里只有精品| www久久久久久| Va另类视频| 99视频精品在线| 五月婷婷日| WWW.色婷婷.COM| 色欲天天综合网| 色色色婷| 天天干 夜夜爽| 91色婷婷综合久久中文字幕二区| 五月婷婷色啪| 成人超碰Av| 日本精品人妻无码77777| 中文激情网| 五月天激情综合| 天天肏视奸| 婷婷狠狠久久| 色婷另类| www.色色com| 久久99久久99精品免观看软件 | 99爱这里只有精品| 丁香婷婷性爱| 啪啪操操| 色婷婷久综合久久一本国产AV| 亚洲欧洲中文日韩久久AV乱码| 五月婷婷性爱| 久久大香蕉同僚| 综合色七七| 色婷婷丁香五月丁香| 99热8| 色停停香蕉视频| 久婷五月| 久久AV无码精品人妻系列试探| 五月丁香 六月婷婷a| 91超碰人人操| 五月天婷婷基地综合网| 色婷婷五月天视频网站| 亚洲成人av中文| 欧美成人网婷婷综合在线| 天天做天天爽| 色5月婷婷| 中文字幕AV在线播放| 久久久久久久8| 亚洲婷婷五月天激情| 婷婷五月久久| 久久伊人日日夜夜| 五月丁香综合| 久月丁香爱婷婷综合| 五月丁香黄色视频| 99人人操人人操人人精| 韩国激情五月天综合网| 1769在线观看欧美国产| 5月丁香六月婷婷| 亚洲激情四射色| 6080av| 亚洲第一成人无码A片| 99视频久久免费视频| 婷婷成人五月天成人文学| 99久久婷婷| 五月天成人综合| 99热久久这里只有精品| 99国产精品久久久久久久久久久 | 综合色网站| 五月婷婷丁香大陆免费| 久久在这里99| 99热精品无码| 丁香五月 综合| 中文字幕 中文字幕明步| 五月婷六月天| 99综合99| 98永久精品| 综合大香蕉| 日日夜夜干| 天天插天天草人人玩| 国产欧美熟妇另类久久久 | 久久大大香| 97色色色色色| 综合五月丁香97| 啪色综合| 五月香蕉婷婷| 婷婷丁香五月婷婷| 日本高清久| 国产成人+综合亚洲+天堂| 久久香蕉网| 另类小说五月天| 五月丁香六月婷婷亚洲激情综合| 疯狂做受XXXX高潮A片| 色婷五月| 伊人激情网| 天天爽天天| 91操片| 激情九月综合| 99热99网| 日本乱子人伦在线视频| 操熟女成人网| 91久久国产综合久久| 国产午夜一区二区三区| 中文字幕激情综合| 色五月成人| 婷婷五月天激情文学小说| 亚洲精品久久久久久久久久吃药| 五月丁香六月欧美综合| 五月婷婷亚洲天堂97色婷婷| 亚洲精品午夜国产va久久成人| 天天操五月天| 五月天婷婷色| 人妻中文在线| 麻豆AV一区二区三区| 永久地址 色| 丁香五月天堂网AV| 婷婷激情性爱| 婷婷五六月丁香| 99热最新国内| 久久婷婷五月天| 狠狠色丁香五月婷巨| 五月激情在线| 日本社区五月天激情| 综合 蜜月 婷婷| 中文色婷婷| 99久热这里有精品| 99精品偷自拍| 99视频在线观看网址| 91超级碰碰| 亚洲欧洲另类图片| 亚洲六月婷婷| 这里只有精品日韩| 中文字幕日产A片在线看| 五月天综合图片| 久久人人超| 丰满少妇猛烈A片免费看观看 | 大香蕉久久久| 色婷婷六月激情| 日本WwW色偷偷丁香花久久久京东热| 日本婷色| 思思久久网| 中文字幕人妻一区二区| 97视频.干com| 丁香桃色综合网| 五月婷婷黄| 色色五月婷| 99re8这里只有精品99re8热视频| 999激情视频| 强辱丰满人妻HD中文字幕| 欧美色性色好| 开心 五月 综合| Av免费网站在线| a网站免费观看| 99色最新在线视频网站| 久久久99久久| 五月婷婷视频| 丁香婷婷六月天| 婷婷播播五月天| 五月丁香啪啪综合网| 久久精品无码一区| 五月激情婷婷综合| 亚洲99在线| 成人国产综合| 丁香亚洲色综合| 色色色五月婷婷| 婷婷五月色情| 国产片色| 人人草公开操| 99热资源在线| 精品成人在线| 99爱在线免费视频| 色综合另类| 人人综合五月人人婷婷| 久久99综合| 久久五月天网| 欧美熟女视频 色婷婷| 天天爱天天爽| 亚洲99在线| 婷婷五月天干干| 久久久er热| 日本久久高清| 色婷婷在线影院| 日韩国产在线精品| 丁香五月天激情综合| 五月天社区婷婷丁香社区| 大香av| 丁香婷婷五月| www.五月婷婷久久.com| 婷婷综合在线| 人人操人人干AV| 丁香五月 性爱| 成人午夜天| 日本丁香五月| 99热在线观看精品| 狠狠草狠狠草| 99re这里有精品手机在线| 最新日本A片| 久久久久激情| 亚洲午夜Av| 亚洲a片免费观看| 超碰在线免费观看日韩| 啪啪啪综合网| 色婷婷电影| 9久热在线视频精品| 国产精品人人妻人人爽| 国模淫穴色图| 成人婷婷五月| 精品久久人妻热| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 五月天婷婷色情| 久草 tingting| 天天干在线播放| 欧美成人猛片AAAAAAA| 99热这里都是精品| 国产亚洲99久久精品| 丁香五月六月综合激情| 激情网婷婷五月天| 五月花激情| 婷婷六月激情综合| 九九色视频| 日本激情五月| 五月色天五月色| 色高清无码视频| 日韩婷婷五月天| 五月综合婷婷网| 成人久久天天x资源站| 亚洲va日| 五月天日日操夜夜操 | 中文字幕婷婷在线| 97操男人的天堂| 丁香激情五月天| 婷婷五月欧美AA片免费| 婷婷五月激情综合网| 丁香婷婷激情四射五月| 1024成人免费看| 97婷婷五月丁香| 激情精品久久| 超碰免费人人肏| 亚州第一黄网| 久久五月热| 色五月激情综合网站| 丁香97综合| 婷婷激情五月天小说| 第五婷婷伊人丁香| 五月天另类图片区99| 大香蕉人在线65| 日本三级中文字幕| 亚洲精品视频在线播放|