c#委托与事件实例操作

程序设计题:请使用委托实现信用卡用户定时还款功能
本题的应用场景解释:用户有一张信用卡,信用卡有一个总额度;每个月会有信用卡账单显示月消费总额,月消费总额是小于信用卡总额度的;用户有若干储蓄卡,可选择某张储蓄卡进行还款;还款是指从储蓄卡中划走信用卡的月消费总额到信用卡;如果储蓄卡余额不足则还款动作不成功。
要求如下:①必须使用委托②事件的触发方式是每个月的到期还款日;
1.定义委托与事件
class Delegate { public delegate void Cash(int id);//int id为用户的id,后面用1,2,3来代替 public event Cash User; public void notice() { string a = DateTime.Now.ToString("yyyy-MM-dd");//获取当天的日期 string b = a.Substring(8);//获取第几日 if (b == "30" && User != null)//将每个月的30日设定为还款日,即事件触发的条件 { User(1); } } }
2.换款类和显示消费额类
public class ID //ID类,显示用户的消费总额度,以及消费的金额 { private double quota=0; private double spend=0; public void Id(int id) { if (id == 1) //设置了三个id,对应三个不同的用户 { quota = 3000.00; spend = 2990.00; } else if (id == 2) { quota = 5000.00; spend = 3990.00; } else if (id == 3) { quota = 4000.00; spend = 2990.00; } Console.WriteLine("您的信用卡总额度为:{0}", quota); Console.WriteLine("您本月消费总额:{0}", spend); } }

public class Repay //repay扣款类,自动扣款,默认卡1,余额不足则发出提醒
{
private double quota = 0;
private double card1 = 0;
private double card2 = 0;
private double card3 = 0;
public void Pay(int id)
{
if (id == 1)
{
quota = 3000.00;
card1 = 3000;
card2 = 4000;
card3 = 5000;
}
else if (id == 2)
{
quota = 5000.00;
card1 = 2000;
card2 = 6000;
card3 = 10000;
}
else if (id == 3)
{
quota = 4000.00;
card1 = 3000;
card2 = 2000;
}
if (car1 >= quota || car2 >= quota || car3 >= quota)//默认card1为优先还款卡
{
if (card1 >= quota) car1 -= quota;
else if (card1 < quota && card2 >= quota) card2 -= quota;
else if (card1 < quota && card2 < quota) card3 -= quota;
Console.WriteLine("成功自动为您扣款");
}
else
{
Console.WriteLine("您的余额不足,请尽快还款");
}
}
}`

3.主函数
`class program
{

    static void Main(string[] args)
    {
        Delegate obj = new Delegate();//创建对象
        ID id1 = new ID();
        Repay pay1 = new Repay();
        obj.User += new Delegate.Cash(id1.Id);//订阅事件
        obj.User += new Delegate.Cash(pay1.Pay);//订阅事件
        obj.notice();
        Console.ReadLine();
    }
}`
点击查看代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    class Delegate
    {
        public delegate void Cash(int id);
        public event Cash User;
        public void notice()
        {
            string a = DateTime.Now.ToString("yyyy-MM-dd");
            string b = a.Substring(8);
            if (b == "30" && User != null)
            {
                User(1);
            }
        }
    }
    public class ID
    {
        private double quota=0;
        private double spend=0;
        public void Id(int id)
        {
            if (id == 1)
            {
                quota = 3000.00;
                spend = 2990.00;
            }
            else if (id == 2)
            {
                quota = 5000.00;
                spend = 3990.00;
            }
            else if (id == 3)
            {
                quota = 4000.00;
                spend = 2990.00;
            }
            Console.WriteLine("您的信用卡总额度为:{0}", quota);
            Console.WriteLine("您本月消费总额:{0}", spend);
        }
    }
    public class Repay
    {
        private double quota = 0;
        private double car1 = 0;
        private double car2 = 0;
        private double car3 = 0;
        public void Pay(int id)
        {
            if (id == 1)
            {
                quota = 3000.00;
                car1 = 3000;
                car2 = 4000;
                car3 = 5000;
            }
            else if (id == 2)
            {
                quota = 5000.00;
                car1 = 2000;
                car2 = 6000;
                car3 = 10000;
            }
            else if (id == 3)
            {
                quota = 4000.00;
                car1 = 3000;
                car2 = 2000;
            }
            if (car1 >= quota || car2 >= quota || car3 >= quota)
            {
                if (car1 >= quota) car1 -= quota;
                else if (car1 < quota && car2 >= quota) car2 -= quota;
                else if (car1 < quota && car2 < quota) car3 -= quota;
                Console.WriteLine("成功自动为您扣款");
            }
            else
            {
                Console.WriteLine("您的余额不足,请尽快还款");
            }
        }
    }
    class program
    {
        
        static void Main(string[] args)
        {
            Delegate obj = new Delegate();
            ID id1 = new ID();
            Repay pay1 = new Repay();
            obj.User += new Delegate.Cash(id1.Id);
            obj.User += new Delegate.Cash(pay1.Pay);
            obj.notice();
            Console.ReadLine();
        }
    }
}

仓库地址 https://gitee.com/zhang-wei-sen/mytest/blob/master/shiyancangku/shiyancangku/Program.cs

posted @ 2022-03-31 15:22  .21  阅读(118)  评论(0)    收藏  举报