C#机房重构(二)-充值

前言 
刚开始对七层特别懵,值传来传去的,照着博客敲了几个窗体,然后自己感觉自己找到感觉了,就想着自己去尝试敲一下,不去看别人写的博客,结果就遇到了很多的问题,主要还是对七层得传值不熟练,最后在小伙伴得帮助下把充值这个窗体整出来了,也算是自己敲得第一窗体,然后再多练习练习就熟练了。话不多说直接上代码吧。

IDAL

 public interface RechargeIDAL
   {
       
        int updateStudentCash(Enitity.StuInfo StudentInfo);//更新余额

        int addrechargeInfo(Enitity.ReChargeInfo reCharge);//插入充值记录接口
        
        DataTable InquiryCardInfo(Enitity.StuInfo StudentInfo);//查询卡号
    }

DAL

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Enitity;

namespace DAL
{
    public class RechargeDAL : IDAL.RechargeIDAL
    {
        public int addrechargeInfo(ReChargeInfo reCharge)
        {
            SqlHelper sqlHelper = new SqlHelper();  //实例化SQLhelper

            string sql = "INSERT INTO ReCharge_Info(cardno,studentNo,addmoney,date,time,UserID,state)VALUES(@cardNo,@studentNo,@addmoney,@date,@time,@UserID,@state)"; //插入语句

            SqlParameter[] sqlParams = new SqlParameter[]    //添加信息,赋值
            {
                new SqlParameter ("@studentNo",reCharge.studentNo),
                new SqlParameter ("@cardNo",reCharge.cardno),
                new SqlParameter ("@addmoney",reCharge.addmoney),
                new SqlParameter ("@date",reCharge.date),
                new SqlParameter ("@time",reCharge.time),
                new SqlParameter ("@UserID",reCharge.UserID),
                new SqlParameter ("@state",reCharge.state),
            };

            int result = sqlHelper.ExecuteNonQuery(sql, sqlParams, CommandType.Text);      //插入
            return result;
        }



        public int updateStudentCash(StuInfo StudentInfo)//更新学生余额
        {
            SqlHelper sqlHelper = new SqlHelper();
            SqlParameter[] sqlParams = { new SqlParameter("@CardNo", StudentInfo.cardno),
                                         new SqlParameter ("@cash",StudentInfo.cash )};
            string sql = @"UPDATE [Student_Info] SET cash=@cash WHERE cardNo=@cardNo";
            int StudentCash = sqlHelper.ExecuteNonQuery(sql, sqlParams, CommandType.Text);
            return StudentCash;
        }


        public DataTable InquiryCardInfo(StuInfo StudentInfo)
        {
            SqlHelper sqlhelper = new SqlHelper();
            SqlParameter[] sqlParams ={
                      new SqlParameter("@CardNo",StudentInfo.cardno)
                       };
            string sql = "select* from student_Info where cardno=@cardNo";
            DataTable dt = sqlhelper.ExecuteQuery(sql, sqlParams, CommandType.Text);
            return dt;
        }

       
    }


}

Factory

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Reflection;
namespace Factory
{
    public class RechargeFactory
    {
        string StrDB = System.Configuration.ConfigurationManager.AppSettings["DB"];
        public IDAL.RechargeIDAL Recharge()
        {

            //DAL层的类名
            string ClassName = StrDB + "." + "RechargeDAL";
            //反射加工厂的应用
            return (IDAL.RechargeIDAL)Assembly.Load(StrDB).CreateInstance(ClassName);
        }
   
    }
    
   

BLL

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
using System.Data;
using Enitity;

namespace BLL
{
    public class RechargeBLL
    {
        #region//添加充值金额到recharge表
        Factory.RechargeFactory fact = new Factory.RechargeFactory();
        public Boolean addrecharge(Enitity.ReChargeInfo recharge)
        {
          

            IDAL.RechargeIDAL idal = fact.Recharge();

            int result = idal.addrechargeInfo(recharge);
            bool rechargeflag;
            if (result == 0)
            {
                rechargeflag = false;
            }
            else
            {
                rechargeflag = true;
            }
            return rechargeflag;

        }

