先上一张图,七层相对于三层来说,运用了设计模式,增加了接口。
代码:
实体层:
public class UserInfo
{
public string ID { get; set; }
public string UserName { get; set; }
public string PassWord { get; set; }
public string Level { get; set; }
public string Head { get; set; }
}
IDAL层:
public interface LoginIDAL
{
DataTable selectUser(UserInfo UserInfo);
}
DAL层:
public DataTable selectUser(Entity.UserInfo UserInfo)
{
CommandType Text = 0;
sqlHelper sqlhelper = new sqlHelper();
SqlParameter[] sqlParameter = { new SqlParameter("@UserName", UserInfo.UserName),
new SqlParameter("@PassWord", UserInfo.PassWord) };
string sql = @"SELECT * FROM [User_Info] WHERE UserName = @UserName and PassWord = @PassWord";
DataTable table = sqlhelper.ExecuteReader(sql, Text, sqlParameter);
return table;
}
Factory层:
public class LoginFactory
{
public static readonly string db = ConfigurationManager.AppSettings["DB"];
public static readonly string AssemblyName = "DAL";
public LoginIDAL CreateUser()
{
string ClassName = AssemblyName + "." + db + "LoginDAL";
return (LoginIDAL)Assembly.Load(AssemblyName).CreateInstance(ClassName);
}
}
BLL层:
public bool UserBLL(Entity.UserInfo UserInfo)
{
//实例化工厂
Factory.LoginFactory factory = new Factory.LoginFactory();
//调用工厂方法创建工厂 接口
IDAL.LoginIDAL idal = factory.CreateUser();
//接受D层返回值
DataTable table = idal.selectUser(UserInfo);
bool flag;
//返回DataTable类型,行数等于0
if (table.Rows.Count == 0)
{
flag = false;
}
else
{
flag = true;
}
return flag;
}
Facade层:
public Boolean SelectUser(Entity.UserInfo user)
{
bool flag;
BLL.LoginBLL userBLL = new BLL.LoginBLL();
flag = userBLL.UserBLL(user);
return flag;
}
UI层:
public partial class FormLogin : Form
{
public static string[] userin = new string[5];
public static string UserName;
public FormLogin()
{
InitializeComponent();
}
private void FormLogin_Load(object sender, EventArgs e)
{
}
private void btOK_Click(object sender, EventArgs e)
{
//判断输入是否为空
//如果没有用户名 or 密码
if (txtUserName .Text.Trim () == string.Empty || txtPassWord .Text.Trim () == string.Empty)
{
MessageBox.Show("请完善用户或者密码信息", "温馨提示");
return;
}
//输入内容与数据库相连
Facade.LoginFacade loginFacade = new Facade.LoginFacade();
Entity.UserInfo user = new Entity.UserInfo();
UserName = txtUserName.Text.Trim();
user.UserName = txtUserName.Text.Trim();
user.PassWord = txtPassWord.Text;
Boolean flag = false;
flag = loginFacade.SelectUser(user);
if (flag != false )
{
Main main = new Main();
main.Show();
Facade.LoginFacade jfLogin = new Facade.LoginFacade();
flag = jfLogin.SelectUser(user);
}
else
{
MessageBox.Show("用户名或密码错误,请重新输入","提示");
txtUserName.Focus();
}
}
}
}
}