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

您所在的位置:网站首页 程序的三层架构 三层构架+winform实例(以注册和登录为例)

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

2024-07-10 23:53| 来源: 网络整理| 查看: 265

一、开发目的

了解和掌握三层架构,实现注册和登录功能

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

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

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

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

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

③界面层(UI):UI层负责向用户展现特定的业务数据或者接受用户输入的数据与指令。

(2)Model数据模型Model数据模型独立于三层结构之外,对数据库表封装。 (3)三层结构逻辑图 2.其他相关知识

掌握类和对象,类成员,构造函数相关知识(此处不做展开)

四、实例开发过程(已注册和登录为例)

1.构建数据库及表

2.创建一个新的winform程序,创建Modle类、DAL类、BLL类

3.对UI界面作如下布局

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=VICTORY;Initial Catalog = test; Persist Security Info = True; User ID = sa; Password = 123456"; 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=VICTORY;Initial Catalog = test; Persist Security Info = True; User ID = sa; Password = 123456"; 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 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。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3