对C#三层模式的理解:

三层模式:

          举一个简单的例子:顾客去饭店吃饭

          顾客去饭店吃饭,需要知道吃什么。饭店里面的服务员提供菜单,并且接收顾客点菜的信息,服务员收到点菜信息将此信息传递到后厨,大厨对点菜信息进行处理,需要什么食材等。知道需要什么食材之后,大厨将信息传给后勤的买食材的工作人员,买食材的人通过大厨所给的菜单到菜市场去买所需要的食材,将买来的食材给后厨,让大厨进行处理。大厨做好菜后,通知服务员上菜。但是在点菜的时候,服务员需要告诉顾客有没有这道菜。

          我们可以类比一下C/S模式:  

         1.顾客------------------UI可视端(用户可以看到的界面)

         2.服务员---------------模型层(传递数据的载体)

         3.厨房大厨------------业务逻辑层(对UI前端和数据库传输来的数据进行处理并且对UI前端进行返回)

         4.后勤部买菜---------数据访问层(对数据库的信息进行查找,并且返回给业务逻辑层)

 

   UI可视端:

namespace DemoUI
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnLogin_Click(object sender, EventArgs e)
        {
            //txtName.Text
            UserInfor userinfor = new UserInfor();
            userinfor.UserLoginName = txtName.Text;
            userinfor.UserLoinPwd = txtPwd.Text;

            string msg;
            UserInforManager manager = new UserInforManager();
            bool flag = manager.Login(userinfor, out msg);
            if(! flag)
            {
                MessageBox.Show(msg);
            }
            else
            {
                MessageBox.Show("登录成功!");
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }
}

   

   模型层:

namespace DemoModel
{
    /// <summary>
    /// 实体类
    /// </summary>
    [Serializable()]
    public class UserInfor
    {
        public int UserId
        {
            get;
            set;
        }
        public string UserLoginName
        {
            get;
            set;
        }
        public string UserLoinPwd
        {
            get;
            set;
        }
        public string UserName
        {
            get;
            set;
        }
        public int JobId
        {
            get;
            set;
        }

    }

     业务逻辑层:

namespace DemoBLL
{
    /// <summary>
    /// 业务逻辑层
    /// </summary>
   public class UserInforManager
    {
        /// <summary>
        /// 根据用户信息登录并获取用错误信息
        /// </summary>
        /// <param name="userinfor"></param>
        /// <param name="message"></param>
        /// <returns></returns>
        public bool Login(UserInfor userinfor,out string message)
        {
            bool flag = true;
            message = null;
            UserInforService us = new UserInforService();
            UserInfor user = us.GetUserByLoginName(userinfor.UserLoginName);
            if(user == null)
            {
                message = "账号错误!";
                flag = false;
            }
            else
            {
                if(user.UserLoinPwd != userinfor.UserLoinPwd)
                {
                    message = "密码错误!";
                    flag = false;
                }
            }
            return flag;
        }
    }
}

     数据访问层:

public   class UserInforService
    {
        /// <summary>
        /// 根据登录账号获取用户信息
        /// </summary>
        /// <param name="loginName">登录账号</param>
        /// <returns>用户信息</returns>
        public UserInfor GetUserByLoginName(string loginName)
        {
            UserInfor userinfor = null;
            string strCon = "server=.;database=RoleDemo;uid=sa;pwd=sa.;";
            string strSql = "select UserId,UserLoginName,UserLoinPwd,UserName,JobId"
                        + " from tblUser"
                        + " where UserLoginName = '" + loginName + "'";
            SqlConnection con = new SqlConnection();
            con.ConnectionString = strCon;
            SqlCommand cmd = con.CreateCommand();
            cmd.CommandText = strSql;
            con.Open();
            SqlDataReader dr = cmd.ExecuteReader();
            if(dr.Read())
            {
                userinfor = new UserInfor();
                userinfor.UserId = dr.GetInt32(0);
                userinfor.UserLoginName = dr.GetString(1);
                userinfor.UserLoinPwd = dr.GetString(2);
                userinfor.UserName = dr.GetString(3);
                userinfor.JobId = dr.GetInt32(4);
            }
            dr.Close();
            con.Close();
            return userinfor;
        }
    }
}

    如有意见,请指点!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值