所用到的知识点:面向对象基础语法,封装,方法覆盖(重写)、继承、多态
话不多说,直接上代码

Account.java

package com.task1;import java.util.Scanner;public class Account {//规定账户类型://0 – 储蓄账户  1 – 信用账户 2 – 可贷款储蓄账户 3– 可贷款信用账户private Long id ;//账户号码private String password;//账户密码private String name;//真实姓名private String personId;//身份证号码private String email;//客户的电子邮箱private double balance;//账户余额private int type;//账户类型//无参的构造方法public Account(){}//有参的构造方法public Account(long id, String password, String name, String personId, String email, double balance, int type) {super();this.id = id;this.password = password;this.name = name;this.personId = personId;this.email = email;this.balance = balance;this.type = type;}//get、set方法public Long getId() {return id;}public void setId(long id) {this.id = id;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPersonId() {return personId;}public void setPersonId(String personId) {this.personId = personId;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public double getBalance() {return balance;}public void setBalance(double balance) {this.balance = balance;}public int getType() {return type;}public void setType(int type) {this.type = type;}//存款public Account deposit(double money ) {this.balance+= money;   //余额增加return this;}//取款public Account withdraw(double money) {if(balance - money >= 0) { //判断余额是否足够balance -= money;  //余额减少
//          System.out.println("存款成功");}else {System.out.println("您的余额不足!");}return this;}//重写toString方法@Overridepublic String toString() {return "Account [id=" + id + ", password=" + password + ", name=" + name + ", personId=" + personId + ", email="+ email + ", balance=" + balance + ", type=" + type + "]";}}

SavingAccount.java

package com.task1;public class SavingAccount extends Account {public SavingAccount() {super();// TODO Auto-generated constructor stub}public SavingAccount(long id, String password, String name, String personId, String email, double balance,int type) {super(id, password, name, personId, email, balance, type);// TODO Auto-generated constructor stub}@Overridepublic String toString() {return "SavingAccount [getId()=" + getId() + ", getPassword()=" + getPassword() + ", getName()=" + getName()+ ", getPersonId()=" + getPersonId() + ", getEmail()=" + getEmail() + ", getBalance()=" + getBalance()+ ", getType()=" + getType() + "]";}}

CreditAccpunt.java

package com.task1;public class CreditAccount extends Account{private double ceiling;public CreditAccount() {super();}public CreditAccount(long id, String password, String name, String personId, String email, double balance,int type,double ceiling) {super(id, password, name, personId, email, balance, type);this.ceiling = ceiling;}public double getCeiling() {return ceiling;}public void setCeiling(double ceiling) {this.ceiling = ceiling;}@Overridepublic String toString() {return "CreditAccount [getCeiling()=" + getCeiling() + ", getId()=" + getId() + ", getPassword()="+ getPassword() + ", getName()=" + getName() + ", getPersonId()=" + getPersonId() + ", getEmail()="+ getEmail() + ", getBalance()=" + getBalance() + ", getType()=" + getType() + "]";}@Overridepublic Account withdraw(double money) {if(getBalance() >= money) {setBalance(getBalance() - money);}else if(getBalance() + getCeiling() >= money) {setCeiling(getCeiling()-(money-getBalance()));setBalance(0);}else {System.out.println("对不起,您的余额不足");}return this;}}

Bank.java

package com.task1;import java.util.Scanner;public class Bank {int index = 0; //当前用户数量Account [] accounts = new Account [100];//数据库Account account = null;/** 用户开户(register)参数列表: Long 账号, String密码, String确认密码,String 姓名,String身份证号码,String邮箱,int 账户类型;(Long id, String password, String repassword, String name, String personID, String email, int type)返回类型:Account规定账户类型:0 – 储蓄账户  1 – 信用账户 2 – 可贷款储蓄账户 3– 可贷款信用账户*///用户开户public Account register(Long id, String password, String repassword, String name, String personId, String email, int type) {if(password.equals(repassword)) {  // 判断两次输入密码是否一致switch (type) {          //根据用户类型创建不同账户case 0: account = new SavingAccount(id, repassword, name, personId, email, 0, type);   //创建储蓄账户break;case 1:account = new CreditAccount(id, repassword, name, personId, email, 0, type,1000);   //创建信用账户}accounts[index++] = account;    //账户信息存到数据库,用户数量+1}
//      else {//          System.out.println("两次输入的密码不一致");
//      }return account;}//用户登录public Account login(Long id, String password) {int find = searchIdPassword(index, id, password); //当前用户数组下标if(find >= 0) {                     //判断账户密码是否正确
//          System.out.println("登录成功");return accounts[find];         //返回当前对象}
//      else {//          System.out.println("用户名密码错误");
//      }return null;           //如果账户密码错误返回空}//用户存款public Account deposit(Long id, double money) {int find = searchId(index, id);当前用户数组下标if(find >= 0) {                          //判断账户是否存在accounts[find].deposit(money);      //调用Account类的存款方法
//          System.out.println("存款成功");return accounts[find];             //返回当前对象
//          accounts[find].setBalance(accounts[find].getBalance()+money);}
//      else {//          System.out.println("用户不存在");
//      }return null;           //如果账户不存在返回空}//用户取款public Account withdraw(Long id, String password, double money) {int find = searchIdPassword(index, id, password);//当前用户数组下标if(find >= 0) {                                 //判断账户密码是否正确accounts[find].withdraw(money);             //调用当前对象的取款方法
//          System.out.println("取款成功");return accounts[find];                     //返回当前对象}return null;}//设置透支额度public Account updateCeiling(Long id, String password, double money) {int find = searchIdPassword(index, id, password);//获取当前用户数组下标if((find >= 0) && (accounts[find].getType()) == 1){  //判断账户号码和密码是否正确,账户类型是否为信用账户((CreditAccount)accounts[find]).setCeiling(((CreditAccount)accounts[find]).getCeiling() + money); //调用set方法设置透支额度return accounts[find];}return null;}//  转账功能//  参数:from转出账户,passwordFrom 转出账号的密码,to转入账户,money转账的金额public boolean transfer(Long from, String passwordFrom, Long to, double money) {int find = searchIdPassword(index, from, passwordFrom); //转账账户数组下标int find2 = searchId(index, to);              //收款账户数组下标if(find >= 0 && find2 >= 0 && accounts[find].getBalance() >= money) {  //判断转账账户密码、收款账户是否匹配,判断转账用户余额是否足够accounts[find].withdraw(money);//转账用户转账操作==取款accounts[find2].deposit(money);//收款用户 == 存款return true;} return false;}//统计银行所有账户余额总数public double balanceSum() {double sum = 0;     //初始化所有账户余额for(int i = 0; i < index; i++) {  //遍历数组sum += accounts[i].getBalance();//求和(账户余额)}return sum;}//统计所有信用账户透支额度总数public double ceilingSum() {double sum = 0;  //初始化所有透支额度和for(int i = 0; i < index; i++) {  //遍历if(accounts[i].getType() == 1) {  //判断账户类型是否为信用账户sum += ((CreditAccount)accounts[i]).getCeiling(); //求和}}return sum;}//搜索Id与密码返回数组下标位置public int searchIdPassword(int index, Long id, String password) {for(int i = 0; i < index; i++) {if(id.equals(accounts[i].getId()) && password.equals(accounts[i].getPassword())){  //比较账户和密码是否匹配return i ;                //匹配则返回账户数组下标}}return -1;                       //不匹配则返回-1}//搜索Idpublic int searchId(int index, Long id) {for(int i = 0; i < index; i++) {if(id.equals(accounts[i].getId())){   //比较账户是否匹配return i ;                      //匹配则返回账户数组下标}}return -1;                   //不匹配则返回-1}
}

TestAccount.java

package com.task1;public class TestAccount {public static void main(String[] args) {Account a =new Account(123456L, "123456","张三", "421356", "tt@tt.com", 100.0, 0);System.out.println(a);     }}

TestBank.java

package com.task1;import java.util.Scanner;public class TestBank {public static void main(String[] args) {Scanner sc = new Scanner(System.in);Bank bank = new Bank();String action =null;do {System.out.println("菜单:");System.out.println("---[1.开户]---");System.out.println("---[2.登录]---");System.out.println("---[3.存款]---");System.out.println("---[4.取款]---");System.out.println("---[5.设置透支额度]---");System.out.println("---[6.转账]---");System.out.println("请选择服务");int choice =sc.nextInt();switch(choice) {case 1:         //开户System.out.println("请输入账户号码:");Long id = sc.nextLong();System.out.println("请输入账户密码:");String password = sc.next();System.out.println("请确认账户密码:");String repassword = sc.next();System.out.println("请输入真实姓名:");String name = sc.next();System.out.println("请输入身份证号:");String personId = sc.next();System.out.println("请输入电子邮箱:");String email = sc.next();System.out.println("请输入账户类型:0 – 储蓄账户  1 – 信用账户 2 – 可贷款储蓄账户 3– 可贷款信用账户");int type = sc.nextInt();Account a1 = bank.register(id, password, repassword, name, personId, email, type);if(a1 != null) {System.out.println(a1);System.out.println("开户成功");}else {System.out.println("两次输入密码不一致");}break;case 2:          //登录System.out.println("请输入账户号码:");id = sc.nextLong();System.out.println("请输入账户密码:");password = sc.next();Account a2 = bank.login(id, password);if(a2 != null) {System.out.println(a2);System.out.println("登录成功");}else {System.out.println("账户号码密码错误");}break;case 3:            //存款System.out.println("请输入账户号码:");id = sc.nextLong();System.out.println("请输入存款金额:");double money = sc.nextDouble();Account a3 = bank.deposit(id, money);if(a3 != null) {System.out.println(a3);System.out.println("存款成功");}else {System.out.println("账户不存在");}break;case 4:          //取款System.out.println("请输入账户号码:");id = sc.nextLong();System.out.println("请输入账户密码:");password = sc.next();System.out.println("请输入取款金额:");money = sc.nextDouble();Account a4 = bank.withdraw(id, password, money);if(a4 != null ) {System.out.println(a4);System.out.println("取款成功");}else {System.out.println("账户号码密码错误");}break;case 5://设置透支额度System.out.println("请输入账户号码:");id = sc.nextLong();System.out.println("请输入账户密码:");password = sc.next();System.out.println("请输入透支金额:");money = sc.nextDouble();Account a5 = bank.updateCeiling(id, password, money);if(a5 != null ) {System.out.println(a5);System.out.println("设置透支额度成功");}else {System.out.println("账户号码密码错误或账户类型错误");}break;case 6://  转账功能System.out.println("请输入转账账户号码:");Long from = sc.nextLong();System.out.println("请输入转账账户密码:");String passwordFrom = sc.next();System.out.println("请输入收款账户号码:");Long to = sc.nextLong();System.out.println("请输入转账金额:");money = sc.nextDouble();boolean flag = bank.transfer(from, passwordFrom, to, money);if(flag) {System.out.println("转账成功");}else {System.out.println("转账失败");}break;default:System.out.println("服务选择错误");}System.out.println("是否继续(y/n)?");action = sc.next();}while("y".equals(action));double balanceSum = bank.balanceSum();double ceilingSum = bank.ceilingSum();System.out.println("银行所有账户余额总数:"+balanceSum);System.out.println("所有信用账户透支额度总数"+ceilingSum);}}

Java银行账户管理子系统相关推荐

  1. SAP银行账户管理(Bank Account Management)

    1. 基本概念 & 系统配置 1.1 BANK(银行): SAP系统中的BANK对应现实中的实体银行,例如"中国工商银行","中国农业银行"等.BANK ...

  2. 基于java银行ATM管理系统设计(含源文件)

    欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye 题  目:   银行ATM管理系统 一.    设计目的 银行ATM管理是银行业务流程中十分重要 ...

  3. java银行账户模拟_使用Java模拟银行账户存、取款、转账功能

    半枯 我分开写给你package bank; //这是创建新用户的 import java.io.FileNotFoundException; import java.io.IOException; ...

  4. java 银行账户 透支,Java学习——银行账户模拟

    以下实例是一个银行账户的模拟,通过银行卡的号码完成识别,可以进行存钱和取钱的操作. InsufficientFundsException.java 文件代码: // 文件名InsufficientFu ...

  5. c语言实现银行账户管理(超详细)

    目录 前言 一,需求定义 二,具体框架 1,Manager(管理员).h头文件和BankCard(银行卡).h头文件 (1)Manager.h (2)BankCard.h 2,文件框架 三,函数封装 ...

  6. 南京邮电大学Java软件开发(混合式)实验2:银行账户管理——面向对象

    一. Java 类与对象的基本知识: 1. 类的定义 2. 方法重载 3. 构造方法 4. static 关键字 5. this 关键字 6. 包与import 语句 7. 访问权限 8. 对象的使用 ...

  7. 银行账户管理项目(纯java)

    银行管理项目 温馨提示:如果你是java大佬,好了,你可以去干别的事情去了.本项目适合java初学者,对大佬没有什么帮助. 文章目录 银行管理项目 前言 一.项目说明 二.项目展示 1.主菜单 2.用 ...

  8. C++ 个人银行账户管理 综合实例62.10_date

    在网上找了很多例子,代码都不是循序渐进的,自己一点一点按章节把代码按照老师的要求都码好了,一点一点进步吧,因为一开始就去看别人整篇的代码实在很难,带给需要帮助的人,这是第六章第二个综合实例,加入Dat ...

  9. java银行账户类_用java编写银行账户的存款方法

    public class ATM { public static void main(String[] args) { // 开立帐号 Account account = new Account(); ...

  10. 个人银行账户管理程序

    这个程序是一个银行账户管理的程序,是用C++来实现程序功能的,该程序包含六个文件,其中有date.h头文件 是日期类的头文件,date.cpp是日期类的实现文件,accumulator.h是按日将数值 ...

最新文章

  1. 《深度学习导论及案例分析》一2.11概率图模型的推理
  2. python lambda函数详细解析(据说面试90%的人经常遇到)
  3. 斐波那契数拓展问题:leetcode-70 爬楼梯问题 leetcode-1137 泰波那契数问题解法
  4. 【计算机学科】最好的学校排名
  5. position的四种属性
  6. maven-assembly-plugin插件打包 jar、tar.gz
  7. React开发(191):ant design中inputNumber格式化
  8. 深入细枝末节,Python的字体反爬虫到底怎么一回事
  9. Day2:360培训学习重点笔记(7.14)
  10. Java微信公众平台开发(三)--接收消息的分类及实体的创建
  11. 职业程序员的知识体系
  12. 电厂计算机监控系统的结构及功能,水电厂计算机监控系统
  13. java实现ftl文件转图片
  14. 云服务器安装不了声卡,驱动精灵怎么安装声卡 声卡驱动安装方法
  15. freemarker的recurse示例代码
  16. win10系统迁移后系统重装_Win10如何把系统迁移到固态硬盘上?Win10系统迁移到SSD上教程...
  17. 指针万用表使用欧姆档测量电容器时偏转
  18. 计算机安装固态硬盘后启动不稳定,完美解决win7系统安装固态硬盘后开机慢的解决方法...
  19. 如何将静态图片制作成闪图效果?
  20. OKR-Periods of Words

热门文章

  1. Linux中用tar命令对文件夹进行打包压缩
  2. Couldn't figure out the Java version of /root/.jenkins/jdk/bin/java bash: /root/.jenkins/jdk/bin/jav
  3. java 网络 序列化_Java网络通信基础系列-Netty序列化
  4. java粘包_Java网络通信基础系列-Netty粘包与拆包
  5. mysql 多数据源配置文件_Spring+MyBatis多数据源配置实现
  6. MATLAB之特征值和特征向量
  7. DM8安装及使用DTS工具将oracle11g迁移到centos7.6上的DM8
  8. beta阶段测试基本概况报告
  9. MySQL:Can't create test file XXX.lowe-test
  10. 最全QQ盗号手法分析,全面防御QQ盗号