一、开发目的
了解和掌握三层架构,实现注册和登录功能
二、开发环境
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.运行结果
文章来源:https://www.toymoban.com/news/detail-441850.html
本实例的设计逻辑为Model-->DAL-->BLL-->UI。文章来源地址https://www.toymoban.com/news/detail-441850.html
到了这里,关于三层构架+winform实例(以注册和登录为例)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!