委托与事件-信用卡还款

功能说明:

用户有信用卡和储蓄卡,储蓄卡有查询余额和取款功能,信用卡能够查看账单余额、还款日、余额。使用委托与事件,用户自由设置与信用卡还款关联的储蓄卡,当还款日到期时进行账单金额的自动划扣。

设计流程:

分析题目可知,该程序大致需要包含四个部分:信用卡类,储蓄卡类,委托与事件的类以及主函数。首先设计储蓄卡类,包含了获取储蓄卡的余额,储蓄卡进行还款两个方法;然后设计信用卡类,包含了获取信用卡还款金额、信用卡还款日期两个方法;再然后设计委托与事件的类,主要包含创建委托去调用储蓄卡的还款方法以及当还款日期到是,触发事件,进行还款;最后通过主函数来实现整体功能。

关键代码展示

using static ConsoleApplication3delegate.CreditCardDelegate;
namespace ConsoleApplication3delegate
{
    class DepositCard    //储蓄卡
    {
        public int amount;//储蓄卡余额
        public void Display()   //获取储蓄卡的余额
        {
            Console.WriteLine("储蓄卡余额为:{0}", amount);
        }
        public void Account(int balance, int payday)    //储蓄卡进行还款
        {
            amount += balance;
            if(amount<0)
                Console.WriteLine("储蓄卡余额不足,还款失败");
            else
                Console.WriteLine("今天是本月的第{0}天,取款{1}元,储蓄卡余额为{2}元。",DateTime.Today.Day, balance, amount);
          
        }
    }
    class CreditCard   //信用卡
    {
        private int billamount;     //信用卡的还款金额
        private int repaymentday;   //信用卡的还款日期
        public CreditCard(int billamount, int repaymentday) //初始化信用卡
        {
            this.billamount = billamount;
            this.repaymentday = repaymentday;
        }
        public int getbillamount() { return billamount; }   //获取信用卡还款金额
        public int getrepaymentday() { return repaymentday; }   //获取信用卡还款日期
        public void Display() { Console.WriteLine("信用卡余额为:{0}", billamount); }  
    }
    class CreditCardDelegate                //事件与委托
    {
        public int billamount;              //还款金额
        public int repaymentday;            //还款日期
        public delegate void call(int billamount, int repaymentday);//创建委托去调用储蓄卡的还款方法
        public event call Paymoney;         //事件
        public void Notify()                
        {
            if (DateTime.Today.Day == repaymentday) { Paymoney(billamount, repaymentday); }//到还款日期时,触发事件,调用储蓄卡的还款方法
            else { Console.WriteLine("未到还款日"); }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            DepositCard depositCard = new DepositCard();
            depositCard.amount = 10000;
            CreditCard creditCard1 = new CreditCard(-2000, 5);
            CreditCard creditCard2 = new CreditCard(-3000, 4);
            CreditCard creditCard3 = new CreditCard(-6000, 28);
            depositCard.Display(); Console.WriteLine("");
            List<CreditCard> Cards = new List<CreditCard>();
            Cards.Add(creditCard1); Cards.Add(creditCard2); Cards.Add(creditCard3);
            int i = 0;
            foreach (CreditCard card in Cards)
            {
                Console.WriteLine("信用卡开始执行委托还款。。。。。。");
                Console.Write("信用卡{0}, ",i++);
                card.Display();
                CreditCardDelegate credelegate ;           //创建一个对象并初始化
                credelegate = new CreditCardDelegate();
                credelegate.billamount = card.getbillamount();          //获取信用卡还款金额和还款日期
                credelegate.repaymentday = card.getrepaymentday();
                credelegate.Paymoney += new CreditCardDelegate.call(depositCard.Account);//订阅
                credelegate.Notify();
                Console.WriteLine("\n");
               
            }
            Console.ReadLine();
        }
    }
}

总结

通过这次的作业,我对委托与事件的学习又更近了一步。我认为此次作业的主要思想就是:当还款日到期时,触发事件,然后订阅事件的委托就会通过对象调用储蓄卡的还款方法,实现还款日到期时,储蓄卡自动还款功能。

源码开源地址

https://gitee.com/li-ing-1/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值