        public DataTable InquiryCardInfo(Enitity.StuInfo StudentInfo)
        {

            IDAL.RechargeIDAL idalRecharge = fact.InquiryCardInfo();
            DataTable dt = idalRecharge.InquiryCardInfo(StudentInfo);
            return dt;

        }
        #endregion
        public int updateStudentCash(StuInfo StudentInfo)
        {
            //实例化工厂
            Factory.RechargeFactory fact = new Factory.RechargeFactory();//实例化工厂
            IDAL.RechargeIDAL idal = fact.UpdateStudentCash();//接受D层的返回值
            int student = idal.updateStudentCash(StudentInfo);

            return student;

        }
    }
}

Facade

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Facade
{
   public class RechargeFacade
    {
        public Boolean addrecharge(Enitity.ReChargeInfo recharge)
        {
            bool rechargeflag;
            BLL.RechargeBLL rechargeBLL = new BLL.RechargeBLL();
            rechargeflag = rechargeBLL.addrecharge(recharge);
            return rechargeflag;
        }
        public DataTable InquiryCardInfo(Enitity.StuInfo StudentInfo)
        {
            BLL.RechargeBLL bllRecharge = new BLL.RechargeBLL();
            DataTable dt = bllRecharge.InquiryCardInfo(StudentInfo);
            return dt;

        }
        public int updateStudentCash(Enitity.StuInfo StudentInfo)
        {
            BLL.RechargeBLL SCB = new BLL.RechargeBLL();
            int line = SCB.updateStudentCash(StudentInfo);
            return line;


        }
    }

UI

 Enitity.ReChargeInfo rechargeInfo = new Enitity.ReChargeInfo();//实例化充值层
                Facade.RechargeFacade faca = new Facade.RechargeFacade();//实例化外观层
                                                                         //定义需要插入到充值表当中的数据
                rechargeInfo.cardno = comboCardNo.Text.Trim();
                rechargeInfo.addmoney = comboAddMoney.Text.Trim();
                rechargeInfo.state = "未结账";
                rechargeInfo.date = DateTime.Now.ToShortDateString();
                rechargeInfo.time = DateTime.Now.ToShortTimeString();
                 rechargeInfo.UserID = frmLogin.ID;
           
                Enitity.StuInfo student = new Enitity.StuInfo();//实例化学生
               // Facade.StudentFacade facade = new Facade.StudentFacade(); //实例化学生外观
                student.cardno = Convert.ToInt32(comboCardNo.Text.Trim());
                student.state = "使用";

            Facade.RechargeFacade Facade = new Facade.RechargeFacade();//实例化学生外观
            Enitity.StuInfo StudentInfo = new Enitity.StuInfo();
            StudentInfo.cardno = Convert.ToInt32(comboCardNo.Text.Trim());
            DataTable dtCard = Facade.InquiryCardInfo(StudentInfo);
            rechargeInfo.studentNo = dtCard.Rows[0][1].ToString();
            if (dtCard.Rows.Count == 0)
            {
                MessageBox.Show("卡号不存在", "温馨提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;

            }


                bool rechargecard = faca.addrecharge(rechargeInfo);//调用插入充值记录方法


            if (rechargecard)
            {
                StudentInfo.cardno = Convert.ToInt32(comboCardNo.Text.Trim());
                StudentInfo.cash = Convert.ToInt32(comboAddMoney.Text.Trim());

                int a = Convert.ToInt32(dtCard.Rows[0][7]);

                int balanceNow = Convert.ToInt32(dtCard.Rows[0][7]) + Convert.ToInt32(comboAddMoney.Text.Trim());
                StudentInfo.cash = balanceNow;
                int dt1 = Facade.updateStudentCash(StudentInfo);

                MessageBox.Show("充值成功");
                label6.Text = Convert.ToString(balanceNow);
            }
            else
            {
                MessageBox.Show("充值失败");
                return;
            }
        }

界面显示

总结

七层登录窗体弄好之后就走了一两遍代码,然后导致自己遇到怎么问题,只能怪自己没有多走几遍代码,然后导致自己后边遇到这么多问题,出来混迟早是要还得,还是踏踏实实得吧。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 22
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值