三层登录窗体

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

     登录窗体界面:

                                   


    

  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

  好了,这就是我这几天辛苦努力的结果,感觉还不错哦


 

    

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值