c#使用委托实现信用卡用户定时还款功能
三个主要的class
1.储蓄卡类
class DepositCard
{
private string Name;
private int DepositMoney;
public DepositCard(string Name, int Money)
{
this.Name = Name;
this.DepositMoney = Money;
}
public int GetDepositMoney()
{
return this.DepositMoney;
}
public void SetDepositMoney(int NowMoney)
{
this.DepositMoney = NowMoney;
}
}
2.信用卡类
class CreditCard
{
public string Name;
public int CreditMoney;
public int DiedLine;
public DepositCard DC;
public CreditCard(string Name, int CreditMoney, int DiedLine, DepositCard DC)
{
this.Name = Name;
this.CreditMoney = Math.Abs(CreditMoney);
this.DiedLine = DiedLine;
this.DC = DC;
}
3.扣款委托类
class RepayDelegate
{
public delegate void RepayMoney();
public event RepayMoney Repay;
public void RequestRepay()
{
if (Repay != null)
{
Repay();
}
}
}
两个方法来提醒用户还款
public void RepayMoney()
{
Console.WriteLine("用户{0},还款日即将到来,请注意本次共需还款{1}元!", this.Name, this.CreditMoney);
Console.WriteLine("用户{0}当前金额{1},请注意还款。", this.Name, this.DC.GetDepositMoney());
DC.SetDepositMoney(this.DC.GetDepositMoney() - CreditMoney);
Console.WriteLine("用户已还款{0}元,现在您的储蓄卡余额为{1}", this.CreditMoney, DC.GetDepositMoney());
Console.WriteLine();
}
//无需还款
public void NonRepayMoney()
{
Console.WriteLine("用户{0},未到还款日期,无需还款。", this.Name);
Console.WriteLine("当前余额为{0}。", this.DC.GetDepositMoney());
Console.WriteLine();
}
}
-主类
class Program
{
static void Main(string[] args)
{
DepositCard D1 = new DepositCard("王小明", 10000);
DepositCard D2 = new DepositCard("张小红", 10000);
DepositCard D3 = new DepositCard("李小梅", 10000);
DepositCard D4 = new DepositCard("赵小壮", 10000);
CreditCard C1 = new CreditCard("王小明", -1000, 7, D1);
CreditCard C2 = new CreditCard("张小红", -3000, 0, D2);
CreditCard C3 = new CreditCard("李小梅", 20000, 5, D3);
CreditCard C4 = new CreditCard("赵小壮", -7000, 5, D4);
List<CreditCard> CreditCards = new List<CreditCard>();
CreditCards.Add(C1);
CreditCards.Add(C2);
CreditCards.Add(C3);
CreditCards.Add(C4);
RepayDelegate RD = new RepayDelegate();
foreach (CreditCard C in CreditCards)
{
//判断是否到了该还款的日期
if (C.DiedLine == int.Parse(DateTime.Now.ToString("yyyy-MM-dd").Split('-')[2]))
{
RD.Repay += new RepayDelegate.RepayMoney(C.RepayMoney);
}
else
{
RD.Repay += new RepayDelegate.RepayMoney(C.NonRepayMoney);
}
}
RD.RequestRepay();
}
}
实验结果截图如下所示:
实验心得:
类的运用得到了提升,以及对整体的思路有了更好的把握
gitee仓库地址:
链接:link