最简单的三层实例(C#)
2013-08-27 18:48
405 查看
三层包图:
表示层UI,业务逻辑层BLL,数据访问层DAL,和实体层Entity。
类图:
UI层的类图是FrmLogin.
BLL层的类图是Login
DAL层的类图是UserDAO
Entity层的类图是UserInfo
序列图:
登录界面:
UI层代码:
[csharp] view
plaincopy
public partial class FrmLogin : Form
{
public FrmLogin()
{
InitializeComponent();
}
private void btnLogin_Click(object sender, EventArgs e)
{
string userName = txtUserName.Text.Trim();
string password = txtPassword.Text;
try
{
Login.BLL.LoginManager mgr = new Login.BLL.LoginManager();
Login.Model.UserInfo user = mgr.UserLogin(userName, password);
MessageBox.Show("登录用户:" + user.UserName);
}
catch (Exception err)
{
MessageBox.Show(err.Message.ToString() );
}
}
BLL层代码:
[csharp] view
plaincopy
public class LoginManager
{
public Login .Model .UserInfo UserLogin(string userName, string password)
{
Login.DAL.UserDAO uDao = new Login.DAL.UserDAO();
if (userName == null)
{
throw new Exception("请输入用户名!");
}
if (password == null)
{
throw new Exception("请输入密码!");
}
Login .Model .UserInfo user= uDao.SelectUser(userName, password);
if (user != null)
{
return user;
}
else
{
throw new Exception("登录失败!");
}
}
}
DAL层代码:
[csharp] view
plaincopy
public class UserDAO
{
public static string ConnString = @"Server=XIAOZUO-PC;Database=Login;User ID =sa;Password=123456";
public Login .Model .UserInfo SelectUser(string userName, string password)
{
using (SqlConnection conn = new SqlConnection(ConnString))
{
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText =@"select ID,UserName,Password,Email from Users where UserName=@UserName and Password=@Password";
cmd .CommandType =CommandType .Text ;
cmd.Parameters.Add(new SqlParameter("@UserName", userName));
cmd.Parameters.Add(new SqlParameter("@Password", password));
conn.Open();
SqlDataReader reader=cmd.ExecuteReader();
Login.Model .UserInfo user=null;
while (reader .Read ())
{
if (user ==null)
{
user =new Login.Model .UserInfo ();
}
user .ID =reader .GetInt32 (0);
user .UserName =reader.GetString (1);
user.Password =reader.GetString (2);
if (reader .IsDBNull (3))
{
user.Email =reader.GetString (3);
}
}
return user ;
}
}
}
Entity层代码:
[csharp] view
plaincopy
public class UserInfo
{
public int ID { get; set; }
public string UserName {get;set;}
public string Password {get;set;}
public string Email {get;set;}
}
表示层UI,业务逻辑层BLL,数据访问层DAL,和实体层Entity。
类图:
UI层的类图是FrmLogin.
BLL层的类图是Login
DAL层的类图是UserDAO
Entity层的类图是UserInfo
序列图:
登录界面:
UI层代码:
[csharp] view
plaincopy
public partial class FrmLogin : Form
{
public FrmLogin()
{
InitializeComponent();
}
private void btnLogin_Click(object sender, EventArgs e)
{
string userName = txtUserName.Text.Trim();
string password = txtPassword.Text;
try
{
Login.BLL.LoginManager mgr = new Login.BLL.LoginManager();
Login.Model.UserInfo user = mgr.UserLogin(userName, password);
MessageBox.Show("登录用户:" + user.UserName);
}
catch (Exception err)
{
MessageBox.Show(err.Message.ToString() );
}
}
BLL层代码:
[csharp] view
plaincopy
public class LoginManager
{
public Login .Model .UserInfo UserLogin(string userName, string password)
{
Login.DAL.UserDAO uDao = new Login.DAL.UserDAO();
if (userName == null)
{
throw new Exception("请输入用户名!");
}
if (password == null)
{
throw new Exception("请输入密码!");
}
Login .Model .UserInfo user= uDao.SelectUser(userName, password);
if (user != null)
{
return user;
}
else
{
throw new Exception("登录失败!");
}
}
}
DAL层代码:
[csharp] view
plaincopy
public class UserDAO
{
public static string ConnString = @"Server=XIAOZUO-PC;Database=Login;User ID =sa;Password=123456";
public Login .Model .UserInfo SelectUser(string userName, string password)
{
using (SqlConnection conn = new SqlConnection(ConnString))
{
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText =@"select ID,UserName,Password,Email from Users where UserName=@UserName and Password=@Password";
cmd .CommandType =CommandType .Text ;
cmd.Parameters.Add(new SqlParameter("@UserName", userName));
cmd.Parameters.Add(new SqlParameter("@Password", password));
conn.Open();
SqlDataReader reader=cmd.ExecuteReader();
Login.Model .UserInfo user=null;
while (reader .Read ())
{
if (user ==null)
{
user =new Login.Model .UserInfo ();
}
user .ID =reader .GetInt32 (0);
user .UserName =reader.GetString (1);
user.Password =reader.GetString (2);
if (reader .IsDBNull (3))
{
user.Email =reader.GetString (3);
}
}
return user ;
}
}
}
Entity层代码:
[csharp] view
plaincopy
public class UserInfo
{
public int ID { get; set; }
public string UserName {get;set;}
public string Password {get;set;}
public string Email {get;set;}
}
相关文章推荐
- 有史以来最简单的三层实例(C#)
- 有史以来最简单的三层实例(C#)
- 有史以来最简单的三层实例(C#)
- 有史以来最简单的三层实例(C#) ——转载自CSDN
- 有史以来最简单的三层实例(C#)
- [C#]一步一步开发自己的自动代码生成工具之四:简单三层代码模板实例Model层
- 有史以来最简单的三层实例(C#)
- c# interface 的理解(工厂模式)简单实例
- C# 创建Windows 服务简单实例
- Apache Thrift 配置与简单实例——C# C/S 通信
- C#定义简单的反射工厂实例分析
- C# 多线程控制控件实例(例程简单,注释详细)
- C#获取全部目录和文件的简单实例
- C#dC# 简单网页外挂实例
- C# socket 多线程多客户端简单实例
- c#中如何定义内存表绑定DataGrid的简单实例
- 登录实例对比-C#和VB.NET实现三层
- 三层登录实例——C#
- C#开发Windows服务 附简单实例实现禁止QQ运行
- C# 调用存储过程简单完整的实例代码