C# 委托实现信用卡用户定时还款功能

功能说明:
使用委托和事件来实现提醒和扣款功能。

代码:

using System;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
Delegate obj1 = new Delegate();
Delegate obj2 = new Delegate();
User u1 = new User(“zq”,4000,420, 10);
User u2 = new User(“wyx”, 10000, 2000, 20);
Operation operate = new Operation();
obj1.Remind_event += operate.Remind_func;
obj2.Deduct_event += operate.Deduct_func;
for (int day = 0; day <= 30; day++)
{
if (u1.Date - day == 3)
obj1.MyRemind(u1);
if (u2.Date - day == 3)
obj1.MyRemind(u2);
if (day == u1.Date)
{
Console.WriteLine(“还款日期已到!”);
obj2.MyDeduct(u1);
}
if (day == u2.Date)
{
Console.WriteLine(“还款日期已到!”);
obj2.MyDeduct(u2);
}
}
}
}
class Delegate
{
public delegate void MyDelegate(User user);
public event MyDelegate Remind_event;
public event MyDelegate Deduct_event;
public void MyRemind(User user)
{
if (Remind_event != null)
Remind_event(user);
}
public void MyDeduct(User user)
{
if (Deduct_event != null)
Deduct_event(user);
}
}
class Operation
{
public void Record()
{
DateTime DateTime1, DateTime2 = DateTime.Now;
DateTime1 = Convert.ToDateTime(“2021-04-15”);
string dateDiff = null;
TimeSpan ts1 = new TimeSpan(DateTime1.Ticks);
TimeSpan ts2 = new TimeSpan(DateTime2.Ticks);
TimeSpan ts = ts1.Subtract(ts2).Duration();
dateDiff = ts.Days.ToString() + “天”;
Console.WriteLine(“距离还款时间还有:{0}”, dateDiff);
}
public void Remind_func(User user)
{
Console.WriteLine(“亲爱的{0}用户,您的还款日期即将到临,本次需还款{1}元!”, user.Name, user.Debt);
Record();
Console.ReadLine();
}
public void Deduct_func(User user)
{
Console.WriteLine(“亲爱的{0}用户,您的借记卡原余额为{1}元”, user.Name, user.Deposit);
Console.WriteLine(“本次还清账单{0}元,借记卡目前余额为{1}元!”, user.Debt, user.Deposit - user.Debt);
Console.WriteLine();
}
}
class User
{
private string name;
private double deposit, debt;
private int date;

    public User(string name, double deposit, double debt, int date)
    {
        this.name = name;
        this.date = date;
        this.deposit = deposit;
        this.debt = debt;
    }
    public string Name { get { return name; } }
    public double Deposit { get { return deposit; } }
    public double Debt { get { return debt; } }
    public int Date { get { return date; } }
}

}

结果:
在这里插入图片描述

实验心得:
熟练运用委托和事件可以方便实现一些特定的功能。

gitee仓库:
地址

おすすめ

転載: blog.csdn.net/qq_51771271/article/details/115497166