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

这篇具有很好参考价值的文章主要介绍了三层构架+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——对应注册。三层构架+winform实例(以注册和登录为例)

4.为这个项目一个应用程序配置文件。添加新项(ctrl+shift+A)。三层构架+winform实例(以注册和登录为例)

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

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

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

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

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–》确定 

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

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

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

(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

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

 

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

 

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

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

 

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

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

 

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.运行结果

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

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

  本实例的设计逻辑为Model-->DAL-->BLL-->UI。文章来源地址https://www.toymoban.com/news/detail-441850.html

到了这里,关于三层构架+winform实例(以注册和登录为例)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Java的界面开发【用户注册登录】

    首先要清楚一个界面由哪些部分组成:         1、可视化部分:  窗体、标签、菜单、选项卡、按钮......         2、元素规则部分:  颜色、尺寸、字体、布局         3、内容部分:  文字、图片 其次是所需代码库(java类库):   java.awt(元素规则类比较多)

    2024年02月06日
    浏览(37)
  • 【鸿蒙(HarmonyOS)】UI开发的两种范式:ArkTS、JS(以登录界面开发为例进行对比)

    之后关于HarmonyOS技术的分享,将会持续使用到以下版本 HarmonyOS:3.1/4.0 SDK:API 9 Release Node.js:v14.20.1 DevEco Studio: 3.1.0 HarmonyOS应用的UI开发依赖于 方舟开发框架(简称ArkUI) 。 根据官方介绍,ArkUI提供了UI语法、丰富的UI功能(组件、布局、动画以及交互事件),以及实时界面

    2024年02月08日
    浏览(66)
  • spring boot3登录开发-3(2短信验证登录/注册逻辑实现)

      ⛰️个人主页:     蒾酒 🔥系列专栏:《spring boot实战》 🌊山高路远,行路漫漫,终有归途 目录 写在前面 上文衔接 内容简介 功能分析 短信验证登录实现 1.创建交互对象 用户短信登录/注册DTO 创建用户登录VO 2.创建自定义业务异常 创建验证码错误异常 创建用户被封禁异

    2024年04月09日
    浏览(43)
  • 【自学开发之旅】Flask-会话保持-API授权-注册登录

    http - 无状态-无法记录是否已经登陆过 #会话保持 – session cookie session – 保存一些在服务端 cookie – 保存一些数据在客户端 session在单独服务器D上保存,前面数个服务器A,B,C上去取就好了,业务解耦。—》》现在都是基于token的验证。 以上是基于BS架构 API授权 由服务端完全把

    2024年02月07日
    浏览(34)
  • Android开发----实现登录注册页面(创建本地数据库,对注册的账户密码进行存储)

    写在前面: 本文实现了登录注册页面的开发,创建了本地数据库,存储注册的账户密码。注册账户为手机号,对账户为手机号进行了正则化验证。登录成功跳转至主页面。 20221028-实现登录注册功能 首先说一下,项目部署是在原有项目新建两个activity( 项目右键–new–activi

    2024年02月03日
    浏览(55)
  • 【论坛java项目】第二章 Spring Boot实践,开发社区登录模块:发送邮件、开发注册功能、会话管理、生成验证码、开发登录、退出功能、

    😀如果对你有帮助的话😊 🌺为博主点个赞吧 👍 👍点赞是对博主最大的鼓励😋 💓爱心发射~💓 bofryuzursekbiab——密码 访问邮箱域名 邮箱端口 账号 密码 协议 详细配置 JavaMailSender 是 Spring Email 的核心组件,负责发送邮件 MimeMessage 用于封装邮件的相关信息 MimeMessageHelper 用

    2024年02月06日
    浏览(53)
  • Unity使用leancloud开发弱数据联网游戏(注册、登录和云端数据存读)

    最近,由于开发需要数据存储服务,就跑去Bmob看看,不看不要紧,发现自己以前创建的应用的数据存储服务居然变成非永久的了,只有一年的免费时间,而且还过期了。这对于我将要开发的软件时很不友好的;因此,我就只能去找与Bmob同类型的后端云服务,就是我接下来要

    2023年04月23日
    浏览(38)
  • 06-5_Qt 5.9 C++开发指南_Splash 与登录窗口(MouseEvent鼠标事件;注册表;加密)

    一般的大型应用程序在启动时会显示一个启动画面,即 Splash 窗口。Splash 窗口是一个无边对话框,一般显示一个图片,展示软件的信息。Splash 窗口显示时,程序在后台做一些比较耗时的启动准备工作,Splash 窗口显示一段时间后自动关闭,然后软件的主窗口显示出来。Qt有一个

    2024年02月13日
    浏览(45)
  • 【WinForm】exe程序实现读取或写入注册表

    当遇到首次安装,需要在宿主机器做一下记录时,就需要通过读取和写入注册表来实现读写记录,下面讲一下 新建一个类 UseRegistry.cs ,定义两个常量值,一个程序名 APP_NAME 自己命名,另一个是注册表 REG_NAME 的路径要填正确,代码如下 写入注册表值,代码如下 读取注册表值

    2024年02月14日
    浏览(36)
  • 内网渗透代理知识以及渗透某CTF三层靶机实例

            在学习完小迪内网代理安全知识后,自己也找来了案例中的CTF比赛中三层靶机,来总结一下内网代理知识。实验中成功拿到三个flag,话不多说,现在就开始。 文章目录 前言 一、 内网代理知识 二 、CTF三层靶机实例 1. 靶机拓补图 2. 攻击目标1 3.添加路由 4.开启代

    2024年02月03日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包