首先先把我的设计思想说一下: 我用的是vb+ ADO+access设计的这个管理系统,之前老师发了一个,我看不懂,因为那些代码就在外面,整个程序,包括界面都是代码实现的,我的实力还不够,看不懂,然后就自己重新写了一个新得。网上很多都是vb+sqlserver 但是我认为 我不用那么高级的 access就足够了。 账号和密码存在dbuser表里,我设置了 zipcode 作为找回密码用。 然后通过数据调用就可以了。
我认为在整个系统的设计中,当然也就包括登陆框,我注意的是 定义变量的作用范围、利用vb对access数据检索时是否与ado的关键字冲突,倒是报错,再还有一个就是 引号的使用,这个引号是令我非常头疼的,曾经有一下午,我看引号就看了一下午,当解决了那个问题以后,异常兴奋。我认为你在编程的道路上,肯定也会有我这个兴奋的过程得。
关于登陆,我还使用了一个常量,限制尝试登陆的次数,没有设计到定时器,我看了一篇文章使用的是定时器,但是我没有使用,各位如果愿意的话,我非常荣幸的请大家把有关计数器在登陆框上的应用跟帖发上来,先说声谢谢。
在登陆框,我设置了一个 Privilege选项,用来区别两个账号的权限,在进入程序以后,进行不同的操作。
好了,先把基本图片发上来,让大家看一下 表的数据项:
之后是vb的登陆界面:
实现ado的功能,先在“ 工程---引用 ”指定 “Microsoft ActiveX Data Objects 2.0 Library”,我用的是2.8的,然后就是代码了~~
直接发上来全部的了~~
Option Explicit Dim cnn As ADODB.Connection Dim i As Integer Public Privilege As String
Private Sub Form_Load() '连接Access数据库 Set cnn = New ADODB.Connection cnn.Provider = "Microsoft.Jet.OLEDB.4.0" Dim cnnFile As String cnnFile = "Data Source=" & App.Path & "\MangeDB.mdb;Persist Security Info=False;Jet OLEDB:Database Password=gougou" cnn.Open cnnFile '检测数据库是否链接成功
If cnn.State = adStateOpen Then MsgBox "成功", 64, "数据库连接" Else MsgBox "失败,请检查数据库文件", 48, "数据库连接" End If i = 3 Label1.Caption = "您还有 " & i & " 次机会" End Sub
Private Sub cmdok_Click() '检测密码 Dim Textusername As String Dim Textpassword As String Dim rs As ADODB.Recordset Dim strsql As String Dim temp As String Textusername = Vbusername.Text Textpassword = Vbpassword.Text If i = 0 Then End '限制登陆次数 If Me.Vbusername.Text = "" Or Me.Vbpassword.Text = "" Then i = i - 1 MsgBox "用户名和密码不能为空", 48, "提示" Me.Vbusername.SetFocus '账号或密码为空提示检查 Else Set rs = New ADODB.Recordset strsql = "select * from Dbuser where Dbusername='" & Textusername & " ' and Dbpassword='" & Textpassword & "'" rs.Open strsql, cnn, adOpenStatic, adLockReadOnly 'Open table "DBser" If rs.EOF Then MsgBox "用户名或密码错误", vbCritical, "提示" i = i - 1 Label1.Caption = "您还有 " & i & " 次机会" Me.Vbusername = "" Me.Vbpassword = "" Me.Vbusername.SetFocus Else '从数据库取得privilege值 判断权限 提示用户
Privilege = rs.Fields("Privilege").Value If Privilege = "admin" Then temp = "管理员账号" Else: temp = "普通用户账号" End If MsgBox "你是" & temp & " ", 64, "权限提示" rs.Close Set rs = Nothing cnn.Close Unload Me Index.Show End If '从数据库检查用户名和密码的正确性 End If
End Sub
Private Sub forgetkey_Click() Dim zip As String Dim Textusername As String Dim pass As String Dim strsql As String Textusername = Me.Vbusername.Text zip = Trim(InputBox("请输入此账号对应的邮编", "找回密码")) If zip = "" Or Textusername = "" Then MsgBox "账户或邮编号码不能为空", , "错误提示" Else Dim rc As ADODB.Recordset Set rc = New ADODB.Recordset strsql = " select * from Dbuser where Dbusername='" & Textusername & " ' and zipcode ='" & zip & "' " rc.Open strsql, cnn, adOpenStatic, adLockReadOnly If rc.EOF Then MsgBox "您的输入有误", vbCritical, "提示" i = i - 1 Label1.Caption = "您还有 " & i & " 次机会" If i = 0 Then End Else pass = rc.Fields("Dbpassword").Value MsgBox "你的密码是 " & pass & " 请妥善保管!", vbInformation, "密码提示" Set rc = Nothing rc.Close pass = "" End If End If End Sub Private Sub cmdCancel_Click() End End Sub '放弃键退出系统
请各位看一下好了,我认为学习编程,首先应该能够先看优秀的代码,能够静下来看完,我就比较差劲,希望大家能够静下心来看完,然后加上自己的总结,一定受益匪浅。
第二,我认为 csdnhttp://www.csdn.net/ 是个太好的网站了,在我写这个小程序的几天里,很多疑问都是在这个论坛上得到的解答。
|