目录

一、项目包含知识点

二、项目需求

三、系统模块设计

3. 1、模块介绍

3·2、银行管理系统技术分析如图

3.3银行管理系统界面展示

四、银行管理系统源码

4.1Account类

4.2ATMSystem类


一、项目包含知识点

  1. 面向对象编程 : 要求使用面向兑现思想进行编程,需要对代码进行合理的封装。
  2. 集合、数组等容器: 项目要求使用适当容器进行数据存储,容器包括(Array、List、 Map、 Set等)
  3. 程序流程控制: 相关操需要结合分支、循环、跳转等操作控制程序的业务逻辑。
  4. 常见API、异常处理。

二、项目需求

本项目需要完成以下功能:

  1. 首页设计
  2. 用户登录注册实现
  3. 用户开户功能
  4. 用户操作页面设计
  5. 用户查询账户、 退出账户功能实现
  6. 用户存款、取款、转账功能实现
  7. 用户修改密码、销户功能实现

三、系统模块设计

3. 1、模块介绍

  1. 注册、开户模块:客户想要进入银行管理系统必须先进行注册和客户,才能拥有自己的账号
  2. 登陆模块:客户想要进入银行管理系统必须先进行登陆,登陆成功,才能进入银行管理系统必须办理业务。
  3. 查询模块:客户可以查询自己的姓名,卡号,余额,当次限额等信息
  4. 存款模块:客户可以在次菜单下办理存钱业务。
  5. 取款模块:客户可以在次菜单下办理取款业务。
  6. 转账模块:客户可以在次菜单下办理转账业务。
  7. 修改模块:客户可以在次菜单下办理修改银行卡密码业务。
  8. 退出模块:客户可以退出银行管理系统。
  9. 销户模块:客户可以办理销户业务。

银行管理系统总体设计如图

3·2、银行管理系统技术分析如图

3.3银行管理系统界面展示

四、银行管理系统源码

4.1Account类

