【无标题】

1、程序设计题:请使用委托实现信用卡用户定时还款功能

本题的应用场景解释:用户有一张信用卡,信用卡有一个总额度;每个月会有信用卡账单显示月消费总额,月消费总额是小于信用卡总额度的;用户有若干储蓄卡,可选择某张储蓄卡进行还款;还款是指从储蓄卡中划走信用卡的月消费总额到信用卡;如果储蓄卡余额不足则还款动作不成功。

要求如下:①必须使用委托②事件的触发方式是每个月的到期还款日;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace cshiyaner_3_
{
    internal class Class1
    {
    }
    class ClassA
    {
        public int money1;
        public ClassA(int money)
        {
            this.money1 = money;
        }

        public void DispMethod()
        {
            Console.WriteLine("信用卡A 已接到 还款期限临近 事件的通知!本月需还金额:" + money1);
        }
    }
    // 第二个类
    class ClassB
    {
        public int money2;
        public ClassB(int money)
        {
            this.money2 = money;
        }
        public void DispMethod()//int moneya)
        {
            //money2 += moneya;
            Console.WriteLine("储蓄卡B 已接到 还款期限临近 事件的通知! 还款后余额为:");
        }
    }

    class ClassC
    {
        public int money3;
        public ClassC(int money)
        {
            this.money3 = money;
        }
        public void DispMethod()//int moneyb)
        {
            //money3 += moneyb;
            Console.WriteLine("储蓄卡C 已接到 还款期限临近 事件的通知! 还款后余额为:");
        }
    }

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

        public void Notify()
        {
            // 如果事件不为 null
            if (NotifyEveryOne != null)
            {
                Console.WriteLine("触发事件:还款日");
                // 触发事件
                NotifyEveryOne();
            }
        }
    }
    class TestEvents
    {
        [STAThread]
        static void Main(string[] args)
        {
            // 委托的对象
            Delegate objDelegate = new Delegate();
            // ClassA 的对象
            ClassA objClassA = new ClassA(1000);
            // ClassB 的对象
            ClassB objClassB = new ClassB(500);
            // ClassC 的对象
            ClassC objClassC = new ClassC(1500);
            // 订阅该事件
            objDelegate.NotifyEveryOne +=
               new Delegate.MeDelegate(objClassA.DispMethod);
            if (objClassB.money2 >= objClassA.money1)
            {
                objDelegate.NotifyEveryOne +=
                  new Delegate.MeDelegate(objClassB.DispMethod);
                objClassB.money2 -= objClassA.money1;
                Console.WriteLine(objClassB.money2);
            }
            else if (objClassC.money3 >= objClassA.money1)
            {
                objDelegate.NotifyEveryOne += new Delegate.MeDelegate(objClassC.DispMethod);
                objClassC.money3 -= objClassA.money1;
                Console.WriteLine("还款后余额为:" + objClassC.money3);
            }
            else
            {
                Console.WriteLine("每张卡余额均不足,还款失败。");
            }


            objDelegate.Notify();
        }
    }
}

git地址:cainiaocaigitee/homework - 码云 - 开源中国

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值