C#基础第八天-作业答案-设计类-面向对象方式实现两个帐户之间转账

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


namespace ATM.Day02
{
    class Bank
    {

        public int index;

        public Account[] accounts = new Account[100];

        public Account account = new Account();

        public CreditAccount credit = new CreditAccount();


        /// <summary>
        /// 用户开户方法
        /// </summary>
        /// <param name="id">银行账户</param>
        /// <param name="passWord">密码</param>
        /// <param name="passWords">确认密码</param>
        /// <param name="name">姓名</param>
        /// <param name="userId">身份证号</param>
        /// <param name="email">邮箱</param>
        /// <param name="type">类型</param>
        /// <returns>Account实体类</returns>
        public Account Register(long id,string passWord,string passWords,string name, string userId,string email,string type)
        {
            account.Id = id;
            account.PassWord = passWord;
            account.Name = name;
            account.PersonId = userId;
            account.Email = email;
            account.Type = type;
        if (!account.PassWord.Equals(passWords))
            {
                Console.WriteLine("确认密码不匹配,请核对后重新填写。");
                return null;
            }
        if (accounts == null || accounts.Length == 0)
            {
                index = 0;
            }
            else
            {
                index = accounts.Length - 1;
            }
                accounts[index] = account;
        
                return account;
            }

         /// <summary>
         /// 登录方法
         /// </summary>
         /// <param name="id">银行卡号</param>
         /// <param name="passWord">取款密码</param>
        /// <returns>Account实体类</returns>
        public Account Login(long id, string passWord)
        {
            for (int i = 0; i < accounts.Length; i++)
            {
                if (id == accounts[i].Id)
                {
                    account.Id = accounts[i].Id;
                    account.PassWord = passWord;
                    account.Name = accounts[i].Name;
                    account.PersonId = accounts[i].PersonId;
                    account.Email = accounts[i].Email;
                    account.Type = accounts[i].Type;
                    return account;
                }
            }
            return null;
        }
        
        /// <summary>
        /// 存钱方法
        /// </summary>
        /// <param name="id">银行账户</param>
        /// <param name="money"></param>
        /// <returns>Account实体类</returns>
        public Account Deposit(long id,double money)
        {
            if (account.Id!=id)
            {
                Console.WriteLine("当前用户不存在,请核对后进行操作。");
                return null;
            }
            else if (money<=0)
            {
                Console.WriteLine("金额数据不正确,请核对后进行操作。");
                return null;
            }
               account.Balance += money;
            
            return account;
        }


        /// <summary>
        /// 取钱方法
        /// </summary>
        /// <param name="id">银行卡号</param>
        /// <param name="passWord">取款密码</param>
        /// <param name="money">金额</param>
        /// <returns>返回Account类型实体类</returns>
        public Account Withdraw(long id,string passWord,double money)
        {
            if (account.Id == id && passWord.Equals(account.PassWord) && account.Type.Equals("0"))
            {
                if (account.Balance < money )
                {
                    Console.WriteLine("当前账户余额不足!");
                    return null;
                }
                else if (account.Id == id && passWord.Equals(account.PassWord) && account.Type.Equals("1"))
                {
                    credit = (CreditAccount)account;
                  return credit.Withdraw(money);
                }

            }
            else
            {
                Console.WriteLine("当前账户:用户名或密码输入错误,请重新输入");
                return null;
            }
            return credit;
        }


        /// <summary>
        /// 设置信用额度
        /// </summary>
        /// <param name="id">银行卡号</param>
        /// <param name="passWord">银行密码</param>
        /// <param name="money"></param>
        /// <returns>返回Account类型实体类</returns>
        public Account UpdateCeiling(long id,string passWord,double money)
        {
            if (account.Type.Equals("1"))
            {
               credit.Ceiling = money;
                return credit;
            }
            return null;
        }


        /// <summary>
        /// 转账方法
        /// </summary>
        /// <param name="id">账户号码</param>
        /// <param name="passWord">密码</param>
        /// <param name="fromId">转入账号</param>
        /// <param name="money">金额</param>
        /// <returns>返回bool值</returns>
        public bool Transfer(long id, string passWord, long fromId, double money)
        {
            if (account.Id == id && passWord.Equals(account.PassWord))
            {
                for (int i = 0; i < accounts.Length; i++)
                {
                    if (fromId == accounts[i].Id)
                    {
                        if (accounts[i].Id > money)
                        {
                            accounts[i].Balance -= money;
                            return true;
                        }
                        else
                        {
                            Console.WriteLine("账号余额不足  不允许转账");
                            return false;
                        }
                    }
                }
            }
            return false;
        }

