肖波
為了解決程序設(shè)計(jì)本身枯燥、難懂的問題,激發(fā)學(xué)生學(xué)習(xí)興趣,很多老師都會(huì)精心選擇一些獨(dú)特的項(xiàng)目教學(xué),這些項(xiàng)目是來(lái)自于實(shí)際的應(yīng)用,在解決實(shí)際問題時(shí),有助于培養(yǎng)和發(fā)展學(xué)生主動(dòng)參與,提出問題,分析問題,解決問題,往往獲得較好的教學(xué)效果。“系統(tǒng)登陸程序”是我們?cè)谛畔⑾到y(tǒng)開發(fā)的一個(gè)部分,根據(jù)學(xué)生知識(shí)的掌握程度,將其分為三個(gè)階段:
第一階段:簡(jiǎn)單“系統(tǒng)登陸程序”的設(shè)計(jì)
通過大家都熟悉的QQ軟件,引入該項(xiàng)目要實(shí)現(xiàn)的基本功能,每次登錄時(shí)都需要驗(yàn)證用戶名和密碼,當(dāng)輸入錯(cuò)誤的用戶名或密碼時(shí)提示登陸失敗,只有用戶名和密碼匹配時(shí)系統(tǒng)登陸成功。
項(xiàng)目實(shí)施過程中進(jìn)行界面設(shè)計(jì)時(shí),引導(dǎo)學(xué)生掌握基本控件屬性的設(shè)置,著重介紹密碼文本框password char屬性的設(shè)置。
界面設(shè)置好后,再編寫程序?qū)崿F(xiàn)密碼驗(yàn)證的功能。首先讓學(xué)生分析程序運(yùn)行過程中可能出現(xiàn)的情況,根據(jù)所學(xué)知識(shí)給出合理的分支,在不同分支中給出相應(yīng)的信息提示。主要代碼如下:
Private Sub Command1_Click( )
If Text1 = "admin" And Text2 = "888888" Then
MsgBox "登錄成功!"
Else
MsgBox "登錄失?。?
End If
End Sub
程序運(yùn)行正常,但存在一些功能缺陷。例如:用戶名大小寫區(qū)分,系統(tǒng)登錄次數(shù)無(wú)限制等。下面我們對(duì)程序作了改進(jìn):
定義一個(gè)全局變量a,并給出一個(gè)初值限定登陸次數(shù)。
Private Sub Command1_Click()
If Trim(LCase(Text1)) = "admin" And Text2 = "888888" Then
MsgBox "登錄成功!"
Else
MsgBox "登錄失敗!"
a = a - 1
End If
If a = 0 Then
End
End If
End Sub
第二階段:利用數(shù)組實(shí)現(xiàn)“系統(tǒng)登陸程序”
上一階段程序存在用戶和密碼單一且不能修改的問題,結(jié)合所學(xué)數(shù)組和循環(huán)結(jié)構(gòu)的知識(shí)我們將對(duì)原有程序進(jìn)行進(jìn)一步修改。
程序修改基本思路:利用數(shù)組存放用戶名和密碼,在系統(tǒng)運(yùn)行過程中可以給數(shù)組重新賦值。系統(tǒng)登錄時(shí)從頭至尾遍歷數(shù)組,一旦找到相匹配的用戶名和密碼時(shí)則系統(tǒng)登錄成功,若從頭至尾遍歷數(shù)組未能找到匹配的用戶名和密碼則系統(tǒng)登錄失敗一次,累計(jì)遍歷三次數(shù)組仍然不能成功則強(qiáng)制退出系統(tǒng)。
項(xiàng)目實(shí)施工程進(jìn)行界面設(shè)計(jì)時(shí)主要增加了“添加用戶”和“修改密碼”按鈕,同時(shí)增加了添加用戶窗體、修改密碼窗體和模塊。
界面設(shè)置好后,再編寫程序?qū)崿F(xiàn)密碼驗(yàn)證的功能。
“添加用戶”主要代碼:
Private Sub Command1_Click()
If Text2 = Text3 Then
For i = 1 To 4
If strName(i) = "" And strPass(i) = "" Then
strName(i) = Text1: strPass(i) = Text2
Unload Me
Exit For
End If
Next i
Else
MsgBox " 兩個(gè)密碼不匹配!"
End If
"修改密碼"主要代碼:
Private Sub Command1_Click()
If Text1 = Text2 Then
strPass(xiabiao)= Text1
End If
Unload Me
End Sub
"登錄"主要代碼
Private Sub Command3_Click()
For i = 1 To 4
If Trim(LCase(Text1.Text)) = LCase(strName(i))
And Text2 = strPass(i) Then
MsgBox "登陸成功!"
user = Text1
pass = Text2
xiabiao = i
Exit For
End If
Next i
If i = 5 Then
MsgBox "登陸失敗!"
End If
End Sub
程序運(yùn)行后可以向數(shù)組中添加用戶和修改用戶,可以使用不同的用戶名登陸,但也存在一定的缺陷,如添加的用戶不能保存,登陸系統(tǒng)重啟后數(shù)組又恢復(fù)原來(lái)的初始值。
第三階段:利用數(shù)據(jù)庫(kù)實(shí)現(xiàn)“系統(tǒng)登陸程序”
針對(duì)第二階段程序的問題,結(jié)合所學(xué)數(shù)據(jù)庫(kù)訪問技術(shù)和SQL結(jié)構(gòu)化查詢語(yǔ)言,對(duì)數(shù)據(jù)庫(kù)表進(jìn)行操作(增加、刪除、修改)。
第一步,添加標(biāo)準(zhǔn)模塊并設(shè)置好名稱;第二步,編寫代碼,首先在工程中添加引用,其次定義從connection對(duì)象,定義command對(duì)象,并設(shè)置該對(duì)象的命令(insert、update、select、delete)。系統(tǒng)登陸時(shí)在記錄集對(duì)象中相應(yīng)的字段循環(huán)驗(yàn)證用戶名和密碼,若找到相匹配的用戶名和密碼則系統(tǒng)登陸成功,若循環(huán)一遍從頭至尾未能找到匹配的用戶名和密碼則系統(tǒng)登陸失敗一次,累計(jì)登陸錯(cuò)誤三次強(qiáng)制退出系統(tǒng)。程序在這里就不一一列出。此外,我們還可以進(jìn)行界面的優(yōu)化、實(shí)現(xiàn)記載系統(tǒng)登陸日志等功能。
總之,通過該項(xiàng)目三個(gè)階段的實(shí)施,由簡(jiǎn)單到復(fù)雜,由淺入深,逐步深入,讓學(xué)生在一步步走向成功的道路上感受收獲的喜悅,學(xué)生學(xué)習(xí)更主動(dòng),更容易進(jìn)入角色,學(xué)生隨時(shí)開動(dòng)腦筋解決問題,在項(xiàng)目實(shí)施過程中學(xué)生真正成為了教學(xué)主體,教師起引導(dǎo)作用,項(xiàng)目實(shí)施過程充分體現(xiàn)“做中學(xué),學(xué)中做”的理念。