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));
}
}
}