欧美成人午夜精品久久久,国产?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
返回資訊列表
成人中文字幕在线| 久久五月天婷婷| αV电影| 丁香婷婷91在线观看视频| 婷婷激情四射网| 国产欧美精品AAAAAA片| 天天综合中文| 久色资源网| 婷婷丁香五月天哟啪| 九月丁香| 丁香五月在线观看| 婷婷五月天成人网| 综合久| 色J香五月天| 五月婷婷六月丁香综合视频在线| 第1影院之五月婷婷| 久久亚洲天堂| 这里只有精品视频在线| 99热99精品在线观看| 中文av在线观看| 九九视频在线观看视频6| 五月丁花色综合网| 91狠狠色| 婷婷五月色| 婷婷色操| 九九精品99| www.久9| 丁香,开心成人,久久| 婷婷射丁香| 免费久久这里只有精品99| 五月天伊人久久| 久久精品一区二区三区四区| 99自拍视频在线| 99这里只有精品|v| 激情综合网激情五月天| 激情五月天伊人影院| 国产亚洲99| 色综合久久中文| 丁香五月大香蕉在线99| 天天干天天插| 中文中文在线| 风流少妇A片一区二区蜜桃| 色色色色热| 99这里只有精品99| 色五月大| 丁香六月色婷婷| 热久久91| 成人国产欧美大片一区| 五月婷六月| 六月婷婷激情| 婷婷久久综合久| 丁香五月天堂网| 久久丁香五月天| 婷婷色五月激情| 亚洲AV免费在线| 欧美日朝成人| 青草视频在线观看视频 | 欧美综合五月丁香六月婷| 久久婷.com| 97在线综合| 久热九九| 俺去也在线www色官网| 亚洲美女婷婷五月天| 综合五月丁香97| 亚洲综合另类| 色五月婷婷丁香国产在线| 激情亚洲婷婷| 五月激情精品视频| 日韩啊啊啊| 久久99热这里只频精品6学生| 五月天久久成人| 婷婷五月天视频在线观看| 欧美性爱五月天| 欧美婷婷五月无砖| 色色色色色色网站| 婷婷久久综合| 碰人人操| 日本www五月婷婷| 日日撸天天干| 超碰亚洲天堂| 狠狠ri| 五月丁香A∨在线| 玖玖五月丁香| 亚洲婷婷月丁香五月| 人妻22p| 丁香五月六月久久综合 | 五月丁香天堂网| 伊人色综合网| 玖玖婷婷精品| 激情综合网激情五月欧美| 激情五月天婷婷免费观看| 99re在线观看| 91成人性爱视频| 久久久五月五丁香| 超碰色热| 日韩人妻无码一区二区| 99亚洲大片精品永久在线观看 | 亚洲激情电影五月天色婷婷丁香一起草 | 久久99热精品a片在线观看| 天天 青草 制服丝袜 在线 | 日韩啪啪视频| 色一情一乱一乱一区9| 五月天激情综合网| 26uuu亚洲色| 五月天四色房丁香亭亭| 狠狠操狠狠爱| 九九精品99久久久| 久久久精品人妻录| 久久在线视频免费观看| 激情五月天福利| 超碰99在线观看| 五月丁香在线婷婷美女| 99九无网码| 亚洲精品久久久久久久久久吃药| 青青操日本摸摸看看| 成人一区在线观看| 99精品久久久久久久婷婷久久| 性爱电影科技贸易有限公司| 婷婷日日天天| 久久婷婷视频| www99热| 玖玖热视频| www.久久| 久久久久这里都是精品| 99成人免费热视频| 东京热五月婷婷| 99这里有精品视频| 欧美成人日韩| 五月婷婷综合影院| 九九视频这里只有精品| 九九亚洲| 天天做天天爱天天摸| 五月综合婷婷久久在线| 五月天激情四射| 九九热内射| 久久五月天婷婷视频| 天天橾日日橾夜夜橾17| 六月丁香啪啪啪| 欧美三级级99久久| 六月婷婷中文字幕| 去色色五月天| 国产在这里只有精品| 99视频精品| 久久一级免费黄色片| 婷婷国产欧美97| 五月色欧美| 日韩欧美成人片| 国产色香蕉精品五夜婷| 丁香婷婷人妻综合网| 激情六月色| 99在线视频观看| 深爱激情五月天色婷婷| 91啪啪视频| 香蕉大综综综合久久| 久久黄色免费视频| 精品亚洲国产成人A片在线鸭王 | 成人做爰高潮A片免费视频| 91热久| caop在线视频| 97色色色色| 久久性爱视频| 久热这里只有精品在线观看| 婷婷六月啪啪| 久久新| 九九热免费视频| 激情碰碰碰| 欧美成人精品一区二区 | 亚洲AV日韩AV永久无码网站| 人人干天天操五月丁香| 国产成人亚洲综合A∨婷婷| 九九九九中文字幕| 五月天婷综合| 99热综合| 精品一二三区久久AAA片| 久久资源网五月婷| 色色五月天激情| 亚洲精品乱码久久久久久综合| 日本色爽| 婷婷丁香五月综合| 亚洲蜜桃精久久久久久久久久久久| 大香蕉九九热| 亚洲AV免费在线| 丁香五色月婷婷网| 亚洲综合欧美色丁香婷婷888月图片| 色婷婷综合久色AV五色最新| 五月婷婷AV| 99精品久久| 激情五月综合亚洲另类| 天堂AV三级| www.99色| 丁香激情综合| 色爱综合网| 日本色五月| 欧洲激情五月天婷婷| 99操视频| 久色网五月| 黄色成人AV在线| 九九热精品视频在线观看| 香港九九六区八区99| 五月天婷婷在看| 牛牛澡牛牛爽| 亚洲第一成人无码A片| 97色综合| 狠狠操狠狠插| 久久综合网免费视频| 色色激情五月天| 亚洲深喉aV| 狠色狠色综合久久| 成人在线网址| 五月丁香婷久久| www.日本91| 秋霞性爱AV| 极品人妻VIDEOSSS人妻| 日日夜夜噜噜爽爽| 91爱啪啪| 五月婷丁香久久综合| WWW,婷婷,COM| 国产精品久久久99视频| 色五月激情五月| 国产日韩亚洲欧美在线观看| 五月天天综合| 五月丁香色欲| 天天色天天日| WWW免费视频碰碰碰碰| 伊人五月综合网| 色综合天天综合成人网| 九九视频精品在线免费| 97丁香视频| 开心五月网 | 五月天狠狠| 成人午夜无码视频| 五月丁香婷婷激情四射迷人| 粉嫩av蜜桃av蜜臀av| 天天色播| 91久久国产综合久久| 亚洲丁香五月在线观看| 亚洲精品成人| 丁香婷婷婷五月| 久久er视频6| 高清 码 免费看片短视频| 99ri在线| 天天做天天爱天天玩| 久久hd| 久久综合26p| 99久久婷婷国产综合精品草原| 色五月首页| 夜精品无码A片一区二区蜜桃| WWW激情五月天| 超碰成人在线观看| 九九色大香蕉| 人人叉久| 久久艹网| 激情文学 综合 九月| 日本一级一片免费视频| 五月丁香网站在线播放| 日本乱论99| 五月婷婷电影院| 99久在线精品99re8热| 97色五月天| 超碰久热| 综合久久婷婷| 成人视频一区| 五月丁香久久综合| 99热9999| 久久精品五月天| 婷婷综合久久综合| 久久久久久婷| 日本英国美国欧美亚洲国产精亚洲日韩精品在线观看 | 九月婷婷久久久| 色色网站免费| 欧美xx激情视频在线观看| 五月综合激情| 亚洲一级色电影| 91日精品| 九九色院| 999激情视频| 五月天怕怕| 91碰免费视频| 久久99网| 久久九九视频| 狠狠操狠狠操AV| 亚洲AV成人无码久久精品老人法拉利| 热成人网| 丁香五月婷婷在线观看| 亚洲五月天综合| 草综合网| 狠狠干总合| 无码G高清天| 色天天久婷婷| 色六月视频| 色国产五月| 欧美激情五月天在线观看| 第四色网婷婷| 激情久久五月天| 日本久久婷| 成人视频一区| 五月婷婷狠天天色综合| 久久xx| 久热99| 久久丁香婷婷五月天| 91性人人| 玖玖综合色| 日本色频| 天天干天天干天天干天天干天天干天天干天天 | 丁香五月天堂亚洲社区| 欧美搡BBBBB摔BBBBB| 一区二区乱码视频| 欧美日本国产欧美日本韩国99| 99热在线观看这里只有精品| 婷婷五月丁香五月天| 亚洲成人网站在线观看| 激情小说视频图片| 538在线精品| 国产无遮挡又黄又爽免费网站| 婷婷色导航| 伊人五月天在线| 久久九九99| 欧州婷婷五月天综合| 国产美女无遮挡裸体毛片A片| 天天摸天天肏| 色婷婷基地 | 五月丁香六月激情| 久99在线视频| 色香五月天| 五月花激情| www99精品| 成人日韩欧美| 欧美亚洲成人在线| 性色播| 欧美英丁香开心快乐六月天网| 乱女乱妇熟女熟妇综合网站| 四色 爱 婷婷 精品 亚洲 五月天| 色综合网上班开心婷婷久久| 热久久思思热思思| 狠狠穞A片一區二區三區| 成人性爱无码| 五月婷视频| 五月丁香啪啪| 午夜九九九九九九九九九九九九九| 日本三日本三级少妇三级66| 18久久| 99热只有精品综合| 五月婷在线播放| 亚洲中文字幕av| 亚洲中文字幕在线观看| 婷婷五月天综合久久| 久热中文字幕在线线观看 | 色五月之第四色| 欧美爆乳一区二区三区| 99精品小视频| 少妇大叫太大太粗太爽了A片 | 天天日色情| 啪啪黄页网| 色五月婷婷五月丁香五月激情五月视频| 激情婷婷色小说| 婷婷六月丁香欧美视频在线| 999婷婷综合| 激情文学综合婷婷五月天丁香花| 1024在线观看免费视频| 婷婷成人综合| 日本成人噜噜噜| 九九热精品视频在线观看| 色五月激情五月| 97色在线观看视频| 婷婷五月天在线观看第二页| 综合久久影院| 久久婷婷五| 九九视频这里是精品五月| 亚洲女婷婷五月基地综合久久久| 91成人性爱视频| 男女啪啪做爰高潮无遮挡| 美女被操一区二区| hd五月婷婷在线| WWW久久久| 久久五月天免费网站| 丁香花五月天激情| 久热99热| 免费亚洲成人电影AV| 99操视频| 亚洲视频五区| 六月丁香色色| 高清成人综合| 五月天伊人网| 色月丁| 色婷婷五月网| 精品欧美一区二区三区久久久| 99色嘟嘟精品网站| 五月天激情小说婷婷| 五月色俺婷婷| 九月丁香久久网| 99久久国产成人精品| 久狠日av| av首页在线| 色综合久久伊伊婷婷五月| 播五月,色五月,开心五月播放器| 强壮的公次次弄得我高潮A片日本 | www色哟哟| 五月噜噜| 欧美婷婷色| 激情五月天综合图片小说网站| 亚洲色五月天| 日本色久| 99福利导航| 亚洲AV无码一区二| www.色9| 99a级片| 亚洲综合另类| 丁香五月激情棕合| 久久99热这里只有精品| 黑人无码一区| 婷婷五月天综合网| 九九热这里只有精品5| 桔色成人在线| 亚洲综合视频网| 亚洲AV另类| 婷婷六月啪啪| 婷婷午夜精品久久久| 丁香美女主播视频在线观看| 亚洲成av人影院| 日本成人噜噜噜噜噜| AAA久久| 99re热在线视频| 高清视频一区| 五月天第四色开心色播| 99欧美| 欧美精品99久久久| 超pen个人视频97| 丁香五月在线视频黑人| 农村熟妇高潮精品A片| 婷婷久久大香蕉| www.99热视频| 狠狠干在线视频| 五月伊人91| 热久久99热欧美国产亚洲| 天天躁日日躁狠狠躁日日躁2022年5月9日| 五月天五月婷五月激情网| 五月婷在线观看| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | 亚洲激情AV| 六月丁香视频网站| 99福利视频导航| 人人草人人看| 永久的网站AAAA| 粉嫩AV久久一区二区三区| 丁香五月激情婷婷| 可以直接看的AV网站| 婷婷激情五月| 中文字幕性爱丰满| 91人人妻人人操| 综合久久婷婷| 精久久色| 人人妻人人澡| 97超碰婷婷五月天| 99久久玖玖| 综合99在线| 免费日本aⅴ中文字幕| 婷婷激情丁五月| 好色婷婷| 思思久久99热只有频精品66| 九热视频这里只有精品| 九月色婷婷婷| 日本片日本片祼观看网站在线看中文版网页在线看| 色色丁香五月婷婷| 五月婷婷亚洲| OYIWbGcPu8H| 色综合久久天天综合网| www.日本久久videos| 丁香六月激情综合| 亚洲精品国产精品乱码视99| 五月99久久| 婷婷色综合| 丁香五月欧美| 色狠狠色狠狠| 婷婷丁香69精华| 涩婷婷视频快播人妻| 深爱五月激情| 六月丁香婷婷天堂| 久99久在线| 久久久全国免费视频| 人人摸人人搞| 五月婷婷在线网站| 亚洲婷婷在线播放十月| 狠狠色五月| 香蕉久久六月| 97性高潮久久久| 91操碰| 色七七九九| 久久这里只有精品16| 91丨九色丨国产打屁股网站| 97婷婷五月天| 婷婷六月丁香激情综合| 中文在线成人| av操B网站| 99热官网| 色色色热| 五月丁香婷婷中文| 五月亭亭开心网| 九九爱看亚洲| 99热在线里有精品| 亭亭玉立国色天香| 九九热欧美| 九色PORNY在线精品酒店| 97干97色| 六月丁香综合| 五月婷婷视频| 日日噜噜夜夜狠狠久久丁香六月| 欧韩性爱| 噜噜噜狠狠色综合| 久热大香蕉| 欧美操逼天堂| se99热久久一本| 婷婷五月天大香蕉在线视频观看| 九九热只有精品| 26.uuu丁香五月婷婷| 午夜 外网 精品 在线| 婷婷黄色五月| 国产综合丁香五月天| 深爱五月婷婷| 成人片在线播放| 99视频在线精品免费观看2| 婷婷五月偷拍| 久久久久久丁香五月| 亚洲网视屏| 亚洲午夜电影| www.婷婷五月天.com| 五月婷狠狠| 久久久久久久久18久久| 五月婷婷综合网| 99这里只有精品| www激情| 五月丁香啪啪啪| 综合久久婷婷| 激情五月综合网| www婷婷| 亚洲无码色| 97人人干人人操| 激情av| 26uuu欧美| 国产精产国品一二三在观看| 色色色色色色色色综合网| 色婷婷成人| 五月丁香六月色| 五月丁香色综合| 色色五月天丁香| 婷婷丁香六月| 99热亚洲| 任我干视频在线观看| 丁香五月激情啪啪| 国产av天天插天天操天天爽| 97人人干| 亚洲超碰中文字幕| 九月色婷婷综合| 91九色丨国产丨爆乳| 任你爽在线视频| 色婷九九九| 色99日韩| 五月情婷婷五月| 久久机只有这里精品| 99视频久久免费视频| 大香蕉久| 久久这里只有精品无码| 欧美毛片www| 色综合色综合色综合| 久色中文| 日本天堂免费99| 色五月网址| 99热啪啪| 丁香五月婷婷社区| 婷婷色色丁香五月天| 性爱激情小说AV五月丁香花| 久久影视婷婷五月| 五月丁香网视频| 啪啪干伊人婷婷| 色综合色综合色综合色综合| 成人va在线播放| 色色激情五月天| 日本视频久久| 人妻久久婷婷| 久久婷婷操| 五月综合色| 九九色综合| 国产伊人大香蕉| 综合久久婷婷| 久久婷婷激情视频| 综合色色网| 亚洲99一级无嗎特制在线| 国产欧美大香蕉一区| 超碰激情五月| 婷色成人| 丁香五月人妻| 婷婷五月丁香亚洲| 亚洲色情久久| 九九热这里| 九九热精品| 日韩五月婷婷| 婷婷五月精品在线| 婷婷激情五月综合| 婷婷自拍| 五月丁香婷庭在线| 六月丁丁香| 老师把我爽高潮了免费A片| 97黑人精品区| 久久五月激情| 婷婷激情综合网| 色婷婷91| 99免费视频网| 无码日本精品XXXXXXXXX| 九七色色六月丁香| 色噜噜狠狠色综合无码久久欧美| 五月熟妇婷婷久久| 五月丁香婷婷爱| 日比网免费国产| 大香蕉综合网| 91色色色18| 色九月综合| 99'无码| 涩综合网| 五月丁香婷婷成人版| 欧美激情五月综合| 91超级碰碰| 五月激情射| 99爱无码| 婷婷在线五月综合| 天天日日天天| 狠狠色综合网| a色色片| 另类激情综合| 九月婷婷激情| 思思热在线| 99久久偷拍视频| 91婷婷色| 另类图片五月天婷婷| 一区二区成人电影免费播放| 国产激情一区| 五月天激情国产综合AV| 九九99九九99偷拍视频免费看| 色色亚洲| 另类五月婷婷| 欧美性爱五月天| 成人日韩欧美| 日韩AAAAA| 色碰碰视频| 97影院一级片| 91黄址| 色呦呦美女| 操97免费超级视频| www.91在线观看| 色婷婷精品视频| 激情婷婷五月| 色情婷婷。| 日韩综合久| 日韩另类在线观看| 五月丁香好婷婷A片网| 日本婷婷激情四射中文字幕在线观看| 99综合99| 五月丁香 狠狠爱| 看久久性爱视频| 欧美偷偷操| 无码人妻一区| 色老久久| 亚洲激情四射| 欧美成人热| 欧美色男人网站| 天天爽夜夜爽| 成人免费网站免费看| 久久有码| 激情五月瑟瑟| 9久久婷婷国产综合精品性色| 久久密臀婷婷| 丁香五月婷婷基地| 婷婷色在线观看| 婷婷中文字幕| 东北婷婷五月天| 超碰妻人人| 一本色道久久综合狠狠躁小说| 日本黄色一级| 99无码黄色视频| 好色婷婷| 天天做天天爱| 操日本人妻视频| 伊人大香久久| 五月丁香婷婷综合网| 91在线看免费 九九九九| 激情色视频| 久re热视频| 99热这里只有精品22| 人人综合久| 狠狠五月天| 伊人婷婷五月天av| 日本WWW九九九| 泰州成人视频| 天天擼久久擼在线| 婷婷色中文| 99性爱视频| 亚洲综合狠狠艹| 99ri在线播放| 夜精品无码A片一区二区蜜桃 | 国产特级毛片AAAAAAA高清| 六月丁香激情综合网| 五月天啪啪| 日韩不卡123| 噜噜色五月| 狠狠色五月激情| 91av色色乱视频| 狠狠爱综合| 五月丁香伊人网| 99玖玖在线视频| 婷婷色婷婷| 婷婷深爱五月| 五月综合婷婷开心网| 久久综合99| 偷拍五月丁香| 狠狠色丁婷婷日日,伊人激情综合网| 丁香婷婷久久 | 亚洲人成网站999综合| 天天夜天天色天天| Av九九| 色丁香五月婷婷| 六月婷婷在线视频| 66久久视频在线| 五月丁香毛片| 婷婷五月丁香亚洲| 天天狠天天叉| 色噜噜狠噜噜视频| 26uuu国产精品| 激情四射婷婷| 色99欧洲色19| 婷婷五月天成人网| 91色在线/日韩| 婷激情五月| 色色综合无码| 午夜爱插插| 亚洲无码影片| 国产精品人成A片一区二区| 甈你aaaaa| 啪啪色激情五月天| 婷婷天堂视频| 五月天大香蕉婷| 色五月婷婷五月天| 99自拍视频在线| 丁香婷婷影院| 色丁香五月婷婷在线| 亚洲AV免费国产电影| 99综合视频| 另类图片激情五月| 五月六月婷| 色区域网站视频| 五月婷婷 欧美| 色三级色三级| 久久久久久久久久久97| 高清一区二区三区日本久| 丁香五月五婷| 五月丁综合在线观看| 黄久久久| 丁香五月婷婷亚洲激情四射| 26UUU欧美激情一区二区| 日韩成人五月天| 色色精品色| 99日韩| 丁香五月影视| 香蕉视频91| 久久久A级视频| 色婷婷AV在线观看| 国产激情一区| 亚洲av电影网站| 五月婷婷丁香91| 国产精品日本一区二区在线播放 | www久久久久久久久久久久久久久久久| 成片免费播放| 久久激情网| 欧美色五月| 免费视频无码| 激情六月天| 久久激情综合| 国产激情久久久| 东京热免费视频| 97色色婷婷| 我爱大香蕉| 日本久久网| WWW.桔色成人.COM| 国产熟妇乱子伦hd| 久久婷婷老| 大大香蕉综合在线| 免费99色| 超碰在线超碰| 日韩综合网络男女香蕉a片| 99操不停| 丁香九月激情久久| 久久3p| 日韩人妻无码专区| WWW.夜夜操.com| 性小说五月天| 狠狠五月天婷婷激情网。| 99自拍视频| 久久99久久99精品免观看粉嫩| 1024欧美看片| 亚洲乱啪| 婷婷久月| 五月亚洲激情| 国精产品一区二区三区| 色亭亭五月天网扯| 色婷婷六月天在线| 激情五月天婷婷五月天| 日韩欧美一级大黄网站| 久久精彩视频99| 99热这里只有精品在线播放| 激情五月丁香在线观看直播| 久热这里只有精品性色AV| 五月婷啪| 【乱子伦】黄色| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 99在线观看| 青青草a在线| 区区欧美你爱| 婷婷五月天综合AV| 五月天激情小说网| 碰碰碰97国产| www.97碰碰com| 九九热这里精品| 另类图片五月激情| 综合激情在线| 婷丁香五月天| 亚洲国产精品VA在线看黑人| 色色色.COM| 超碰色综合| 中国丰满熟女A片免费观| 色婷婷狠狠| 97操女视频| 大香蕉综合| 欧美综合五月丁香六月婷| 色婷婷AV五月天| 欧美成人精品A片免费一区99| 久久久性爱视频| 五月婷婷中文| 香港九九六区八区99| 五月天婷婷色综合| 丁香五月激情啪啪| 亚洲免费99| 九九99在线免费在线观看视频| 五月婷婷AV| 牛牛澡牛牛爽| 久99| 九九热在线99| 五月丁香六月婷| 人妻五月天激情开心网| 99色色| 五月丁香成人版| 婷婷九九| 五月婷婷欧洲| 激情深爱婷婷网| jiZZdr| 亚洲精品白浆高清久久久久久| 操B视频在线播放| 影音先锋色婷婷| 色五狠狠| www.狠狠干com| 色综合久久88色综合天天看| 五月婷婷天| 亚洲久艹| 五月天婷婷色播在线网| 99热在线只有精品| 中文字幕丰满孑伦无码专区| 色情网综合| 丁香五月激情婷婷视频| 极品人妻videosss人妻| 婷婷四色五月| 丁香六月婷| 日韩欧美成人片| 婷婷六月天亚州| 六月丁香啪啪| 婷婷在线精品| 五月天婷婷社区| 99只有精品9| 婷婷五月 丁香六月| 狠狠狠夜夜夜| 九九色情网站| 青青草搞屄视频网站| 久久er99| 婷婷色色综合| 中文人妻主播久久| 99热6精品| 色噜噜狠狠色综合网| 五月婷婷丁香伦理网| 色亭亭五月天丁香综合AV - 百度 - 百度| 中文字幕日产A片在线看| 色色色色丁香| 天天婷婷天天| 色情综合| 成人五月天在线观看| 99热这里只有精品国产精品| 色播丁香| 亲子乱AV一区二区三区下载| 色婷婷五月天堂资源| 老司机伊人| 五月婷婷影视| 婷婷播播五月天| 亚洲精品久久久久久久久久吃药| 国产九九一区二区三区| 插插干干干色| 国产精品人成A片一区二区| 色五月婷婷自拍| 99综合视频| 卡视频1区2区| www.99热视频| 九九超碰人人| 99无码视频| cao久久| 亚洲色色色| 国产成人在线不卡AV| 禁片二区| 这里只有精品69| 成人免费超碰| 色婷婷激情五月天| 人人97操| 久久久精品人妻| 亚洲无aV在线中文字幕| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 亚洲另类婷婷五月丁香在线播放| 99久久6| 99噜噜噜| 伊人碰碰碰| 99热18| 超碰国产在线| 深爱五月天 开心网| 这里只有精彩视频| 综合99在线| aV直接看| 五月婷婷丁香在线| WWW·色色色·COM| 天天肏夜夜肏| 丁香五月色色色色| 欧美三级巜人妻互换| 九玖视频这里只有精品| 伊人网碰碰| 婷婷99| 国产午夜精品一区二区三区嫩草| 天天爽在线视频| 伊人综合网站| 久色资源网| 色婷婷AV在线| 五月天伊人| 玖玖福利视频资源| 亚洲另类毛片| 97人人干人人操| 一區四區歐美日韓| 婷婷五月丁香成人网| 久久99色色| 中文字幕性爱视频| 激情五月丁香五月| 深爱五月天 开心网| 99在线精品免费视频| 亚洲综合色网站| 91狼友视频在线观看| 婷婷夜夜夜夜| 67194中文字幕| 亚洲综合婷婷| 五月婷婷色激情| 五月激情啪啪啪| 91操操| 久久开心五月天激情| 日韩无码亚欧无码| 丁香六月久久| 婷婷五月天性| 开心五月婷婷婷美女| 丁香婷婷激情| 亚洲 精品 综合 精品| 五月丁香六月| 天天做天天爱天天爽| 99视频在线啪| www.色婷婷| 夜夜爽天天干| 成人深爱丁香五月| 五月丁香婷婷激情四射迷人| 日本天天操| 婷婷五月天xxx| 久久久久98| 激情丁香五月| 久色大| 玖玖九九99| 天天网曰日曰夜夜综合永久免费| 天天做天天爽| 深爱激情九九五月天| 人妻有码乱操| 夜夜干夜夜操| 人人爱国产| 激情深愛五月視頻| 久久大香蕉视频| 大伊香蕉精品视频在线| 常久最新免费的色吊丝| av操一操| 亚洲激情四射色| 99热超碰在线| 色色色热热热| 五月青青草综合| 亚洲国产成人在线| 婷婷丁香五月天操逼| 97精品在线| 色婷五月天综合网| 九九视频精品这里只有| 超碰2021| 色色色99| 色五月激情综合| 婷婷国产日本欧美| 激情久久久久久| 久久久免费图片视频| 91九色精品熟女内射| 97色色色视屏| 色婷婷文字幕| 五月天婷婷丁香成人网| 婷婷综合视频| 六月丁香激情网| 五月天中文网| 六月婷婷狠狠| 91se在线视频| 久婷婷五月天影院| 免费在线观看av网站| 91久久久久久久| 五月色丁香| 久久99久久99www| 精品影院| 久热伊人| 亚洲五月天婷婷| 五月丁香婷草| 婷婷色五月婷| 99热精品在线播放| 岛国av电影网站| 巴基斯坦粉嫰无码视频| 久久亚洲无码| 日韩激情网站| 东京热人妻一区二区三区在线| 丁香五月婷婷网| 91色五月| 五月天成人综合| 69色婷婷| 五月天色区| 婷婷丁香小说| 五月天婷婷在线播放| 婷婷爱综合| 思思99热热热99| 亚州精品色情无码A片| Y11111111111少妇电影院| 久草热在线视频| 色五月在线播放| 91九色在线| 亚洲AV网站| 国产激情久久| 99免费| 婷婷久久五月天| 五月婷婷综合在线| 五月丁香六月| 亚洲色综合| 国产乱妇无乱码大黄AA片| 狼人婷婷久久| 日本在线视频www色| 青草激情综合| 天天色天天日| 五月综合激情| www.91九色| 婷婷亚洲色| 婷婷丁香六月天| 婷婷久久综合久| 精品亚洲国产成人A片在线鸭王 | 99色色最新视频| 六月天六月婷| 情婷婷五月天| 丁香婷婷深情五月亚洲| 婷婷四色五月| 婷婷六月伊人| 日本婷婷| 五月丁香啪啪激情| 亚洲色另类| 亚洲亚洲人成综合网络| 丁香五月在线播放| 免费无码毛片一区二区A片| 深爱激情五月婷婷| 色婷五月天| 五月天婷a在线| 97狠狠碰| 欧美99热| 开心婷婷五月天电影院| 婷婷丁香五月天哟啪| 國語久久婷| 99久久66| 国产在线另类五月婷婷| 日本ww亚洲| 婷婷五月天激情文学| 99av视频| 日本久久人人| 丁香啪啪| 99热97美女| 久久作爱| 中文字幕丁香五月| 五月开心激情| 色色操| 久久婷婷丁香花综合网| 操B视频在线播放| 久久一级免费黄色片| 91人人爽人人操| 日韩操人| 婷婷综合五月色播| 97五月久久丁香婷婷| 九九99香蕉在线视频播放| 久久久久久久久久久44| 婷婷五月天情色| eeuus五月婷| 婷婷五月天日本无码| 狠狠干总合| 激情五月婷婷在线观看| 九九成人| 性无码专区无码| 一区二区三区四区牛| 五月丁香久久丝袜啪啪| 激情图片99| 激情综合网,婷婷| 欧美色婷婷| 嫩草AV久久伊人妇女超级A| 成人做爰高潮A片免费视频| 天堂成人A片永久免费网站| 国产特级毛片AAAAAAA高清| 这里只有精品视频99| 99久久6| 五月天激情美女久久| 99久久婷婷精品视频| 玖玖玖婷婷婷| 激情精品久久| 女人被男人吃奶到高潮| 97狠狠色| 婷婷黄色网| 五月六月丁香激情视频| 丁香色啪综合| 色狠狠综合网| 成人免费超碰| 国产伊人五月天| 五月丁香综合网| 日日操夜夜擼| 99热99在线| 激情六月综合| 日本精品人妻无码77777| 六月婷婷天堂| ss五月天激情| 色狠狠999综合| 久777| 五月婷婷五月丁香综合| 久色国产| 激情综合婷婷| 久久99久久99精品免观看粉嫩| 深爱五月月天| 色婷婷精品视频| 婷婷99视频全集高清| 国产精品人妻在线网址| 99碰视频| 色九九九综合| 五月香蕉婷婷| 欧美操人| www.激情com| 五月婷导航| 亚洲精品一区中文字幕乱码| 强壮公让我夜夜高潮A片视频| 操97在线观看| 欧美综合激情五月丁香| 四月婷婷丁香五月| 伊人热在线大香蕉| 久久99激情| 开心激情网在线| 丁香久久综合| 五月婷婷啪啪综合网| 久久99综合| 成人日韩欧美| 亚洲成人在线免费| 综合色吧| 五月成人网站| 丁香五夜激情四射夜夜夜| 婷婷丁香五月天综合AV| av大片在线| 婷婷激情四射| 91超碰人人操| 色婷婷av在线| 色碰碰| 五月激情综合性爱| 五月婷婷免费在线视频| 婷婷综合| 丁香激惜男女| 能看的av| 五月天色婷好好| 婷婷香五月天| 色色五月婷婷| 99热这里只有精品16| 丁香五月色激情| 俺去啦综合网| wwww.9免费视频| 亚洲成人黄色网| 97色综合视频| 婷婷性爱五月天| 操操操91| 婷婷成人视频| 六月婷欧美| 久久五月网| 五夜婷婷| 99热这里只有精品4| 卡视频1区2区| 五月婷在线| 91大神操美女| 欧美日韩成人| sS丁香五月婷婷| 国产精品久久久久久久久久免费| 九九视屏| 日本三级中文字幕| 色人久久| 91日韩在线| 天天射综合网天天插| 国产无套精品一区二区| 婷婷爱五月| www.9797国产| 97操在线资源| 激情五月激情综合网| 99久久偷拍视频| 国产精品色色| 国产成人AV在线| 婷婷久久大香蕉| 婷婷中文字幕版| 日本eVa一区=区视频| 丁香狠狠| 超碰69天堂| 99综合| 91Chinese在线| 国产又黄又爽又色的免费| 99综合视频在线| 成人美女网| 五月激情六月宗合| 五月丁香黄色| 婷婷久热| 可以直接看的AV网站| 琪琪布丁香社区激情五月天| www.精品99| 99热免费18| 色婷婷亚洲| 66久久视频在线| 中文字幕综合色| 久久9久| 五月天色婷婷小说| 婷婷激情97| 九九黄色网| 天天干天天干天天干天天干天天干天天干天天| 丁香五月伊人| 99re热在线视频| 2023天天日夜夜爽| 在线99精品| 俺去也综合| 天天爽天天草| 午夜亚洲国产精品av一区二区| 天天综合色丁香| 色婷婷综合亚洲| 伊人激情AV一区二区三区| WwW天天干| 五月天婷婷色情| 久热九九| 久久国产色| 天天日天天干天天爱| 精品夜夜澡人妻无码AV| 婷婷六月插屄激情| 色噜噜五月丁香婷婷| 99视频只有这里精品| 丁香五月婷婷www..com| 天天干,夜夜爽| 日本ww亚洲| 热久国产|