关于银行项目的练习——对Account/Bank的一些小改动

时间:2022-01-11 18:08:42
1由于考虑到在所有的deposit/withdraw方法的继承中,所有的deposit都是相同的,但是withdraw不同,所以把withdraw方法作为一个抽象方法,让其后继承它的具体实现类中的方法来实现,以减少代码量
2在Bank类中,做成一个单例模式,对于在Accout类中使id自动生成时,需要创建一个getnextid的方法,并且在类的全局变量里面仍然需要id这个变量,只是需要在加上一个返回sid这个变量 作为getnextid的返回值;深刻理解到在抽象类中不一定有抽象方法,但是含有抽象方法的类一定是抽象类;单例模式就是把创建类对象的过程静态化,使其通过一个静态的方法来创建类对象,同时把无参构造方法的修饰符的权限改为private,使其不会被别的途径所创建
关于银行项目的练习——对Account/Bank的一些小改动package  Business;
关于银行项目的练习——对Account/Bank的一些小改动
关于银行项目的练习——对Account/Bank的一些小改动
import  Account.Account;
关于银行项目的练习——对Account/Bank的一些小改动
import  Account.CreditAccount;
关于银行项目的练习——对Account/Bank的一些小改动
import  Account.SavingAccount;
关于银行项目的练习——对Account/Bank的一些小改动
关于银行项目的练习——对Account/Bank的一些小改动
关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动
public   class  Bank  ... {
关于银行项目的练习——对Account/Bank的一些小改动    
private static Bank bank=null;
关于银行项目的练习——对Account/Bank的一些小改动    
private Account[] as =new Account[100];
关于银行项目的练习——对Account/Bank的一些小改动    
private int size;
关于银行项目的练习——对Account/Bank的一些小改动    
关于银行项目的练习——对Account/Bank的一些小改动    
//作为单例模式需要一个方法来构造一个Bank类型的对象
关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动
    public static Bank newInstance()...{
关于银行项目的练习——对Account/Bank的一些小改动        
if(bank==null) bank=new Bank();
关于银行项目的练习——对Account/Bank的一些小改动        
return bank;
关于银行项目的练习——对Account/Bank的一些小改动    }

关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动    
private Bank()...{}//为了能够使构造出来的Bank类型对象一样,所以把Bank的无参构造函数私有化,防止构造出其它Bank类型对象
关于银行项目的练习——对Account/Bank的一些小改动
关于银行项目的练习——对Account/Bank的一些小改动    
//用户注册
关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动
    public Account Register(String pass1,String pass2,String name,String personId,String email,int type)...{
关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动        
if(!(pass1.equals(pass2)))...{
关于银行项目的练习——对Account/Bank的一些小改动            System.out.print(
"你输入的密码错误");
关于银行项目的练习——对Account/Bank的一些小改动            
return null;
关于银行项目的练习——对Account/Bank的一些小改动        }

关于银行项目的练习——对Account/Bank的一些小改动            Account c
=null;
关于银行项目的练习——对Account/Bank的一些小改动        
if(type==0)  c=new SavingAccount(pass1,  name,  personId,  email);
关于银行项目的练习——对Account/Bank的一些小改动        
else if(type==1) c=new CreditAccount(pass1,name,personId,email);
关于银行项目的练习——对Account/Bank的一些小改动        
else return null;
关于银行项目的练习——对Account/Bank的一些小改动        
//判断数组是否已经满了
关于银行项目的练习——对Account/Bank的一些小改动
        if (size==as.length) expand();
关于银行项目的练习——对Account/Bank的一些小改动        as[size]
=c;
关于银行项目的练习——对Account/Bank的一些小改动        size
++;
关于银行项目的练习——对Account/Bank的一些小改动        
关于银行项目的练习——对Account/Bank的一些小改动        
return c;
关于银行项目的练习——对Account/Bank的一些小改动    }

关于银行项目的练习——对Account/Bank的一些小改动
//增大数组容量的方法
关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动
    private void expand() ...{
关于银行项目的练习——对Account/Bank的一些小改动        Account[] a
=new Account[as.length*2];
关于银行项目的练习——对Account/Bank的一些小改动        System.arraycopy(as,
0,a,0,as.length);
关于银行项目的练习——对Account/Bank的一些小改动        as
=a;
关于银行项目的练习——对Account/Bank的一些小改动    }

关于银行项目的练习——对Account/Bank的一些小改动
//用户登陆
关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动
    public Account Login(long id,String pass1)...{
关于银行项目的练习——对Account/Bank的一些小改动        Account c 
=getAccountById(id);
关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动        
if(c==null)...{
关于银行项目的练习——对Account/Bank的一些小改动            System.out.print(
"此账户不存在");
关于银行项目的练习——对Account/Bank的一些小改动            
return null;
关于银行项目的练习——对Account/Bank的一些小改动        }

关于银行项目的练习——对Account/Bank的一些小改动        
else if(!(pass1.equals(pass1)))
关于银行项目的练习——对Account/Bank的一些小改动            
return null;
关于银行项目的练习——对Account/Bank的一些小改动        
else System.out.println("欢迎您"+c.getName());    
关于银行项目的练习——对Account/Bank的一些小改动        
return c;
关于银行项目的练习——对Account/Bank的一些小改动    }

关于银行项目的练习——对Account/Bank的一些小改动
//通过id得到Account账户
关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动
    private Account getAccountById(long id) ...{
关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动        
for(int i=0;i<size;i++)...{
关于银行项目的练习——对Account/Bank的一些小改动            
if(as[i].getId()==id) return as[i];
关于银行项目的练习——对Account/Bank的一些小改动        }

关于银行项目的练习——对Account/Bank的一些小改动        
return null;
关于银行项目的练习——对Account/Bank的一些小改动    }

关于银行项目的练习——对Account/Bank的一些小改动    
关于银行项目的练习——对Account/Bank的一些小改动
//设置信用额度
关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动
    private Account setCeiling(long id,double ceiling)...{
关于银行项目的练习——对Account/Bank的一些小改动        Account c
=getAccountById(id);
关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动        
if(c instanceof CreditAccount)...{
关于银行项目的练习——对Account/Bank的一些小改动            CreditAccount ca
=(CreditAccount)c;
关于银行项目的练习——对Account/Bank的一些小改动            ca.setCeiling(ceiling);
关于银行项目的练习——对Account/Bank的一些小改动        }

关于银行项目的练习——对Account/Bank的一些小改动        
return c;
关于银行项目的练习——对Account/Bank的一些小改动    }

关于银行项目的练习——对Account/Bank的一些小改动    
关于银行项目的练习——对Account/Bank的一些小改动    
//存款方法
关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动
    public Account depoist(long id,double money)...{
关于银行项目的练习——对Account/Bank的一些小改动        Account c
=this.getAccountById(id);
关于银行项目的练习——对Account/Bank的一些小改动        c.deposit(money);
关于银行项目的练习——对Account/Bank的一些小改动    
return c;
关于银行项目的练习——对Account/Bank的一些小改动}

关于银行项目的练习——对Account/Bank的一些小改动
//取款方法
关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动
    public Account withdraw(long id,double money)...{
关于银行项目的练习——对Account/Bank的一些小改动        Account c
=this.getAccountById(id);
关于银行项目的练习——对Account/Bank的一些小改动        c.withdraw(money);
关于银行项目的练习——对Account/Bank的一些小改动        
return c;
关于银行项目的练习——对Account/Bank的一些小改动    }

关于银行项目的练习——对Account/Bank的一些小改动
关于银行项目的练习——对Account/Bank的一些小改动
关于银行项目的练习——对Account/Bank的一些小改动
//统计所有账户余额总和
关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动
public double getAllBalance()...{
关于银行项目的练习——对Account/Bank的一些小改动    
double d=0;
关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动    
for(int i=0;i<size;i++)...{
关于银行项目的练习——对Account/Bank的一些小改动        d
=d+as[i].getBalance();
关于银行项目的练习——对Account/Bank的一些小改动    }

关于银行项目的练习——对Account/Bank的一些小改动    
return d;
关于银行项目的练习——对Account/Bank的一些小改动}

关于银行项目的练习——对Account/Bank的一些小改动
//统计所有信用账户透支额度总数
关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动
public double getAllCeilingBalance()...{
关于银行项目的练习——对Account/Bank的一些小改动    
double d=0;
关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动    
for(int i=0;i<size;i++)...{
关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动        
if(as[i] instanceof CreditAccount)...{
关于银行项目的练习——对Account/Bank的一些小改动            CreditAccount ca
=(CreditAccount)as[i];
关于银行项目的练习——对Account/Bank的一些小改动        d
=d+ca.getBalance();
关于银行项目的练习——对Account/Bank的一些小改动            }

关于银行项目的练习——对Account/Bank的一些小改动        }

关于银行项目的练习——对Account/Bank的一些小改动    
return d;
关于银行项目的练习——对Account/Bank的一些小改动    }

关于银行项目的练习——对Account/Bank的一些小改动
关于银行项目的练习——对Account/Bank的一些小改动
关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动
public static void main(String[] args)...{
关于银行项目的练习——对Account/Bank的一些小改动    Bank b 
=newInstance();
关于银行项目的练习——对Account/Bank的一些小改动    b.Register( 
"123""123""jj""123""jj@163.com"1);
关于银行项目的练习——对Account/Bank的一些小改动    b.Register( 
"456""456""ff""456""ff@163.com"0);
关于银行项目的练习——对Account/Bank的一些小改动    b.setCeiling(
10001L,100000);
关于银行项目的练习——对Account/Bank的一些小改动    b.depoist(
10001L1000);
关于银行项目的练习——对Account/Bank的一些小改动    System.out.println(b.getAllBalance());
关于银行项目的练习——对Account/Bank的一些小改动    System.out.println(b.getAllCeilingBalance());
关于银行项目的练习——对Account/Bank的一些小改动}

关于银行项目的练习——对Account/Bank的一些小改动}

