今天分享一下充值,其实充值这里也有很多坑,比如判重判空,最小充值金额的限定等。
IDAL层
namespace IDAL
{
public interface RechargeIDAL
{
// 插入充值记录的接口
int Recharge(Entity.Recharge_Info RechargeInfo);
// 更新卡表的接口
int CardNo(Entity.Card_Info CardInfo);
//查询卡号
DataTable InquiryCardInfo(Card_Info CardInfo);
}
}
DAL层
namespace DAL
{
public class RechargeDAL : IDAL.RechargeIDAL
{
public int Recharge(Entity.Recharge_Info RechargeInfo)
{
SQLHelper sqlHelper = new SQLHelper();
SqlParameter[] sqlParams = { new SqlParameter("@CardNo",RechargeInfo.CardNo),
new SqlParameter("@RechargeCash",RechargeInfo.RechargeCash),
new SqlParameter("@Date",DateTime.Now.ToString()),
new SqlParameter("@State",RechargeInfo.State),
new SqlParameter("@UserID",RechargeInfo.UserId)};
string sql = @"INSERT INTO [Recharge_Info] (CardNo,RechargeCash,Date,UserID,State) values"+
"(@CardNo,@RechargeCash,@Date,@UserID,@State)";
int RechargeCard = sqlHelper.ExecuteNonQuery(sql, sqlParams, CommandType.Text);
return RechargeCard;
}
public int CardNo(Entity.Card_Info CardInfo)
{
SQLHelper sqlHelper = new SQLHelper();
SqlParameter[] sqlParams = {
new SqlParameter("@Balance", CardInfo.Balance),
new SqlParameter("@CardNo", CardInfo.CardNo)
};
string sql = @"UPDATE [Card_Info] SET Balance=@Balance WHERE CardNo=@CardNo";
int Card = sqlHelper.ExecuteNonQuery(sql, sqlParams, CommandType.Text);
return Card;
}
public DataTable InquiryCardInfo(Card_Info CardInfo)
{
DAL.SQLHelper sqlhelper = new DAL.SQLHelper();
SqlParameter[] sqlParams = { //new SqlParameter("@Balance", CardInfo.Balance),
new SqlParameter("@CardNo", CardInfo.CardNo)
//new SqlParameter("@UserID",CardInfo.UserId),
//new SqlParameter("@State",CardInfo.State),
//new SqlParameter("@RegisterDate",CardInfo.RegisterDate),
//new SqlParameter("@Type",CardInfo.Type)
};
string sql = "select * from Card_Info where CardNo = @CardNo";
DataTable dt = sqlhelper.ExecuteQuery(sql, sqlParams, CommandType.Text);
return dt;
}
}
}
Factory
namespace Factory
{
public class RechargeFactory
{
string StrDB = System.Configuration.ConfigurationManager.AppSettings["DB"];
public IDAL.RechargeIDAL InsertRechargeInfo()
{
string ClassName = StrDB + "." + "RechargeDAL";
return (IDAL.RechargeIDAL)Assembly.Load(StrDB).CreateInstance(ClassName);
}
public IDAL.RechargeIDAL UpdateCardInfo()
{
string ClassName = StrDB + "." + "RechargeDAL";
return (IDAL.RechargeIDAL)Assembly.Load(StrDB).CreateInstance(ClassName);
}
public IDAL.RechargeIDAL InquiryCardInfo()
{
string ClassName = StrDB + "." + "RechargeDAL";
return (IDAL.RechargeIDAL)Assembly.Load(StrDB).CreateInstance(ClassName);
}
}
}
BLL层
namespace BLL
{
public class RechargeBLL
{
Factory.RechargeFactory fact = new Factory.RechargeFactory();
public int InsertRechargeInfo(Entity.Recharge_Info RechargeInfo)
{
IDAL.RechargeIDAL idal = fact.InsertRechargeInfo();
int Rechargecard = idal.Recharge(RechargeInfo);
return Rechargecard;
}
public int UpdateCardInfo(Entity.Card_Info Cardinfo)
{
IDAL.RechargeIDAL idal = fact.UpdateCardInfo();
int updatecard = idal.CardNo(Cardinfo);
return updatecard;
}
public DataTable InquiryCardInfo(Card_Info CardInfo)
{
//RechargeFactory fact = new RechargeFactory();
RechargeIDAL idalRecharge = fact.InquiryCardInfo();
DataTable dt = idalRecharge.InquiryCardInfo(CardInfo);
return dt;
}
}
}
Facade
namespace Facade
{
public class RechargeFacade
{
public int InsertRechargeInfo(Entity.Recharge_Info rechargeInfo)
{
BLL.RechargeBLL rechargeBLL = new BLL.RechargeBLL();
int rechargecard = rechargeBLL.InsertRechargeInfo(rechargeInfo);
return rechargecard;
}
public int UpdateCardInfo(Entity.Card_Info cardInfo)
{
BLL.RechargeBLL RechargeBLL = new BLL.RechargeBLL();
int UpdateCardInfo = RechargeBLL.UpdateCardInfo(cardInfo);
return UpdateCardInfo;
}
public DataTable InquiryCardInfo(Card_Info CardInfo)
{
RechargeBLL bllRecharge = new RechargeBLL();
DataTable dt = bllRecharge.InquiryCardInfo(CardInfo);
return dt;
}
}
}
UI
namespace UI
{
public partial class Recharge : Form
{
private void ButRecharge_Click(object sender, EventArgs e)
{
//判空
if (TxtCarNo.Text.Trim() == "")
{
MessageBox.Show("请输入卡号", "温馨提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
if (TxtRecharge.Text.Trim() == "")
{
MessageBox.Show("请输入充值金额", "温馨提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
//判断数据库中有没有该卡号
Entity.Card_Info CardIn = new Card_Info();
CardIn.CardNo = TxtCarNo.Text.Trim();
Facade.RechargeFacade facad = new RechargeFacade();
DataTable dt = facad.InquiryCardInfo(CardIn);
if (dt.Rows.Count == 0)
{
MessageBox.Show("卡号不存在", "温馨提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
Login login = new Login();
Entity.Recharge_Info rechargeInfo = new Entity.Recharge_Info();
Facade.RechargeFacade faca = new Facade.RechargeFacade();
//定义需要插入到充值表中的数据
rechargeInfo.CardNo = TxtCarNo.Text.Trim();
rechargeInfo.RechargeCash = TxtRecharge.Text.Trim();
rechargeInfo.State = "未结账";
rechargeInfo.UserId = Login.UserID;
rechargeInfo.Date = DateTime.Now;
//执行插入操作
int insertRecharge = new int();
insertRecharge = faca.InsertRechargeInfo(rechargeInfo);
//更新卡表
Card_Info CardInfo = new Card_Info();
CardInfo.CardNo = TxtCarNo.Text.Trim();
RechargeFacade facadeRecharge = new RechargeFacade();
DataTable dtCard = facadeRecharge.InquiryCardInfo(CardInfo);
//将cardinfo表的balance赋给实体的balance
CardInfo.Balance = Convert.ToInt32(dtCard.Rows[0][1]) + Convert.ToInt32(TxtRecharge.Text.Trim());
//充值之后的balance
int balanceNow = Convert.ToInt32(dtCard.Rows[0][1]) + Convert.ToInt32(TxtRecharge.Text.Trim());
RechargeFacade facaRecharge = new RechargeFacade();
int updateCardInfo = new int();
updateCardInfo = facaRecharge.UpdateCardInfo(CardInfo);
//显示充值信息
LabShow.Text = "充值卡号:" + TxtCarNo.Text + System.Environment.NewLine
+ "卡类型:" + CardInfo.State + System.Environment.NewLine
+ "原金额:" + CardInfo.Balance+ System.Environment.NewLine
+ "充值金额:" + TxtRecharge.Text.Trim()+ System.Environment.NewLine
+ "现有金额:" + balanceNow + System.Environment.NewLine
+ "充值日期:" + DateTime.Now + System.Environment.NewLine
+ "充值教师:" + Login.UserID;
MessageBox.Show("充值成功","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
private void Recharge_Load(object sender, EventArgs e)
{
Entity.Student_Info Student = new Entity.Student_Info();
Facade.RechargeFacade rechargefacade = new Facade.RechargeFacade();
}
}
}
总结:金额刚开始设置了String 类型,结果做加法的时候就很搞笑了,所以开始的时候一定要设计好数据的类型。