機房登陸 三層實踐

2021-06-16 22:50:55 字數 4096 閱讀 9799

前邊學習了三層,也寫過了三層的理論知識。後續用機房收費系統的登陸例項,實踐了三層的理論知識。疏於思考,所以即使敲了兩、三遍的登陸窗體也沒有用。也是我沒有信心將敲的例項貼出來的原因。

所以,我總結了:學習不是應付,做做表面功夫。用心+思考。

環境:vb.net框架下,以傳實體的方式完成。

ui層:即是介面部分。

實體:在ui層、bll層、dal層都需要使用的抽象。

'使用者類:主要涉及使用者的基本屬性(資訊)

public class userinfo

private name as string

private password as string

private userid as string

private level as string

private account as string

'以下為可讀寫屬性

'登陸使用者名字

public property user_name() as string

getreturn name

end get

set(value as string)

name = value

end set

end property

'登陸使用者密碼

public property user_pwd as string

getreturn password

end get

set(value as string)

password = value

end set

end property

'登陸使用者id

public property user_id() as string

getreturn userid

end get

set(value as string)

userid = value

end set

end property

'登陸使用者級別

public property user_level() as string

getreturn level

end get

set(value as string)

level = value

end set

end property

'登陸使用者積分

public property user_account() as string

getreturn account

end get

set(value as string)

account = value

end set

end property

end class

dal層:主要是訪問資料庫,返回查詢結果。

imports system.data.sqlclient

imports entity

public class logindal

'資料庫連線語句

dim scon as string = "data source = (local);initial catial = charge_sys;persist security info = true;user id = sa;password = 123"

dim conn as sqlclient.sqlconnection

'例項化連線字串,並開啟

public sub new()

conn = new sqlclient.sqlconnection

conn.connectionstring = scon

conn.open()

end sub

'查詢資料庫中的使用者是否存在.

public function query_user(byval txtuser as entity.userinfo) as boolean

'定義資料庫查詢語句

dim commandtext as string

commandtext = "select * from user_info where userid = '" & txtuser.user_id & "'and pwd = '" & txtuser.user_pwd & "'"

dim sqlcmd as sqlclient.sqlcommand = new sqlclient.sqlcommand(commandtext, conn)

'定義乙個reader來讀資料,查詢使用者是否存在

dim myreader as sqldatareader

myreader = sqlcmd.executereader()

'如果查詢記錄不為空,則返回真;記錄為空,返回假。

if myreader.read() then

return true

else

return false

end if

'關閉連線

conn.close()

end function

end class

bll層:主要做邏輯判斷,例項化dal層的類,取得查詢結果。進行邏輯判斷。

imports entity

imports logindal

public class manageruser

'定義乙個d層的物件

dim db as new logindal.logindal

'此函式的作用是返回d層的執行的結果

public function query_user(byval model as entity.userinfo) as boolean

return db.query_user(model)

end function

end class

ui層:收集使用者的資訊,例項化bll層的類,取得判斷結果。返回給使用者。

imports entity

imports loginbll

public class form1

private sub btncancle_click(sender as object, e as eventargs) handles btncancle.click

endend sub

private sub btnok_click(sender as object, e as eventargs) handles btnok.click

'定義乙個實體類物件,將文字框中的內容賦給實體類物件

dim currentuser as new userinfo

currentuser.user_id = txtusername.text.tostring()

currentuser.user_pwd = txtuserpwd.text.tostring()

'定義乙個邏輯層物件,根據業務邏輯層返回的結果,通知使用者資訊

dim userbll as loginbll.manageruser = new loginbll.manageruser

if userbll.query_user(currentuser) then

msgbox(true)

else

msgbox(false)

end if

end sub

end class

至此登陸窗體完成。

小結:1.登陸例項可謂,麻雀雖小,五臟俱全。容易理清三層之間的關係及操作。

2.資料庫查詢部分內容可以進行封裝,避免重複操作。

3.邏輯層直接將查詢結果返回,沒有做過多處理,例如對資料庫進行操作。

4.方法、函式都相對簡單,只是返回布林值。

5.命名方式不是很合理,待科學化。

三層登陸例項

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

C 三層登入《機房重構》

光總結了c 三層登入出現的問題,還沒有真正總結過三層登入例項,近來敲機房的七層登入,可謂是問題重重,當初自以為三層理解的很透徹了,現在看來還差的很多,我需要用總結來沉澱一下自己,讓自己的心不那麼浮躁。簡單來說,三層有別於之前有vb敲的小例子的是,三層非常好的解除了各個層之間的耦合,為以後的維護提供了...

三層架構 實踐篇

層 呼叫ui層 model bll bll層 model dll dll層 model 最後就是 實現部分 model層namespace login.model public string username public string password public string email ui...