用Java编写银行账户存取款业务,急求!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Java编写银行账户存取款业务,急求!!相关的知识,希望对你有一定的参考价值。

要求编写程序模拟银行账户的存、取款操作。按要求完成以下步骤:

步骤1:编写程序Account.java,其中定义银行账户类Account。该类中有账号、姓名、
存款余额等数据域,余额默认是0;有存款、取款、获取当前余额等方法。其中账号为长度
为12位数字的字符串,姓名为字符串,存款余额为double。

步骤2:编写名为CreditAccount类的信用卡账户类。该类继承自Account类,增加一
个透支限额(double)数据域,透支限额默认为1000。同时该类账户取款时允许透支,但不
能超过透支限额。

步骤3:编写名为SavingAccount的储蓄账户类SavingAccount。该类继承自Account
类。该类账户取款时不允许透支。

步骤4:编写名为Bank的模拟银行类,其中可以存储多个类型可能是信用卡账户或储
蓄账户的对象(可以用数组或ArrayList实现)。该类包含以下方法:
<1>开户:即增加一个新的账户,注意:不允许两个账户的账号相同
<2>销户:即删除一个已有的账户
<3>查询账户:根据一个账号,查询有无该账号的账户
<4>统计目前银行的存款总余额的方法。
<5>统计目前银行的信用卡账户总透支金额的方法。
<6>统计目前总账户数。
<7>统计目前信用卡账户数
<8>统计目前储蓄卡账户数

步骤5:编写测试类Test完成以下功能:
<1> 编写一个静态方法,创建一个银行对象,并随机生成10个账号从1000 0000 0000
0000到1000 0000 0000 0009,类型不同的账户。
<2> main方法中模拟几次开户操作。
<3> main方法中模拟几次销户操作。
<4> 模拟几个对指定账号的存款和取款操作。
<5> 输出银行的总账户数、总余额、总透支数、各类具体账户数。

public class Account 

protected String accId;
protected String name;
protected double money;

public Account (String accId,String name)
this(accId,name,0);


public Account (String accId,String name,double money)
this.accId = accId;
this.name = name;
this.money = money;


public void saveMoney(double money)
if(money <= 0)
System.out.println("存款金额必须大于0");

this.money += money;
System.out.println("存款成功");


public double getMoney(double money)
if(money <= 0)
System.out.println("取款金额必须大于0");
return 0;

if(this.money <= money)
System.out.println("余额不足,无法取款");
return 0;

this.money -= money;
System.out.println("取款成功");
return money;


public double getBalance()
return this.money;


protected double getOverdraft()
return 0;


// 实现了equals方法,list比较时才能正确
@Override
public boolean equals(Object obj) 
if(obj == null)
return false;

if(this == obj)
return true;

if(obj instanceof Account)
return this.accId.equals(((Account)obj).accId);

return false;


@Override
public String toString() 
return "账户=" + accId + ",名字=" + name + ",余额=" + money;



public class Bank 

// Account实现了equals方法,list查找时才能正确
private List<Account> usersAccounts;

public Bank() 
usersAccounts = new ArrayList<Account>();


public void addAccount(Account account) 
if (usersAccounts.contains(account)) 
System.out.println("添加失败,不能添加同样的账户");
return;

usersAccounts.add(account);


public boolean delAccount(Account account) 
return usersAccounts.remove(account);


public boolean delAccount(String accId) 
return delAccount(new Account(accId, null));


public boolean existAccount(Account account) 
return usersAccounts.contains(account);


public boolean existAccount(String accId) 
return existAccount(new Account(accId, null));


public Account getAccount(String accId)
return usersAccounts.get(usersAccounts.indexOf(new Account(accId, null)));


public double getAllMoney() 
// 不考虑是否溢出,只是把所有用户余额相加
double result = 0;
for (Account account : usersAccounts) 
result += account.getBalance();

return result;


