Windows 程序设计作业一

一、问题描述

信用卡还款是银行系统的重要业务,业务流程说明如下:

用户有信用卡和储蓄卡,储蓄卡有查询余额和取款功能,信用卡能够查看账单金额、查看还款日和查看余额三个功能;请使用委托与事件实现下列功能:用户可自由设置信用卡还款关联的储蓄卡,当还款日到期时进行账单金额的自动划扣;请注意事件主要是设计什么时候启动委托,委托的主要目的是设置还款的储蓄卡为避免设计出现偏差,给出了部分功能代码,请在此基础上进行开发。

二、代码

1.定义储蓄卡类
储蓄卡类包含两个初始参数,添加构造函数可进行初始赋值
定义方法CheckBalance,以还款日期以及储蓄卡余额与信用卡欠款的大小对比为标准,判断储蓄卡是否能够成功还款

class CashCard
    {
        int balance;
        CreditCard c;
        public CashCard() { }
        public CashCard(int balance, CreditCard c)
        {
            this.balance = balance;
            this.c = c;
        }       
        public void CheckBalance()
        {
            if (c.checkDate())
            {
                int balance0 = balance;
                balance = balance - c.getPayBalance();
                if (balance >= 0)
                {
                    Console.WriteLine("您的储蓄卡初始余额为{0},支付信用卡欠款{1},现余额为{2},还款成功",balance0,c.getPayBalance(),balance);
                }
                else
                {
                    Console.WriteLine("您的储蓄卡初始余额为{0},信用卡欠款为{1},余额不足,还款失败",balance0, c.getPayBalance());
                }
            }
            else if (!c.checkDate())
            {
                Console.WriteLine("未到还款日期,还款日期为{0},不需要还款\n", c.getPayDate());
            }
        }
    }
2.定义信用卡类3.定义事件与委托
信用卡类包含两个初始参数,添加构造函数可进行初始赋值,其中TodayDate通过键盘输入赋值
定义方法getPayDate与getPayBalance,作用是让其返回值能够在储蓄卡类中被调用
定义方法checkDate,用于判断是否到达还款日期,同样是会在储蓄卡类中被调用
class CreditCard
    {
        int PayDate = 30;
        int PayBalance;
        int TodayDate;
        public CreditCard() { }
        string Today = Console.ReadLine();
        
        public CreditCard(int PayBalance, int TodayDate)
        {
            this.PayBalance = PayBalance;
            this.TodayDate = int.Parse(Today);
        }
        public int getPayDate()
        {
            return PayDate;
        }
        public int getPayBalance()
        {
            return PayBalance;
        }
        public bool checkDate()
        {
            if (TodayDate == PayDate)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }

3.定义事件与委托

class Delegate
    {
        public delegate void MeDelegate();
        public event MeDelegate NotifyEventOne;
        public void Notify()
        {
            if (NotifyEventOne != null)
            {
                Console.WriteLine("触发事件:");
                NotifyEventOne();
            }
        }
    }

4.主函数执行
创建了cash1,cash2,cash3三张储蓄卡对象,默认还款日期为30号
程序将根据你输入的今日日期来确定是否需要还款
并能自行选择任意一张储蓄卡进行还款操作

class Program
    {       
        static void Main(string[] args)
        {
            Delegate objDelegate = new Delegate();
            Console.WriteLine("请输入今日日期:");
            CreditCard p = new CreditCard(6000, 30);
            CashCard cash1 = new CashCard(3000, p);
            CashCard cash2 = new CashCard(1000, p);
            CashCard cash3 = new CashCard(9000, p);
            Console.WriteLine("请选择你的储蓄卡:");
            string Card = Console.ReadLine();
            switch (Card)
            {
                case "cash1": objDelegate.NotifyEventOne += new Delegate.MeDelegate(cash1.CheckBalance); break;
                case "cash2": objDelegate.NotifyEventOne += new Delegate.MeDelegate(cash2.CheckBalance); break;
                case "cash3": objDelegate.NotifyEventOne += new Delegate.MeDelegate(cash3.CheckBalance); break;
            }
            objDelegate.Notify();
        }
    }
}
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值