前言
刚开始对七层特别懵,值传来传去的,照着博客敲了几个窗体,然后自己感觉自己找到感觉了,就想着自己去尝试敲一下,不去看别人写的博客,结果就遇到了很多的问题,主要还是对七层得传值不熟练,最后在小伙伴得帮助下把充值这个窗体整出来了,也算是自己敲得第一窗体,然后再多练习练习就熟练了。话不多说直接上代码吧。
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;
}
}
界面显示
总结
七层登录窗体弄好之后就走了一两遍代码,然后导致自己遇到怎么问题,只能怪自己没有多走几遍代码,然后导致自己后边遇到这么多问题,出来混迟早是要还得,还是踏踏实实得吧。