关于银行项目的练习——对Account/Bank的一些小改动
关于银行项目的练习——对Account/Bank的一些小改动package  Account;
关于银行项目的练习——对Account/Bank的一些小改动
关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动
public   abstract   class  Account  ... {
关于银行项目的练习——对Account/Bank的一些小改动    
private static long sid=10000;
关于银行项目的练习——对Account/Bank的一些小改动    
private long id;
关于银行项目的练习——对Account/Bank的一些小改动    
private String password;
关于银行项目的练习——对Account/Bank的一些小改动    
private String name;
关于银行项目的练习——对Account/Bank的一些小改动    
private String personId;
关于银行项目的练习——对Account/Bank的一些小改动    
private String email;
关于银行项目的练习——对Account/Bank的一些小改动    
private double balance;
关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动    
public Account() ...{
关于银行项目的练习——对Account/Bank的一些小改动    }

关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动    
public Account(String password, String name, String personId, String email) ...{
关于银行项目的练习——对Account/Bank的一些小改动        
this.id=Account.getNextId();
关于银行项目的练习——对Account/Bank的一些小改动        
this.password = password;
关于银行项目的练习——对Account/Bank的一些小改动        
this.name = name;
关于银行项目的练习——对Account/Bank的一些小改动        
this.personId = personId;
关于银行项目的练习——对Account/Bank的一些小改动        
this.email = email;
关于银行项目的练习——对Account/Bank的一些小改动    }

关于银行项目的练习——对Account/Bank的一些小改动    
关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动    
public static long getNextId()...{
关于银行项目的练习——对Account/Bank的一些小改动        sid
++;
关于银行项目的练习——对Account/Bank的一些小改动        
return sid;
关于银行项目的练习——对Account/Bank的一些小改动    }

关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动    
public double getBalance() ...{
关于银行项目的练习——对Account/Bank的一些小改动        
return balance;
关于银行项目的练习——对Account/Bank的一些小改动    }

关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动    
public void setBalance(double balance) ...{
关于银行项目的练习——对Account/Bank的一些小改动        
this.balance = balance;
关于银行项目的练习——对Account/Bank的一些小改动    }

关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动    
public String getEmail() ...{
关于银行项目的练习——对Account/Bank的一些小改动        
return email;
关于银行项目的练习——对Account/Bank的一些小改动    }

关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动    
public void setEmail(String email) ...{
关于银行项目的练习——对Account/Bank的一些小改动        
this.email = email;
关于银行项目的练习——对Account/Bank的一些小改动    }

关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动    
public String getName() ...{
关于银行项目的练习——对Account/Bank的一些小改动        
return name;
关于银行项目的练习——对Account/Bank的一些小改动    }

关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动    
public void setName(String name) ...{
关于银行项目的练习——对Account/Bank的一些小改动        
this.name = name;
关于银行项目的练习——对Account/Bank的一些小改动    }

关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动    
public String getPassword() ...{
关于银行项目的练习——对Account/Bank的一些小改动        
return password;
关于银行项目的练习——对Account/Bank的一些小改动    }

关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动    
public void setPassword(String password) ...{
关于银行项目的练习——对Account/Bank的一些小改动        
this.password = password;
关于银行项目的练习——对Account/Bank的一些小改动    }

关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动    
public String getPersonId() ...{
关于银行项目的练习——对Account/Bank的一些小改动        
return personId;
关于银行项目的练习——对Account/Bank的一些小改动    }

关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动    
public void setPersonId(String personId) ...{
关于银行项目的练习——对Account/Bank的一些小改动        
this.personId = personId;
关于银行项目的练习——对Account/Bank的一些小改动    }

关于银行项目的练习——对Account/Bank的一些小改动    
关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动     
public final void deposit(double money)...{
关于银行项目的练习——对Account/Bank的一些小改动        
this.balance=this.balance+money;
关于银行项目的练习——对Account/Bank的一些小改动    }

关于银行项目的练习——对Account/Bank的一些小改动    
关于银行项目的练习——对Account/Bank的一些小改动    
public abstract void withdraw(double money);
关于银行项目的练习——对Account/Bank的一些小改动
关于银行项目的练习——对Account/Bank的一些小改动关于银行项目的练习——对Account/Bank的一些小改动    
public long getId() ...{
关于银行项目的练习——对Account/Bank的一些小改动        
// TODO Auto-generated method stub
关于银行项目的练习——对Account/Bank的一些小改动
        return id;
关于银行项目的练习——对Account/Bank的一些小改动    }

关于银行项目的练习——对Account/Bank的一些小改动}

关于银行项目的练习——对Account/Bank的一些小改动