C 三層架構登陸例項

2021-12-29 20:46:18 字數 3299 閱讀 5663

很早之前,就聽說過三層結構了。當時只知道 三層結構 是把 系統的 介面 跟 資料庫操作等不相關的程式分別開來。原來這麼簡單的實現,確實傳說中的 三層結構啊。

首先,先來看一下是哪三層。表示層(ui,user inte***ce),業務邏輯層(bll businesslogiclayer),資料訪問層(dal data access layer)。三層的劃分是物理上的劃分。

表示層(ui),這個最容易理解,就是使用者看到的主介面。

資料訪問層(dal),也不難理解,主要是負責資料的增刪改查。

業務邏輯層(bll),算是表示層和資料訪問層的橋梁吧。裡面主要存放一些業務流程。也就是邏輯。主要作用就是從dal中獲取資料,然後顯示到ui上。

舉乙個例子,三層結構可以用飯店的例項來理解。

ui指的是服務員,bll是廚師,dal是採購員。

在顧客的眼裡,只能看到服務員為他們服務。並不知道後台廚師和採購員是如何做的。對於上述三種不同的角色來說,無論哪個環節出了問題,只需要更換乙個員工就可以照常營業的。

三層架構的優勢,還是職責分離,降低耦合。

接下來,看乙個使用三層結構的登陸例項。首先,需要宣告一下。這個例項中有很多bug需要優化。不過對於展示三層的主要思想足夠了。僅僅是乙個例項而已。

資料庫表:

這是資料模組圖:

細心的讀者肯定會發現,除了ui,bll,dal這三個之外還有乙個moudel存在,這個moudel不屬於任何一層,只是為了更好地鏈結三層而存在的。這個類只儲存,與以上三類共同使用的東西。起乙個協調的作用。moudel類,也就是實體類。

下面是這幾個層次的關係。

接下來需要看一下,他們分別是如何實現各自的分工的。

entity類:

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace login.model

public string username

public string password

public string email }}

u層:using system;

using system.collections.generic;

using system.componentmodel;

using system.data;

using system.drawing;

using system.linq;

using system.text;

using system.threading.tasks;

using system.windows.forms;

namespace loginui

private void label1_click(object sender, eventargs e)

private void btnlogin_click(object sender, eventargs e)

catch (exception ex) //如果登陸有異常 則登陸失敗}}

}b層:

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace login.bll //業務邏輯層

else //如果資料庫中沒有該使用者名稱,則登陸失敗}}

}d層:

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace login.dal //資料訪問層

}using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

using system.data;

using system.data.sqlclient;

namespace login.dal

user.id=reader.getint32(0);

user.username=reader.getstring(1);

user.password=reader.getstring(2);

if(!reader.isdbnull(3)) //不要求一定要有email,也可以返回

}return user;}}

}}using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

using system.data.sqlclient;

namespace login.dal}}

}接下來,看一下執行結果:

執行成功的情況:

輸入錯誤資訊:

雖然這是乙個很小的例項,但是用來學習三層卻足夠了。有寫的不好的地方可以理解。

總結:對於使用三層架構的程式來說,哪層出錯改**。極大程度的降低了系統的耦合性。當然,具有層次的程式,維護起來必然要方便許多。

C 三層架構登陸例項

很早之前,就聽說過三層結構了。當時只知道 三層結構 是把 系統的 介面 跟 資料庫操作等不相關的程式分別開來。原來這麼簡單的實現,確實傳說中的 三層結構啊。首先,先來看一下是哪三層。表示層 ui,user inte ce 業務邏輯層 bll businesslogiclayer 資料訪問層 dal ...

三層登陸例項

在理論篇我們已經知道了,實體類作為三層之間的傳遞和處理物件 封裝引數 在系統中三層建立對實體類的引用,上層建立對下層的引用 ui bll dal。1 系統說明 功能 以機房收費系統的資料庫 user info 表為基礎實現基本的系統登陸,如果登陸成功則彈出提示框顯示登入成功,否則則顯示 使用者名稱和...

c mysql三層架構例項 三層架構例項

一 概要 這篇部落格,準備用乙個小demo來介紹應該實現三層架構。三層架構只是分層的一種經典形式,到底分幾層,要依具體情況而定,考慮到系統的複雜程度,和後期的可維護性,完全可以分四層,五層,甚至六層,七層。二 demo 1 實現語言 vb.net 2 需求 學校機房收費系統 中的乙個功能 操作員為學...