第一次机房收费系统之登录界面

对于第一次机房这个项目,早就开始了,但是由于学校课程紧张的问题,一直没有跟进,后来弄完了机房了,又快考试了没来的进行总结,现在对此进行总结一下:

对于登录界面的流程如下:

输入用户名----判断是否输入(未输入提示)-----输入密码------判断输入是否为空(为空提示)-----连接数据库表User_Info、onwork_Info和worklogInfo-----与表中数据比对-----隐藏界面显示主窗体

登录界面涉及到的数据库表如下:

worklog_info表(用于存放用户登录记录)、
onwork_info表(用于确定用户是否登录)、
user_info表(用于记录用户信息)

登录界面具体内容如下:

输入用户名判断两者是否为空(为空提示),输入密码判断是否为空(为空提示),连接三个表,首先与user_info表比对查看是否存在此用户(为空提示无此用户),与onwork_info表比对查看是否存在数据(存在则提示此用户已登录),将数据存入worklog_info表中。

具体代码如下:

点击“确定”按钮的执行的操作如下:

Private Sub cmdOK_Click()
    '对worklog_info 表操作
    Dim mrcworklog As ADODB.Recordset '用于存放记录集
    Dim worklogSQL As String '用于存放SQL语句
    Dim worklogMsgText As String '用于存放返回信息
    '对onwork_info表操作
    Dim mrconwork As ADODB.Recordset '用于存放记录集
    Dim onworkSQL As String '用于存放SQL语句
    Dim onworkMsgText As String '用于存放返回信息
    '对user_info表操作
    Dim txtSQL As String '用于存放SQL语句 '用来存放SQL语句
    Dim mrc As ADODB.Recordset '用于存放记录集
    Dim MsgText As String '用于存放返回信息
    
    onworkSQL = "select * from onwork_info where UserID = '" & Trim(txtUserName.Text) & "'"
    Set mrconwork = ExecuteSQL(onworkSQL, onworkMsgText)
    
    worklogSQL = "select * from worklog_info where UserID = '" & Trim(txtUserName.Text) & "' and status='True'"
    Set mrcworklog = ExecuteSQL(worklogSQL, worklogMsgText)
    
    '判断用户名是否为空
    If Trim(txtUserName.Text = "") Then
        MsgBox "请输入用户名!", vbOKOnly + vbExclamation, "警告"
        txtUserName.SetFocus
        txtPassWord.Text = ""
    Else
        txtSQL = "select * from User_Info where userID = '" & Trim(txtUserName.Text) & "'"
        Set mrc = ExecuteSQL(txtSQL, MsgText)
        '判断记录是否为空
        If mrc.EOF = True Then
            MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
            txtUserName.SetFocus
            txtPassWord.Text = ""
            mrc.Close
            Exit Sub
        Else
            '判断密码是否正确
            If Trim(mrc.Fields(1)) = Trim(txtPassWord.Text) Then
                If Trim(mrc.Fields(2)) = "管理员" Then
                    frmMain.GeneralUser.Enabled = True
                    frmMain.Operator.Enabled = True
                    frmMain.Administrators.Enabled = True
                Else
                    If Trim(mrc.Fields(2)) = "操作员" Then
                        frmMain.GeneralUser.Enabled = True
                        frmMain.Operator.Enabled = True
                        frmMain.Administrators.Enabled = False
                    Else
                        If Trim(mrc.Fields(2)) = "一般用户" Then
                            frmMain.GeneralUser.Enabled = True
                            frmMain.Operator.Enabled = False
                            frmMain.Administrators.Enabled = False
                        End If
                    End If
                End If
                '判断是否此用户是否登陆过的问题
                If mrconwork.EOF = True And mrcworklog.EOF = True Then
                    ok = True
                    '更新数据表worklog_info
                    mrcworklog.AddNew
                    mrcworklog.Fields(1) = Trim(txtUserName.Text)
                    mrcworklog.Fields(2) = Trim(mrc.Fields(2))
                    mrcworklog.Fields(3) = Date
                    mrcworklog.Fields(4) = Time
                    mrcworklog.Fields(7) = VBA.Environ("computername")
                    mrcworklog.Fields(8) = "True"
                    mrcworklog.Update
                    mrcworklog.Close
                    '更新数据表worklog_info
                    mrconwork.AddNew
                    mrconwork.Fields(0) = Trim(txtUserName.Text)
                    mrconwork.Fields(1) = Trim(mrc.Fields(2))
                    mrconwork.Fields(2) = Date
                    mrconwork.Fields(3) = Time
                    mrconwork.Fields(4) = VBA.Environ("computername")
                    mrconwork.Update
                    mrconwork.Close
                    mrc.Close
                Else
                    ok = True
                    '更改onwork_info、worklog_info两个表的数据信息
                    mrcworklog.Fields(3) = Date
                    mrcworklog.Fields(4) = Time
                    mrcworklog.Update
                    mrcworklog.Close

                    mrconwork.Fields(2) = Date
                    mrconwork.Fields(3) = Time
                    mrconwork.Update
                    mrconwork.Close
                    mrc.Close
                End If
                frmMain.Show
                Me.Hide
            Else
                '判断密码框是否为空以及密码真确性
                If txtPassWord.Text = "" Then
                    MsgBox "密码不能为空,请输入密码!", vbOKCancel + vbExclamation, "警告"
                    txtPassWord.SetFocus
                    Exit Sub
                Else
                    MsgBox "输入密码不正确,请重新输入!", vbOKCancel + vbExclamation, "警告"
                    txtPassWord.SetFocus
                    txtPassWord.Text = ""
                    mrc.Close
                End If
            End If
        End If
    End If

执行“取消”的操作如下:

Dim str As VbMsgBoxResult '定义消息框结果
Private Sub cmdCancel_Click()
    str = MsgBox("是否退出系统?", vbOKCancel + vbQuestion, "提示")
    If str = vbOK Then
        Unload Me
    End If
End Sub

优化方面:

1.随意拖动窗体:

Dim mx As Long '用于随意拖动窗体中宽的计算
Dim my As Long '用于随意拖动窗体中高的计算
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button And vbLeftButton Then '按下鼠标左按钮
        mx = X
        my = Y
    End If
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
     '随意拖动无边框窗体
    If Button And vbLeftButton Then
        Me.Move Me.Left - mx + X, Me.Top - my + Y
    End If
End Sub

2.限制字符:
见如下博客:
https://mp.csdn.net/postedit/86636625

3.禁止粘贴内容:
实现方法是在鼠标按下时清空粘贴板上的内容

Private Sub txtPassWord_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    '不可粘贴
    If Button = 2 Then
        Clipboard.Clear
    End If
End Sub

4.限制登录次数:

Private Sub Form_Load()
    ok = False
    '初次为0
    miCount = 0
End Sub

Public ok As Boolean '记录确定次数
Dim miCount As Integer '定义密码的次数
Private Sub cmdOK_Click()
    '限制登录次数,超过次数强制退出系统
    miCount = miCount + 1
    If miCount = 5 Then
        MsgBox "超出限定次数,系统将被强制退出!", vbOKOnly + vbExclamation, "警告"
        Unload Me
    End If
End Sub

5.添加快捷键Enter:

Private Sub txtPassWord_KeyPress(KeyAscii As Integer)
    '添加Enter快捷键
    If KeyAscii = 13 Then
        cmdOK.SetFocus
    End If
End Sub
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值