2.写一个父类 账户(Account)(属性:id,password,name,personId,email,余额balance;方法:存款deposit,取款withdraw为一空方法)
写一个子类 储蓄账户(SavingAccount,覆盖父类的取款方法)
写一个子类 信用账户 (CreditAccount,属性:行用额度ceiling,覆盖父类的取款方法)
写一个银行类Bank作测试,属性:账户数组,账户数量,方法:开户register,登录login,存款deposit,取款withdraw,设置透支额度setCeiling,
统计所有账户余额总和getAllBalance,统计所有信用帐户透支额度的总和getAllCeiling,工具方法:按id查询账户getAccountById,写出测试主方法测试各个功能。
package business;
import model.*;
public class Bank {
private Account[] as=new Account[100];
private int size;
//开户方法,返回新创建的Account对象
public Account register(long id,String pass1,String pass2,String name,String personId,String email,int type){
if (!(pass1.equals(pass2))) {
System.out.println("两次密码输入不一致!");
return null;
}
Account c=null;
if (type==0) c=new SavingAccount(id,pass1,name,personId,email);
else if (type==1) c=new CreditAccount(id,pass1,name,personId,email);
else return null;
if (size==as.length) expand();
as[size]=c;
size++;
return c;
}
//登录
public Account login(long id,String pass){
Account c=this.getAccountById(id);
if (c==null){
System.out.println("id 不存在!");
return null;
}
if(!( pass.equals(c.getPassword()))){
System.out.println("密码错误!");
return null;
}
System.out.println("欢迎你回来,"+c.getName());
return c;
}
//存款
public Account deposit(long id,double money){
Account c=this.getAccountById(id);
c.deposit(money);
return c;
}
//取款
public Account withdraw(long id,double money){
Account c=this.getAccountById(id);
c.withdraw(money);
return c;
}
//设置透支额度
public Account setCeiling(long id,double ceiling){
Account c=this.getAccountById(id);
if (c instanceof CreditAccount){
CreditAccount ca=(CreditAccount)c;
ca.setCeiling(ceiling);
}
return c;
}
//统计所有帐户余额总和
public double getAllBalance(){
double d=0;
for(int i=0;i<size;i++){
d+=as[i].getBalance();
}
return d;
}
//统计所有信用帐户透支额度的总和
public double getAllCeiling(){
double d=0;
for(int i=0;i<size;i++){
if (as[i] instanceof CreditAccount){
CreditAccount ca=(CreditAccount)as[i];
d+=ca.getCeiling();
}
}
return d;
}
// 在数组中根据id找Account对象,找不到的话会返回null
private Account getAccountById(long id){
for(int i=0;i<size;i++){
if (as[i].getId()==id) return as[i];
}
return null;
}
private void expand(){
Account[] a=new Account[as.length*2];
System.arraycopy(as,0,a,0,as.length);
as=a;
}
public static void main(String[] args){
Bank b=new Bank();
b.register(1,"123","123","huxinzhe","111111","huxz@tarena.com.cn",0);
b.register(2,"123","123","liucy","2222222","liucy@tarena.com.cn",1);
b.deposit(1,100);
b.deposit(2,200);
b.setCeiling(2,1000);
b.withdraw(2,300);
System.out.println(b.getAllBalance());
System.out.println(b.getAllCeiling());
}
}
package model;
public class Account{
private long id;
private String password;
private String name;
private String personId;
private String email;
private double balance;
public Account()
{
id=10001L;
}
public Account(long id,String password, String name, String personid, String email)
{
this();
this.id=id;
this.name=name;
this.password=password;
this.personId=personid;
this.email=email;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance){
this.balance=balance;
}
public String getEmail() {
return email;
}
public long getId() {
return id;
}
public String getName() {
return name;
}
public String getPassword() {
return password;
}
public String getPersonId() {
return personId;
}
public void deposit(double money)
{
this.balance=this.balance+money;
}
public void withdraw(double money)
{
}
}
package model;
public class CreditAccount extends Account{
private double ceiling;
public double getCeiling(){
return this.ceiling;
}
public void setCeiling(double ceiling){
this.ceiling=ceiling;
}
public CreditAccount(long id,String password, String name, String personid, String email){
super(id,password,name,personid,email);
}
public void withdraw(double money)
{
if (this.getBalance()-money>=(-1)*ceiling) {
this.setBalance(this.getBalance()-money);
}
}
}
package model;
public class SavingAccount extends Account{
public SavingAccount(long id,String password, String name, String personid, String email){
super(id,password,name,personid,email);
}
public void withdraw(double money)
{
if (this.getBalance()-money>=0) {
this.setBalance(this.getBalance()-money);
}
}
}