0


三层构架+winform实例(以注册和登录为例)

一、开发目的
了解和掌握三层架构,实现注册和登录功能

二、开发环境

Visual Studio 2022,SQL Server 2019,windows10
三、相关知识
1.三层架构
所谓三层体系结构,是在客户端与数据库之间加入了一个“中间层”,也叫组件层。三层指的是逻辑上的三层,三层结构让客户端与数据库不直接交互。

实际举例:用户输入账号密码->点击登录->进入BLL层进行输入与数据的逻辑处理->进入DAL层将BLL层的逻辑进行实现(用户输入的账号的密码与数据库匹配),返回结果。

(1)三层结构及其各层作用

三层结构包括数据访问层(DAL),业务逻辑层(BLL),界面层(UI)

DAL引用Model

BLL引用DAL和Model

UI层引用BLL和Model

①数据访问层(DAL):对数据源的直接操作(并不是对数据直接操作),为下一层提供数据,从数据源加载、写入、删除数据,DAL层不可以进行“修改”操作,修改任务交给外部处理。

②逻辑访问层(BLL):针对具体问题的操作,具有承上启下的作用,负责从UI中获取用户指令和数据,执行业务逻辑或者从DAL获取数据供给UI显示。

③界面层(UI):UI层即表现层,用户交互的界面。用于接收用户输入的数据和显示处理后用户需要的数据。

(2)Model数据模型
Model数据模型独立于三层结构之外,对数据库表封装。

2.打开vs2022,创建一个window窗体应用

3.在窗体中,视图---工具箱包插入以下,label1——用户,label2——密码。textBox1——对应用户输入,textBox2——对应密码输入,button1——登录,button2——对应注册。

4.为这个项目一个应用程序配置文件。添加新项(ctrl+shift+A)。

修改配置文件,即连接数据库的一个字符串。

5.添加类库:BLL,DAL,Model
右键项目解决方案-添加-新建项目-类库。(请注意创建类库时,要选择类库.net framework)

6.选中model类,搜索实体类,找到 userinfo类,代码如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Model
{
    public class userinfo
    {
        public String name { get; set; }
        public String pwd { get; set; }
    }
}

7.DAL类引用model

(1)在DAL中添加对Model的引用,选中DAL–》Alt+P+R–》解决方案–》项目–》选中MOdel–》确定

(2)在DAL中添加对system.configuration的引用,选中DAL–》Alt+P+R–》程序集–》框架–》选中System.configuration–》确定.

(3)建立数据访问类,选中DAL–》Shift+ALT+C–》建立数据访问类。UserDB类

8.业务逻辑层(BLL)对传送数据进行逻辑判断分折,并进行传送正确的值

(1)在BLL中添加对Model、DAL的引用,选中BLL–》Alt+P+R–》解决方案–》项目–》选中MOdel、DAL–》确定

(2)建立业务逻辑类,选中BLL–》Shift+ALT+C–》建立业务逻辑类。LoginManager类




以上其实是借用工具包,以下方法为纯代码段

1.数据库建立一个表,设置字段name,pwd

2.创建一个新的winform程序注意是选择.net,创建Modle类、DAL类、BLL类也是选择类.net

3.在窗体中,视图---工具箱包插入以下,label1——用户,label2——密码。textBox1——对应用户输入,textBox2——对应密码输入,button1——登录,button2——对应注册。

4.在Model类中对数据表进行封装

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Model
{
    public class userinfo
    {
        public String name { get; set; }
        public String pwd { get; set; }
    }
}

5.在DAL类中设计数据源访问

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Model;
using System.Data;
using System.Data.SqlClient;

namespace DAL
{
    public class LoginDal
    {
        public bool DLogin(Model.userinfo user)
        {
            string connString = "Data Source=P-7M6E4UT3;Initial Catalog = test; Persist Security Info = True; User ID = sa; ";
            SqlConnection conn = new SqlConnection(connString);
            SqlCommand cmd = new SqlCommand("select * from users3_0 where name = '" + user.name + "' and pwd = '" + user.pwd + "'", conn);
            conn.Open();
            SqlDataReader da = cmd.ExecuteReader();
            if (da.Read())
            {
                return true;
            }
            else

            {
                return false;
            }
        }
    }

    public class AddDAl
    {
        public bool DAdd(Model.userinfo user)
        {
            string connString = "Data Source=LAE4UT3;Initial Catalog = test; Persist Security Info = True; User ID = sa; Password = 12";
            SqlConnection conn = new SqlConnection(connString);
            SqlCommand cmd = new SqlCommand("insert into users3_0 values(@name,@pwd)", conn);
            cmd.Parameters.AddWithValue("@name", user.name);
            cmd.Parameters.AddWithValue("@pwd", user.pwd);
            conn.Open();
            if (cmd.ExecuteNonQuery() > 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }
}

6.建立业务逻辑层,即设计BLL类(已登录和注册为例),需要添加对DAL、Model 的引用。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Model;
using DAL;

namespace Bll
{
    public class LoginBll
    {
        DAL.LoginDal dl = new LoginDal();
        public bool BLogin(Model.userinfo Buser)
        {
            return dl.DLogin(Buser);
        }
    }

    public class AddBll
    {
        DAL.AddDAl al = new AddDAl();
        public bool BAdd(Model.userinfo Buser)
        {
            return al.DAdd(Buser);
        }
    }
}

7.编辑用户界面(UI)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Model;
using DAL;
using Bll;

namespace Test3._0
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void label2_Click(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            Model.userinfo nowuser = new userinfo();
            nowuser.name = textBox1.Text.Trim().ToString();
            nowuser.pwd = textBox2.Text.Trim().ToString();
            Bll.LoginBll lb = new LoginBll();
            if (lb.BLogin(nowuser))
            {

                MessageBox.Show("登陆成功");
            }
            else
            {
                MessageBox.Show("登录失败");
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Model.userinfo nowuser = new userinfo();
            nowuser.name = textBox1.Text.ToString();
            nowuser.pwd = textBox2.Text.ToString();
            Bll.AddBll ab = new AddBll();
            if (ab.BAdd(nowuser))
            {
                MessageBox.Show("注册成功");
            }
            else
            {
                MessageBox.Show("注册失败");
            }
        }
    }

}

8.运行结果

本实例的设计逻辑为Model-->DAL-->BLL-->UI。

标签: ui 数据库 c#

本文转载自: https://blog.csdn.net/weixin_45332998/article/details/128184171
版权归原作者 菜鸟1号www 所有, 如有侵权,请联系我们删除。

“三层构架+winform实例(以注册和登录为例)”的评论:

还没有评论