七层登录——C#
2016-02-27 21:09
453 查看
三层登录完成之后,紧接着就是七层登录,七层相对三层多的是设计模式、接口,目的无非就是希望解耦合,符合开闭原则,系统更加优化。刚开始的时候七层很是不理解,不知道层层之间的联系,花了好几天的时间才实现,现在不能说非常明白,但是懂的多了,我想说:只要去做,时间花在哪里都是值得的!
UI层
只要理清思路,代码实现就不是问题了,机房第一步登录,向下一步进军!!!
UI层
private void btnOK_Click(object sender, EventArgs e) { string UserName = txtUserName.Text.Trim();//赋值过程 string Password = txtPassword.Text; if (txtUserName .Text ==string .Empty )//验证是否为空 { MessageBox.Show("请输入用户名!", "登录"); } if (txtPassword.Text ==string .Empty ) { MessageBox.Show("请输入密码!", "登录"); } JF.Facade.LoginFacade FLogin = new JF.Facade.LoginFacade();//实例化外观 JF.Entity.LoginEntity user = FLogin.SelectUser(UserName, Password);//调用外观的方法,返回给user if (user!=null ) { MessageBox.Show("登陆成功!"); this.Hide (); this.DialogResult =System .Windows .Forms .DialogResult .OK ; frmMain frmMain=new frmMain (); frmMain.Show(); } else { MessageBox .Show("密码或者用户名错误"); } }Facade层
public JF .Entity .LoginEntity SelectUser(string UserName,string Password) { JF.Entity.LoginEntity user = new JF.Entity.LoginEntity();//实例化实体 JF.BLL.LoginBLL loginBll = new JF.BLL.LoginBLL();//实例化B层 user = loginBll.SelectUser(UserName, Password); return user; }BLL层
public JF.Entity.LoginEntity SelectUser(string UserName,string Password) { JF.Entity.LoginEntity user = new JF.Entity.LoginEntity();//实例化实体 JF.Factory.LoginFactory Datacess = new JF.Factory.LoginFactory();//实例化工厂 JF.IDAL.LoginIDAL ILogin;//定义接口 ILogin = Datacess.SelectUser();//工厂中方法的返回值为接口类型 ,用接口接收 user = ILogin.GetUser(UserName, Password);//调用接口的方法 return user; }Factory层
public static readonly string strDB = System.Configuration.ConfigurationManager.AppSettings ["DBString"];//读取配置文件 public JF.IDAL .LoginIDAL SelectUser()//工厂里面为什么返回值是接口类型的 { return (JF.IDAL.LoginIDAL)Assembly.Load(strDB).CreateInstance("JF.DAL.LoginDAO"); }IDAL层
JF.Entity.LoginEntity GetUser(string UserName, string Password);DAL层
public JF.Entity.LoginEntity GetUser(string UserName, string Password) { using (SqlConnection conn = new SqlConnection(DBUtil.conString)) //通过参数DBUtil.conString打开连接数据 { SqlCommand cmd = conn.CreateCommand();//创建cmd执行sql语句 cmd.CommandText = @"select * from JFUser_Info where UserID=@UserName and Pwd=@Password"; cmd.CommandType = CommandType.Text; cmd.Parameters.Add(new SqlParameter("@UserName", Password));//Parameters添加参数 cmd.Parameters.Add(new SqlParameter("@Password", UserName)); conn.Open();//打开数据源 SqlDataReader reader = cmd.ExecuteReader();//读取数据并且得到结果 JF.Entity .LoginEntity user = null; while (reader.Read()) { if (user == null) { user = new JF.Entity.LoginEntity(); } user.UserName = reader.GetString(1); user.Pwd = reader.GetString(2); } return user; } }Entity层
public class LoginEntity { private static string _userid; public static string UserID { get { return _userid; } set { _userid = value; } } private string _level; public string Level { get { return _level; } set { _level = value; } } private string _head; public string Head { get { return _head; } set { _head = value; } } private string _username; public string UserName { get { return _username; } set { _username = value; } } private string _pwd; public string Pwd { get { return _pwd; } set { _pwd = value; } } }
只要理清思路,代码实现就不是问题了,机房第一步登录,向下一步进军!!!
相关文章推荐
- 订阅者方法超时的处理
- [hdu5632][BC#73 1002]Rikka with Array
- C# 枚举、字符串、值的相互转换
- C#学习语录
- C#虚基类继承与接口的区别
- C#_在VS2010下进行单元测试
- C# String与string的区别
- C# 中的委托和事件
- C# 索引器的使用
- C#套接字使用
- C#获取 URL参数
- C#判断
- C#多线程动态读取word文档代码
- 【C#】报表制作<机房重构>
- C#进行AutoCAD二次开发实例之倒角功能实现原理介绍
- C# 委托的简单使用
- Atitit .c#的未来新特性计划草案
- Atitit .c#的未来新特性计划草案
- Atitit .c#的未来新特性计划草案
- C#中接口和抽象类的区别