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

232 阅读1分钟

1.问题分析

定义各类使用c#委托与事件实现定时自动从用户的信用卡中扣款还款的功能

2.源代码

定义一个Delegate类,定义事件与委托并绑定

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);
        }
    }

定义一个Operation类,定义还款日期,欠款数,卡内余额

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();
        }
    }

主程序

static void Main(string[] args)
        {
            Delegate obj1 = new Delegate();
            Delegate obj2 = new Delegate();
            User u1 = new User("王五", 4000, 300, 10);
            User u2 = new User("张三", 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);
                }
            }
        }
    }

3.实验截图

image.png

4.实验心得 在此次实验中,我对委托的用法有了进一步的了解,但也还有很多不足去完善。

5.Gitee源码

gitee.com/gonnainsane…