機房收費系統 抽象

2021-06-23 03:55:57 字數 3813 閱讀 7780

是否為空?一開始我是用的isnull 來逐個判斷的,但是重複的地方的確很多。我們秉著乙個重複就要努力抽象的原則,同時爭取相似的功能用不同的實現方式。今天算是做個小結,拋磚引玉,希望大家多多的提寶貴意見。

抽象,是為了實現更好的**復用,也便於日後的維護。希望在做合作版的時候,能對這些問題有乙個更加深刻的理解。

這可以單獨寫乙個方法或是小類。

以下是參照高曉青師傅的部落格寫的。

''' ''' 判斷窗體上所有控制項是否為空  

'''

''' boolean

public class isright

public function isnull(log as windows.forms.control.controlcollection) as boolean

dim conobject as new control

dim flag as boolean

flag = true '預設所有控制項內部都有值

for each conobject in log

'利用typeof 檢視空間型別

if typeof (conobject) is textbox then

if conobject.text.trim = "" then 'tag代表當前為空的控制項

msgbox(conobject.tag.tostring + "不能為空,請輸入完整", vbokonly, "提示")

conobject.focus()

flag = false

return flag

exit function

end if

end if

next

return flag

end function

''' ''' 判斷是否為數字

'''

'''

'''

''' boolean

public function isnumberic(log as windows.forms.control.controlcollection) as boolean

dim conobject as new control

dim flag as boolean

flag = true '預設所有控制項內部都有值

for each conobject in log

'利用typeof 檢視空間型別

if typeof (conobject) is textbox then

if isnumeric(conobject.text) = false then 'tag代表當前為空的控制項

msgbox(conobject.tag.tostring + +" " + "請輸入數字", vbokonly, "提示")

conobject.focus()

flag = false

return flag

exit function

end if

end if

next

return flag

end function

這樣乙個類,能迴圈判斷所有的控制項是否為空,或是否為數字。當然,仔細看了上面乙個**你就會了解到,我們還需要在設計空間的時候,將每個空間寫上它們自己的名字,方便給出精準的提示。

這個類直接放在u層即可。

那我們看看它的客戶端呼叫時這樣的。

dim myobject as new isright

dim myobjectnum as new isright

if myobject.isnull(controls) = false then

exit sub

end if

if myobjectnum.isnumberic(controls) = false then

exit sub

end if

u層

public class gettime

shared function getdate() as date

dim getdate1 as new bll.timebll

return getdate1.getdate

end function

shared function gettime() as date

dim gettime1 as new bll.timebll

return gettime1.gettime

end function

end class

b層只是個傳遞,並無實質性內容。我們看看d層的**。你能一眼找到關鍵的兩句麼

''' ''' 獲取日期

'''

'''

'''

public function getdate() as date implements itime.getdate

dim sql as string '定義字串變數sql 用於存放要執行的語句

sql = "select convert(varchar(100), getdate(), 23) " '獲取日期的**

dim cmdtype as commandtype = commandtype.text 'commandtype 指定如何解釋命令字串

dim sqlhelper as new global.sqlhelper.sqlhelper '例項化sqlhelper這個類的物件

dim dt as new datatable

dim sqldate as string

dt = sqlhelper.execselectno(sql, commandtype.text)

sqldate = dt.rows(0)(0).tostring

return sqldate

end function

''' ''' 獲取時間

'''

'''

'''

public function gettime() as date implements itime.gettime

dim sql as string '定義字串變數sql 用於存放要執行的語句

sql = "select convert(varchar(100), getdate(), 24) "

dim cmdtype as commandtype = commandtype.text 'commandtype 指定如何解釋命令字串

dim parameter as sqlparameter() 'sqlparameter表示 sqlcommand 的引數,也可以是它到 dataset 列的對映

parameter = {}

dim sqlhelper as new global.sqlhelper.sqlhelper '例項化sqlhelper這個類的物件

dim dt as new datatable

dim sqltime as date

dt = sqlhelper.execselectno(sql, commandtype.text)

sqltime = dt.rows(0)(0).tostring

return sqltime

end function

end class

機房收費系統,是我們自己親自賦予生命的乙個系統。感謝它讓我開始對敲**有了更多的思考。我們有了很大的空間去思考如何讓我們的**更靈活和更健壯。我們從碼農開始,會走的越來越遠。還是那句話,希望本文能拋磚引玉,你的機房,你是怎麼抽象和優化的呢?歡迎各位留下寶貴意見。

機房收費系統

利用幾乎兩個多禮拜的時間,終於把機房收費系統基本完工了。這個過程中,因為有了學生系統做為鋪墊,所以做的時候還算得心應手吧。在其實也遇到了一引些問題,還是好解決的。這個系統到現在為止,也只能說是基本實現了功能,但是還很不健壯,而且漏洞我想還有很多,還有待進一步的除錯與完善。雖然在敲機房收費系統前,把命...

機房收費系統

利用幾乎兩個多禮拜的時間,終於把機房收費系統基本完工了。這個過程中,因為有了學生系統做為鋪墊,所以做的時候還算得心應手吧。在其實也遇到了一引些問題,還是好解決的。這個系統到現在為止,也只能說是基本實現了功能,但是還很不健壯,而且漏洞我想還有很多,還有待進一步的除錯與完善。雖然在敲機房收費系統前,把命...

機房收費系統(三)

收費系統到今天已經完工了,有些小bug,基本的功能都已實現,這次做機房收費系統中,遇到了很多問題,包括技術上的,包括知識面上的。不怕不知道,就怕不知道。心態問題 在寫 的過程中或者是在畫圖的過程中,心態一定要放平,不要讓一些無所謂的爛七八糟的東西來打擾和影響你的學習。這次寫 中有的時候自己突然心血來...