C#程序设计题:请使用委托实现信用卡用户定时还款功能

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

①使用委托②事件的触发方式是每个月的到期还款日;

class Depositcard
    {
        private string name;//储蓄用户名
        
        private int depositmoney;//储蓄金额
        public Depositcard(string name, int money)
        {
            this.name = name;
            this.depositmoney = money;
        }
        //获取储蓄金额
        public int getDepositMoney()
        {
           return this.depositmoney;
        }
         public void setDepositMoney(int h)
        {
            this.depositmoney = h;
        }
    }

class Creditcard
    {
      
        public string name; //信用卡持有者名称
       
        public int creditmoney; //信用卡余额
        
        public int dueday;//扣款日期
        
        public Depositcard obj;//绑定储蓄卡对象
        //初始化
        public Creditcard(string name, int cm, int dd, Depositcard obj)
        {
            this.name = name;
            this.creditmoney = cm;
            this.dueday = dd;
            this.obj = obj;
        }
        //还款
        public void repaymoeny()
        {
            Console.WriteLine("{0}先生(女士),您好!您的银行卡当前金额{1}", this.name, this.obj.getDepositMoney());
            obj.setDepositMoney(this.obj.getDepositMoney() + creditmoney);
            Console.WriteLine("您已还款");
            Console.WriteLine("还款金额:{0}", Math.Abs(this.creditmoney));
            Console.WriteLine("账户余额{0}", obj.getDepositMoney());
            Console.WriteLine();
        }
        //无需还款
        public void norepaymoeny()
        {         
            Console.WriteLine("{0}先生(女士),您好!您的银行卡当前金额{1}", this.name,this.obj.getDepositMoney());
            Console.WriteLine("未到还款日期,您无需还款", this.name);
            Console.WriteLine();
        }
    }
class repayDelegate
    {
        public delegate void repayMoney();//扣款委托  
        public event repayMoney Repay;//扣款事件 
        public void NotifyRepay()//事件执行
        {
          if (Repay != null)
            {
                Console.WriteLine("触发事件!");
                Repay();
            }
        }
    }
测试类:
Creditcard C1 = new Creditcard("A", -2000, 1, D1);
Creditcard C2 = new Creditcard("B", -300, 15, D2);
Creditcard C3 = new Creditcard("C", -4000, 1, D3);


Creditcard[] CreditCards = new Creditcard[3];
CreditCards[0] = C1;
CreditCards[1] = C2;
CreditCards[2] = C3;

repayDelegate rD = new repayDelegate();
foreach (Creditcard C in CreditCards)
{
    //判断是否到了该还款的日期(假定还款日期为每月的1号)
    if (C.dueday == 1)
    {
        //事件添加
        rD.Repay += new repayDelegate.repayMoney(C.repaymoeny);
    }
    else
    {
        rD.Repay += new repayDelegate.repayMoney(C.norepaymoeny);
    }
}
//事件执行
rD.NotifyRepay();
Console.ReadKey();
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值