【Day2】使用C#委托事件实现信用卡用户定时还款功能

目录

  • 问题分析
  • 代码实现
    • 储蓄卡类
    • 信用卡类
    • 扣款委托类
    • 主程序入口
  • 结果样例
  • 仓库地址

问题分析

  1. 使用C#的委托功能
  2. 拥有信用卡类、储蓄卡类、还款委托类
  3. 信用卡类将绑定储蓄卡类,若信用卡需要还款,则从储蓄卡里取
  4. 还款则可以视为事件

代码实现

储蓄卡类

    //储蓄卡类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 r){this.depositMoney = r;}}

信用卡类

    //信用卡类class creditCard{//信用卡持有者名称public string name;//信用卡余额public int creditMoney;//扣款日期public int dueDay;//绑定储蓄卡对象public depositCard DC;//初始化public creditCard(string name, int CM, int DD, depositCard DC){this.name = name;this.creditMoney = CM;this.dueDay = DD;this.DC = DC;}//还款public void repayM(){Console.WriteLine("用户{0}当前金额{1}",this.name, this.DC.getDepositMoney());DC.setDepositMoney(this.DC.getDepositMoney() + creditMoney);Console.WriteLine("用户已还款");Console.WriteLine("还款金额:{0}", Math.Abs(this.creditMoney));Console.WriteLine("余下金额为{0}", DC.getDepositMoney());Console.WriteLine();}//无需还款public void norepayM(){Console.WriteLine("用户{0}当前金额{1}", this.name, this.DC.getDepositMoney());Console.WriteLine("用户未到还款日期,无需还款", this.name);Console.WriteLine();}}

扣款委托类

    //扣款委托类class repayDelegate{//扣款委托public delegate void repayMoney();//扣款事件public event repayMoney DoRepay;//事件执行public void NotifyRepay(){if (DoRepay != null){Console.WriteLine("触发事件:");// 触发事件DoRepay();}}}

主程序入口

 class Program{static void Main(string[] args){//初始化数据depositCard D1 = new depositCard("张三", 10000);depositCard D2 = new depositCard("李四", 10000);depositCard D3 = new depositCard("王五", 10000);creditCard C1 = new creditCard("张三", -5000, 31, D1);creditCard C2 = new creditCard("李四", -3000, 31, D2);creditCard C3 = new creditCard("王五", -1000, 20, D3);List<creditCard> cCards = new List<creditCard>();cCards.Add(C1);cCards.Add(C2);cCards.Add(C3);//创建委托对象repayDelegate rD = new repayDelegate();foreach (creditCard C in cCards){//判断是否到了该还款的日期if (C.dueDay == int.Parse(DateTime.Now.ToString("yyyy-MM-dd").Split('-')[2])){//事件添加rD.DoRepay += new repayDelegate.repayMoney(C.repayM);}else{rD.DoRepay += new repayDelegate.repayMoney(C.norepayM);}}//事件执行rD.NotifyRepay();}}
}

结果样例

在这里插入图片描述

仓库地址

https://gitee.com/lazy_lazy_tang_lan/my-programming


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部