注册 登录
编程论坛 VB6论坛

大家来做个人性化接近完美的登陆程序!

罪满天下 发布于 2006-03-11 13:40, 9520 次点击

学VB就到这来了,感觉这好!呵呵,
经过几天的学习,总结一下,做点东西,当是自己的作业吧!请大家帮忙完善一下!
才学,所以写的不是很规矩,也很烦杂。

内容:
做个登陆程序,以VB+Access。
功能:
1、验证。验证用户名的正确与否、密码与用户名符合与否
2、人性化设计。
①、输入用户名后,无论是鼠标移动到密码框,还是按“Tab”键到密码框,都搜索用户名的存在与否,但不报错
②、输入密码后,选者状态在“确定”按钮上。
③、确定后检验,用户名为空时,光标停在用户名框,密码空停密码输入框。
控件:
TextBox、CommandButton、PictureBox、Timer、ADO


程序内容:
①:控件
2 TextBox
2 CommandButton
1 PictureBox
1 Timer

②:程序
'form1程序
Private Sub Command1_Click()
Unload Me
End Sub

Private Sub Command2_Click()
Dim ConStr As String
If text_user.Text = "" Then
MsgBox "请输入用户名!", vbOKOnly + vbExclamation, "登陆错误"
text_user.SetFocus
Exit Sub
End If

Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
ConStr = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & App.Path & "\ttj02.Mdb"
cn.Open ConStr
cn.CursorLocation = adUseServer
rs.Open "Select * from dbuser", cn, adOpenKeyset, adLockPessimistic
If rs.RecordCount > 0 Then
If text_user.Text <> "" Then
Set rs1 = New ADODB.Recordset
Dim TextUserName
TextUserName = Left(text_user.Text, 4)
rs1.Open "Select * From dbuser Where User_nb= '" & TextUserName & "'", cn, adOpenKeyset, adLockPessimistic
If rs1.RecordCount > 0 Then
text_user.Text = Left(text_user.Text, 4) & rs1.Fields("user_zhuwu")
Text_password.SetFocus
If Text_password <> "" Then
If rs1.Fields("User_Nb") = TextUserName And rs1.Fields("User_password") = Text_password.Text Then
Form3.Show
Unload Me
Else
MsgBox "密码错误!", vbExclamation + vbOKCancel, "登陆错误"
text_user.Text = ""
Text_password = ""
text_user.SetFocus
End If
Else
MsgBox "请输入密码!", vbExclamation + vbOKCancel, "登陆错误"
End If
Else
MsgBox "沒有用戶信息,請確定!", vbExclamation + vbOKCancel, "登陆错误"
text_user.Text = ""
Text_password = ""
text_user.SetFocus
Exit Sub
End If
rs.Close
End If
End If
End Sub

Private Sub Text_password_LostFocus()
If text_user.Text = "" Then
text_user.SetFocus
Else
If Text_password.Text <> "" Then
Command2.SetFocus
End If
End If
End Sub

Private Sub Text_password_Validate(Cancel As Boolean)
If text_user.Text = "" Then
text_user.SetFocus
Else
If Text_password.Text = "" Then
Text_password.SetFocus
Else
Command2.SetFocus
End If
End If
End Sub

Private Sub text_user_LostFocus()
If text_user.Text <> "" Then
Dim ConStr As String
Set cn = New ADODB.Connection
Set rs2 = New ADODB.Recordset
ConStr = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & App.Path & "\ttj02.Mdb"
cn.Open ConStr
cn.CursorLocation = adUseServer
rs2.Open "Select * From dbuser Where User_nb= '" & TextUserName & "'", cn, adOpenKeyset, adLockPessimistic
If rs2.RecordCount > 0 Then
text_user.Text = text_user & rs2.Fields("user_zhuwu")
Text_password.SetFocus
rs2.Close
Else
text_user.Text = text_user.Text
Text_password.SetFocus
Exit Sub
End If
Else
text_user.SetFocus
End If
End Sub

Private Sub text_user_Validate(Cancel As Boolean)
Dim ConStr As String
Set cn = New ADODB.Connection
ConStr = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & App.Path & "\ttj02.Mdb"
cn.Open ConStr
cn.CursorLocation = adUseServer
Dim TextUserName
TextUserName = Left(text_user.Text, 4)
If text_user.Text <> "" Then
Set rs3 = New ADODB.Recordset
rs3.Open "Select * From dbuser Where User_nb= '" & TextUserName & "'", cn, adOpenKeyset, adLockPessimistic
If rs3.RecordCount > 0 Then
text_user.Text = Left(text_user.Text, 4) & rs3.Fields("user_zhuwu")
Text_password.SetFocus
rs3.Close
Else
text_user.Text = Left(text_user.Text, 4)
Text_password.SetFocus
Exit Sub
End If
End If

End Sub

