上一篇博客小编简单介绍了一下我们在软件开发过程中应用到的三层架构基本理论。光有理论还是远远不够的,只有真正的

在项目中实践过,才能更好地理解它的精髓所在。接下来小编以一个实现登录功能的小例子来展现三层架构是如何应用到我

们的软件开发过程中的。

⑴首先我们需要搭建基本框架:

打开我们的VS,新建一个解决方案,在解决方案下面建立类库

这包括三层架构里面的基本三层,且还需要一个实体层,也就是在该解决方案下面有四个类库

⑵其次我们要设置好层与层之间的引用关系:

具体的引用关系,请参看上篇博客。

⑶再次我们要添加需要的类了:

在上一步建立好的类库下面建立需要的类。由于U层与用户打交道,用于人机交互,所以U层需要建立Windows窗体;其它层只需建立普通的类即可

⑷最后我们需要设计UI 并进行编码了:

这一步,首先需要我们对用户界面进行设计,满足业务需求;然后进行编码以实现需求。

在编码过程中,首先,我们要写好实体层,定义好编码过程中所需要的字段(字段是是私有的,若是公有的,在使用过程中可能被意外修改),以及字段对应的属性(是公有的,用于传参,对字段起保护作用,在使用过程中防止字段被意外修改)。

其次,我们要连接数据库。与数据库打交道的是D层,所以我们要将连接数据库的代码写到D层。

①在D层新建一个类,用于编写连接数据库的字符串

class DbUtil
{//创建连接数据库的字符串public static string ConnString =@"Server=(SQL server 服务器的名字);Database=(数据库名字);UserID=(SQL server 登录名);Password=(SQL server 登录密码)";}

♣小贴士:如果忘记了登录密码,请不要着急哟,可以先选择Windows身份验证进行登录,然后再修改密码进行密码重置即可。

②在D层再新建一个类,用于编写SQL语句,并创建数据库连接

   public  class UserDAL{//编写类型为UserInfo的SelectUser方法,并定义需要的用户名和密码参数public UserInfo SelectUser(string userName,string password){//using作用:1、  引用命名空间;2、  为命名空间或类型创建别名;3、  使用using语句
//在这里,使用using语句的作用:using语句允许程序员指定使用资源的对象应当何时释放资源,
//using语句中使用的对象必须实现IDisposable接口.此接口提供了Dispose方法,该方法将释放此对象的资源。
//在程序编译阶段,编译器会自动将using语句生成try-finally语句,并在finally块中调用对象的Dispose方法来清理资源.
//所以,using语句等效于try-finally语句using (SqlConnection conn = new SqlConnection(DbUtil.ConnString))//创建数据库的连接对象{//创建SqlCommand连接对象SqlCommand cmd = conn.CreateCommand();//为连接对象获取SQL语句cmd.CommandText = @"SELECT ID,UserName,Password,EmailFROM USERS WHERE UserName=@UserName AND Password=@Password";//为连接对象获取CommandType值cmd.CommandType = CommandType.Text;//为连接对象添加参数cmd.Parameters.Add(new SqlParameter("@UserName", userName));cmd.Parameters.Add(new SqlParameter("@Password", password));//打开连接conn.Open();//应用SqlCommand类的方法ExecuteReader(),此方法用于用户进行的查询操作,它的返回类型为SqlDataReader//执行查询操作SqlDataReader reader= cmd.ExecuteReader();//声明一个UserInfo类型的用户user 且为空UserInfo user = null;//使用SqlDataReader对象的Read()方法进行逐行读取while (reader.Read()){if (user==null)//如果用户对象user为Null{user = new UserInfo();//则创建一个新的对象}//如果查询到的用户对象不为Null,则获取用户对象的信息user.ID = reader.GetInt32(0);user.UserName = reader.GetString(1);user.Password = reader.GetString(2);if (!reader.IsDBNull(3)){user.Email = reader.GetString(3);}}//执行查询语句后,将查询结果返回,返回一个用户对象 传给B层return user;}}}

③在B层新建一个类,用于编写逻辑判断

        //B层逻辑判断的登录方法public UserInfo UserLogin(string userName,string password){//实例化D层UserDAL uDao = new UserDAL();//调用D层的查询方法,将返回来的对象用UserInfo类型来接收UserInfo user= uDao.SelectUser(userName, password);//将参数传给D层,进行SQL语句的查询//判断返回的对象是否为Nullif (user!=null )//登录成功{//将查询后的结果 返回来的对象传给U层return user;}else{throw new Exception("登录失败。");}}

④在U层中已建好的Windows窗体中编写代码