        public override string ToString()
        {
            string toString = string.Empty;
            return toString = "账号余额:" + account.Balance + "用户姓名:" + account.Name + "账户类型:" + account.Type;
        }
    }
}
public  class CreditAccount : Account
    {

        public CreditAccount()
        {
            
        }

        private double ceiling;

        public double Ceiling
        {
            set { this.ceiling = value; }
            get { return this.ceiling; }
        }


      public override Account Withdraw(double money)
      {
          if (this.Ceiling + this.Balance < money)
          {
              Console.WriteLine("当前账户信用额度不足!");
              return null;
          }
          if (this.Balance < money)
          {
              this.Ceiling = (this.Balance + this.Ceiling) - money;
              this.Balance = 0;
          }
          return this;
      }



    }

方法不一定最好,主要练习一下项目。

 

 本系列教程:

C#基础总结之八面向对象知识点总结-继承与多态-接口-http://www.cnblogs.com/spring_wang/p/6113531.html

C#基础总结之七面向对象知识点总结1http://www.cnblogs.com/spring_wang/p/6113526.html

C#基础总结之六 DataTable (临时表/数据源) 和Datatable 名片练习http://www.cnblogs.com/spring_wang/p/6113520.html

C#基础总结之五Dictionary<string, string[]>和while循环http://www.cnblogs.com/spring_wang/p/6113514.html

C#基础总结之四List-Hashtable-冒泡排序http://www.cnblogs.com/spring_wang/p/6113504.html

C#基础总结之三循环控制-for-数组-乘法表-arraylisthttp://www.cnblogs.com/spring_wang/p/6113496.html

C#基础总结之二循环控制-运算符http://www.cnblogs.com/spring_wang/p/6113484.html

C#基础总结之一变量常量-if嵌套语句-witch结构-类型转换http://www.cnblogs.com/spring_wang/p/6113476.html

C#基础课程之六(临时表)DataTable使用方法http://www.cnblogs.com/spring_wang/p/6113454.html

C#基础课程之五集合(HashTable,Dictionary)http://www.cnblogs.com/spring_wang/p/6113404.html

C#基础课程之四集合(ArrayList、List<泛型>)http://www.cnblogs.com/spring_wang/p/6113396.html

C#基础课程之三循环语句http://www.cnblogs.com/spring_wang/p/6113383.html

C#基础课程之二变量常量及流程控制http://www.cnblogs.com/spring_wang/p/6113372.html

C#基础课程之一注释和控制台、一些常识http://www.cnblogs.com/spring_wang/p/6113361.html

C#基础第九天-作业答案-储蓄账户(SavingAccount)和信用账户(CreditAccount) http://www.cnblogs.com/spring_wang/p/6113291.html

C#基础第九天-作业-储蓄账户(SavingAccount)和信用账户(CreditAccount) http://www.cnblogs.com/spring_wang/p/6113285.html

C#基础第八天-作业答案-设计类-面向对象方式实现两个帐户之间转账http://www.cnblogs.com/spring_wang/p/6113274.html

C#基础第八天-作业-设计类-面向对象方式实现两个帐户之间转账http://www.cnblogs.com/spring_wang/p/6113258.html

C#基础第七天-作业答案-利用面向对象的思想去实现名片-动态添加http://www.cnblogs.com/spring_wang/p/6113232.html

C#基础第七天-作业-利用面向对象的思想去实现名片-动态添加http://www.cnblogs.com/spring_wang/p/6113224.html

C#基础第六天-作业-利用面向对象的思想去实现名片http://www.cnblogs.com/spring_wang/p/6113028.html

C#基础第六天-作业答案-利用面向对象的思想去实现名片http://www.cnblogs.com/spring_wang/p/6113033.html

C#基础第五天-作业答案-用DataTable制作名片集http://www.cnblogs.com/spring_wang/p/6113022.html

C#基础第五天-作业-用DataTable制作名片集http://www.cnblogs.com/spring_wang/p/6113013.html

C#基础第四天-作业答案-Hashtable-list<KeyValuePair>泛型实现名片http://www.cnblogs.com/spring_wang/p/6113005.html

C#基础第四天-作业-Hashtable-list<KeyValuePair>泛型实现名片http://www.cnblogs.com/spring_wang/p/6113000.html

C#基础第三天-作业答案-集合-冒泡排序-模拟名片http://www.cnblogs.com/spring_wang/p/6112888.html

C#基础第三天-作业-集合-冒泡排序-模拟名片http://www.cnblogs.com/spring_wang/p/6112885.html

C#基础第二天-作业答案-九九乘法表-打印星星http://www.cnblogs.com/spring_wang/p/6112881.html

C#基础第二天-作业-九九乘法表-打印星星http://www.cnblogs.com/spring_wang/p/6112875.html

C#基础第一天-作业答案http://www.cnblogs.com/spring_wang/p/6112872.html

C#基础第一天-作业http://www.cnblogs.com/spring_wang/p/6112867.html

C#-string.Format对C#字符串格式化http://www.cnblogs.com/spring_wang/p/6077098.html

posted @ 2016-11-29 13:39  王春天  阅读(806)  评论(0编辑  收藏  举报
云推荐