功能说明
//信用卡能够查看账单金额、查看还款日和查看余额三个功能
//储蓄卡有查询余额和取款功能
//设置信用卡还款关联的储蓄卡,当还款日到期时进行账单金额的自动划扣;
//用户可自由设置信用卡还款关联的储蓄卡,当还款日到期时进行账单金额的自动划扣;
设计流程
需要自定义四个类
分别实现储蓄卡,信用卡,和委托三个功能
主程序需要判断是否到还款日期,是则调用委托完成储蓄卡自动还款
反之则提示未到还款日期。
核心代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication3delegate
{
class DepositCard//储蓄卡
{
public int amount;
//函数Display:显示储蓄卡余额
public void Display()
{
Console.WriteLine("储蓄卡余额为:{0}", amount);
}
//函数Account:还款日取款 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;//定义委托
public delegate void delegatepay(int billamount, int repaymentday);
public event delegatepay eventpay;//定义事件
public void payday()
{
if (DateTime.Today.Day == repaymentday)
{
eventpay(billamount, repaymentday);
Console.WriteLine("还款成功");
}
else Console.WriteLine("未到还款日");
}
}//主程序
class Program
{
static void Main(string[] args)
{
DepositCard depositCard = new DepositCard();
depositCard.amount = 10000;
//信用卡的三个实体化对象
CreditCard creditCard1 = new CreditCard(-2000, 6);
CreditCard creditCard2 = new CreditCard(-3000, 10);
CreditCard creditCard3 = new CreditCard(-5000, 23);
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("信用卡开始执行委托还款。。。。。。");
CreditCardDelegate delegate1 = new CreditCardDelegate();
delegate1.billamount = card.getbillamount();
delegate1.repaymentday = card.getrepaymentday();
delegate1.eventpay += new CreditCardDelegate.delegatepay(depositCard.Account);
delegate1.payday();
depositCard.Display();
Console.WriteLine("");
}
Console.ReadLine();
}
}
}
总结
事件发生前需要创建委托
源码开源地址
或者
https://gitee.com/littleFu/windows-programming-job/commit/9e63c31b4a7a07d54aa67dda3a93e5438b7b7848