        //登录按钮的单击事件private void btnLogin_Click(object sender, EventArgs e){//定义string类型的变量,用于接收用户输入的用户名string userName = txtUserName.Text.Trim();//定义string类型的变量,用于接收用户输入的密码string password = txtPassword.Text;//实例化B层的类,创建该类型的对象Login.BLL.LoginManager mgr = new Login.BLL.LoginManager();//实例化实体层的类,创建UserInfo类型的对象,并调用B层的登录方法Login.Model.UserInfo user= mgr.UserLogin(userName, password);//将参数传给B层MessageBox.Show("登录用户:" + user.UserName);}

到此为止,一个简单的登录小实例就完成啦,是不是感觉并不难呢。

通过在项目中的实践,当我们实现某一功能时,小编认为,我们首先要明确业务需求;然后根据业务需求设计用户界面;接着由用户界面涉及到的数据库中某表里的字段编写实体层,定义字段、属性用于传参;最后进行编码。由D层向B层再向U层进行编写代码,这样当我们需要实体或实例化某一层的类来创建对象时,不会出现实例化时无该类的情况。

 感谢您的阅读,如有不当之处,还望您能及时斧正哟;若对您有帮助,记得给小编点个赞哟!(*^▽^*)

三层架构-----实践篇-登录小实例相关推荐

  1. “七层架构”-----实践篇-登录小实例

    上一篇博客小编简单介绍了一下近期在软件开发过程中由三层架构演变而来的"七层架构"基本理论点.理论知识与产生结果之间还夹杂着一个重要的点---实践.用实践来检验理论知识,丰富知识内涵 ...

  2. 三层架构用户登录代码c语言,网站用户登录、注册和修改密码常用代码,采用三层架构...

    创建用户表的Sql语句,数据库为SQL Server2000: create table "User" ( UserID int not null, UserName varcha ...

  3. java三层架构实现登录_用户登录——三层架构

    1.MVC开发模式(web开发模式): M:model-------javabean(封装数据) V:view----------jsp(显示数据) C:controller----servlet(获 ...

  4. 三层架构—实践篇(.Net登录实例)

    一.框架的搭建 U层引用Model层 B层引用Model层和DAL层 D层引用Model层和数据库连接ImportsSystem.Data.SqlClient 二.UML图 1.类图 U层:Windo ...

  5. 三层架构用户登录代码c语言,三层架构实现简单的用户登录代码

    以一个验证登陆为例子 这里是界面层一般叫UIL protected void Button1_Click(object sender, EventArgs e) { List Users = BLL. ...

  6. 简单三层架构(登录)

    1,首先导包 dao //获取数据String username = request.getParameter("username");String password = requ ...

  7. c#利用三层架构做一个简单的登录窗体

    就个人而言,三层架构有点难理解,不知道该如何下手,各层与各层之间怎么调用 最近一直在研究三层架构,经过网上学习与多方打听写一下自己的心得.有不足之处,可以评论和私聊探讨 言归正传: 三层架构(3-ti ...

  8. java三层架构项目事例_三层架构实例

    一.概要 在我的上一篇博客中,我们谈了谈分层,到底为什么分层(http://blog.csdn.net/shan9liang/article/details/6836300) 这篇博客,准备用一个小D ...

  9. C#学习之三层架构实例

    如有雷同,不胜荣欣,如转载,请注明 一.三层架构实例 首先学习三层架构模式­--三层架构实现的留言和查看留言 下面是本人学习三层架构的一点感想和理解,肯定有许多不足的地方,欢迎大家斧正,谢谢,废话到此 ...

最新文章

  1. ajax如何解决浏览器缓存问题
  2. 【模板】可持久化线段树
  3. ARM指令 LDR 和 ADR的一些区别
  4. 秒懂系列 | 史上最简单的Python Django入门教程
  5. python库迁移到没有网的电脑_python实现数据库跨服务器迁移
  6. Java创建对象的方式——反序列化创建对象
  7. Raft -【go一致性算法】
  8. linux,让网卡随着系统启动自动生效
  9. 软中断网卡处理Linux高性能外部设备处理机制SMP
  10. 【操作系统/OS笔记09】线程、线程的实现、上下文切换、进程控制
  11. 计算机辅助园林设计考试题,计算机辅助园林规划设计之软件比较
  12. 【浙大版《Python 程序设计》题目集(解)】第4章-9 查询水果价格(15分)
  13. 简单爬取京东商品名称、价格(仅供学习)
  14. TiCDC同步延迟问题处理
  15. 十三届蓝桥青少组省赛Python-20220423
  16. 用打印指令设置Zebra Printer的IP地址(适用于GK888T带打印服务器的条码打印机)
  17. 传感器和算法如何让机器人实现避障?
  18. 北航计算机学院上机试题,北航计算机系考研复试上机真题及答.pdf
  19. C++ 【学习笔记】 - 基础(class、inline、explict、new、delete、static、this、mutable、friend、operator、virtual)
  20. 小程序文章转发到企业微信朋友圈——自己记录可能不适合每个人

热门文章

  1. JS以及CSS对页面的阻塞
  2. 第十八天 DNS服务原理及bind详细配置
  3. CCIE路由实验(4) -- BGP路由控制
  4. 摄影技巧的种类之一             ——街拍技巧
  5. Java使用Jolt连接Tuxedo服务器
  6. 谈PC安全经验:杀毒八大错误观念
  7. 常见危险文件列表 以及清除方法
  8. Hadoop HA 双namenode搭建
  9. linux下的bc计算器设置scale精度
  10. tomcat关闭和重启