使用委托实现信用卡用户定时还款功能
一、 功能说明
使用 C# 的委托与事件,实现银行自动提醒用户信用卡还款与自动从用户的储蓄卡扣款功能。
二、核心代码
委托与事件的声明
class Delegates{
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-05-01");
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("亲爱的用户,您的还款日期即将到临,本次需还款{1}元!", user.Debt);
Record();
Console.ReadLine();
}
public void Deduct_func(User user){
Console.WriteLine("亲爱的用户,您的借记卡原余额为{1}元", 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 => name;}
public double Deposit{ get => Deposit;}
public double Debt { get => debt;}
public int Date { get => date;}
}
主函数
static void Main(string[] args){
Delegates obj1 = new Delegates();
Delegates obj2 = new Delegates();
User u1 = new User("ywj", 5000, 420, 10);
User u2 = new User("po", 10000, 2000, 1);
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)
obj2.MyRemind(u2);
if (day == u1.Date)
obj1.MyDeduct(u1);
if (day == u2.Date)
obj2.MyDeduct(u2);
}
三、实验结果以及心得
通过此次实验,了解到了委托与事件,事件属于类的成员,所以要放在类的内部,委托属于一个定义,是和类、接口类似的,通常放在外部。虽然过程中有些困难,但是通过和同学讨论以及上网搜索,还是慢慢地解决了这些问题。