abstract class Card
        {
            public long CardNo { get; set; }            public float Query()
            {
                float count = 0;
                return count;
            }
            public abstract float Collect(float count);
        }        class LocalCard : Card
        {
            public override float Collect(float count)
            {
                return count;
            }            public bool Transfer(float count)
            {
                return true;
            }
        }        class OtherCard : Card
        {
            public override float Collect(float count)
            {
                count -= 2;
                return count;
            }
        }//泛型集合
            List<Card> list = new List<Card>(){ new LocalCard() { CardNo = 111 },
                                                new OtherCard() { CardNo = 222 }};

解决方案 »

  1.   

    using System;
    using System.Collections.Generic;namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                CardSelf cardSelf = new CardSelf() { CardNo = "本行", TotalMoney = 10000 };
                CardOther card1 = new CardOther() { CardNo = "他行1", TotalMoney = 5000 };
                CardOther card2 = new CardOther() { CardNo = "他行2", TotalMoney = 3000 };            cardSelf.Transfer(card1, 2500);
                card1.Withdraw(3000);
                card2.Deposit(1000);            List<CardBase> cards = new List<CardBase>() { cardSelf, card1, card2 };
                cards.ForEach(card => card.Show());
                Console.ReadLine();
            }        public abstract class CardBase
            {
                public void Show()
                {
                    Console.WriteLine(this.CardNo + "余额=" + TotalMoney);
                }
                public string CardNo { get; set; }
                public Decimal TotalMoney { get; set; }
                public abstract decimal Withdraw(Decimal amount);//取
                public abstract void Deposit(Decimal amount); //存
                protected abstract Decimal ChargePrice(Decimal amount);
            }        public class CardOther : CardBase //他行
            {
                public override decimal Withdraw(decimal amount)
                {
                    if (TotalMoney < amount + ChargePrice(amount)) throw new Exception("余额不足");
                    TotalMoney -= amount;
                    TotalMoney -= ChargePrice(amount);
                    return amount;
                }
                protected override decimal ChargePrice(decimal amount)
                {
                    return 2;
                }
                public override void Deposit(decimal amount)
                {
                    TotalMoney += amount;
                }
            }        public class CardSelf : CardOther //本行
            {
                protected override Decimal ChargePrice(decimal amount)
                {
                    return 0;
                }
                public void Transfer(CardBase card, decimal amount)
                {
                    card.TotalMoney += Withdraw(amount);
                }
            }
        }
    }
      

  2.   

    这个界面,可以这么设计:将插卡退卡一排相关的东西放到一个 panel 里面,然后放在底部,或者顶部,其他的一次整齐堆放,然后必要的是,先隐藏其他内容,等你插卡操作验证通过了,再展开其他的项进行操作。
    关于类设计:public class Account : ICashRecycling
    {
        // Properties
        AccountID, UserName, Password, Balance
        // Methods
        public virtual void Transfer(Account another);
        public virtual void Withdraw(decimal money);
        public virtual void Deposite(decimal money);
    }
    interface ICashRecycling
    {
        void Transfer(Account another);
        void Withdraw(decimal money);
        void Deposite(decimal money);
    }