📄 bank.java
字号:
package com.shunshi.bam.business;
import java.util.*;
import com.shunshi.bam.entity.model.*;
import com.shunshi.bam.exception.*;
public class Bank {
private static Bank bank=new Bank();
//private List list;
// key:personId , value:Acount
private Map<Long,Account> accs;
//private Account[] accs=new Account[10];
private int index;
public static Bank newInstance(){
return bank;
}
private Bank(){
super();
//list = new ArrayList(10);
accs = new HashMap<Long,Account>();
}
public void printSortUser(){
//局部类
class User implements Comparable{
private String personId;
private double money;
public User(String personId){
this.personId = personId;
}
public void addMoney(double money){
this.money += money;
}
public int compareTo(Object obj) {
User user = (User)obj;
if(this.money>user.money){
return -1;
}else if(this.money<user.money){
return 1;
}else{
return this.personId.compareTo(user.personId);
}
}
public String toString(){
return personId+":"+money;
}
}
// key:personId , value:User
Map<String,User> userMap = new HashMap<String, User>();
Collection<Account> c = accs.values();
Iterator<Account> iter = c.iterator();
while(iter.hasNext()){
Account acc = iter.next();
String personId = acc.getPersonId();
if(userMap.containsKey(personId)){
User user = userMap.get(personId);
user.addMoney(acc.getBalance());
}else{
User user = new User(personId);
user.addMoney(acc.getBalance());
userMap.put(personId, user);
}
}
Collection users = userMap.values();
List list = new ArrayList(users);
Collections.sort(list);
Iterator it = list.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
public Account openAccount(String pass1,String pass2,String name,String personId,String email,int type)throws RegisterException{
if(!pass1.equals(pass2)){
throw new RegisterException("对不起,两次密码不一致,不能开户");
//System.out.println("对不起,两次密码不一致,不能开户!");
//return null;
}
Account acc=null;
if(type==0) acc=new SavingAccount(pass1,name,personId,email);
if(type==1) acc=new CreditAccount(pass1,name,personId,email);
if(type==2) acc=new LoanSavingAccount(pass1,name,personId,email);
if(type==3) acc=new LoanCreditAccount(pass1,name,personId,email);
/*if(index==accs.length) expand();
accs[index]=acc;*/
//list.add(acc);
accs.put(acc.getId(), acc);
index++;
return acc;
}
/*private void expand(){
Account[] accs2=new Account[accs.length*2];
System.arraycopy(accs, 0, accs2, 0, accs.length);
accs=accs2;
}*/
public Account login(long id,String password)throws LoginException{
Account a=findAccountById(id);
if(a==null){
throw new LoginException("对不起,帐号错误,不能登陆");
//System.out.println("对不起,帐号错误,不能登陆!");
//return null;
}
String pass=a.getPassword();
if(!pass.equals(password)){
throw new LoginException("对不起,密码错误,不能登陆");
//System.out.println("对不起,密码错误,不能登陆!");
//return null;
}
return a;
}
public Account findAccountById(long id){
Account a=null;
/*for(int i=0;i<accs.length;i++){
if(accs[i].getId()==id)return accs[i];
}*/
a = (Account)accs.get(id);
return a;
}
public Account deposit(long id,double money)throws BalanceSmalerZeroException{
Account a=findAccountById(id);
a.deposit(money);
return a;
}
public Account withdraw(long id,double money)throws BalanceSmalerZeroException,BalanceNotEnoughException{
Account a=findAccountById(id);
a.withdraw(money);
return a;
}
public Account setCelling(long id,double celling){
Account a=findAccountById(id);
if(a instanceof CreditAccount){
CreditAccount ca=(CreditAccount)a;
ca.setCelling(celling);
}
return a;
}
public Account requestLoan(long id,double loan)throws LoanException{
Account a=findAccountById(id);
if(a instanceof Loanable){
Loanable la=(Loanable)a;
la.requestLoan(loan);
}
return a;
}
public Account payLoan(long id,double loan)throws LoanException,BalanceSmalerZeroException,BalanceNotEnoughException{
Account a=findAccountById(id);
if(a instanceof Loanable){
Loanable la=(Loanable)a;
la.payLoan(loan);
}
return a;
}
public double totalBalance(){
double result=0.0;
/*for(int i=0;i<accs.length;i++){
result+=accs[i].getBalance();
}数组表示*/
/*for(int i=0;i<list.size();i++){
Account acc = (Account)list.get(i);
result+=acc.getBalance();
}
链表表示*/
Set<Long> s = accs.keySet();
for(Long personId:s){
Account acc = accs.get(personId);
result+=acc.getBalance();
} //HashMap表示
return result;
}
public double totalCelling(){
double result=0.0;
/*for(int i=0;i<accs.length;i++){
if(accs[i] instanceof CreditAccount){
CreditAccount ca=(CreditAccount)accs[i];
result+=ca.getCelling();
}
}数组表示*/
/*for(int i=0;i<list.size();i++){
Account acc = (Account)list.get(i);
if(acc instanceof CreditAccount){
CreditAccount ca=(CreditAccount)acc;
result+=ca.getCelling();
}
}链表表示*/
Set<Long> s = accs.keySet();
for(Long personId:s){
Account acc = (Account)accs.get(personId);
if(acc instanceof CreditAccount){
CreditAccount ca=(CreditAccount)acc;
result+=ca.getCelling();
}
} //HashMap表示
return result;
}
public double totalLoan(){
double result=0.0;
/*for(int i=0;i<index;i++){
if(accs[i] instanceof Loanable){
Loanable la=(Loanable)accs[i];
result+=la.getLoan();
}
}数组表示*/
/*for(int i=0;i<list.size();i++){
Account acc=(Account)list.get(i);
if(acc instanceof Loanable){
Loanable la=(Loanable)acc;
result+=la.getLoan();
}
}链表表示*/
Set<Long> s = accs.keySet();
for(Long personId:s){
Account acc=(Account)accs.get(personId);
if(acc instanceof Loanable){
Loanable la=(Loanable)acc;
result+=la.getLoan();
}
} //HashMap表示
return result;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -