C#机房重构之充值

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xyf13920745534/article/details/82731290

充值思路:查找可以充值的卡号,进行宠值,插入充值记录到冲指表,更新学生余额
创建顺序
D层—IDAL层—Factory层—B层—Facade层—UI层
D层
RechargeDAL

public class RechargeDAL:IDAL.RechargeIDAL
{
   public int recharge(Entity.RechargeInfo RechargeInfo)//插入充值记录
   {
       SQLHelper sqlHelper = new SQLHelper();
       SqlParameter[] sqlParams = { new SqlParameter("@CardNo", RechargeInfo .CardNo ),
                                    new SqlParameter ("@AddMoney",RechargeInfo .AddMoney),
                                    new SqlParameter ("@Date",RechargeInfo .Date ),
                                    new SqlParameter ("@Time",RechargeInfo.Time ),
                                    new SqlParameter ("@UserID",RechargeInfo .UserID ) ,
                                    new SqlParameter ("@Check",RechargeInfo.Check ) };
       string sql = @"INSERT INTO [Recharge] (CardNo,AddMoney,Date,Time,UserID,[Check])values(@CardNo,@AddMoney,@Date,@Time,@UserID,@Check)";
       int rechargecard = sqlHelper.ExtcuteNonQuery (sql,sqlParams , CommandType.Text );
       return rechargecard;
            
        }
}

StudentDAL

public class StudentDAL:IDAL.StudentIDAL
{
	public List<Entity.StudentInfo> getAllStudentInfo(Entity .StudentInfo StudentInfo)//得到所有使用卡的学生的信息
	{
    	SQLHelper sqlHelper = new SQLHelper();
    	SqlParameter[] sqlParams = { new SqlParameter("@State", StudentInfo.State ) };
    	//构造要查询的SQL语句
    	string sql = @"SELECT * FROM [Student] Where State='使用'";
    	//使用SQLhelper进行查询得到结果
    	DataTable table = sqlHelper.ExecuteQuery (sql,sqlParams ,CommandType.Text );
    	//将table中的数据转存到list中去
    	ConvertHelper convert = new ConvertHelper();
    	return convert.convertToList<StudentInfo>(table);
	}
	public int updateStudentCash(Entity.StudentInfo StudentInfo)//更新学生余额
	{
    	SQLHelper sqlHelper = new SQLHelper();
    	SqlParameter[] sqlParams = { new SqlParameter("@CardNo", StudentInfo.CardNo),
                                 						new SqlParameter ("@Cash",StudentInfo .Cash )};
    	string sql = @"UPDATE [Student] SET Cash=@Cash WHERE CardNo=@CardNo";
    	int StudentCash = sqlHelper.ExtcuteNonQuery(sql, sqlParams, CommandType.Text);
    	return StudentCash;
	}
}

IDA层
RechargeIDAL

public  interface  RechargeIDAL
{
	int recharge(Entity.RechargeInfo RechargeInfo);//插入充值记录接口
}

StudentIDAL

public  interface  StudentIDAL
{
	List<Entity.StudentInfo> getAllStudentInfo(Entity.StudentInfo studentInfo);//获得所有学生信息接口
	int updateStudentCash(Entity.StudentInfo studentInfo);//实现更新学生余额接口
}

Factory层
RechargeFactory

public  class RechargeFactory
{
	string StrDB = System.Configuration.ConfigurationManager.AppSettings["DB"];//接收来自配置文件的数据
	 public IDAL.RechargeIDAL InsertRechargeInfo()//插入充值记录
     {
         string ClassName = StrDB + "." + "RechargeDAL";//DAL层的类名
         return (IDAL.RechargeIDAL)Assembly.Load(StrDB).CreateInstance(ClassName);//反射工厂的应用
     }
}

StudentFactory

public class StudentFactory
{
	string StrDB = System.Configuration.ConfigurationManager.AppSettings["DB"];//接收来自配置文件的数据	
	public IDAL.StudentIDAL GetStudent()//获取学生信息
	{
		string ClassName = StrDB + "." + "StudentDAL";//DAL层的类名
        return (IDAL.StudentIDAL)Assembly.Load(StrDB).CreateInstance(ClassName);//反射工厂的应用
	}
	public IDAL.StudentIDAL UpdateStudentCash()//更新学生余额
	{
		string ClassName = StrDB + "." + "StudentDAL";//DAL层的类名
        return (IDAL.StudentIDAL)Assembly.Load(StrDB).CreateInstance(ClassName);//反射工厂的应用
	}
}

BLL层
RechargeBLL

public  class RechargeBLL
{
	public int InsertRechargeRecord(Entity.RechargeInfo RechargeInfo)//插入充值记录
	{
    	//调用工厂方法创建InsertRechargeInfo接口
    	Factory.RechargeFactory fact = new Factory.RechargeFactory();
    	//调用插入的方法
    	IDAL.RechargeIDAL idal = fact.InsertRechargeInfo();
    	int rechargecard = idal.recharge(RechargeInfo);
    	return rechargecard;
	}
}

StudentBLL层

public  class StudentBLL
{
	public List<Entity.StudentInfo> GetALLStudentinfo(Entity.StudentInfo StudentInfo)//查询所有学生信息
	{
      	Factory.StudentFactory fact = new Factory.StudentFactory();//实例化工厂
      	IDAL.StudentIDAL idal = fact.GetStudent ();
      	List<Entity.StudentInfo> list = idal.getAllStudentInfo(StudentInfo);
      	return list;
 	}
}

Facade层
RechargeFacade

public  class RechargeFacade
{
	public int InsertRechargeInfo(Entity.RechargeInfo rechargeInfo )//插入充值记录
	{
		BLL.RechargeBLL rechargeBLL = new BLL.RechargeBLL();
    	int rechargecard = rechargeBLL.InsertRechargeRecord(rechargeInfo );
    	return rechargecard ;
	}
}

StudentFacade

public class StudentFacade
{
	//获取所有学生信息
    public List<Entity.StudentInfo> GetAllStudentInfo(Entity.StudentInfo student)
    {
        BLL.StudentBLL studentBLL = new BLL.StudentBLL();
        List<Entity.StudentInfo> list =studentBLL.GetALLStudentinfo (student);
        return list;
    }
     //更新学生余额
    public int UpdateStudentCash(Entity.StudentInfo student)
    {
        BLL.StudentBLL studentBLL = new BLL.StudentBLL();
        return studentBLL.UpdateStudentCash(student);
     }
}

UI层

//加载出所有可以充值的卡号
        private void frmRecharge_Load(object sender, EventArgs e)
        {
            Entity.StudentInfo student = new Entity.StudentInfo();//实例化实体
            Facade.StudentFacade studentFacade = new Facade.StudentFacade();
            student.State = "使用";
            List<Entity.StudentInfo> list = studentFacade.GetAllStudentInfo(student);//得到所有使用卡的学生信息
            list = studentFacade.GetAllStudentInfo(student);

            if (list.Count == 0)
            {
                MessageBox.Show("无可充值的学生", "温馨提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                for (int i = 0; i < list.Count; i++)
                {
                    comboCardNo.Items.Add(list[i].CardNo);//加载学号
                }
            }
            //加载充值的数值
            for (int i = 10; i < 100; i += 10)
            {
                comboAddMoney.Items.Add(i);
            }
            for (int i = 100; i < 500; i += 100)
            {
                comboAddMoney.Items.Add(i);
            }
        }
        //充值操作
        private void btnrecharge_Click(object sender, EventArgs e)
        {
            Entity.RechargeInfo rechargeInfo = new Entity.RechargeInfo();//实例化充值层
            Facade.RechargeFacade faca = new Facade.RechargeFacade();//实例化外观层
            //定义需要插入到充值表当中的数据
            rechargeInfo.CardNo = Convert.ToInt32(comboCardNo.Text.Trim());
            rechargeInfo.AddMoney = Convert.ToDecimal(comboAddMoney.Text.Trim());
            rechargeInfo.Check = "未结账";
            rechargeInfo.UserID = Convert.ToInt32(frmLogin.UserID);
            rechargeInfo.Date = Convert.ToDateTime(DateTime.Now.ToShortDateString());
            rechargeInfo.Time = Convert.ToDateTime(DateTime.Now.ToShortTimeString());


            Entity.StudentInfo student = new Entity.StudentInfo();//实例化学生
            Facade.StudentFacade facade = new Facade.StudentFacade(); //实例化学生外观
            student.CardNo = Convert.ToInt32(comboCardNo.Text.Trim());
            student.State = "使用";
            DataTable table = facade.GetStudent(student);
            student.Cash = Convert.ToDecimal(table.Rows[0][8].ToString()) + Convert.ToDecimal(comboAddMoney.Text.Trim());


            int rechargecard = faca.InsertRechargeInfo(rechargeInfo);//调用插入充值记录方法
            int updatestudentcash = facade.UpdateStudentCash(student);//调用更新学生余额的方法
            //显示充值信息
            label3.Text = "充值卡号:" + comboCardNo.Text + System.Environment.NewLine
                         + "原金额:" + table.Rows[0][9].ToString() + System.Environment.NewLine
                         + "充值金额:" + comboAddMoney.Text + System.Environment.NewLine
                         + "现有金额:" + student.Cash + System.Environment.NewLine
                         + "充值日期:" + DateTime.Now.ToShortDateString() + System.Environment.NewLine
                         + "充值时间:" + DateTime.Now.ToShortTimeString() + System.Environment.NewLine
                         + "充值教师:" + frmLogin.UserID;
            MessageBox.Show("充值成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

猜你喜欢

转载自blog.csdn.net/xyf13920745534/article/details/82731290