请使用委托与事件实现下列功能:用户可自由设置信用卡还款关联的储蓄卡,当还款日到期时进行账单金额的自动划扣;请注意事件主要是设计什么时候启动委托,委托的主要目的是设置还款的储蓄卡为避免设计出现偏差,给出了部分功能代码,请在此基础上进行开发。

namespace ConsoleApplication3delegate

{

class DepositCard

{

public int amount;

public void Display()

{

Console.WriteLine("储蓄卡余额为:{0}", amount);

}

public void Account(int balance,int payday)

{

amount += balance;

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;

请在此处添加自己的代码

}

class Program

{

static void Main(string[] args)

{

DepositCard depositCard = new DepositCard();

depositCard.amount = 10000;

CreditCard creditCard1 = new CreditCard(-2000,9);

CreditCard creditCard2 = new CreditCard(-3000, 13);

CreditCard creditCard3 = new CreditCard(-5000, 29);

depositCard.Display(); Console.WriteLine("");

List<CreditCard> Cards = new List<CreditCard>();

Cards.Add(creditCard1); Cards.Add(creditCard2); Cards.Add(creditCard3);

foreach (CreditCard card in Cards)

{

Console.WriteLine("信用卡开始执行委托还款。。。。。。");

请在此处添加自己的代码

Console.WriteLine("");

}

Console.ReadLine();

}

}

}

首先在CreditCradDelegate类中对委托和事件进行定义

public delegate void Call(int billamount,int repaymentday);//定义委托

public event Call notifycredit;//定义事件

public void Notify()

{

//当日日期与还款日期相等且信用卡欠款时我们才会进行还款

if(DateTime.Today.Day==repaymentday && billamount<0)

{

Console.WriteLine("还款成功!");

notifycredit(billamount,repaymentday);

}

else

{

Console.WriteLine("还款失败!");

}

}

主程序中测试代码

card.Display();//每次对信用卡还款前查询储蓄余额

CreditCardDelegate CreditDelegate = new CreditCardDelegate();//委托的对象

CreditDelegate.billamount=card.getbillamount();//通过CreditCard对象getbillamount公有成员函数将私有成员传给委托对象公有成员billamount

CreditDelegate.repaymentday=card.getrepaymentday();//通过CreditCard对象getrepaymentday公有成员函数将私有成员传给委托对象公有成员repaymentday

CreditDelegate.notifycredit += new CreditCardDelegate.Call(depositCard.Account);//订阅该事件 通过DepositCard对象委托来执行对储蓄卡的取款并对信用卡还款

CreditDelegate.Notify();

depositCard.Display();//每次对信用卡执行操作后显示储蓄卡余额

总结

1.本次实验将委托与事件应用到实际的事情中,我更加熟悉了类的调用以及委托事件的用法。

2.实验过程中我发现自己对于委托和事件之间调用的规则不是很理解,对于事件的触发机制、参数如何传递的也不熟悉,写代码的过程中遇到了很多困难,在以后的写代码过程中要加强自己将理论应用于实际事情中的能力。(借鉴Aftersupper及Wacke_Tiny)

题目:信用卡还款是银行系统的重要业务,业务流程说明如下:用户有信用卡和储蓄卡,储蓄卡有查询余额和取款功能,信用卡能够查看账单金额、查看还款日和查看余额三个功能;相关推荐

  1. 经典案例重点案例:点名表,JS正则验证全选、全不选、反选,点击可以实现三个功能,轮播图 字符串截取以及替换,图片切换

     重点案例: 点击开始点名,框内的名字转动 点击结束点名,框内的转动停止,并出现一个随机的学生姓名 <!DOCTYPE html> <html>     <head> ...

  2. bixby视觉服务器未响应,三星Bixby Vision增加三项功能:帮视觉障碍者读取文字、图像...

    原标题:三星Bixby Vision增加三项功能:帮视觉障碍者读取文字.图像 IT之家5月25日消息 今天,PhoneArena报道称,三星已经为Bixby Vision加入了三项新功能,分别是:Qu ...

  3. php 商城套餐搭配功能,速卖通商品搭配套餐功能已上线!设置速卖通搭配套餐仅需三步...

    据雨果网获悉,速卖通商品搭配套餐功能已于 10 月 19 日上线.商品搭配套餐的主要功能及作用,主要是帮助速卖通的卖家,通过自行选择商品,设置不同商品间搭配优惠促销价格,提高商品推广内容的丰富性及专业 ...

