1.问题分析
要求使用c#委托与事件实现定时自动从用户的信用卡中扣款还款的功能
2.核心代码及其功能说明
定义一个DELE类,在其中定义委托与事件,并让事件与委托绑定
class DELE
{
public delegate void card(User uesr);
public event card DeMoney;//定期扣款事件绑定委托
//判断事件是否启用
public void DeMoneyTest(User user)
{
if (DeMoney != null)
{
DeMoney(user);
}
else
{
Console.WriteLine("还款日未到");
}
}
}
定义一个Bank类,在其中定义一个扣款函数。
class Bank
{
public void DeMoneying(User user)
{
Console.WriteLine("{0},您的信用卡余额为{1}元,本次还款{2}元,信用卡目前余额为{3}元!",
user.Name, user.Balance, user.Debt, (user.Balance - user.Debt));
Console.WriteLine();
}
}
定义一个User类,在其中定义用户的卡内余额、欠款额、用户名和还款日。
class User
{
private int balance;
private int debt;
private string name;
private int day;
public User(int balance, int debt, string name, int date)
{
this.balance = balance;
this.debt = debt;
this.name = name;
this.day = date;
}
public int Balance { get => balance; set => balance = value; }
public string Name { get => name; set => name = value; }
public int Debt { get => debt; set => debt = value; }
public int Date { get => day; set => day = value; }
}
主程序
static void Main(string[] agrs)
{
DELE d1 = new DELE();
DELE d2 = new DELE();
User user = new User(521, 520, "殷乐", 8000);
Bank bank = new Bank();
d2.DeMoney += bank.DeMoneying;//银行扣款函数订阅扣款事件
for (int i = 0; i <= 10000; i++)
{
if (i == user.Date)
d2.DeMoneyTest(user);
}
}
3.结果截图
4.代码仓库地址
https://gitee.com/ylhmt/programming-windows-/tree/master/