'form2程序
Private Sub Form_Load()
Me.Show
Me.Timer1.Interval = 3000
Me.Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
Form1.Show
Unload Me
End Sub

呵呵 没看昏吧?? 大家下下去弄弄!谢谢大家的支持!
推荐新手学习用!

只有本站会员才能查看附件,请 登录

38 回复
#2
purana2006-03-11 13:47
不错,但我觉得这代码还是蛮熟悉的,特别是里面用到了繁体字...
#3
罪满天下2006-03-11 14:08
呵呵 现学现卖,

大家多教点哦!

完善一下, 我觉的程序中用键盘“Enter”按还没到效果

如果 光标在“用户输入框”按回车到“密码输入框”再按到选定“确定”最后再按再提交,这样就完美了

就想是用回车象用“Tab”
#4
leon22006-03-11 14:12

把 Form 的 keypreview = true。

在 form 的 keydown 写:
if keycode = vbkeyreturn then sendkeys "{Tab}"

#5
罪满天下2006-03-11 14:21

Good

这样的话,Command 的 Default 属性 设置为 False 也没关系了吧!

#6
houzilin2006-03-11 15:49

为什么用户名密码输入错误提示以后点关闭 就关闭不了窗口了

#7
新手变高手2006-03-11 18:28
哇,学几天就学得那么深的东西,佩服
#8
罪满天下2006-03-11 20:05
感谢斑竹加精啊 呵呵

6楼说的 我也发现了 还不能解决这个BUG 汗~``

不过窗口上的 叉叉可以关
#9
£★☆→2006-06-20 10:15
哈哈 ...............
我下了用用
#10
小河流水2006-06-20 14:47

就是狠人,什么都会
过几年咱把微软给收了

#11
小河流水2006-06-20 14:48
哈哈
狠人
我也用了
#12
maui20002006-06-21 13:42

我也发段自己写的登陆吧~~,相互交流~~

[此贴子已经被作者于2006-6-21 13:46:53编辑过]

#13
海凌2006-08-06 10:56

还可以在窗口加些内容,比如:在txt控件中,鼠标移动到它时,可以改变一种颜色,让用户一目了然·

用到mousemove事件,mouseup事件,得到焦点事件

#14
pulf2006-08-07 20:59

下来玩玩。

#15
seguiwo2007-06-22 18:12
看看
#16
seguiwo2007-06-22 18:20
操作方法如下:Project----&gt;Components---------&gt;Microsoft Form 2.0 Object Library选上就OK了
#17
holly852007-06-23 18:11

下下来研究研究呵呵

#18
jiang_zj2007-06-24 20:17
呵呵,这几天正在找有关登录的材料,我得仔细看看
#19
ligigigi2007-07-12 10:16
学习
#20
hanyiask2007-07-12 13:49

好是好,不知道有什么用呢?

#21
ioriliao2007-07-12 16:39
我只能说这代码很垃圾,因为嵌套太多if了.
#22
遥远的梦2007-07-13 09:36
不错刚好需要,最近搞数据库,头都大了!
#23
昨天2007-07-13 17:01
以下是引用ioriliao在2007-7-12 16:39:12的发言:
我只能说这代码很垃圾,因为嵌套太多if了.

嵌套太多if为什么就垃圾呢?不用分支语句那怎么判断?
诚心请教~PS:我的就有很多IF SELECT IIF之类的..

#24
hanyiask2007-07-13 19:45

不知道有 什么用??

#25
willam2007-07-13 23:56
垃圾,,,没我的毕业设计做的好,,不过是sql的数据库,,,
连用户为空,,密码为空都查不出来,,,你要改一下
#26
xiataoyong2007-09-15 16:02

呵呵!学习中!

#27
沐月乘风2007-09-18 11:48

开源的一定要顶

#28
primist2009-07-26 20:02
感觉不错!试试看了!
#29
qyb9662009-07-28 15:49
Good
#30
berg5212009-09-04 10:21
强悍的人啊,谢谢
#31
lz26442009-09-05 04:05

 我觉得代码有些长了,功能虽然实现了,但是实际的时候如果一个登录窗口就这么长的话可想而知后面和程序有长大。。。。
#32
brambleszp2010-10-28 10:08
好东西,找了很久了,谢谢楼主分享
#33
曙光电子2012-07-15 16:02
非常好的登陆程序,我找了好多天了,谢谢楼主!!
#34
tengyiming2012-08-04 12:34
不错不错,楼主厉害。
#35
zzq702012-12-05 16:13
照抄了代码,不能运行呀。
#36
编程新手人2013-04-15 10:22
佩服
#37
reverie20082014-01-11 11:38
学习了
#38
reverie20082014-01-21 08:18
下载学习了,谢谢!
#39
jssyong2014-09-05 19:34
能做个登陆程序,以VB+excel的吗?
1