欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,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
返回資訊列表
1024亚洲无码| 亚洲综合99| 丁香五月另类色婷婷麻豆| 国产精品第一国产精品| 激情五月婷婷啪啪| 超碰人人妻| 亚洲欧州色情在线观看| 激情文学第四色婷婷丁香五月| 超碰国产在线观看| 亚洲色色图片| 久久久久久久久久久久久久久久久精典| www.minyis.com【JT】实力收量可预付QQ2101460746| 色五月婷婷成人| 九九热精品6| 伊综合蕉| 99亚州综合精品成人网| 婷婷五月天首页| 超碰人人摸AV| 久久久免费精彩视频| 天天操天天操| 婷婷综合精品| 壅壅儕家a| 婷婷丁香六月| 热99re| 国内精品免费一区二区2009| 亚洲精品V天堂中文字幕| Jh7Uf088VHafNm| 国产av第一专区| 国产 亚洲 在线| 思思热思在线精品视频| 啪啪一区| 婷婷的色色五月天| 日韩一级一片内射视频4K| 丁香花色色网| 另类小说激情五月天| 精品成人在线观看| 婷婷色基地在线看| 九九色综合| 丁香婷婷六月激情综合| 激情综合青草| 久久久久久久久99精品| 久久久久久久久久久jjjj| 九九热婷婷| 婷婷噜噜| 思思热热久久| 美女美女美女三级色天天天天天| 亚州性爱99| 99er日韩| 中文字幕日韩成人| 99re免费在线视频| 日本九九网| 激情五月瑟瑟| 久久婷婷免费| 色婷婷色综合久久精品V| 波多野结衣AV无码Porn| 久久激情五月网| 4399成人黄A片| 青青草伊人婷婷| 色优久久| AA片在线观看视频在线播放| 免费无码毛片一区二区A片| 婷综合| 丁香五月婷婷亚洲色图| 婷婷视频网| 99这里只有精品|v| 激情图片五月天| 激情五月天色婷婷综合| 熟女激情五月天 | 天天操夜夜爽天天操| 艳妇野外情欲放荡HD| 婷婷九九| 色九九九九| 午夜激情久久| 久久久久久久97| 超碰99资源站| 92国产福利| 日本免费91| 97色欧美| 色五月久久成人婷婷| 五月婷啪啪| 婷婷五月丁香四射| 999婷婷综合| 玖玖在线视频福利| 噜噜噜噜噜色| 第五色婷婷| 亚洲日本韩国| 九九九九九九九九九九九九九国产精品| 日本欧美成人片AAAA| 另类专区在线观看| 逼特逼在线免费播放| 99热| Caoub青青超碰| 九色激情网| 五月婷婷与六月丁香图片激情| 99久热| AA久久| 婷婷香香五月| 亚洲欧美丁香五月天亚洲欧美| 丁香久久| 国产精品第一国产精品| 婷婷99| 色五月婷婷DVD| 婷婷六月综合基地| 视频一区二区在线| 天天操天天操| 99热婷婷| 超碰在线资源| 天天 日综合| 91啪级电影| 就去涩涩丁香五月天| 99热99热在线| 97在线观视频免费观看| 六月丁香视频网站| 99热6精品| 99免费青青蜜臀| 婷婷欧美激情综合| 五月天婷婷在线播放免费| 欧美久久网| 欧美色婷婷| 六月激情网| 久久久久久久久久久久久久人妻视频| a在线观看| 久久丁香综合精品综合| 激情五月天网页| 97 A I色色| 综合久久综合五月天婷婷| 婷婷丁香五月av| 99色在线观看| 最近中文字幕2019视频1| 97色图片中文字幕视频在线观看| 新伍月婷婷| 五月丁香无码| 色五月开心久久网| WWW,五月| 九月丁香婷婷基地| 丁香五月欧美色综合| 久热只有精品| 青青草搞屄视频网站| 日本久久精品| 日本97在线| 亚洲欧洲中文日韩久久AV乱码| 中文字幕无码人妻少妇免费视频| 精品无码人妻一区| 这里只有精品2| 婷婷娌伦网| 五月丁香婷婷激情澎湃四射| 潮汕成人AV片在线| 五月天成人综合| AA片在线观看视频在线播放| 久久香蕉婷婷五月天| 99婷婷| 婷婷她六月天| 久久99久久99精品免视看婷婷| 中文字幕人妻一区二区| 天天插天天操| 色婷婷AV久久| 啪色综合| 婷五月丁香俺| AV中文在线| 欧美天堂久久| 婷婷97狠狠成人网站| WWW.五月天9999| 婷婷丁香五月综合| 婷婷五月天无码熟女| 色色五月天网站| 超级黄色片| 香蕉人在线香蕉人在线 | 人操91在线| 婷婷五月天激情丁香| 亚洲丁香花五月丁香花| 综合XX网| 色综合爱综合| 99热在线观看99| 亚洲精品永久久久久久| Av大香蕉| 大香蕉啪啪啪| 99热久久这里只有精品2010| 成人在线网| 色色国产| 五月 丁香 欧美| 啪啪日本欧美| 国产午夜一区二区三区| 欧美亚洲婷婷五月| 大香蕉久艹| 九九亚洲视频| 五月天色区| 九九Y精品热播| 日本女人久久| 开心五月婷婷在线视频免费观看| 天天色综| 久久九九热视频| 99热香港| 日本视频99| 五月丁香综合网| 五月天激日本色情在线| 欧美槡BBBB槡BBB少妇| 狠狠插日日干撸| 丁香婷婷九月| 欧美婷婷色五月网| 国色天香成人网| 激情五月天com| 激情视频91| 大香蕉人妻| 婷婷激情五月天7| 婷婷亚洲在线| 国产在线aaa片一区二区99| 99综合一区| xxxx久| 欧美黑人巨大性生话| www激情com| 日韩成人综合网| 婷婷五月天桃花网| 久草五月婷婷| 五月丁香中文字幕| 丁香五月宝贝激情网| 激情五月丁香六月综合AVXXXX| 色色婷婷五月| 丁香五月香蕉| 色五月婷婷基地| 热99精品视频在线观看| www色婷婷| 五月天婷婷色色首页| 色色综合网站| 天天干天天干天天干| 婷婷无码五月天| 激情涩涩网| 午夜爱插插| 九九XX视频| 天天插天天干| 五月天激情视频| 五月婷婷久| 欧美欧盟性爱网| 丁香婷婷性久久| 成人在线观看国产| 五月天激情色色| 精品久久人妻| 人人草人人爱| 99无码视频| 色综合九九| 在线观看的av| 色婷操逼| 六月丁香社区| 丁香五月婷婷手机| 亚洲婷婷激情五月天| 5月色亭亭视频| 淫视馆aV二区一区| 精品婷婷五| 婷婷久热| 婷婷五月天改成什么了| 这里只有精品日韩精品| 日本99久久| 国产综合婷婷| 成年视频免费观看| pom538精品视频| 五月婷婷97| 超碰免费人人肏| 日韩AV无码影片| 中文字幕网伦射乱中文| 国产AV一区二区三区最新精品| 五月色网| 密着浓厚中出乚交尾GvG935| 中文字幕欧美精品久久| 任我肏| 蜜桃婷婷狠狠久久| 精a品a视a频| 天天色播| 婷婷五月永远18免费久久久| 99热12| 色综合综合网| 日本99色| 色婷婷影视| 天堂成人A片永久免费网站| 337p大胆噜噜噜噜噜91Av| 五月香婷婷| www.日日夜夜.com| 99热午夜精品| 婷婷久久丁香五月| 五月丁香WWW| 先锋资源996| 99re这里有精品手机在线| 五月婷六月天| 婷婷五月色综合| 91久久婷婷| 婷婷五月天av| 六月综合婷婷开心伊人| 久久激情网| 天天天天天天天干| 婷婷99狠狠| 婷婷射综合| 日本色综合| av在线观看网站| 五月丁香五月综合欧美| 天堂网亚洲色图| 激情人妻综合| 五月丁香婷庭在线| 成人精品在线| 怡春院天天干| 色A网| 欧美啄木乌丝袜人妻系列| 日本色狠狠| jiZZdr| 新激情五月天| 丁香五月情色| 天天操综合网| 中文字幕无线久必| 色婷婷狠狠| 色青五月天| 久久综合影院| 九九热内射| 欧美日韩99| 九月色婷婷综合| 另类精品视频在线观看| 色婷婷亚洲综合天堂| 亚洲AV网站| 九九综合久久| 精品一二三区久久AAA片| 91干在线视频| 激情综合丁| 日本色色网| 色综合女人99| 3p日韩网站视频| 91综合色| 俺去也五月| 影音先锋 一区| 六月婷婷综合| 在线中文亚洲| 色综合视频| 亚洲精| 大香蕉综合| 午夜福利成人AV91| 丁香五月婷婷欧美成人色图| 精品国产一区二区三区四区阿崩| 精a品a视a频| 婷婷色综合| 五月丁香婷久久| 亚洲无码影片| 亚洲欧洲自拍图片专区五月天| 亚洲午夜一区二区| 亚洲9久久精品| 综合激情五月丁香9999久久精| 欧美日韩成人在线网站| 婷婷激情五月视频| 欧美丁香五月夫妻天| 色五月情| 五月亭亭六月激情| 国产XXXX搡XXXXX搡麻豆| 伊人久久大香网| 欧美激情综合色综合啪啪五月| 色色欧美色色| 热99精品视频| 五月天大香蕉AV| 色99热| 色婷婷五月天av在线| 九热在线这里有精品6| 97精品在线| 黑人熟妇一区二区三区| 中文AV在线播放| 久热丁香| 中文字幕不卡+婷婷五月| 操逼六区| 久久婷婷视频| 色情五月丁香婷婷网| 国产日比| 激情深爱婷婷网| 99免费| 色愛综合网| 精品五月天| 国产亚洲色婷婷久久99精品91| 99热免费精品| 亚洲五月婷婷| 九九伊人网| 欧洲亚洲免费视频9| 国产精品人成A片一区二区| 五月婷婷开心深| 婷婷丁香五月综合| 五月婷婷人妻| 色色丁香婷婷| 极品少妇XXXX精品少妇偷拍| 99热国产这里只有精品| 久热婷婷| 亚洲视频在线观看| 99视频在线精品免费观看2| 99五丁香月| 天天在线XXX| 97在线/亚洲| 日韩中文欧美| 久久99美女精彩视频| 丁香九色不卡aaa| 丁香五月婷婷激情尤物| 婷婷AV丁香| 99操九九网| 另类综合色| 粉嫩av懂色av蜜臀av熟妇| 97 A I色色| 婷婷成人丁香色情基地30 | 激情视频网址| 色欲五月丁香| 97狠狠色| 婷婷五月天首页| 久久9RE热视频精品98| Av大香蕉| 99热精品在线播放| AV色五月婷婷| 成人网站高清无码| 亚洲精品国产熟女久久久| 久久丁香五月婷| 婷婷天堂站| 欧美色综合天天久久综合精品| 婷婷五月天伊人网| 另类婷婷丁香| 9久久久久久久久久久| 拍真实国产伦偷精品| 色五月影视| 五月色婷婷亚洲| 人妻Av在线| 色婷婷久久| 天天视频亚洲| 色欲操| 久久久久久久久久久44| 中日韩美欧成人一区二区精品在线| 丁香五月婷婷视频| 国内精品玖玖| 婷婷五月天激情在线观看 | 亚洲九九夜夜| 99久久99视频| 五月天婷婷丁香人人操91| WWW.婷婷| 色5月婷婷色| 99久久久国产精品免费蜜乳tv| 粉嫩av蜜桃av蜜臀av| 97色一二三| 丁香婷婷久久 | 国产婷婷五月天| 狠狠草综合网| 草AV9999| 色五月开心五月激情五月| 九九热99视频在线| 黄色99热| 激情五月婷色| 性色九九| 变态 另类 在线 | 婷婷五月综合欧美在线播放| 久99久视频| 久久九九思思| 狠狠干婷婷| 26uuu91| 婷婷五月天777| 91精品久久久久久77777| 色色丁香五月天社区| 无码91中文字幕| 九九热AV| 99热九九热| 超碰日日操| 五月婷婷丁香网| 亚洲第一色网站| av九九| 超碰超碰在线| 婷婷性爱影院| 久激情网| 欧美日综合| 91色在线/日韩| 婷婷射丁香| 色婷婷88| 五月婷中文字幕| 懂色av蜜臀av粉嫩av永陈冠希| 色婷插| 久久久天堂国产精品女人| 五月丁香久| 蜜臀99精品| 婷婷中文字幕| 九九99精品视频| 六月丁香五月婷婷| 色五月91| 婷婷五月天成人| 人妻AV在线| 色999亚洲人成色| 天天日天天爽| 精国产品一区二区三区A片| 99综合| 99久久国产宗和精品1上映| 中文字幕成人| 五月天婷婷丁香成人网| 婷婷亚洲久久| 丁香五月天在线观看视频| 99热最新精品| 五区毛片七区毛片| 日韩色五月| 人人摸人人搞| 婷婷五月花.97| 日韩啪啪自拍| 人妻熟妇国产精品| 99精品在线下载| 裸体美女丁香五月天。| 天天干天天色综合| 九九精品9| 草榴视频网| 五月婷婷激情综合| 婷婷五月丁香伊人网| 日本操B视频| 97色片| 能看的av| 五月婷婷亚洲色图| 欧美激情 日韩无码 婷婷 五月天| 婷婷六月婷婷| 丁香五月av| www.天天干| 永久天堂日本| 久久久er热| 这里只有精品网| 991精品在线视频| a久久| 91pornav在线| 人人综合五月人人婷婷| 日良久久| 九九99九九精品视频| 久久婷婷综合网| 色综合综合色| 色综合久久888| 久久五月天激情婷婷| 超碰三级秋霞| 亚洲网站999| 久久久国产精品黄毛片| 五月丁香操婷逼| 五月天婷婷永久免费视频| 亚洲成人无码网站| 91国产精品视频播放| 丁香五月色情| 五月婷婷日| 610018岁成人视频| 色噜噜狠狠色综| 99热久| 裸体做A爰片毛片A片免费| 狠狠99| 色综合日日| 五月婷婷六月丁香综合在线| 丁香五月婷婷欧美激情-中文天堂最新版在线观看 | 开心亚洲久久开心| 99热九九热| 激情五月天色婷婷综合| 久草xx性爱视频| 国产精品电影| 婷婷综合| 国产精品大香蕉| www91久久| 丁香五月天天高清在线| 色综合久久之分久久| 色色婷婷丁香| 婷婷综合五月天| 婷婷色五月天色色| 五月丁香亚洲婷婷| 91制片厂久久久国产电影| www.25五月婷婷| 久久婷婷网| 中文字幕婷婷在线| 色五月婷婷小说亚洲中文字幕组| Www.久久| 六月久久狠狠| 久久99精品久| 久久久久久性爱视频| 五月天婷婷狂暴白浆| 欧美婷婷五月无砖| 成人做爰A片免费看视频| 狠狠色婷婷在线| 国产激情AV| 欧美综合五月丁香六月婷| 狠狠色噜噜狠狠| 婷婷色偷拍| 丁香婷婷五月| 日熟女| 色色色99| 五月天操逼网| 色五月激情五月| 五月婷婷激情综合在线| 91五月天| 五月天色婷婷基地| 丁香五月WWW| 九九热这里| 色五月婷婷大香蕉| 五月激情啪啪啪| 中美日韩成人在线| 婷婷综合在线| 青青福利网| 丁香婷婷综合影院| 欧洲亚洲午夜| 丁香五月激情宗合网| 国产这里只有精品| 五月综合色播播丁香婷婷| 狠狠色综合无线观看| 久久久这里有精品| 伊人激情综合网| 丁香五月手机在线| 丁香五月激情婷婷| 吊色AV男人的天堂| 色色色999| 激情婷婷另类| 97精品综合久久内射| 狠狠爱五月婷婷| 欧美99热| 婷婷大香焦| 激情五月综合婷婷| 天天舔天天插天天爱| 乱精品一区字幕二区| 99热在线这里| 天天色天天搡| av超碰在线| 99在线69| 五月丁香六月婷婷久久久综合| 99热999| 九九视频在线观看| 五月丁香六月婷婷亚洲综合| 九九精品99| 大战熟女丰满人妻AV| 九九色综合九九色| bbwcuckold精品熟妇| 色五月美女| 欧美99热| 国产成人99久久亚洲综合精品| 亚洲午夜视频| 婷婷94s| 五月婷婷综合激情| www,26uuu,c0m,色情| 成人欧美日韩| H亚洲| 欧洲色| 五月六月婷| 99久久a线观| 91视频免费后入强操| 中字幕视频在线永久在线观看免费| 日韩五月丁香| 丁香网五月网| 99re这里只有精品9| 国产伊人大香蕉| 亚洲无码99| 久色大| 久久成人精品视频| 六月婷婷俺也去| 色婷婷影| 色播激情| 免费无码毛片一区二区A片| 伊人久久大香蕉网| 亚洲成人婷婷| 亚州精品久久久久AV无码| 日日爱678| 99亚洲精品视频| 久久九久久| 日日夜夜干| 天堂久久精品| 9九色首页| 久久人妻伊人| 人人人人人人人草| 五月天小说激情| 九九视频免费| 中文字幕黄色片| 伊人9在线| 啪啪五月婷婷| 婷婷五月成人社区| 日韩三十六页| 91丨九色丨首页| 九八Av| 国产亚洲精品久久久久久郑州| 激情综合无码| 婷婷色丁香五月| 日日噜噜夜夜狠狠久久丁香六月| 深爱激清网| 日日夜夜狠狠干| 开心五月婷婷在线视频免费观看| 婷婷舔| 色色亚洲无码| 精品婷婷五月天| 国产五月丁香在线| 蜜桃婷婷丁香五月天狠狠久久综合| 久久婷五月婷| www.天天色综合| 欧亚洲在线高清视频| 久激情网| xxxx五月激情| 2025最新亚洲激情在线| 婷婷六月激情啪啪| www,婷婷五月天,com| 欧美性色五月天| 婷婷激情啪啪| 99精品视频网站| 裸体美女丁香五月天。| 色婷婷国产精品综合在线观看| 丁香综合婷婷五月天| 天堂久久性| 亚洲中文字幕AV| 亚洲操操操| 久久久婷| 久久综合五月情| 五月丿香啪啪| 亚洲操人| 婷婷激情综合网| 99免费视频在线观看爱| 久久美女五月天| 另类激情五月| 99热久| 五月刺激丁香月综合| 另类国产区| 五月丁香激情综合| 青青草护士中出内射-欧美电影在线天堂新版| 我爱宗和色| 天天射色五月天| 日本色色网站| 六月婷婷色综合| 久操乱| 色情五月天丁香社区| 久久五月视频| 丁香六月久| 91九色在线| 无码少妇高潮喷水A片免费| 色色色色色色色色色色色色色色,网站| 丁香五月激情综合婷综| 婷婷五月天av网| 色五狠狠| 婷婷丁香十月| 九九精品系列| 久久九九视频网站| 久久九九热视频| 五月天六月色| 天天艹| 色情五月丁香婷婷网| 亚洲五月花| 五月丁香啪啪啪| 丁香五月 激情文学| 99er这里只有精品| 天天色天天操天天射| 亚洲综合色网| 91九色 婷婷| tingtingzonghewang| 美欧日韩国产成人在战| 婷婷丁香日韩五月| 五月五婷婷网| 久色大| 色色欧美色色| 五月丁香六月色婷| 五月天婷综合| 黄色av网站在线免费播放| 99色综合网| 午夜丁香综合婷婷| 99热99日天天干| 国产色色网站网址| 国产免费AV网站| 噜噜五月天综合| 激情亚洲五月| 五月丁香啪| 亚洲五月激情| 天天色,天天日,天天做| 国产精品扒开腿做爽爽爽A片唱戏 亚洲爆乳无码精品AAA片蜜桃 | 99色网站| 99riAv1国产在线观看| 五月综合六月丁| 人人干人人看| 亚州操操| 五月天天久久香| 狠狠爱五月婷婷综合六月| 精品无码色| 亭亭五月色男人| 国产亚洲网站在线| 五月丁香在线观看| 婷婷伊人綜合中文| 伊人五月丁香| 三日本无码| 狠狠色狠狠鲁| 婷婷综合五月| 婷婷五月小说色综合| PORNY九色9l自拍视频成人| 大香AV| 婷婷五月色天| 激情婷婷视频在线| 五月婷激情| 成人 九九九九| 亚洲a色| 变态另类色图 | 丁香五月综合网| ss99热| 婷婷五月天桃花网| www.六月丁香看AV| 丁香五月婷婷香| 丁香六月婷婷综合在线| 精品九九久久| 激情小说婷婷| xx久久| 91一起操| 精a品a视a频| 色婷婷激情| 美女要搞搞天天搞搞搞网站| 中文字幕 中文字幕明步| 涩涩涩婷婷| 九久久婷婷| 天天爽日日爽夜夜爽| 国产色色小草视频| 色五月大| 永久无码色| 九九热视频在线观看| 丁香婷婷五月天色播| 2018夜夜草| 日本五月婷婷| 999热在线视频| 99亚洲精品| 综合性视频99| 色色综合五月| 任你爽免费视频| 色婷婷五月天天天天天| 五月日韩中文字幕| 激情五月天开心总和网| 在线观看av网站| 久久久久这里只有精品| 激情五月天网页| 夜夜AVV| 婷婷99视频精品| 色色日韩网| 大伊香蕉精品视频在线| 五月丁香婷婷成人网| 日韩久久视频| 无人区码一码二码三码医生系列| 五月丁香亚洲婷婷| 日日噜狠狠| 夜夜嗨一区二区三区直播内容 | 久久人人添人人爽添人人片αV| 26uuu精品一区二区| 激情综合婷婷| 天天色中文字幕女优AV| 射久久丁香五月| 丁香五月天色| 亚洲精品成人片在线播| 婷婷五月天视频| 五月天综合影院| 狠狠操狠狠爱| 99热这里有精品首页10| 婷婷午夜天| 激情五月综合色| 9精品国产在热久久| 久久激情综合| 五月天婷婷丁香六月| 九九久久五月天综合伊人| 成人无码髙潮喷水A片| 综合噜噜| 婷婷综合成人五月天| 操比激情五月综合| 97在线观看| 97碰| 这里只有精品2| 少妇丁香婷婷| 久久99精品日本| 久久久久久五月天| 大香蕉啪啪啪| 五月在线| m色激情网| 99re思思热在线视频| 99热www| 精品国产乱码久久久久久免费| 久色激情| 激情综合激情五月一起草| 亚洲激情图文小说| 国产9色在线/日韩| 色yeye色综合| 七七婷婷综合| 国产激情综合| 久99视频在线观看| 九九热在线观看视频| 六月丁香婷婷开心综合基地| 色婷婷WWW| 丁香五月色网| 天天操精品| 丁香六月丁香婷婷激情| 99色在线| 26uuu日韩| 夜夜 操无码| 26uuu欧美| 夜夜撸天天操| 伊人午夜综合色啪| 襙比视频| 激情婷婷亚洲五月| 夜夜躁狠狠 | 激情五月第四色| 伊九九三级区| 天天久综合网永久入口17v | 五月天六月丁香| 久久9视频| 996er热| 色综合久久综合中文综合网| 神马欧美精| 色色丁香色五月| AV网在线观看| 久久资源综合| 五月丁香激情啪啪网| 9l视频自拍九色9l黑人| 九一娱乐在线观看视频| 99热10在线高清播放| 超碰免费成人网站| 丁香六月成人| 婷婷五月成人社区| 91N 一起草| 五月丁香婷婷激情四射迷人| 久久婷婷综合色丁香| 91精品视频男人的天堂| 亚洲欧洲小视频9| 免费成片在线观看| 久久婷婷综合国产| 久久婷婷色情7777网站| 久久色区| 日日干日日色| www.com操| 99热在线观看这里只有精品| 有哪些A片网站| 日婷婷| 激情五月婷| 激情五月天影院| 熟妇无码乱子成人精品| 亚洲婷婷性爱| 色婷婷女优有码五月亭| 亚洲婷婷丁香| 婷婷丁香色五月亚洲| 九九热在视频| 天天精品视频在线观看视频| 天天精品视频免费观看| 日韩超碰在线| 欧美色婷婷| 99se丁香| 色婷婷激情四射视频| www.99久久久| 五月丁香久久久日婷婷久久婷婷日| 五月婷婷伊人久久| 99视频精品在线| 六月丁香久久| 日韩艹比| 91九色在线视频| 做爱夜夜干天天操| 这里只有精品在线免费视频| 99热官网| JAPANRCEP老熟妇乱子伦视频| 五月婷婷电影院| 4438国产免费看| 婷婷,五月天,丁香,第一| www.minyis.com【JT】国内CDN落地页保证转化QQ2101460746 | 玖玖99福利| 色婷婷社区| 99热这里只有精品2| 丁香五月花| 免费AV在线| 人妻系列久久久久久久久久久| 这里只有精品网站| 久机视频这只有精品| 五月婷婷丁香日韩在线| 97婷婷狠狠| 开心激情久久久久久久| 亚州操操| 狠狠干.com| 婷婷欧美综合| 伊人久久五月天| 久久99综合| 中文字幕精品推荐免费在线观| 91超碰九色| 色六月视频| 五月婷婷香| 中文字幕五月久久婷婷| 日日噜噜久久婷婷五月天| 五月丁香啪啪| www.色五月| 91操片| 噜噜色com| 丁香五月大香蕉| 五月天狠狠色| 国产精品成人av在线观看春天| 中文字幕AV在线| 99操不停| 伊人丁香五月| 五月激情视频| 五月激情综合性爱| www,婷婷五月天,com| 激情五月五月婷婷| 色色色五月婷| 亚洲五月色| 少妇性按摩无码中文A片| www,色婷婷| 色丁香五月天婷婷| 熟女人妻一区二区三区免费看| 综合激情在线| 玖玖婷婷五月天| 玖玖色综合色| 丁香五月日啪| 久久丁香五月天| 99热综合色图| 婷婷开心激情| 色色综合网。| 婷婷丁香激情五月| 激情网五月天| 九九久久99| 五月丁香欧美综合| 国产操肏网站| 热99在线| 91av无码| 丁香六月天之亚州热女| 超碰日韩成人| 色综合色欲综合天天免费| 亚洲久久激情| 大香蕉啪啪啪| 色五月六月| 色五月激情网| 婷婷色综合| 国产成人综合在线| 五月天婷婷免费| 日韩精品超碰在线观看| 日本欧美成人片AAAA| 密视AV综合在线| 26uuu最新地址| 免费成人中文字幕| 五月天婷婷无码| 狠狠色综合网站久久久久| 激情综合色播| 久久青草国| 国产va视频| 欧美超级视频97| 91热视频色网站| 久久婷.com| 国产成人网址| 婷婷色激情网| 国产精品18久久久| renre人人操国产超碰在线| 麻豆观看夏晴子| 激情九九这里只有精品| 天天色五月婷婷91久久久久久久| 五月婷婷丁香综合| 中文字幕+中文在线| 婷婷激情图片| 91无码视频| 婷婷丁香18| 色婷婷色久综| 丁香五月玖玖| 激情五月婷婷五月丁香五月开心五月| 九九精品亚洲| 久久婷五月天| 久久精品在线| 久99久视频精品| 色播五月网| 亚洲综合99| 99热在线观看| 九九精品网| 精典久久| www.夜夜| 亚洲人妻五月丁香婷婷| 婷婷五月天AV在| 婷婷色五月激情| 综合久久丁香婷婷,五月婷婷六月丁香,开心激情综合网,六月丁香在线观看,婷婷丁 | 国产欧美熟妇另类久久久 | www。88热在线视频免费观看| 国产日产亚洲系列最新| 性日本精品| 久久久jd| 婷婷午夜| 综合激情网激情五月。| 丁香五月激情网| 婷婷综合五月| 五月婷婷精品无在线| 伊人久久大香蕉网| 少妇大叫太大太粗太爽了A片| 情涩婷婷五月天| 97人人搞| 九九视频在线观看视频6| 这里只有精品1| 婷婷五月天成人在线视频| 琪琪色综合网站| 久久人人九| 夜夜爽日日躁| 亚洲无aV在线中文字幕| 国产 码在线成人网站| 天天草天天摸| 在线,国产,色,热视频| 五月天丁香欧美激情| 性爱久久| 综合一本道| 五月伊人综合| 很很色丁香久久停停| 久久精彩免费视频| 天天插天天干| 久久午夜理论| 九九精品99| 亚洲视频码| 97精品综合| 99热天堂| 久久五月婷天天干| 久久99网站| 欧美色偷偷大香| 五月天精品| 天堂中文国产| 婷婷五月天论坛| 久久精彩综合视频| 人人叉久| 久久无码成人| 色情五月婷婷| 99色综合| 99成人免费热视频| 久草五月天电影网| 97干在线视频| 色婷婷久久视屏| 97色精品视频 | 婷婷五月激情网| 亚洲中文AV网站| 无码日本精品XXXXXXXXX | www.婷婷五月| 亚洲天堂色色| 天天干天天射综合网| 婷婷五月天在线综合导航| 99热爱爱干干日| 天天综合色丁香| 色综合99色| 狠狠干最新地址| 99热国产| 九九综合色| 婷婷九月亚洲| 五月婷婷综合在线| 婷婷瑟瑟五月天| 日韩无码人妻一区二区三区综合| 日本精品99| 99热99美国在线观看| 丁香婷婷综合色五月激情国产基地| 国产日产亚系列精品版优势| 五月婷婷综合在线| 久久婷婷视频| 久草大| 最新色色五月天| 婷婷六月色开 | 日韩天堂久久| 亚洲va久久久噜噜噜久久天堂| 人妻久久久久久| 激情色色色| 影音先锋色婷婷| 激情久久久久久久久久| 国产亚洲色婷婷久久99精品91| 九九久久网| 亚洲第79页| 怡红院视频| 日本婷婷色日| 五月婷婷第四色| 婷婷激情五月综合| 丁香五月婷婷影院| 人人干人人操人人摸| 婷婷五月天激情五月天深爱五月天| 日韩激情婷婷五月天| 色丁香综合影院| 婷婷五月天人妻| 色性五月天| 日韩爱操视频| 久久婷婷五月| 丁香激情四射| 99ri在线观看视频| 影音先锋噜一噜| AV大香蕉| 双性美人被调教到喷水A片| 国产精品人人做人人爽人人添| 99自拍视频| 国外亚洲成AV人片在线观看| 日韩AV免费电影在线播放| 久久婷婷五月综合色区| 亚洲精品另类| 六月丁香停| 99热超碰| 激情丰满熟妇五月| 国产精品久久7777777精品无码| 激情综合六月| 青青草五月天| 综合激情在线| 色五月婷婷网| 婷婷五月综合国产精品| 九九精品婷| 五月婷久久草| 久久97| 亚洲成人乱码av网站| 婷婷五月天综合在线| 99视频久久| 日本人妻伦在线中文字幕| 婷婷五月综合丁香久久| 91干在线| 五月天激情网址| 五月天天天色| 色五月婷婷综合| 少妇AB又爽又紧无码网站| 国产三级在线播放| 婷婷丁香九月| 99爱免费在线观看| 色视频五月天| 久久久18| 免费无码毛片一区二区A片| 五月天色软件| 99精品久久久久久久婷婷| 2020夜夜操天天爽| 99人妻碰碰碰久久久久视| 九九色逼| 蜜桃婷婷狠狠久久综合| 成人操呦av| 色五月人妻| 五月丁香啪啪| 无码A片一区二区免费| 丁香五月综合久久八| 伊人五月综合网| 五月婷婷五月天| Caop在线| 亚洲色欲欧美一区二区三区| 爽天天天天天天天| 亚州激情网| 91丨人妻丨国产丨丝袜| 中文字幕 码精品视频网站| 六月五月婷婷| 99热综合| 婷婷激情五月天激情小说| 免费国产VA国产免费| 91婷婷五月天嫩女| 全部老头和老太XXXXX| 99狠狠| 停停五月天激情网| 99热这里只有精品免费| 99爱爱网| 久久综合天天综合| 超碰人人在线| 五月天激情四射网站| 天天综合亚洲综合| 99激情视频| 日本成人综合| 岛国AV网站| 亚洲精品白浆高清久久久久久 | 99九九精品| 色五月五月婷婷| 丁香伍月婷电影全集| 五月天另类小说亚洲| 看全色黄大色大片| 五月刺激丁香月综合| 99这里只有精品国产| 成人片在线播放| 五月五月婷婷| 五月天,激情四射,婷婷频道| 国自产拍偷拍精品啪啪一区二区| 大香蕉五月天婷婷| 婷婷五月六| 丁香婷婷五月激情四射网| 国产色色网站网址| 丁香六月情| 琪琪色五月天| 丁香婷婷色情| 成人AV网站在线| 亚洲天堂aaa| 久久99大| 六月天丁婷婷| 婷婷五月激情四射手| 26uuuavcom| 九九成人| 婷婷第六色| 五月天色综合| 婷婷偷拍网| 色色色热热热| 97干在线| 欧美操人| 亚洲欧洲99| 丁香五月天视频| 天天综合网、天天综合色 | 色婷婷丁香综合中文字幕| 日日夜夜天天| 超碰99资源站| 天堂久久性| 九九综合色综合| 欧美97色| 日韩啪啪视频| 第五色婷婷| 5月色亭亭视频| 精品久久久久成人码免费动漫| 五月婷在线色视频|