您的位置:首页 > 其它

三层登录窗体

2016-02-16 11:29 260 查看
经过几天的努力奋斗,三层登录窗体终于完成了,虽然历经风雨,但是经过小伙伴们的帮助,顺利的学习到了很多的东西。。

登录窗体界面:








C#代码展示:

U层



namespace LoginUI
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }      
        private void btnLogin_Click(object sender, EventArgs e)
        {
            string userName = txtUserName.Text.Trim();
            string password = txtPassword.Text;
            Login.BLL.LoginManager mgr = new Login.BLL.LoginManager();
            Login .Model .UserInfo user= mgr.UserLogin (userName, password);
            MessageBox.Show("登录用户:"+user .UserName );
        }
    }
}
B层



namespace Login.BLL
{
    public class LoginManager
    {
        public Login.Model.UserInfo  UserLogin(string userName,string password)
        {
            Login.DAL.UserDAO uDao = new Login.DAL.UserDAO();
            Login .Model .UserInfo user= uDao.SelectUser(userName, password);
            if (user != null)//login successfully
            {
                Login.DAL.ScoreDAO sDao = new Login.DAL.ScoreDAO();
                sDao.UpdateScore(userName, 10);
                return user;
            }
            else
            {
                throw new Exception("登录失败");
            }
        }
    }
}
D层



//添加一个DbUtil 类 用于链接数据库
namespace Login.DAL
{
    class DbUtil
    {
        public static string ConnString = @"Server=192.168.24.193;Database=Login; User ID=sa;PWD=1";
    }
}<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span>


//定义一个UserADO类
namespace Login.DAL
{
   public  class UserDAO
    {
       public Login .Model .UserInfo   SelectUser(string userName, string password )
        {
            using (SqlConnection conn = new SqlConnection(DbUtil.ConnString))
            {
                SqlCommand  cmd = conn.CreateCommand();
                cmd.CommandText = @"SELECT ID,UserName,Password,Email
                                    FROM USERS WHERE UserName=@UserName AND Password=@Password";
                cmd.CommandType = CommandType.Text ;
                cmd.Parameters.Add(new SqlParameter("@UserName", userName));
                cmd.Parameters.Add(new SqlParameter("@Password", password));
               
                conn.Open();
                SqlDataReader reader = cmd.ExecuteReader();
                Login.Model.UserInfo user = null;
                while (reader .Read ())
                {
                    if (user ==null )
                    {
                        user = new Login.Model.UserInfo();
                    }
                    user.ID = reader.GetInt32(0);
                    user.UserName = reader.GetString(1);
                    user.Password = reader.GetString(2);
                    if (!reader .IsDBNull (3))
                    {
                        user.Email = reader.GetString(3);
                    }
                    
                }
                return user;
            }

        } 
    }
}
//定义一个ScoreDAO类
namespace Login.DAL
{
    public class ScoreDAO
    {
        public void UpdateScore(string userName,int value)
        {
            using (SqlConnection conn = new SqlConnection(DbUtil.ConnString))
            {
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = @"INSERT INTO SCORES(UserName,Score) Values(@UserName,@Score)";
                cmd.Parameters.Add(new SqlParameter("@UserName", userName));
                cmd.Parameters.Add(new SqlParameter("@Score", value));
                conn.Open();
                cmd.ExecuteNonQuery();
            }
        }
    }
}
实体层 Model



namespace Login.Model
{
    public class UserInfo
    {
        public int ID { get; set; }
        public string UserName { get; set; }
        public string Password { get; set; }
        public string Email { get; set; }
    }
}


vb.net代码展示:

U层



Public Class Formdl

    Private Sub btnOk_Click(sender As System.Object, e As System.EventArgs) Handles btnOK.Click
        '实例化传实体的对象userinfo
        Dim loginUser As New LoginEntity.UserInfo
        '实例化BLL层的对象Bcheck 
        Dim Bcheck As New LoginBLL.LoginManager
        '将文本框中的字符串赋给实体对象,使实体对象能够带上参数
        loginUser.ID = txtUserName.Text()
        loginUser.PWD = txtPassword.Text()

        If Bcheck.SelectUserEntity(loginUser) Then
            MsgBox("登录成功!")
        Else
            MsgBox("登陆不成功!")
        End If
    End Sub

    Private Sub btnCancel_Click(sender As System.Object, e As System.EventArgs) Handles btnCancel.Click
        End
    End Sub
End Class
B层



Imports LoginEntity
Imports LoginDAL.UserDAO
Public Class LoginManager

    Dim DalUser As New LoginDAL.UserDAO()
    Dim EntityUser As New LoginEntity.UserInfo()
    '定义一个函数方法 SelectUserEntity 传递的参数为 实体层类型的变量 user 返回值为 一个实体 
    Function SelectUserEntity(ByVal user As LoginEntity.UserInfo) As Boolean

        EntityUser.ID = user.ID
        EntityUser = DalUser.SelectUser(EntityUser)

        If EntityUser.PWD = user.PWD Then
            Return True
        Else
            Return False
        End If
    End Function
End Class
D层

Imports System.Data.SqlClient
Imports LoginEntity
Public Class UserDAO
    '数据库连接,将数据库连接定义为构造函数,当实例化 LoginDAL 的时候,自动完成数据库连接  
    Dim sqlConnectStr As String = "server=192.168.24.193;DataBase=Login;User ID=sa;PWD=1"
    Dim sqlConnection1 As SqlConnection = New SqlConnection(sqlConnectStr)
    '在数据库中查询数据,执行命令语句 
    Function SelectUser(ByVal user As LoginEntity.UserInfo) As LoginEntity.UserInfo
        '连接数据库 
        Dim sql As String = "select * from Users where ID= '" & user.ID & "'"
        Dim cmd As SqlCommand = New SqlCommand(sql, sqlConnection1)

        '定义一个 SqlDataReader 类型的变量 reader
        Dim read As SqlDataReader
        Dim UserDateTable As New DataTable
        '实例化一个实体层的对象 userinfo    
        Dim user1 As New LoginEntity.UserInfo

        sqlConnection1.Open()
        '由于cmd 对象的属性 EcecuteReader 返回之是一个DataReader,所以只能定义一个Datareader类型的变量来接收数据。  
        read = cmd.ExecuteReader

        UserDateTable.Load(read)
        user1.ID = UserDateTable.Rows(0)("UserName")
        user1.PWD = UserDateTable.Rows(0)("PassWord")
        Return user1
        'Catch ex As Exception
        '    user1.PWD = ""
        '    Return user1
        'Finally
        If Not IsNothing(sqlConnection1) Then
            sqlConnection1.Close()
        End If
        'End Try
    End Function
End Class
实体层:



Public Class UserInfo
    '定义两个私有属性
    Private UserID As String
    Private PassWord As String
    '定义可读属性,允许他们的类访问该属性
    Public Property ID As String
        Get
            Return UserID
        End Get
        Set(value As String)
            UserID = value
        End Set
    End Property
    Public Property PWD As String
        Get
            Return PassWord
        End Get
        Set(value As String)
            PassWord = value
        End Set
    End Property
End Class


好了,这就是我这几天辛苦努力的结果,感觉还不错哦
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: