BLL层
namespace BLL
{
public class ChainBLL
{
public void InquiryBasic()
{
//调用工厂方法创建接口
StuOffFactory fact = new StuOffFactory();
//调用接口
StuOffIDAL idal = fact.StuOffFact();
//调用D层查询方法
Entity.BasicData_Info BasicDataInfo= new BasicData_Info();
DataTable table = idal.InqBasicData(BasicDataInfo);
rate = Convert.ToDecimal(table.Rows[0]["UnitCash"].ToString());
}
public static decimal rate;
public static decimal cash;
public decimal CostCash(int time)
{
InquiryBasic();
ChainMoney c1 = new ConcreChainMoney1();
ChainMoney c2 = new ConcreChainMoney2();
ChainMoney c3 = new ConcreChainMoney3();
c1.SetSuccessor(c2);
c2.SetSuccessor(c3);
c1.costcash(time);
return cash;
}
public abstract class ChainMoney
{
protected ChainMoney successor;//设置继承者
public void SetSuccessor(ChainMoney successor)
{
this.successor = successor;
}
public abstract void costcash(int time);
}
//当时间在0-2分钟之内则有权处理,费则转到下一位
public class ConcreChainMoney1 : ChainMoney
{
public override void costcash(int time)
{
if (time>=0 && time <2)
{
cash = 0;
}
else if (successor != null)
{
successor.costcash(time);//转到下一位
}
}
}
//但时间在2分钟到1小时之间则有权处理,则转移到下一位
public class ConcreChainMoney2 : ChainMoney
{
public override void costcash(int time)
{
if (time >= 2 && time <= 60)
{
cash = rate / 60 * time * Convert.ToDecimal(1.2);
}
else if (successor != null)
{
successor.costcash(time);//转到下一位
}
}
}
//当时间大于1小时则有权处理,否则转一下一位
public class ConcreChainMoney3 : ChainMoney
{
public override void costcash(int time)
{
if (time > 60)
{
cash = rate / 60 * time;
}
else if (successor != null)
{
successor.costcash(time);//转到下一位
}
}
}
}
}
UI层
//下机:
DateTime TimeNow = new DateTime();
TimeSpan TimeCount = new TimeSpan();
public decimal limitcash;
public static decimal cash;
public string studentname;
public static decimal costcash;
public DateTime dt;
public void ButOff_Click(object sender, EventArgs e)
{
Entity.Card_Info CardInfo = new Entity.Card_Info();
CardInfo.CardNo = TxtCardNo.Text.Trim();
CardInfo.Balance =Convert.ToInt32(TxtBalancd.Text.Trim());//将字符串类型的变量转换成int类型,并存入数据库中
Facade.StuOffFacade facadeCard = new Facade.StuOffFacade();
int intOff = facadeCard.CardInfo(CardInfo);
Entity.OnOff_Info OnOffInfo = new Entity.OnOff_Info();
OnOffInfo.CardNo = TxtCardNo.Text.Trim();
TxtOffDate.Text = DateTime.Now.ToLongTimeString();
//TxtOnDate.Text =Convert.ToString( OnOffInfo.OnDate);
OnOffInfo.OffDate = DateTime.Now;
timer2.Stop();
Facade.StuOffFacade facadeoff = new Facade.StuOffFacade();
int intofftime = facadeoff.OnOffInfo(OnOffInfo);
Entity.Card_Info UpCardInfo = new Entity.Card_Info();
UpCardInfo.CardNo = TxtCardNo.Text.Trim();
Facade.StuOnFacade facaCard = new Facade.StuOnFacade();
UpCardInfo.OnOff = "未上机";
int Card = facaCard.UpdateCard(UpCardInfo);
ButOff.Enabled = false;
ButOn.Enabled = true;
}
private void timer2_Tick(object sender, EventArgs e)
{
TimeCount = DateTime.Now - TimeNow;
TxtCostTime.Text = string.Format("{0:00}:{1:00}:{2:00}",TimeCount.Hours,TimeCount.Minutes,TimeCount.Seconds);//将消费时间显示为动态计时
}
/// <summary>
/// 计算消费金额
/// </summary>
public int time;
public void CostCash()
{
Facade.ChainFacade faca = new Facade.ChainFacade();
time = TimeCount.Minutes;
costcash = faca.CostCash(time);
TxtCost.Text = costcash.ToString("0");
}
private void TxtCostTime_TextChanged(object sender, EventArgs e)
{
for (int i = 0; i <= TimeCount.Minutes; i++)
{
decimal a = cash - costcash;
TxtBalancd.Text = a.ToString("0");
CostCash();
int b = Convert.ToInt32(TxtBalancd.Text.Trim());
if (cash <= costcash)
{
MessageBox.Show("余额不足,即将自动下机", "温馨提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
}
return;
其他层都大同小异,在此不再过多介绍,如果有什么错误的地方,还请各位斧正。