  4. 380免费云存储_三款功能强大的云盘软件,完全替代百度云与腾讯云

    众所周知! 百度云是百度旗下良心产品之一,有免费版,但是免费版限速太厉害,让很多免费用户都难以接受,其次就是腾讯云,腾讯云也是腾讯旗下的良心产品之一,但是两个产品都不是很完美,那么接下来分享几个可以替 ...

  5. STM32----通用定时器TIM2~TIM5的三种功能

    通用定时器TIM2~5 引脚定义 TIM2_CH1------PA0 TIM2_CH2------PA1 TIM2_CH3------PA2 TIM2_CH4------PA3 TIM3_CH1--- ...

  6. java存款输入密码类,创建一个银行账户类,包括账号、用户姓名、密码和余额属性,实现开户、查询余额、取款、存款功能。...

    用类与对象创建一个银行账户类.银行账户类包括账号.用户姓名.密码和余额属性,银行账户类的功能包括: 开户 查询余额 取款 存款 功能实现思路: 开户方法 Account(),创建账户的账号.密码.姓名 ...

  7. 鸿蒙系统能把游戏窗口化吗,家里装上华为智慧屏S系列,这三个功能,让我爱不释手!...

    现在很多科技新品一出来,网友就在吐槽要做减法,不是继续做加法.其实这一想法在智能电视领域也挺普遍的,在智慧屏没出来前,几乎大多数品牌都在执着一块屏的素养,亦或是芯片的迭代,功能技术越来越多,用户也越来 ...

  8. java计算机毕业设计信用卡增值业务系统小程序用户端源码+mysql数据库+lw文档+系统+调试部署

    java计算机毕业设计信用卡增值业务系统小程序用户端源码+mysql数据库+lw文档+系统+调试部署 java计算机毕业设计信用卡增值业务系统小程序用户端源码+mysql数据库+lw文档+系统+调试部 ...

  9. python 课程设计题目_数据分析师能力培养:业务与技术的完美结合

    课程名称:数据分析师能力培养:业务与技术的完美结合 课程须知: 本课程为<数据分析师八大能力培养>的免费课程,精品课程请前往: 课程特色: 从真实数据分析工作场景出发,训练实战能力 领导从 ...

最新文章

  1. extjs中滚动条属性_十分钟快速了解 JS 中的 offset、scroll、client
  2. XMLHelper.cs
  3. python实现简单的api接口-对Python实现简单的API接口实例讲解
  4. echarts X轴数据显示不全问题
  5. 【杂谈】从GitHub上星星最多的男人开始发GitHub综述资料
  6. HDU - 4686 Arc of Dream(矩阵快速幂,水题)
  7. Spring的任务调度@Scheduled注解——task:scheduler和task:executor的解析
  8. ios xcode文件前缀_IOS Xcode开发中 文件名的后缀名m,mm,cpp,h区别
  9. linux 设备挂载ppt,.linux 挂载各种设备.pdf
  10. 如何在 Mac 上的照片中创建幻灯片?
  11. excel甘特图模板_项目管理工具之甘特图使用流程
  12. 简易java电子词典_使用Android简单实现有道电子词典
  13. 计算机网络——计算机网络病毒和黑客
  14. uniapp 微信内置浏览器h5打开app
  15. C语言知识点思维导图
  16. html实现银行卡号输入,Vue中Element-ui 输入银行账号每四位加一个空格的实现代码_飛雲_前端开发者...
  17. 2022-2028全球与中国语音疏散系统市场现状及未来发展趋势
  18. android studio DDMS debug process 无法激活,小虫子灰色
  19. 陌陌发布新版 增加阅后即焚和短视频功能
  20. 防止恶意刷新页面的Java实现

热门文章

  1. JavaScript清空数组的3种方法
  2. 邮件地址的正则表达式
  3. 你还在为如何区分ASCII编码、GB2312编码、Unicod、UTF-8编码而烦恼吗,一篇文章让你柳暗花明...
  4. [AWT] BorderLayout
  5. 『杭电1681』Frobenius
  6. Safari浏览器自动化测试(Python脚本测试)
  7. 软件学习方法—PHTOSHOP
  8. 解决“ImportError: No module named win32con”“ImportError: No module named six”
  9. 使用纯H5开发手机app页面的一些经验
  10. openGauss数据库备库重启报错,有没有解决方案呢