使用委托完成要求,代码如下
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Threading;
namespace csharp_课后作业
{
public class CreditCard //信用卡类,设信用卡总额度为20000元
{
private int paydate = 1; //还款日期为每月的第一天
private int payamount; //月还款额度
private int todaydate;
private CashCard obj1;
public CreditCard(int payamount, int todaydate, CashCard obj1)
{
this.payamount = payamount;
this.todaydate = todaydate;
this.obj1 = obj1;
}
public int date1()
{
return todaydate;
}
public bool JudgeDate()
{
if (todaydate == paydate)
{
Console.WriteLine("还款日期已到,请迅速还款!");
return true;
}
else
{
int a = todaydate - paydate;
Console.WriteLine("离还款日期还有{0}日", a);
return false;
}
}
public void payback(CreditCard obj) //还款操作
{
if (payamount > 20000) //信用卡额度为20000元,若月额度超出则是卡已刷爆了
{
Console.WriteLine("余额不足,还款失败,您的信用已降低");
}
else if (payamount < 0)
{
Console.WriteLine("您的信用卡还款额度存在异常");
}
else
{
if (todaydate == paydate)
{
if (obj1.Getmoney() >= payamount)
{
int nowbalance = obj1.Getmoney() - payamount;
Console.WriteLine("还款成功,您的余额为:{0}", nowbalance);
}
else
{
int nowbalance = payamount - obj1.Getmoney();
Console.WriteLine("还款失败,您的余额为不足,还需充值{0}元", nowbalance);
}
}
else
{
Console.WriteLine("还款日期未到!您的余额为{0}", obj1.Getmoney());
}
}
}
}
public class CashCard //储蓄卡类
{
private int balance; //储蓄卡的余额
public CashCard(int balance)
{
this.balance = balance;
}
public int Getmoney()
{
return this.balance;
}
}
public class Delegate //委托类
{
public delegate void pay(CreditCard obj);
public event pay date;
public void Notify(CreditCard obj)
{
if (obj.date1() == 1)
{
Console.WriteLine("触发事件:");
date(obj);
}
}
}
class Test
{
static void Main(string[] args)
{
Delegate objDelegate = new Delegate();
CashCard b1 = new CashCard(8000);
CashCard b2 = new CashCard(12000);
CashCard b3 = new CashCard(15000);
CashCard b4 = new CashCard(18000);
CreditCard a1 = new CreditCard(2000, 2, b1);
CreditCard a2 = new CreditCard(10000, 1, b2);
CreditCard a3 = new CreditCard(30000, 1, b3);
CreditCard a4 = new CreditCard(18000, 1, b4);
objDelegate.date += a1.payback;
objDelegate.Notify(a1);
objDelegate.date += a2.payback;
objDelegate.Notify(a2);
objDelegate.date += a3.payback;
objDelegate.Notify(a3);
objDelegate.date += a4.payback;
objDelegate.Notify(a4);
}
}
}
https://gitee.com/fragrance-floating-rio/csharp-code-warehouse.git
gitee仓库地址如上