c#使用委托事件实现信用卡定期还款功能

应用场景:  

用户有一张信用卡,信用卡有一个总额度;每个月会有信用卡账单显示月消费总额,月消费总额是小于信用卡总额度的;用户有若干储蓄卡,可选择某张储蓄卡进行还款;还款是指从储蓄卡中划走信用卡的月消费总额到信用卡;如果储蓄卡余额不足则还款动作不成功。要求如下:①必须使用委托②事件的触发方式是每个月的到期还款日;

 委托事件介绍

委托:作用类似与c++中的函数指针,作为一种方法的引用,

委托用法:再反编译工具中,可以看到委托是一个类的形式出现,所以再代码中,我们需要去声明一个委托类型的名称,此时 delegate就类似于声明一个class,再vs2019中声明出来的字段颜色和类的颜色相同,但是在声明时,需要注意,返回值与形参必须与将来所关联(建立委托)的函数返回值和形参相同

事件:

相当委托的一种实例,不能再类外去调用

应用场景分析:

        在场景中出现了用户,储蓄卡,信用卡这三个对象,所以需要分别为这三个对象创建不同的类.

明确每个对象所需要实现的功能,自己类中的功能必须由自己类实现,不能由其他类来实现;

储蓄卡类:

        初始化,存钱,取钱.

 public class SavingCard
        {
            
            public SavingCard()
            {
                a++;
                cardNumber = a.ToString();
                money = 0;
            }


            //存钱
            public bool Save(float m)
            {
                if (m > 0)
                {
                    money += m;
                    return true;
                }
                return false;
            }

            //取钱
            public bool TakeMoney(float num)
            {
                if (0 < num && num< money)
                {
                    money -= num;
                    return true;
                }
                return false;
            }
            public float Money()
            {
                return money;
            }
            public static long a;
            public string cardNumber;
            protected float money;
        }

信用卡类:

        初始话设置卡的额度,使用,还款.

       public class CreditCard
        {
            public CreditCard()
            {
                moneyLimit = 100000000;
                money = 0;
            }
            //使用钱 m是消费
            public bool Use(float m)
            {
                if (m < 0)
                {
                    return false;
                }
                if (m + money < moneyLimit)
                {
                    money += m;
                    return true;
                }
                return false;
            }
            //由储蓄卡还钱
            public bool Repay(SavingCard savingCard)
            {
                if (savingCard.TakeMoney(money))
                {
                    money = 0;
                    return true;
                }
                return false;
            }
            public float Money()
            {
                return money;
            }

            protected float moneyLimit;
            protected float money;
        }

用户类:

        name等基本信息,创建卡,确定那一张储蓄卡还款.以及换款日期需要获取系统的事件.(因为水平不够,不能做到一直判断系统时间,当条件满足时触发事件)只能创建一个方法去判断.

    public class Person
        {
            public Person(string m)
            {
                
                name = m;
                CardList = new List<SavingCard>(10);
            }

            public bool CreatSavingCard()
            {
                SavingCard card = new SavingCard();
                CardList.Add(card);
                Console.WriteLine(card.cardNumber);
                return true;
            }

            public bool CreatCreditCard()
            {
                if (CreditCard == null)
                {
                    CreditCard = new CreditCard();
                    return true;
                }
                else
                {
                    Console.WriteLine("您已拥有信用卡,不能再创建");
                    return false;
                }
            }

            public void Selectcard()
            {
                Console.WriteLine("你的信用卡所消费{0}元", CreditCard.Money());
                for(int i = 0; i < CardList.Count; i++)
                {
                    Console.WriteLine("你的{0}储蓄卡金额为{1}", CardList[i].cardNumber, CardList[i].Money());
                }
                Console.WriteLine("选择还款卡号:");
                string j;
                j = Console.ReadLine();
                for(int n = 0; n < CardList.Count; n++)
                {
                    if (CardList[n].cardNumber.Equals(j))
                    {
                        this.n = n;
                        break;
                    }
                }         
            }

 test:   

1
2
3
4
5
你的信用卡所消费99999元
你的1储蓄卡金额为0
你的2储蓄卡金额为10000000
你的3储蓄卡金额为0
你的4储蓄卡金额为0
你的5储蓄卡金额为0
选择还款卡号:
2
时间未到不用还款

gitee地址:https://gitee.com/qianjin-g/csharp-job

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值