C#使用委托实现信用卡用户定时还款能力
题目:用户有一张信用卡,信用卡有一个总额度;每个月会有信用卡账单显示月消费总额,月消费总额是小于信用卡总额度的;用户有若干储蓄卡,可选择某张储蓄卡进行还款;还款是指从储蓄卡中划走信用卡的月消费总额到信用卡;如果储蓄卡余额不足则还款动作不成功。
要求:①必须使用委托 ②事件的触发方式是每个月的到期还款日。
代码:
// See https://aka.ms/new-console-template for more
class Card
{
private int money;
public int Money
{
get
{
return money;
}
set
{
money = value;
}
}
}
class Deposit_card : Card { }
class cread_card : Card
{
private int time;
Deposit_card card1;
public cread_card(int t, int m,Deposit_card c)
{
time = t;
Money = m;
card1 = c;
}
public int Time
{
get { return time; }
set { time = value; }
}
public void pay()
{
Console.WriteLine("信用卡待还:{0},储蓄卡余额:{1}", Money, card1.Money);
if (card1.Money < Money)
{
Money -= card1.Money;
card1.Money = 0;
Console.WriteLine("已到还款日期,储蓄卡余额不足");
}
else
{
card1.Money -= Money;
Money = 0;
Console.WriteLine("已到还款日期,信用卡待还:{0},储蓄卡余额:{1}",Money, card1.Money);
}
}
public void notime()
{
Console.WriteLine("未到还款日期,储蓄卡余额:{0},信用卡待还:{1}",Money,card1.Money);
}
}
class Paydelegate {
public delegate void paydelegate();
public event paydelegate payevent;
public void Notify()
{
if (payevent != null)
{
payevent();
}
}
}
class Program
{
static void Main(string[] args)
{
int paytime = 4;
Deposit_card d1=new Deposit_card();
d1.Money = 2400;
cread_card c1 = new cread_card(4,2000,d1);
Paydelegate pay1=new Paydelegate();
if (paytime == c1.Time)
{
pay1.payevent += new Paydelegate.paydelegate(c1.pay);
}
else
{
pay1.payevent += new Paydelegate.paydelegate(c1.notime);
}
pay1.Notify();
}
}
代码实现:
我的gitee仓库:
https://gitee.com/zeng-hao11234/zh.git