public double getAllOverdraft() 
// 不考虑是否溢出
double result = 0;
for (Account account : usersAccounts) 
result += account.getOverdraft();

return result;


public int getAccountNum() 
return usersAccounts.size();


public int getCreditAccountNum() 
int num = 0;
for (Account account : usersAccounts) 
// instanceof 性能没有简单的方法快。
if (account instanceof CreditAccount) 
num++;


return num;


public int getSavingAccountNum() 
int num = 0;
for (Account account : usersAccounts) 
if (account instanceof SavingAccount) 
num++;


return num;


public List<Account> getAllAccount() 
return usersAccounts;


public class CreditAccount extends Account

private double overdraft;

public CreditAccount(String accId,String name)
super(accId, name);
this.overdraft = 1000;


public CreditAccount(String accId,String name,double money)
this(accId, name,money,1000);


public CreditAccount(String accId,String name,double money,double overdraft)
super(accId, name,money);
this.overdraft = overdraft;


@Override
public double getMoney(double money) 
if(money <= 0)
System.out.println("取款金额必须大于0");
return 0;

if(this.money + overdraft <= money)
System.out.println("余额不足,无法取款");
return 0;

this.money -= money;
System.out.println("取款成功");
return money;


@Override
public double getOverdraft()
return overdraft;


@Override
public String toString() 
return "账户=" + accId + ",名字=" + name + ",余额=" + money + ",透支=" + overdraft;


public class SavingAccount extends Account 

public SavingAccount(String accId, String name) 
super(accId, name);


public SavingAccount(String accId, String name, double money) 
super(accId, name, money);


@Override
public double getMoney(double money) 
return super.getMoney(money);


@Override
public double getOverdraft() 
return super.getOverdraft();



public class Test 

private static Bank bank = new Bank();
public static void main(String[] args) 
Test.genAccount();
// 开户
Account a1 = new CreditAccount("1", "1", 200, 2000);
Account a2 = new SavingAccount("2", "2", 300);
Account a3 = new SavingAccount("3", "3", 400);
Account a4 = new CreditAccount("4", "4", 500, 2000);
Account a5 = new CreditAccount("4", "5", 600, 2000); // 帐号4重
bank.addAccount(a1);
bank.addAccount(a2);
bank.addAccount(a3);
bank.addAccount(a4);
bank.addAccount(a5);
showNowAccount();
// 销户
bank.delAccount("1");
bank.delAccount("2");
showNowAccount();
// 存款
if(bank.existAccount("3"))
Account acc  = bank.getAccount("3");
acc.saveMoney(100);

showNowAccount();
// 取款
if(bank.existAccount("3"))
Account acc  = bank.getAccount("3");
System.out.println("余额=" + acc.getBalance());
acc.getMoney(100);
System.out.println("余额=" + acc.getBalance());
acc.getMoney(1000);
System.out.println("余额=" + acc.getBalance());

if(bank.existAccount("4"))
Account acc  = bank.getAccount("4");
System.out.println("余额=" + acc.getBalance());
acc.getMoney(100);
System.out.println("余额=" + acc.getBalance());
acc.getMoney(1000);
System.out.println("余额=" + acc.getBalance());
acc.getMoney(10000);
System.out.println("余额=" + acc.getBalance());

System.out.println(bank.getAccountNum());
System.out.println(bank.getAllMoney());
System.out.println(bank.getAllOverdraft());
System.out.println(bank.getCreditAccountNum());
System.out.println(bank.getSavingAccountNum());


public static void genAccount()
String s = "1000 0000 0000 000";
Account a = null;
for(int i = 1; i < 11; i ++)
if((i & 2) == 0)
a = new CreditAccount(s + String.valueOf(i), "账户" + String.valueOf(i));
 else 
a = new SavingAccount(s + String.valueOf(i), "账户" + String.valueOf(i));

bank.addAccount(a);



public static void showNowAccount()
for(Account account : bank.getAllAccount())
System.out.println(account);


