11.25每日总结

[实验任务一]:银行账户

Java代码模拟实现课堂上的银行账户的实例,要求编写客户端测试代码模拟用户存款和取款,注意账户对象状态和行为的变化。

实验要求:

1. 提交源代码;

2. 注意编程规范。

package s2;
public class Account {
   private AccountState state;
   private String owner;
   public Account(String a, double b) {
       owner = a;
       state = new Yellowstate(this, b);
       state.stateCheck();
   }
   public void setsta(AccountState a) {
       state = a;
   }
   public void deposit(double a) {
       System.out.println(owner + "存" + a + "元");
       state.deposit(a);
       state.stateCheck();
       System.out.println();
   }
   public void withdraw(double a) {
       System.out.println(owner + "取" + a + "元");
       state.withdraw(a);
       state.stateCheck();
       System.out.println();
   }
}

package s22;

public abstract class AccountState {


   protected Account acc;


   protected double balance;


   public AccountState(Account a, double b) {


       super();


       acc = a;


       balance = b;


   }


   public abstract void stateCheck();


   public void deposit(double amount) {


       balance += amount;


       System.out.println("存款成功");


       System.out.println("余额为" + balance + "元");


   }


   public void withdraw(double amount) {


       if ((balance - amount) > -1000) {


           System.out.println("取钱成功!");


           balance -= amount;


           System.out.println("当前余额:" + balance + "元");


       } else {


           System.out.println("余额不足!");


           System.out.println("当前余额:" + balance + "元");


       }


   }


}

package shiyan22;


public class Client {


   public static void main(String args[]){


       Account acc=new Account("账户20194021",200);


       acc.deposit(3000);


       acc.withdraw(1000);


       acc.withdraw(3500);


   }


}

package shiyan22;
public class Greenstate extends AccountState {
   public Greenstate(Account a, double b)
       super(a, b);
   }


   public void stateCheck() {


       if (balance < -1000) {


           acc.setsta(new Redstate(acc, balance));


       } else if (balance >= -1000 && balance < 0) {


           acc.setsta(new Yellowstate(acc, balance));


       }


   }


}

package shiyan22;



public class Redstate extends AccountState {





   public Redstate(Account acc, double balance) {


       super(acc, balance);


   }





   public void stateCheck() {


       if(balance >= -1000 && balance < 0){


           acc.setsta(new Yellowstate(acc, balance));


       }else if(balance >= 0){


           acc.setsta(new Greenstate(acc,balance));


       }


   }


   public void withdraw(double amount) {


       System.out.println("余额不足!");


       System.out.println("当前余额:"+balance);


   }


}

package shiyan22;





public class Yellowstate extends AccountState {





   public Yellowstate(Account acc, double balance) {


       super(acc, balance);


   }





   public void stateCheck() {


       if(balance >=0 ){


           acc.setsta(new Greenstate(acc,balance));


       }else if(balance < -1000){


           acc.setsta(new Redstate(acc,balance));


       }


   }


}

posted @   ME社长  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示