【界面设计】
【思路】
操作员在进行充值的时候,有三个方面
1.卡号表中判断卡号是否存在
2.充值成功后将充值信息添加到充值表中
3.充值成功后将卡号表中的余额进行更新
【代码实现】
IDAL层
public interface CardInfoIDAL
{
//充值前判断卡号是否存在
DataTable selectCard(string cardNo);
//充值后更新卡号表中的余额信息
int updateCash(string cardNo,Single cash);
}
public interface IRechargeInfo
{
//卡号充值信息添加
int cardRecharge(RechargeInfoEntity rechargeInfo);
}
DAL层
public class CardInfoDAL : CardInfoIDAL
{
//实例化一个SqlHelper类
SqlHelper sqlHelper = new SqlHelper();
//充值前判断卡号是否存在
public DataTable selectCard(string cardNo)
{
SqlParameter[] sqlParams =
{
new SqlParameter("@cardno",cardNo),
};
string sqlQuery = @"select * from [Card_Info] where cardno=@cardno";
DataTable table = sqlHelper.ExecuteQuery(sqlQuery, sqlParams, CommandType.Text);
return table;
}
//充值后更新卡号表中的余额信息
public int updateCash(string cardNo, Single cash)
{
SqlParameter[] sqlParams =
{
new SqlParameter("@cardno",cardNo),
new SqlParameter("@cash",cash),
};
string sqlupdate = "update Card_Info set cash=@cash where cardno=@cardno";
int result=sqlHelper.ExecuteNonQuery(sqlupdate,sqlParams,CommandType.Text);
return result;
}
}
//卡号充值信息添加
public int cardRecharge(RechargeInfoEntity rechargeInfo)
{
SqlParameter[] sqlParams =
{
new SqlParameter("@cardno",rechargeInfo.Cardno),
new SqlParameter("@addmoney",rechargeInfo.Addmoney),
new SqlParameter("@userid",rechargeInfo.Userid),
};
string sqlInsert = "Insert into Recharge_Info(cardno,addmoney,userid) values(@cardno,@addmoney,@userid)";
int result = sqlHelper.ExecuteNonQuery(sqlInsert, sqlParams, CommandType.Text);
return result;
}
BLL层
//充值后更新卡号表中的余额信息
public Boolean updateCash(string cardNo, Single cash)
{
CardInfoIDAL idal = cardFactory.cardInfo();
int result = idal.updateCash(cardNo, cash);
return isCheck(result);
}
//卡号充值信息添加
public Boolean cardRecharge(RechargeInfoEntity rechargeInfo)
{
//接收工厂方法返回的接口
IRechargeInfo idal = rechargeFact.Recharge();
//接收接口方法的返回值
int result= idal.cardRecharge(rechargeInfo);
if (result > 0)
{
return true;
}
else
{
return false;
}
}
Facade层
public class RechargeInfoFacade
{
//实例化B层
RechargeInfoBLL rechargeBLL = new RechargeInfoBLL();
//卡号充值信息添加
public Boolean cardRecharge(RechargeInfoEntity rechargeInfo)
{
Boolean flag = rechargeBLL.cardRecharge(rechargeInfo);
return flag;
}
}
UI层
private void btnOK_Click(object sender, EventArgs e)
{
//实例化外观层
CardInfoFacade cardFac = new CardInfoFacade();
//接收信息
string cardNo = txtCardNo.Text.Trim();
//判断卡号是否存在
Boolean flag = cardFac.selectCard(cardNo,out string cash);
Single cash1= Convert.ToSingle(cash);
if (flag==true)
{
//实例化外观层
RechargeInfoFacade rechargeFac = new RechargeInfoFacade();
//实例化实体层
RechargeInfoEntity recharge = new RechargeInfoEntity();
//接收信息
recharge.Cardno = txtCardNo.Text.Trim();
recharge.Addmoney = Convert.ToSingle(txtRecharge.Text.Trim());
recharge.Userid = UserInfoLogin.UserID;
Boolean flag1= rechargeFac.cardRecharge(recharge);
if (flag1==true)
{
MessageBox.Show("充值成功!");
//充值后卡号的余额
cash1=cash1+ Convert.ToSingle(txtRecharge.Text.Trim());
//将充值成功信息显示在文本框中
lblShow.Text = "卡号:"+txtCardNo.Text + "\r\n"+ "充值金额:" +txtRecharge.Text+ "\r\n" + "余额:"+cash1+"元";
//更新卡号表中的余额
cardFac.updateCash(cardNo, cash1);
}
else
{
MessageBox.Show("充值失败,请重新输入!");
txtCardNo.Text = "";
txtRecharge.Text = "";
}
}
else
{
MessageBox.Show("当前卡号不存在,请重新输入!");
txtCardNo.Text = "";
txtCardNo.Focus();
}
}
out传值和ref传值的区别:具体的可以参考一下博客:https://blog.csdn.net/wtt15100/article/details/104413408