【机房重构】充值

今天分享一下充值,其实充值这里也有很多坑,比如判重判空,最小充值金额的限定等。

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 类型,结果做加法的时候就很搞笑了,所以开始的时候一定要设计好数据的类型。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 23
    评论
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值