0
点赞
收藏
分享

微信扫一扫

作业记录c#

朱悟能_9ad4 2022-04-01 阅读 54
c#

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

源代码:

using System;
namespace WindowsFormsApplication2
{
    class Depositcard   //储蓄卡
    {
        public string name;
        public int number;      //账户
        public int debt;        //还款
        public int balance;    //余额
        public int date;
        public Depositcard(string name, int number, int balance, int debt, int date)
        {
            this.name = name;
            this.number = number;
            this.debt = debt;
            this.balance = balance;
            this.date = date;
        }
    }
    class Delegate     //委托
    {
        public delegate void MeDelegate(Depositcard c2);
        public event MeDelegate Remind;
        public event MeDelegate Pay;
        public void remind(Depositcard c2)
        {
            if (Remind != null)
                Remind(c2);
        }
        public void pay(Depositcard c2)
        {
            if (Pay != null)
                Pay(c2);
        }
    }
    class Credit    //信用卡
    {
        static public void remind(Depositcard c2)
        {
            Console.WriteLine("用户{0}:未到还款日期,无需还款。\n", c2.name);
        }
        static public void payfor(Depositcard c2)
        {
            if (c2.debt > c2.balance)
                Console.WriteLine("用户{0}:账户为{1},需还款{2},余额不足,余额为{3}", c2.name, c2.number, c2.debt, c2.balance);
            else
                Console.WriteLine("用户{0}:账户为{1},需还款{2},余额为{3},还款后余{4}\n", c2.name, c2.number, c2.debt, c2.balance, c2.balance - c2.debt);
        }
    }
    class program
    {
        static void Main(string[] args)
        {
            Delegate d1 = new Delegate();
            Delegate d2 = new Delegate();
            Credit c1 = new Credit();
            Depositcard c2 = new Depositcard("a", 55555, 5000, 100, 2);
            Depositcard c3 = new Depositcard("b", 77777, 20000, 4000, 10);
            d1.Remind += new Delegate.MeDelegate(Credit.remind);
            d2.Pay += new Delegate.MeDelegate(Credit.payfor);
            for (int i = 1; i <= 30; i++)
            {
                if (c2.date - i == 1)
                    d1.remind(c2);
                if (c3.date - i == 1)
                    d2.remind(c3);

                if (i == c2.date)
                    d1.pay(c2);
                if (i == c3.date)
                    d2.pay(c3);
            }
        }

    }
}

结果:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbTBfNjM0MTU5NzE=,size_20,color_FFFFFF,t_70,g_se,x_16

 

举报

相关推荐

0 条评论