开发实践教程1:试卷生成系统6.1 登录界面(FormLogin)
Posted VB.Net
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开发实践教程1:试卷生成系统6.1 登录界面(FormLogin)相关的知识,希望对你有一定的参考价值。
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。
需要通过输入账号ID和密码登录,其中需要选择对应账户类型(普通用户还是管理员)进行登录。
窗体设计如下:
图1-11
在此窗体中有两件重要工作:
1、载入时,设置数据库的连接语句:
databaseConnString = "server=192.168.1.5\\;Database=examination;uid=Exam;pwd=Exam321654;"
连接语句具体参数分别是服务器地址,数据库实例名称,用户账号,登录数据库密码。
更多连接语句信息请参看教程第19.3.5节《连接MsSql》,不用于教程使用”Data Source=“这里使用的是”server=“
为了方便测试,在设计时可以使用以下连接语句:
databaseConnString = "server=192.168.1.5\\;Database=examination;Integrated Security=sspi;"
但在程序发布时,必须使用上面一句。
2、对用户账号和密码进行验证
通常为防止sql注入,采用查询获得用户账户和密码。通过用户登录时输入的密码经MD5加密后,与保存的密码相比较,如果一致,则为正确的用户登录。
具体代码如下:
Imports System.ComponentModel
Imports System.Data.SqlClient
Public Class FormLogin
Dim connection As SqlConnection
Private Sub FormLogin_Load(sender As Object, e As EventArgs) Handles MyBase.Load
databaseConnString = "server=192.168.1.5\\;Database=examination;uid=Exam;pwd=Exam321654;"
connection = New SqlConnection(databaseConnString)
connection.Open()
cbPermissions.SelectedIndex = 0
End Sub
Private Function checkData() As String
Dim specialChars As String = "',"",!,%,^,?, "
Dim id As Integer
If txtName.Text.Trim = "" Then
Return "账号不能为空"
End If
If txtPass.Text.Trim = "" Then
Return "密码不能为空"
End If
For i As Integer = 0 To txtName.Text.Trim.Length - 1
If specialChars.IndexOf(txtName.Text.Trim.Substring(i, 1)) > -1 Then
Return "不能包含特殊字符"
End If
Next
Return ""
End Function
Private Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click
Dim errMsg As String
errMsg = checkData()
If errMsg <> "" Then
MessageBox.Show(errMsg, "登录失败", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If
Dim inputName As String = txtName.Text.Trim
Dim inputPass As String = txtPass.Text
Dim inputPassMd5 As String = clsMd5.toMD5(inputPass)
Dim command As New SqlCommand()
If cbPermissions.Text = "普通用户" Then
command.CommandText = "select 编号,账号,密码 from 用户表 where (账号='" & inputName & "') and (状态='启用')"
Else
command.CommandText = "select 编号,账号,密码 from 用户表 where (账号='" & inputName & "') and (状态='管理')"
End If
command.Connection = connection
Dim rdUser As SqlDataReader
Dim userID As Integer
Dim userPass As String
Dim userName As String
rdUser = command.ExecuteReader(CommandBehavior.SingleRow)
If rdUser.HasRows = False Then
rdUser.Close()
MessageBox.Show(loginError(), "登录失败", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If
rdUser.Read()
userID = rdUser.GetValue(0)
userName = rdUser.GetValue(1)
userPass = rdUser.GetValue(2)
rdUser.Close()
If userPass <> inputPassMd5 Then
MessageBox.Show(loginError(), "登录失败", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If
If cbPermissions.Text = "普通用户" Then
permissions = 1
loginId = userID
loginName = userName
Else
permissions = 0
loginId = userID
loginName = userName
End If
FormMain.Show()
Me.Hide()
End Sub
Private Function loginError() As String
Return "错误原因:" & vbCrLf &
"1、账号或密码错误;" & vbCrLf &
"2、账号申请未通过;" & vbCrLf &
"3、账号已经被停用。"
End Function
Private Sub llbRegist_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles llbRegist.LinkClicked
FormRegist.ShowDialog()
End Sub
Private Sub FormLogin_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing
Application.Exit()
End Sub
Private Sub llbAbout_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles llbAbout.LinkClicked
FormAbout.ShowDialog()
End Sub
End Class
由于.net平台下C#和vb.NET很相似,本文也可以为C#爱好者提供的参考。
学习更多vb.net知识,请参看 vb.net 教程 目录
以上是关于开发实践教程1:试卷生成系统6.1 登录界面(FormLogin)的主要内容,如果未能解决你的问题,请参考以下文章
开发实践教程1:试卷生成系统6.3 主界面(FormMain)
开发实践教程1:试卷生成系统6.2 用户注册界面(FormRegist)