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

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

一、 功能说明

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

三、实验结果以及心得

实验结果
通过此次实验,了解到了委托与事件,事件属于类的成员,所以要放在类的内部,委托属于一个定义,是和类、接口类似的,通常放在外部。虽然过程中有些困难,但是通过和同学讨论以及上网搜索,还是慢慢地解决了这些问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值