Windows第一次博客作业:委托实现信用卡用户定时还款

一、题目描述

用户有一张信用卡,信用卡有一个总额度;每个月会有信用卡账单显示月消费总额,月消费总额是小于信用卡总额度的;用户有若干储蓄卡,可选择某张储蓄卡进行还款;还款是指从储蓄卡中划走信用卡的月消费总额到信用卡;如果储蓄卡余额不足则还款动作不成功。
要求如下:①必须使用委托②事件的触发方式是每个月的到期还款日

二、代码

1.定义一个信用卡类

初始化还款人的基本信息:姓名、还款金额、还款时间

class CREposit
    {
        //定义还款人信息
        private string name;private double debet;private string paytime;
        public CREposit(string nam, double d, string p)
        {
            name = nam;debet = d;paytime = p;
        }
        public string get_name()
        { return name; }
        public double get_debet()
        { return debet; }
        public string get_paytime()
        { return paytime; }
    }

 2.定义多个储蓄卡类(这里以三张储蓄卡为例)

卡类都存有一定的金额,若金额足够可以显示扣款后的余额、还款金额、还款时间;若金额不够,则扣款失败

class DEposit1
    {
        private double account;//设置储蓄卡余额
        public void paydebet(CREposit d)
        {
            account = 5000;
            double de = d.get_debet();//获取信用卡还款数
            double re = account - de;//设置与还款数
            if (re>= 0)
                Console.WriteLine("{0},储蓄卡1余额{1}元,本次还款{2}元,现余额{3}元,还款时间{4}", d.get_name(), account, de, re, d.get_paytime());
            else
                Console.WriteLine("储蓄卡1余额不足,请更换储蓄卡!");
        }
    }
//以下两类同上

class DEposit2
    {
        private double account;
        public void paydebet(CREposit d)
        {
            account = 10000;
            double de = d.get_debet();
            double re = account - de;
            if ( re>= 0)
                Console.WriteLine("{0},储蓄卡2余额{1}元,本次还款{2}元,现余额{3}元,还款时间{4}", d.get_name(), account, de,re, d.get_paytime());
            else
                Console.WriteLine("储蓄卡2余额不足,请更换储蓄卡!");
        }
    }

class DEposit3
    {
        private double account;
        public void paydebet(CREposit d)
        {
            account = 1000;
            double de = d.get_debet();
            double re = account - de;
            if (re >= 0)
                Console.WriteLine("{0},储蓄卡3余额{1}元,本次还款{3}元,现余额{4}元,还款时间{5}", d.get_name(), account, de,re, d.get_paytime());
            else
                Console.WriteLine("储蓄卡3余额不足,请更换储蓄卡!");
        }
    }

3.定义一个委托

只有当到达还款日期当天才能执行扣款功能,否则无法触发扣款事件。

class Delegate
    {
        //定义委托
        public delegate void MeDelegate(CREposit d);
        //定义事件
        public event MeDelegate SubMoney;

        public void Sub(CREposit d)
        {
            //如果事件不为空
            if (SubMoney != null)
            {
                Console.WriteLine("进入还款流程");
                SubMoney(d);
            }
            else
            {
                Console.WriteLine("还款日期为{0}", d.get_paytime());
                Console.WriteLine("今天是{0},未到还款时间", DateTime.Now.ToString("yyyy/MM/dd"));
            }
        }
    }

4.主函数执行

可以在主函数中更改还款人、还款金额、还款日期以及选择那一张储蓄卡来还款。

static void Main(string[] args)
        {
            Delegate m1 = new Delegate();
            CREposit d1 = new CREposit("lisa", 6000, "2022/04/01");
            DEposit1 c1 = new DEposit1();
            DEposit2 c2 = new DEposit2();
            DEposit3 c3 = new DEposit3();
            //string Nowday = Console.ReadLine();
            if (d1.get_paytime() == DateTime.Now.ToString("yyyy/MM/dd"))
            {
                Console.WriteLine("请输入你选择的储蓄卡:");
                string Card = Console.ReadLine();
                switch (Card)
                {
                    case "DEposit1": m1.SubMoney += c1.paydebet; break;
                    case "DEposit2": m1.SubMoney += c2.paydebet; break;
                    case "DEposit3": m1.SubMoney += c3.paydebet; break;
                }
            }
            m1.Sub(d1);
        }

三、结果测试

情况一:没有到达还款日期

情况二:所选择的储蓄卡余额不足无法还款

情况三:成功还款!

四、gitee地址

windows委托实现信用卡自动扣款: windows作业

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值