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

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

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-05-28
这里有老师可以帮你,不管你信不信,反正我是信了追问

那就给出源代码吧

使用JAVA编写一个简单的银行存取款程序
account.setBalence(d - balence);return "您取出了" + balence + "元,现账户余额为+" + account.getBalence();

JAVA 帮忙写下代码
}}\/\/信用卡账户类型public class CreditAccount extends Account {private long limitBalance = -10000L;\/\/ 取款调用此方法 .\/\/首先 你把Account 这个 类 实例化,即 你会在表中 查询出 这个 账户 余额什么的 都会有了\/\/假设 取1000public boolean xinyongqukuan(long qukuanshu){long x = ...

如何用JAVA编写简单的网上银行系统不要和数据库连接!步骤详细有...
可写入文本文档或是用xml 可担当小数据库的功能(但不是数据库)。如:'向XML文件添加留言记录的函数addEntry()Function addEntry()'定义局部变量 Dim strName Dim strEmail Dim strURL Dim strMessage '取得留言表单的输入内容 strName = Request.Form("姓名")strEmail = Request.Form("电子邮件"...

根据以下任务要求,编写Java应用程序?
按照题目要求编写的Java程序如下 注意 请使用你的真实姓名和班级替换Test类中 创建Student对象stu时用的"张三"和"20计算机应用01班"import java.util.Scanner;class Student{ private String name,classname;private int starnum,scorenum;private int[] scores;public void setStarNum(int n){ this.star...

工行的网上银行 弹出窗口“JAVA脚本错误”?
三.用windows清理助手(从网上下载)。扫描后(若扫出东西,都勾并清理),再用故障修复(全选),然后在桌面点鼠标右键刷新。安全模式下效果好。也可考虑用金山急救箱【勾上“扩展扫描”,点扫描后,如果出现可以修复的项目,全选后,点“立即处理”,完后重启。】强调---1.修复中,杀软或360有提示...

J2EE,JSP,Java的区别
J2EE,JSP,Java的区别 JSP 就是用来做动态页面的,可以归属到J2EE系列中。 Java 这个词的概括可能更广一些,因为Java 包含 3个领域,分别是: J2EE: 企业级开发 J2ME:嵌入式开发 J2SE:图形界面开发 java包含三大分支:J2SE --java standard edition--标准版本,这个是下面两个的基础!一般是位于客户端...

账户类型都有什么
账户类型主要包括以下几种:1. 个人银行账户 个人银行账户是指个人为了办理存取款、转账汇款等银行业务而开设的账户。这种账户主要用于个人资金的存储和支付。个人银行账户可以分为储蓄账户、支付账户等。储蓄账户主要用于个人储蓄和理财,支付账户则用于日常支付和转账。不同银行对个人账户的具体分类和规定可能...

贷款银行收入流水是怎么算的
首先银行流水账单也叫银行卡存取款交易对账单,就是一段时间(一般为近6个月)内,申请人银行账户的存取款业务交易清单。包含工资、卡存、现存、转入、货款、卡取、转账等方面内容。如果是贷款买房,银行会重点考察借款人的还款能力,一般要求借款人的每月收入为月供的2.2倍以上,除了收入证明要符合要求...

网核流水样本
电话核对银行流水步骤:,(1)打银行客服---人工服务---查3笔流水,(2)只能本人查 银行流水账单:(1)俗称银行卡存取款交易对账单,也称银行账户交易对账单。指的是客户在一段时间内与银行发生的存取款业务交易清单。(2)私人账户流水指的是客户自己本人名下的银行卡(借记卡)或者银行活期存折,...

到银行打流水账单需要携带什么证件?
需要带上银行卡和身份证。不是卡主本人不能打\\x0d\\x0a银行流水账单俗称银行卡存取款交易对账单,也称银行账户交易对账单。指的是客户在一段时间内与银行发生的存取款业务交易清单。\\x0d\\x0a私人账户流水折叠\\x0d\\x0a指的是客户自己本人名下的银行卡(借记卡)或者银行活期存折,在一段时间内与...

相似回答