C#机房重构之卡号充值

【界面设计】

【思路】

操作员在进行充值的时候,有三个方面

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层

 

扫描二维码关注公众号,回复: 11718143 查看本文章
      //充值后更新卡号表中的余额信息
        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

对于代码有什么优化建议欢迎评论区留言哦~~~

猜你喜欢

转载自blog.csdn.net/wtt15100/article/details/107043488