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

题目:

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

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

一、题目分析

1.使用C#的委托功能

2.分模块来设计

3.还款委托类当作事件处理,委托类定义委托和事件以及自动还款方法

二、解题思路

1、设置还款金额以及还款时间
2、扣除金额,所剩余额
3、委托管理定时还款

三、核心代码功能说明

using System;
namespace creditcard
{
    class Savings
    {
        int balance = 10000;
        Credit x;
        public Savings(Credit x)
        {
            this.x = x;
        }
        public void Deductmoney()
        {
            if (x.Isrepayment() == 1)
            {
                balance = balance - x.Torepayment();
                Console.WriteLine("还款成功,你的余额为:{0}", balance);
            }
            else
            {
                Console.WriteLine("暂时不需要还款,你的余额为:{0}", balance);
            }
        }
    }

    class Credit
    {
        int repaydate = 28;
        int torepayment;
        int repaymentday;
        public Credit(int repayment, int repayday)
        {
            this.torepayment = repayment;
            this.repaymentday = repayday;
        }
        public int Torepayment()
        {
            return torepayment;
        }
        public int Isrepayment()
        {
            if (repaydate == repaymentday)
                return 1;
            else
                return 0;
        }
    }
    class Delegate
    {
        public delegate void pay();
        public event pay payment;
        public void Notify()
        {
            if (payment != null)
            {
                Console.WriteLine("触发事件:");
                payment();
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Delegate objDelegate = new Delegate();
            Credit x1 = new Credit(1000, 27);
            Credit x2 = new Credit(1250, 28);
            Savings c1 = new Savings(x1);
            Savings c2 = new Savings(x2);
            objDelegate.payment +=
                new Delegate.pay(c1.Deductmoney);
            objDelegate.payment +=
               new Delegate.pay(c2.Deductmoney);
            objDelegate.Notify();
        }
    }
}

四、程序运行结果截图

地址: https://github.com/gzgit0808/gz_git88.git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值