//创建客户类
public class Account {//声明变量private String bankNumber;//卡号private String clientName;//客户名称private String passWord;//密码private double balance;//余额private double onceMoney;//当次取现限额public String getBankNumber() {return bankNumber;}public void setBankNumber(String bankNumber) {this.bankNumber = bankNumber;}public String getClientName() {return clientName;}public void setClientName(String clientName) {this.clientName= clientName;}public String getPassWord() {return passWord;}public void setPassWord(String passWord) {this.passWord = passWord;}public double getBalance() {return balance;}public void setBalance(double balance) {this.balance = balance;}public double getOnceMoney() {return onceMoney;}public void setOnceMoney(double onceMoney) {this.onceMoney = onceMoney;}//创建无参构造方法public Account() {}//创建有参构造方法public Account(String bankNumber, String clientName, String passWord,  double onceMoney) {this.bankNumber= bankNumber;this.clientName=clientName;this.passWord = passWord;this.onceMoney=onceMoney;}}

4.2ATMSystem类


import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class ATMSystem {public static void main(String[] args) {//创建集合存储账户对象ArrayList<Account> accounts = new ArrayList<>();//调用首页方法showMain(accounts);}//定义首页方法public static void showMain(ArrayList<Account> accounts){System.out.println("===========欢迎进入中国银行首页=================");Scanner scanner = new Scanner(System.in);while (true) {System.out.println("请您输入您对应的菜单选项:");System.out.println("1、登录");System.out.println("2、开户");System.out.print("请输入对应的选项:");int input=scanner.nextInt();switch (input){case 1://调用登录方法loginSystem(accounts,scanner);break;case 2://调用开户方法registerSystem(accounts,scanner);break;default:System.out.println("对不起,没有该选项!");}}}//定义登录方法private static void loginSystem(ArrayList<Account> accounts,Scanner scanner) {//必须系统中存在用户才可以登录if(accounts.size()==0){//没有任何用户System.out.println("当前系统中没有客户,请先注册");return;}//让用户输入卡号,根据卡号查询账户对象while (true) {System.out.println("请输入卡号:");String inputNumber=scanner.next();//根据卡号查询账户对象Account accout=getAccountBankNumber(inputNumber,accounts);//判断账户对象是否存在,存在说明卡号正常if(accout!= null){while (true) {//让用户继续输入密码System.out.println("请输入密码:");String pwd=scanner.next();//判断密码是否正确if(accout.getPassWord().equals(pwd)){//密码正确,登录成功,展示系统登录后的操作界面System.out.println("恭喜您,"+accout.getClientName()+"先生/女士成功进入系统,您的卡号是:"+accout.getBankNumber());//调用菜单方法showMenu(scanner,accout,accounts);return;}else {System.out.println("您的密码输入有误!");}}}else {System.out.println("不存在该客户!");}}}private static void showMenu(Scanner scanner,Account account,ArrayList<Account> accounts) {while (true) {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("7、销户");System.out.println("请您输入对应的选项:");int inputMenu=scanner.nextInt();switch (inputMenu){case 1://调用查询方法showMessage(account);break;case 2://调用存款方法Deposit(account,scanner);break;case 3://调用取款方法drawMoney(account,scanner);break;case 4://调用转账方法Transfer(accounts,account,scanner);break;case 5://调用修改密码方法Modify(account,scanner);return;case 6://退出System.out.println("欢迎下次光临!");return;case 7://注销账户accounts.remove(account);System.out.println("销户成功!");return;default:System.out.println("您的选项输入有误!");}}}//定义修改密码方法private static void Modify(Account account,Scanner scanner) {System.out.println("=======修改密码============");while (true) {System.out.println("请输入原密码:");String inputRightpwd=scanner.next();//判断密码是否正确if(account.getPassWord().equals(inputRightpwd)){while (true) {//可以输入新密码System.out.println("请您输入新密码:");String newPwd=scanner.next();System.out.println("请确认密码:");String identityPwd=scanner.next();if(newPwd.equals(identityPwd)){//修改账户对象的密码为新密码account.setPassWord(newPwd);return;}else {System.out.println("两次输入的密码不一致!");}}}else {System.out.println("密码输入不正确!");}}}//定义转账方法private static void Transfer(ArrayList<Account> accounts, Account act, Scanner scanner) {//判断系统中是否有2个客户及以上if(accounts.size()<2){System.out.println("系统中没有其它客户,您不可以转账!");return;}//判断自己银行卡中是否有钱if(act.getBalance()==0){System.out.println("您的账户没有余额!");return;}while (true) {System.out.println("请您输入对方账户的卡号:");String bankNumber=scanner.next();Account account =getAccountBankNumber(bankNumber,accounts);//判断客户对象是否存在if(account !=null){//判断这个账户是否是账户自己if(account.getBankNumber().equals(act.getBankNumber())){//给自己转账System.out.println("您不可以为自己转账!");}else {//确认对方的姓氏String name ="*"+ account.getClientName().substring(1);System.out.println("请您确认【"+name+"】的姓氏:");String preName = scanner.next();//判断if(account.getClientName().startsWith(preName)){//开始转账System.out.println("请您输入转账的金额:");double inputMoney=scanner.nextDouble();//判断金额是否超过了自己的余额if(inputMoney>act.getBalance()){System.out.println("对不起,你要转账的金额太多,您最多可以转账"+act.getBalance());}else {//可以转账act.setBalance(act.getBalance()-inputMoney);account.setBalance(account.getBalance()+inputMoney);System.out.println("恭喜转账成功,已经为"+account.getClientName()+"转账"+inputMoney);showMessage(act);return;}}else {System.out.println("您输入的信息有误!");}}}else {System.out.println("您输入的转账卡号有问题!");}}}//定义取款方法private static void drawMoney(Account account, Scanner scanner) {System.out.println("========取款操作==========");//判断它的账户是否足够100元if(account.getBalance()>=100){while (true) {System.out.println("请输入取款的金额:");double inputMoney= scanner.nextDouble();//判断金额是否超过当次限额if(inputMoney>account.getOnceMoney()){System.out.println("您当次取款金额超过每次限制,每次最多可以取:"+account.getOnceMoney());}else {//判断当前余额是否足够取钱if(account.getBalance()>=inputMoney){//可以取钱account.setBalance(account.getBalance()-inputMoney);System.out.println("恭喜您,取钱"+inputMoney+"成功了,当前账户剩余:"+account.getBalance());return;}else {System.out.println("余额不足!");}}}}else {System.out.println("您的账户没有超过100元,不允许取款!");}}//定义存款方法private static void Deposit(Account account,Scanner scanner) {System.out.println("=============存款操作===============");System.out.println("请输入存款的金额:");double money = scanner.nextDouble();//直接把金额修改到账户对象的money属性中去account.setBalance(account.getBalance()+money);//需要把原来的钱get出来再加上新存入的moneySystem.out.println("存款成功!");showMessage(account);}//查询客户信息private static void showMessage(Account account) {System.out.println("==================您的账户信息====================");System.out.println("姓名" + "      \t" + "卡号" + "      \t" + "余额" + "          \t" + "当次限额");System.out.println(account.getClientName()  + "        \t" + account.getBankNumber() + "  \t" + account.getBalance() + "      \t " + account.getOnceMoney() + "      \t");}//定义开户方法private static void registerSystem(ArrayList<Account> accounts,Scanner scanner) {System.out.println("请输入开户名:");String openName = scanner.next();String openPassword= "";while (true) {System.out.println("请输入开户密码:");openPassword= scanner.next();System.out.println("请输入确认密码:");String identityPassword = scanner.next();//判断两次输入的密码是否一致if(identityPassword.equals(openPassword)){break;}else {System.out.println("两次密码必须一致!");}}System.out.println("请您输入当次限额:");double onceMoney = scanner.nextDouble();//调用生成账户卡号的方法String bankNumber=automationBankNumber(accounts);//创建一个客户对象封装账户的信息Account account= new Account(bankNumber,openName,openPassword,onceMoney);//把客户对象添加到集合中去accounts.add(account);System.out.println("恭喜您!您开户成功,您的卡号是:"+account.getBankNumber()+",请您妥善保管!");}//定义生成银行卡账号方法public static String automationBankNumber(ArrayList<Account> accounts){//生成8位随机的数字代表卡号while (true) {String bankNumber= "";Random r = new Random();for (int i = 0; i < 8; i++) {bankNumber += r.nextInt(10);}//判断是否重复了Account acc =getAccountBankNumber(bankNumber,accounts);if(acc == null){//说明当前卡号没有重复return bankNumber;}}}public static Account getAccountBankNumber(String number,ArrayList<Account> accounts){//根据卡号查询账户对象for (int i = 0; i < accounts.size(); i++) {Account a= accounts.get(i);if(a.getBankNumber().equals(number)){return a;}}//查无此账户,说明卡号没有重复了;return null;}
}

java银行管理系统源码相关推荐

  1. 计算机毕业设计Java心理健康管理系统(源码+系统+mysql数据库+Lw文档)

    计算机毕业设计Java心理健康管理系统(源码+系统+mysql数据库+Lw文档) 计算机毕业设计Java心理健康管理系统(源码+系统+mysql数据库+Lw文档) 最新计算机专业原创毕业设计参考选题都 ...

  2. 计算机毕业设计Java疗养管理系统(源码+mysql数据库+系统+lw文档)

    计算机毕业设计Java疗养管理系统(源码+mysql数据库+系统+lw文档) 计算机毕业设计Java疗养管理系统(源码+mysql数据库+系统+lw文档) 本源码技术栈: 项目架构:B/S架构 开发语 ...

  3. 计算机毕业设计Java仓库管理系统(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java仓库管理系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java仓库管理系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 开发语 ...

  4. 计算机毕业设计Java健身俱乐部管理系统(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java健身俱乐部管理系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java健身俱乐部管理系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S ...

  5. 计算机毕业设计Java教务管理系统(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java教务管理系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java教务管理系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 开发语 ...

  6. 计算机毕业设计Java房屋租赁管理系统(源码+系统+mysql数据库+lW文档)

    计算机毕业设计Java房屋租赁管理系统(源码+系统+mysql数据库+lW文档) 计算机毕业设计Java房屋租赁管理系统(源码+系统+mysql数据库+lW文档) 本源码技术栈: 项目架构:B/S架构 ...

  7. 计算机毕业设计Java后勤管理系统(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java后勤管理系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java后勤管理系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 开发语 ...

  8. 计算机毕业设计Java旅游管理系统(源码+mysql数据库+系统+lw文档)

    计算机毕业设计Java旅游管理系统(源码+mysql数据库+系统+lw文档) 计算机毕业设计Java旅游管理系统(源码+mysql数据库+系统+lw文档) 本源码技术栈: 项目架构:B/S架构 开发语 ...

  9. 计算机毕业设计Java超市管理系统(源码+系统+mysql数据库+lw文档

    计算机毕业设计Java超市管理系统(源码+系统+mysql数据库+lw文档 计算机毕业设计Java超市管理系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 开发语言 ...

最新文章

  1. NLTK与NLP原理及基础
  2. P2774-方格取数问题【网络流,最大流,最小割】
  3. linux vmcore 分析,crash分析vmcore
  4. 含羞默默一张一合效果---田
  5. 移动端上下拖动调整顺序效果_HTML5 移动端的上下左右滑动问题
  6. Flask入门学习---进一步了解模板
  7. BusyBox 中添加新命令
  8. multisim安装后无法连接数据库_如何解决multisim无法安装的问题
  9. 2019-CS224n-Assignment3
  10. Kubernetes详细笔记
  11. OpenModelica.VehicleInterfaces离线库安装
  12. 12C中CDB和PDB的一些概念
  13. Win Server 2003搭建Sql注入环境
  14. ireport简单报表打印
  15. vs code python插件_vs code Python code runner配置 , 飞跃|Fly
  16. 台式计算机键盘进水了还能用,电脑键盘进水的解决方法
  17. Django项目——CRM
  18. 通过webSocket实现app产生的数据在网页实时显示
  19. 那些年遇到的DB2大坑
  20. 计算机毕业设计Java读书网络社区设计(源码+系统+mysql数据库+lW文档)

热门文章

  1. 仓库管理中导致库存积压的原因有哪些?
  2. Unity 字体间距
  3. 数据库 部分函数依赖 完全函数依赖 传递函数依赖 第一范式、第二范式、第三范式、BCNF范式区别
  4. 手机助手的那点事儿--经验之谈
  5. 【老生谈算法】matlab实现低通滤波器算法源码——低通滤波器
  6. MySQL常见面试题(2023年最新)
  7. 无法启动IIS Express Web服务器 端口正在使用
  8. oracle rowid转换,rowid可以更改吗?
  9. 华为Mate40国内版价格揭晓
  10. 蓝桥杯 - 三羊献瑞 (java实现)