展开全部

public class Account {

protected String accId;

protected String name;

protected double money;

public Account (String accId,String name){

62616964757a686964616fe58685e5aeb931333337393031this(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 usersAccounts;

public Bank() {

usersAccounts = new ArrayList();

}

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 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

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

}

}

}

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

java代码编写 银行存取款_用Java编写银行账户存取款业务,急求!!相关推荐

  1. java代码中设置mysql时区_关于Java中的mysql时区问题详解

    前言 话说工作十多年,mysql 还真没用几年.起初是外企银行,无法直接接触到 DB:后来一直从事架构方面,也多是解决问题为主. 这次搭建海外机房,围绕时区大家做了一番讨论.不说最终的结果是什么,期间 ...

  2. java登录注册功能怎么实现_使用Java代码实现登录注册功能

    实现思路:分别创建5个包和5个类{cn.f.pojo(User.java):cn.f.Dao(UserDao.java):cn.f.Dao.impl(UserDaoImpl.java): cn.f.g ...

  3. java包间通信,诊断Java代码: 消除包间的耦合关联[Java编程]

    赞助商链接 本文"诊断Java代码: 消除包间的耦合关联[Java编程]"是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自 ...

  4. java爬虫中split的使用_关于java中split的使用

    之前在http://shukuiyan.iteye.com/blog/507915文中已经叙述过这个问题,但是最近一次笔试中居然有碰到了这个知识点,而且还做错了,囧!学艺不精啊.题目大概是这样的: J ...

  5. java代码如何与界面联系在一起_如何在Visual Studio Code 中编写Java代码

    本文将展示如何在Visual Studio Code中用Java编写和运行一个简单的Hello World程序. 首先您必须在本地开发环境中安装Java SE开发工具包(JDK) Visual Stu ...

  6. 写java代码时的注意事项_从方法返回Java 8的可选项时的注意事项

    写java代码时的注意事项 Java 8引入的Optional类一直是该语言版本引入的最具争议的功能之一. 尽管我喜欢这个新的Java类的东西比不喜欢的东西多,但在Java方法中将其用作return类 ...

  7. java代码自动生成的插件_如何使用插件生成自定义Java 8代码

    java代码自动生成的插件 大多数程序员讨厌的一件事就是编写样板代码. 无休止的时间花费在设置实体类和配置数据库连接上. 为了避免这种情况,您可以让Speedment Open Source之类的程序 ...

  8. java 金数据推送数据_基于JAVA的黄金数据接口调用代码实例

    代码描述:基于JAVA的黄金数据接口调用代码实例 接口地址:http://www.juhe.cn/docs/api/id/29 1.[代码][Java]代码 import java.io.Buffer ...

  9. java代码进行短信接收_自动化测试-自动获取手机短信验证码

    最近在做生产环境自动化测试,碰到一个难题就是短信验证码的获取,生产环境短信验证码是真实的,不能采用测试环境将短信验证码写成固定的方法解决,我的思路是:做一个apk小程序,将手机上的短信验证码实时读取出 ...

  10. java代码实现购物车小程序_使用Taro实现小程序商城的购物车功能模块的实例代码...

    Taro 是一套遵循 React 语法规范的 多端开发 解决方案. 现如今市面上端的形态多种多样,Web.React-Native.微信小程序等各种端大行其道,当业务要求同时在不同的端都要求有所表现的 ...

最新文章

  1. 函数字节不对齐函数崩溃_Excel中统计字符数,不需要一个一个的数,len函数能轻松搞定...
  2. 为数字世界和通证经济健康发展保驾护航 币氪产品发布会在蓉举行
  3. 设计模式 之 设计的 六大原则(1)单一职责原则
  4. 全球10大SSL证书品牌对比
  5. jquery 入门与知识
  6. html div父集子集,抛砖引玉css系列---根据父元素包含的子元素个数,实现不同的样式...
  7. 频段、信道带宽、EARFCN、频段和EARFCN之间的换算
  8. 用Python3在Win10上自动更新Aria2的BT Trackers,提升Aria2的BT下载速度,非常实用。
  9. 基本存款账户编号怎么查_基本存款账户编号是行号吗?
  10. 对灰色按钮克星的屏蔽
  11. 5个音效素材网站,赶紧收藏
  12. Python贴吧灌水脚本
  13. /sys/kernel/debug及debugfs
  14. laragon安装postgreSQL
  15. ISO3834认证所需的部分标准
  16. 【文献阅读】Federated Accelerated Stochastic Gradient Descent
  17. AirServer2022苹果安卓手机屏幕如何投影到电脑上面
  18. java pdfbox2 中文乱码_Java用pdfbox或icepdf转换PDF为图片时,中文乱码问题
  19. Water Sensor水位传感器学习笔记
  20. 如何让nginx不返回304

热门文章

  1. OpenGL学习整理------着色器
  2. PG性能调校(二):数据库硬件及基准评测
  3. postgresql数据库进行等保测评(审计) 需要修改的参数
  4. 计算机初始化,怎么初始化电脑 电脑要如何初始化教程
  5. Java 数字转换为汉语中人民币的大写
  6. 关于LM2596S-5.0电流声问题——输出电容选择
  7. RuntimeError :excepted object of type torch.floatTensor but found type torch.DoubleTensor
  8. 如何看待“大数据杀熟”现象(个人观点,仅供参考)
  9. Word 二级标题不跟随一级标题变化
  10. 百度推广的优势和劣势