第二次作业
任务要求: 请使用委托实现信用卡用户定时还款功能
代码如下:
using System;
namespace ConsoleApp1
{
class bank_card
{
private int deposit;
private int pay_money=0;
private int pay_time = 20210531;
private int now_time;
public void set_money(int money)
{
deposit = money;
}
public void set_pay(int money)
{
pay_money = money;
}
public void set_time(int time)
{
now_time = time;
}
public void Account_balance()
{
if ((deposit - pay_money) >= 0)
{
deposit -= pay_money;
Console.WriteLine("还款成功!");
Console.WriteLine("您的信用卡账户余额还有:{0}", deposit);
}
else
{
Console.WriteLine("您的信用卡余额不足,请及时充值!");
}
}
public void do_pay()
{
if (pay_time >= now_time)
{
Console.WriteLine("还款时间已到");
Account_balance();
}
else
{
Console.WriteLine("未到还款时间");
Console.WriteLine("账户余额:{0}", deposit);
}
}
}
class Delegate
{
// 定义委托
public delegate void MeDelegate();
// 定义事件
public event MeDelegate NotifyEveryOne;
public void Notify()
{
// 如果事件不为 null
if (NotifyEveryOne != null)
{
Console.WriteLine("触发事件:");
// 触发事件
NotifyEveryOne();
}
}
}
class Program
{
static void Main(string[] args)
{
// 委托的对象
Delegate objDelegate = new Delegate();
bank_card objbank_card = new bank_card();
//设置存款余额
objbank_card.set_money(5000);
//设置所还金额
objbank_card.set_pay(600);
//告知现在时间
objbank_card.set_time(20210312);
// 订阅该事件
objDelegate.NotifyEveryOne +=
new Delegate.MeDelegate(objbank_card.do_pay);
objDelegate.Notify();
}
}
}
运行截图
第一种存款余额大于还款余额
第二种存款余额小于还款余额
第三种是还款时间未到
作业总结
搞清楚信用卡还款所需要的几个步骤,首先要设置账户现有余额和定时还款的金额,然后在设置还款时间,在将现有时间与还款时间进行比较如果过了还款时间就进行还款的操作,如果还完款后余额为负数则还款失败,输出余额不足。上面这几个步骤都用不同的函数去完成,最后集中在一个函数里面进行委托执行。
原代码链接: gitee代码库.