使用委托实现信用卡用户定时还款功能


一、问题的分析

首先分析问题,使用委托实现信用卡用户定时还款功能。
对于信用卡还款,是用储蓄卡的钱还信用卡,所以可以定义两个类信用卡(Credit_Card)和储蓄卡(Deposit_card)类。依据现实情况,这两种类都有用户名(user)和存/欠款(money),则可以定义一个父类卡片类(Card)。
其次,定时还款,定时二字是针对于信用卡的计时或是核对时间的功能(这里实现的是核对时间是否到还款日期)。这样Deposit_card类中就需要一个time和核对时间的函数。之前说过如何还钱,而两个款项在两个类中,所以需要将两个卡匹配,这要才可以调用对应卡里面的数据。

二、代码的实现

1.类的定义

代码如下(示例):

    class Card {
        public string user;
        private int money;
        public int Money
        {
            get { return money; }
            set { money = value; }
        }
    }
    class Credit_Card:Card {
        private int time;
        Deposit_card card1;
        public Credit_Card(string u,int t, int m, Deposit_card c) {
            user = u; time = t;Money = m;card1 = c;
        }
        public int Time {
            get {return time; }
            set { time = value; }
            }
        public void paymoney() {
            Console.WriteLine("用户{0}:信用卡待还:{1},储蓄卡余额:{2}", user, Money, card1.Money);
            if (card1.Money < Money)
            {
                Money -= card1.Money;
                card1.Money = 0;
                Console.WriteLine("已到还款日期,您的储蓄卡余额不足,还完部分欠款后,信用卡待还:{0},储蓄卡余额:{1}", Money, card1.Money);
            }
            else
            {
                card1.Money -= Money;
                Money = 0;
                Console.WriteLine("已到还款日期,还完欠款后,信用卡待还:{0},储蓄卡余额:{1}", Money, card1.Money);
            }
        }
        public void notime() {
            Console.WriteLine("未到还款日期,储蓄卡余额:{0},信用卡待还:{1}", Money, card1.Money);
        }
        
    }
    class Deposit_card : Card { }

2.委托类

代码如下(示例):

class Paydelegate {
        public delegate void paydelegate();
        public event paydelegate payevent;
        public void Notify()
        {
            if (payevent != null)
            {
                
                payevent();
            }
        }

3.主程序的调用测试

static void Main(string[] args)
        {
            int paytime = 8;//这里将还款日期定为每月8号
            Deposit_card D1 = new Deposit_card();
            D1.Money = 1000;
            Credit_Card C1 = new Credit_Card("张三",8,3000,D1);
            Paydelegate pay = new Paydelegate();
            if (paytime == C1.Time) {
                pay.payevent += new Paydelegate.paydelegate(C1.paymoney);
            }
            else
                pay.payevent += new Paydelegate.paydelegate(C1.notime);
            pay.Notify();
        }

这里可以简单的修改一些主程序中的值来观察不同情况的输出
到还款日期但储蓄卡的钱不够
要还款日期但储蓄卡的钱不够
到还款日期
在这里插入图片描述
未还款日期
在这里插入图片描述


总结

在解决这一次问题的过程中,对于问题方方面面的把控能力,比如对于类的创建,各种方法的选择等都得到了锻炼。尤其是对于事件和委托的运用,每一个事件可以注册多个方法,执行的时候会按照注册时的顺序执行。我这里还有需要改进的地方,比如说可以写一个计时的函数来同时处理一组用户,模拟一段时间内大家还信用卡的情形。
下附上代码仓库地址:
https://gitee.com/zhuizhuihome/windows-code/blob/master/Program.cs

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值