题目:信用卡还款是银行系统的重要业务,业务流程说明如下:用户有信用卡和储蓄卡,储蓄卡有查询余额和取款功能,信用卡能够查看账单金额、查看还款日和查看余额三个功能;
请使用委托与事件实现下列功能:用户可自由设置信用卡还款关联的储蓄卡,当还款日到期时进行账单金额的自动划扣;请注意事件主要是设计什么时候启动委托,委托的主要目的是设置还款的储蓄卡为避免设计出现偏差,给出了部分功能代码,请在此基础上进行开发。
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)
题目:信用卡还款是银行系统的重要业务,业务流程说明如下:用户有信用卡和储蓄卡,储蓄卡有查询余额和取款功能,信用卡能够查看账单金额、查看还款日和查看余额三个功能;相关推荐
- 经典案例重点案例:点名表,JS正则验证全选、全不选、反选,点击可以实现三个功能,轮播图 字符串截取以及替换,图片切换
重点案例: 点击开始点名,框内的名字转动 点击结束点名,框内的转动停止,并出现一个随机的学生姓名 <!DOCTYPE html> <html> <head> ...
- bixby视觉服务器未响应,三星Bixby Vision增加三项功能:帮视觉障碍者读取文字、图像...
原标题:三星Bixby Vision增加三项功能:帮视觉障碍者读取文字.图像 IT之家5月25日消息 今天,PhoneArena报道称,三星已经为Bixby Vision加入了三项新功能,分别是:Qu ...
- php 商城套餐搭配功能,速卖通商品搭配套餐功能已上线!设置速卖通搭配套餐仅需三步...
据雨果网获悉,速卖通商品搭配套餐功能已于 10 月 19 日上线.商品搭配套餐的主要功能及作用,主要是帮助速卖通的卖家,通过自行选择商品,设置不同商品间搭配优惠促销价格,提高商品推广内容的丰富性及专业 ...
- 380免费云存储_三款功能强大的云盘软件,完全替代百度云与腾讯云
众所周知! 百度云是百度旗下良心产品之一,有免费版,但是免费版限速太厉害,让很多免费用户都难以接受,其次就是腾讯云,腾讯云也是腾讯旗下的良心产品之一,但是两个产品都不是很完美,那么接下来分享几个可以替 ...
- STM32----通用定时器TIM2~TIM5的三种功能
通用定时器TIM2~5 引脚定义 TIM2_CH1------PA0 TIM2_CH2------PA1 TIM2_CH3------PA2 TIM2_CH4------PA3 TIM3_CH1--- ...
- java存款输入密码类,创建一个银行账户类,包括账号、用户姓名、密码和余额属性,实现开户、查询余额、取款、存款功能。...
用类与对象创建一个银行账户类.银行账户类包括账号.用户姓名.密码和余额属性,银行账户类的功能包括: 开户 查询余额 取款 存款 功能实现思路: 开户方法 Account(),创建账户的账号.密码.姓名 ...
- 鸿蒙系统能把游戏窗口化吗,家里装上华为智慧屏S系列,这三个功能,让我爱不释手!...
现在很多科技新品一出来,网友就在吐槽要做减法,不是继续做加法.其实这一想法在智能电视领域也挺普遍的,在智慧屏没出来前,几乎大多数品牌都在执着一块屏的素养,亦或是芯片的迭代,功能技术越来越多,用户也越来 ...
- java计算机毕业设计信用卡增值业务系统小程序用户端源码+mysql数据库+lw文档+系统+调试部署
java计算机毕业设计信用卡增值业务系统小程序用户端源码+mysql数据库+lw文档+系统+调试部署 java计算机毕业设计信用卡增值业务系统小程序用户端源码+mysql数据库+lw文档+系统+调试部 ...
- python 课程设计题目_数据分析师能力培养:业务与技术的完美结合
课程名称:数据分析师能力培养:业务与技术的完美结合 课程须知: 本课程为<数据分析师八大能力培养>的免费课程,精品课程请前往: 课程特色: 从真实数据分析工作场景出发,训练实战能力 领导从 ...
最新文章
- extjs中滚动条属性_十分钟快速了解 JS 中的 offset、scroll、client
- XMLHelper.cs
- python实现简单的api接口-对Python实现简单的API接口实例讲解
- echarts X轴数据显示不全问题
- 【杂谈】从GitHub上星星最多的男人开始发GitHub综述资料
- HDU - 4686 Arc of Dream(矩阵快速幂,水题)
- Spring的任务调度@Scheduled注解——task:scheduler和task:executor的解析
- ios xcode文件前缀_IOS Xcode开发中 文件名的后缀名m,mm,cpp,h区别
- linux 设备挂载ppt,.linux 挂载各种设备.pdf
- 如何在 Mac 上的照片中创建幻灯片?
- excel甘特图模板_项目管理工具之甘特图使用流程
- 简易java电子词典_使用Android简单实现有道电子词典
- 计算机网络——计算机网络病毒和黑客
- uniapp 微信内置浏览器h5打开app
- C语言知识点思维导图
- html实现银行卡号输入,Vue中Element-ui 输入银行账号每四位加一个空格的实现代码_飛雲_前端开发者...
- 2022-2028全球与中国语音疏散系统市场现状及未来发展趋势
- android studio DDMS debug process 无法激活,小虫子灰色
- 陌陌发布新版 增加阅后即焚和短视频功能
- 防止恶意刷新页面的Java实现
热门文章
- JavaScript清空数组的3种方法
- 邮件地址的正则表达式
- 你还在为如何区分ASCII编码、GB2312编码、Unicod、UTF-8编码而烦恼吗,一篇文章让你柳暗花明...
- [AWT] BorderLayout
- 『杭电1681』Frobenius
- Safari浏览器自动化测试(Python脚本测试)
- 软件学习方法—PHTOSHOP
- 解决“ImportError: No module named win32con”“ImportError: No module named six”
- 使用纯H5开发手机app页面的一些经验
- openGauss数据库备库重启报错,有没有解决方案呢