建议:
1,如果弄完了七层不是道该如何写下一层,建议彻彻底底的,断点调试的方法看看代码的整个过程是如何走向的。
2,彻底明白七层登陆的每一步,七层登陆就涉及到查的功能。
3,说是七层,我们可以知道外观层的代码和BLL层的代码基本没有区别,IDAL层只是提供一个接口,而方法的实现全靠DAL层,不同的窗体,工厂层的代码基本一致。
DAL
namespace DAL
{
public class DRegister: IDAL.IRegister
{
//写入注册信息
public DataTable addUser (Entity .UserEntity UserInfo)
{
SQLHelper sqlHelper = new SQLHelper();
SqlParameter[] sqlParams =
{ new SqlParameter("@UserID",UserInfo .UserID),
new SqlParameter ("@Phone",UserInfo .Phone),
new SqlParameter("@PassWord",UserInfo.PWD),
new SqlParameter("@Balance",UserInfo.Balance),
new SqlParameter("@ChargeStand",UserInfo.ChargeStand)
};
string sql = "Insert into [User](UserID,Phone,PassWord,Balance,Authority,ChargeStand,Registration)values(@UserID,@Phone,@PWD,@Balance,'一般用户',@ChargeStand,getdate())";
DataTable table = sqlHelper.ExecuteQuery(sql, sqlParams, CommandType.Text);
return table;
}
//查询是否有相同的User ID名称
public DataTable selectaddUser(Entity.UserEntity UserInfo)
{
SQLHelper sqlHelper = new SQLHelper();
SqlParameter[] sqlParams = { new SqlParameter("@UserID", UserInfo.UserID) };
string sql = "select * from [User] where UserID=@UserID";
DataTable table = sqlHelper.ExecuteQuery(sql, sqlParams, CommandType.Text);
return table;
}
//更新余额信息
public DataTable updateUserInfoBalance(Entity.UserEntity UserInfo)
{
SQLHelper sqlHelper = new SQLHelper();
SqlParameter[] sqlParams =
{
new SqlParameter("@UserID",UserInfo.UserID),
new SqlParameter("@Balance",UserInfo.Balance)
};
string sql = "update [User] set Balance=Balance+@Balance where UserID=@UserID";
DataTable balance = sqlHelper.ExecuteQuery(sql, sqlParams, CommandType.Text);
return balance;
}
//更改密码
public DataTable updateUserInfoPassWord(Entity.UserEntity UserInfo)
{
SQLHelper sqlHelper = new SQLHelper();
SqlParameter[] sqlParameters =
{
new SqlParameter("@UserId",UserInfo.UserId),
new SqlParameter("@PWD",UserInfo.PWD)
};
string sql = "update [User] set PassWord=@PassWord where UserID=@UserID";
DataTable password = sqlHelper.ExecuteQuery(sql, sqlParameters, CommandType.Text);
return password;
}
//查询旧密码是否正确
public DataTable selectUserInfoPassWord(Entity.UserEntity UserInfo)
{
SQLHelper sqlHelper = new SQLHelper();
SqlParameter[] sqlParams =
{
new SqlParameter("@UserID", UserInfo.UserID),
new SqlParameter("@PassWord",UserInfo.PWD)
};
string sql = "select * from [User] where UserID=@UserID and PWD=@PWD";
DataTable table = sqlHelper.ExecuteQuery(sql, sqlParams, CommandType.Text);
return table;
}
}
}
IDAL
namespace IDAL
{
public interface IRegister
{
DataTable addUser(Entity.UserEntity userInfo); //添加注册信息
DataTable selectaddUser(Entity.UserEntity userInfo); //查询数据库中是否有相同的User和id号
DataTable updateUserInfoBalance(Entity.UserEntity userInfo); //充值后更新数据库中余额
DataTable updateUserInfoPassWord(Entity.UserEntity userInfo); //更改密码
DataTable selectUserInfoPassWord(Entity.UserEntity userInfo); //查询旧密码是否正确
}
}
BLL
namespace BLL
{
public class BRegister
{
//B层实现抽象工厂和接口的方法,然后再这里进行逻辑判断
public bool UserBLL(Entity .UserEntity UserInfo)
{
Factory.FTRegister fact = new Factory.FTRegister();//实例化工厂
IRegister idal = fact.CreateUser(); //调用工厂方法创建接口
DataTable table = idal.addUser(UserInfo);// 接受D层的返回值
bool flag;
if (table.Rows.Count==0) //返回的DataTable类型,如果它的行数等于0,说明没有符号该账号的密码的用户
{
flag = false;
}
else
{
flag = true;
}
return flag;
}
//查询数据库表中是否有这个用户
public bool selectUserBLL(Entity .UserEntity UserInfo)
{
Factory.FTRegister fact = new Factory.FTRegister();//实例化工厂
IRegister idal = fact.CreateUser(); //调回工厂方法创建接口
DataTable table = idal.selectaddUser(UserInfo);//接受D层的返回值
bool flag;
if (table .Rows .Count ==0) //返回的DataTable类型,如果它的行数等于0,说明没有符号该账号的密码的用户
{
flag = false;
}
else
{
flag = true;
}
return flag;
}
//更新余额中的数据,原始余额加上充值余额
public bool updateUserBalanceBLL(Entity .UserEntity UserInfo)
{
Factory.FTRegister fact = new Factory.FTRegister();//实例化工厂
IRegister idalupdate = fact.CreateUser();//调回工厂方法创建接口
DataTable table = idalupdate.updateUserInfoBalance(UserInfo);//接受D层的返回值
bool flag;
if (table.Rows.Count == 0)//返回的DateTable类型,如果它的行数等于0.说明没有符号该账号的密码的用户
{
flag = false;
}
else
{
flag = true;
}
return flag;
}
//更新用户密码
public bool updateUserPWSBLL(Entity.UserEntity UserInfo)
{
Factory.FTRegister fact = new Factory.FTRegister();//实例化工厂
IRegister passwordupdate = fact .CreateUser();//调用工厂方法创建接口
DataTable table = passwordupdate.updateUserInfoPassWord(UserInfo);//接受D层的返回值
bool flag;
if (table.Rows.Count == 0)//返回的DataTable类型,如果它的行数等于0,说明没有符号该账号的密码的用户
{
flag = false;
}
else
{
flag = true;
}
return flag;
}
//
//查询数据库表中的用户旧密码是否正确
public bool selectUserPWBLL(Entity .UserEntity UserInfo)
{
Factory.FTRegister fact = new Factory.FTRegister();
IRegister idal = fact.CreateUser();
DataTable table = idal.selectUserInfoPassWord(UserInfo);
bool flag;
if (table .Rows .Count ==0)
{
flag = false;
}
else
{
flag = true;
}
return flag;
}
}
}
Factory
namespace Factory
{
public class FTRegister
{
string StrDB = System.Configuration.ConfigurationManager.AppSettings["DB"];
public IRegister CreateUser()
{
string ClassName = StrDB + "." + "RegisterDAL";//DAL层的类明
return (IRegister)Assembly.Load(StrDB).CreateInstance(ClassName);//反射加工厂的应用
}
}
}
Facade
namespace Facade
{
public class FDRegister
{
//注册添加用户信息
public Boolean addUser(Entity .UserEntity user )
{
//调回B层方法,然后将U层数据传入B层或者信息到U层
bool flag;
BLL.BRegister userBLL = new BLL.BRegister();
flag = userBLL.UserBLL(user);
return flag;
}
//查询账号是否已经注册
public Boolean selectaddUser(Entity .UserEntity user )
{
//调回B层方法,然后将U层数据传入B层或者返回信息到U层
bool flag;
BLL.BRegister selectuserBLL = new BLL.BRegister();
flag = selectuserBLL.selectUserBLL(user);
return flag;
}
//更新充值后的用户余额
public Boolean updateUserInfoBalance(Entity .UserEntity userup )
{
bool flag;
BLL.BRegister updateuserBLLBalanc = new BLL.BRegister();
flag = updateuserBLLBalanc.updateUserBalanceBLL(userup );
return flag;
}
//更改密码
public Boolean updateUserInfoPassWord(Entity .UserEntity useruppw)
{
bool flag;
BLL.BRegister updateuserBllPassWord = new BLL.BRegister();
flag = updateuserBllPassWord.updateUserPWSBLL(useruppw);
return flag;
}
//查询旧密码是否正确
public Boolean selectUserInfoPassWord(Entity .UserEntity user)
{
bool flag;
BLL.BRegister selectuserBllPassWord = new BLL.BRegister();
flag = selectuserBllPassWord.selectUserPWBLL(user);
return flag;
}
}
}
UI
namespace UI
{
public partial class frmRegister : Form
{
private string userid;
public frmRegister (string userid)
{
this.userid = userid;
InitializeComponent();
}
public frmRegister()
{
InitializeComponent();
}
private void frmRegister_Load(object sender, EventArgs e)
{
}
private void btnRegister_Click(object sender, EventArgs e)
{
//判断输入不能为空
if (txtUserID.Text.Trim() == "")
{
lblMasage.Text = "用户名不能为空";
return;
}
if (txtPhone.Text.Trim() == "")
{
lblMasage.Text = "手机号不能为空";
return;
}
if (txtPWD .Text =="")
{
lblMasage.Text = "密码不能为空";
return;
}
if (txtSPWD .Text =="")
{
lblMasage.Text = "确认密码不能为空";
return;
}
if (txtPWD .Text .Trim ()!=txtSPWD .Text .Trim ())
{
lblMasage.Text = "两次密码输入不一致";
return;
}
Facade.LoginFacade serialNumber = new Facade.LoginFacade();
//string userID = "";
int SerialNumber = serialNumber.selectChargeStandard(userid);
Facade.FDRegister facade = new Facade.FDRegister();
Entity.UserEntity user = new Entity.UserEntity();
user.UserID = txtUserID.Text.Trim();
user.Phone = txtPhone.Text.Trim();
user.PWD = txtSPWD.Text.Trim();
//user.ChargeStand = serialNumber;
Boolean flag = false;
Facade.FDRegister FRegister = new Facade.FDRegister();//实例化外观
flag=FRegister.selectaddUser(user);
if (flag!=false )
{
lblMasage.Text = "此号已注册";
return;
}
flag = FRegister.addUser(user);//调回外观的方法,返回给user
if (flag!=false )
{
MessageBox.Show("注册成功,请登录");
this.Hide();
}
}
}
}