// 面向对象,看多写多了就会了,简单的随便写的,有错误先不用太纠结。

参考技术A 这里有老师可以帮你,不管你信不信,反正我是信了追问

那就给出源代码吧

编写一个类似银行账户的程序,属性:账号 储户姓名 地址 存款余额 利率。方法:存款 取款查询余额计算利息

public class MyRank
private String number; //帐号
private String name; //姓名
private String address; //地址
private long money; //余额
private double rate; //利率

//不带参数的构造方法
public MyRank()
this(null, null, null, 0, 0.0);


//带参数的构造方法
public MyRank(String number, String name, String address, long money, double rate)
this.number = number;
this.name = name;
this.address = address;
this.money = money;
this.rate = rate;


//存款
public void addMoney(long money)
this.money += money;


//取款
public void getMoney(long money)
this.money -= money;


//查询余额
public long selectMoney()
return this.money;


//利息
public double getAccrual()
return this.money * this.rate;


//取得帐号
public String getNumber()
return number;


//设置帐号
public void setNumber(String number)
this.number = number;


//取得名字
public String getName()
return name;


//设置名字
public void setName(String name)
this.name = name;


//取得地址
public String getAddress()
return address;


//设置地址
public void setAddress(String address)
this.address = address;


//取得利率
public double getRate()
return rate;


//设置利率
public void setRate(double rate)
this.rate = rate;


public static void main(String[] args)
MyRank rank = new MyRank("2011", "小明", "广东广州", 0, 0.1);

System.out.println("帐号为:" + rank.getNumber());
System.out.println("名字为:" + rank.getName());
System.out.println("地址为:" + rank.getAddress());
System.out.println("余额为:" + rank.selectMoney());
System.out.println("利率为:" + rank.getRate());
System.out.println("利息为:" + rank.getAccrual());

//存进1000元
rank.addMoney(1000);
System.out.println("————————存款后结果如下————————");
System.out.println("余额为:" + rank.selectMoney());
System.out.println("利率为:" + rank.getRate());
System.out.println("利息为:" + rank.getAccrual());

//取出500元
rank.getMoney(500);
System.out.println("————————取款后结果如下————————");
System.out.println("余额为:" + rank.selectMoney());
System.out.println("利率为:" + rank.getRate());
System.out.println("利息为:" + rank.getAccrual());

//修改利率
rank.setRate(0.15);
System.out.println("————————修改利率后结果如下——————");
System.out.println("余额为:" + rank.selectMoney());
System.out.println("利率为:" + rank.getRate());
System.out.println("利息为:" + rank.getAccrual());





程序输出结果如下:

帐号为:2011
名字为:小明
地址为:广东广州
余额为:0
利率为:0.1
利息为:0.0
————————存款后结果如下————————
余额为:1000
利率为:0.1
利息为:100.0
————————取款后结果如下————————
余额为:500
利率为:0.1
利息为:50.0
————————修改利率后结果如下————————
余额为:500
利率为:0.15
利息为:75.0

大概就这些了。楼主有不明白的地方的话可以再问。考虑到楼主可能刚学到类的知识,我不敢写太复杂,如果代码满足不了楼主的要求,可以跟我说下。我可以再修改。祝楼主学习愉快O(∩_∩)O哈哈~
参考技术A 不会的人,很难`会的人,很简单``悲剧的是``我是那个不会的人``

以上是关于用Java编写银行账户存取款业务,急求!!的主要内容,如果未能解决你的问题,请参考以下文章

编写程序,模拟银行存取款业务。 (1)建银行账户类bank,有成员:储户现有款项account(int型)和

用java编写多线程银行ATM 模拟程序

Java面向对象练习题之银行存取款

Java中在银行系统中有账户类型,进行基本存取款操作

Java中在银行系统中有账户类型,进行基本存取款操作

Java中在银行系统中有账户类型,进行基本存取款操作