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

本文介绍了一个基于委托的事件驱动程序,每月自动在信用卡还款日检查用户的消费情况和储蓄卡余额,确保在满足条件时从储蓄卡划扣相应额度偿还信用卡债务。通过实例展示了信用卡、储蓄卡和还款类的交互操作,实现了高效、自动化的还款流程。
摘要由CSDN通过智能技术生成

用户有一张信用卡,信用卡有一个总额度;每个月会有信用卡账单显示月消费总额,月消费总额是小于信用卡总额度的;用户有若干储蓄卡,可选择某张储蓄卡进行还款;还款是指从储蓄卡中划走信用卡的月消费总额到信用卡;如果储蓄卡余额不足则还款动作不成功。

要求如下:①必须使用委托②事件的触发方式是每个月的到期还款日

实现过程:

信用卡类

1.属性:信用额度,还款日,使用额度

2.函数:使用;已使用额度提示

class Credit_Card    //信用卡
    {
        private int Credit_Limit = 10000; //总信用额度
        public int Repay_Date = 5;    //每月5号为还款日
        public int Used_Credit_Limit = 0;//已使用额度
        public int Show_Used()
        {
            Console.WriteLine("待还额度:" + Used_Credit_Limit);
            return Used_Credit_Limit;
        }
        public void Use(int num)
        {
            if (Used_Credit_Limit + num > Credit_Limit)
            {
                Console.WriteLine("超出信用额度,支付失败!");
            }
            else
            {
                Used_Credit_Limit += num;
                Console.WriteLine("信用卡花费:"+num);
            }
        }
    }

储蓄卡类

1.属性:余额

2.函数:使用;用于还款提示(委托的注册方法)

class Cash_Card    //储蓄卡
    {
        public int Card_balance;//余额
        public  Cash_Card(int Card_balance)
        {
            this.Card_balance = Card_balance;
        }
        public void Use(int num)
        {
            if (num <= Card_balance)
            {
                Card_balance -= num;
                Console.WriteLine("本卡已消费:" + num + "余额:" + Card_balance);
            }
            else
                Console.WriteLine("余额不足!");
        }
        public void used_to_repay()
        {
            Console.WriteLine("本次消费用于信用卡还款");
        }
    }

还款类

1.还款账单发送函数

2.定义委托与事件

3.定义了触发条件以及事件行为

    class payment
    {
        public void send_message(Credit_Card credit_Card)
        {
            Console.WriteLine("已到还款日,请进行还款:");
            credit_Card.Show_Used();
        }
        public delegate void pay(); //委托
        public event pay pay_all;//事件
        public void payed(int data, Credit_Card credit_Card,Cash_Card cash_Card)
        {
                
            /*触发条件:
                 * 1.进行了正确储蓄卡选择
                 * 2.到达了还款日期
                 * 3.储蓄卡余额大于需要偿还的额度*/
            if (pay_all != null && data== credit_Card.Repay_Date &&cash_Card.Card_balance>= credit_Card.Used_Credit_Limit)
            {
                cash_Card.Use(credit_Card.Used_Credit_Limit);
                pay_all();

            }
            else
            {
                Console.WriteLine("未满足还款条件");
            }
        }
    }

主类

创建了1个信用卡类对象Credit_Card1

创建了2个储蓄卡类对象Cash_Card1和Cash_Card2

模拟了消费以及到达还款日后选择储蓄卡进行还款的行为

class Program
    {
        static void Main(string[] args)
        {
            Credit_Card Credit_Card1=new Credit_Card();
            Cash_Card Cash_Card1 = new Cash_Card(50000);//卡1余额50000
            Cash_Card Cash_Card2 = new Cash_Card(4000);//卡2余额200

            payment pay_test=new payment();

            for (int i = 1; i <= Credit_Card1.Repay_Date; i++)
            {
                Console.WriteLine("当前日期:  "+i+"  日");    //模拟信用卡使用
                Thread.Sleep(500);
                Credit_Card1.Use(1000);
                if (i==Credit_Card1.Repay_Date)
                {
                    pay_test.send_message(Credit_Card1);    //账单发送
                    Console.WriteLine("储蓄卡1余额:" + Cash_Card1.Card_balance);
                    Console.WriteLine("储蓄卡2余额:" + Cash_Card2.Card_balance);
                    int Cash_Card_Num = Console.Read() - 48;
                    if (Cash_Card_Num == 1)
                    {
                        pay_test.pay_all += new payment.pay(Cash_Card1.used_to_repay);
                        pay_test.payed(i, Credit_Card1, Cash_Card1);
                    }
                    else if (Cash_Card_Num == 2)
                    {                        
                        pay_test.pay_all += new payment.pay(Cash_Card2.used_to_repay);
                        pay_test.payed(i, Credit_Card1, Cash_Card2);
                    }
                        else
                    {
                        Console.WriteLine("该卡不存在,还款失败");
                    }

                }
            }  
        }
    }

结果展示

 

 源码:

Windows-Programming/Program.cs at main · YJJ-code/Windows-Programming (github.com)icon-default.png?t=M276https://github.com/YJJ-code/Windows-Programming/blob/main/Program.cs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值