java银行管理系统源码

article/2025/10/10 1:54:37

目录

一、项目包含知识点

二、项目需求

三、系统模块设计

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


http://chatgpt.dhexx.cn/article/8dcHGWOj.shtml

相关文章

银行排队系统

免责声明 以下内容可能引起不适&#xff0c;请18岁以下儿童在大人配同下观看 主要内容&#xff1a; 设计并实现银行取号模拟系统&#xff0c;模拟取号的整个过程,实现取号、排队、服务、及管理等功能。系统能够记录用户及工作人员信息的统计和分析&#xff0c;可以进一步优化…

【模拟 简易银行系统~python】

目录~python 面向对象编程之模拟银行系统相关程序代码如下&#xff1a;运行效果如下&#xff1a; pandas 每日一练&#xff1a;运行结果为&#xff1a; 66、绘制sku_cost_prc的密度曲线运行效果为&#xff1a; 67、计算后一天与前一天sku_cost_prc的差值运行结果为&#xff1a;…

银行开发专业术语解释和银行系统开发架构的设计思想

1 轧差 轧差指的是当日A和B银行有资金来往&#xff0c;早上B要给A银行打10万&#xff0c;下午A要给B打20万&#xff0c;经过轧差&#xff0c;日终清算的时候&#xff0c;A只需要给B打10万就行了&#xff0c;不然就浪费时间了。 2 结算 清算 清分 根据《中国银联银行卡联网联…

C语言:银行储蓄系统开发(中级)

任务代码1&#xff1a; //使用函数的版本 #include <stdio.h> #include <stdlib.h> int pass(); //验证密码 void work(); //业务驱动 double getBalance(); //获得余额 void showMenu(); //显示菜单 void updatePassword(); //更改密码 do…

比黄图更得劲儿?网络萌宠图片,拯救你大脑的不二法器

全文共2512字&#xff0c;预计学习时长8分钟 图片来自: Julian Glander 据研究人员称&#xff0c;萌宠的图片绝对比低俗图片甚至阅读对大脑更有益处。 在社交媒体上&#xff0c;灾难性的新闻层出不穷。在我写这篇文章的时候&#xff0c;一本绝佳的著作正在遭受读者的抨击&#…

移动端图片鉴黄(可离线识别 200ms)

open_nsfw_android &#xff08;可离线识别&#xff09; 原文链接 &#xff08;喜欢请记得Star&#xff09; 色情图片离线识别&#xff0c;基于TensorFlow实现。识别只需200ms,可断网测试&#xff0c;成功率99%&#xff0c;调用只要一行代码&#xff0c;从雅虎的开源项目open…

php图片内容识别,Chevereto 调用百度图像内容审核 – 实现Chevereto图片鉴黄

前面大鸟说了如何安装Chevereto商业版本&#xff0c;因为这是图床&#xff0c;所以我们需要设置下鉴黄。因为Chevereto默认没有这个功能&#xff0c;所以需要自己设置了。 具体的方法就是利用百度AI审核功能来实现图片内容识别鉴黄。教程基于Chevereto安装之后&#xff0c;至于…

一天看10000张黄图,鉴黄师的苦!!!

Python实战社群 Java实战社群 长按识别下方二维码&#xff0c;按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 作者丨小郭 来源丨程序员虎哥&#xff08;ID&#xff1a;itjiagou&#xff09; hello&#xff0c;大家好&#xff0c;这里是程序员虎哥…

python NSFW Model 图片识别鉴黄 后面更新视频检测

基于 NSFW Model 图片识别鉴黄 后面更新视频检测 识别效果 推荐SFW 0.98 色情 NSFW 0.015 推荐SFW 0.00 色情 NSFW 0.99 为色情图片 中文github代码下载 - 原文地址 环境条件 所有代码都应该与Python 3.6and兼容Tensorflow 1.x&#xff08;用 1.12 测试&#xff09;。模型…

Python 批量鉴别审核黄图

作者&#xff1a;美图博客 https://www.meitubk.com/zatan/229.html 前言 最近写了一款微信小程序需要用到图片审核&#xff0c;人工审核是不可能的人工审核的太费精力了&#xff0c;所以我就写了一个多线程批量识别脚本来处理&#xff0c;主要是调用百度 AI 的接口&#xff0…

Python快速实现黄图检测——车速检测器

文章目录 简介安装图像视频预加载车速检测器视频车速检测器无声音TODO: 有声音 参考文献 简介 使用雅虎开源的 TensorFlow 2 Open-NSFW 模型 NSFW&#xff1a;not safe for work&#xff0c;工作场所不宜 1.jpg 2.jpg 自己去下 安装 Python 3.7 及以上&#xff0c;本人尝…

做了个色情图片识别系统

项目介绍 本项目将使用python3去识别图片是否为色情图片&#xff0c;会使用到PIL这个图像处理库&#xff0c;并且编写算法来划分图像的皮肤区域 介绍一下PIL&#xff1a; PIL&#xff08;Python Image Library&#xff09;是一种免费的图像处理工具包&#xff0c;这个软件包提供…

图像鉴黄的数据集及相关算法汇总

前方高能预警&#xff0c;非战斗人士请火速撤离…… 数据集1&#xff1a;https://github.com/EBazarov/nsfw_data_source_urls/tree/master/raw_data 在 raw_data 文件夹里&#xff0c;可以找到不同的 .txt 格式的文档&#xff0c;每个文档都含有一组 URL&#xff0c;以下是关…

微信小程序—智能鉴黄、敏感识别

小程序提供内容安全接口 security.imgSecCheck&#xff1a;图片检测 security.msgSecCheck&#xff1a;文本检测 调用效果如下&#xff1a; 敏感信息&#xff0c;不好暴漏&#xff0c;可自行体验 体验路径&#xff1a;扫码>>AI智能系列>>安全检测—敏感词语、黄…

android图片颜色识别器,颜色识别器APP

颜色识别器APP是一款手机上的颜色辨别应用&#xff0c;用户只需用摄像头拍出要识别的颜色&#xff0c;应用就能将颜色信息识别出并转换为相关的颜色信息&#xff0c;如颜色名称&#xff0c;颜色的HEX码、RGB码等&#xff0c;还有实时识别&#xff0c;测色仪&#xff0c;色差计等…

二维码/条码识别、身份证识别、银行卡识别、车牌识别、图片文字识别、黄图识别、驾驶证(驾照)识别

Scanner 项目地址&#xff1a;shouzhong/Scanner 简介&#xff1a; 二维码/条码识别、身份证识别、银行卡识别、车牌识别、图片文字识别、黄图识别、驾驶证&#xff08;驾照&#xff09;识别 更多&#xff1a;作者 提 Bug 标签&#xff1a; >>> reset-###- …

身份证、银行卡、车牌、图片文字识别、黄图识别、驾驶证识别库实现功能

预览图效果&#xff1a; 原文来自&#xff1a;http://code.662p.com/view/19388.html &#xff0c;需要自己去下载就可以了。 使用 依赖 implementation com.shouzhong:Scanner:1.1.3以下选择自己需要的 // zxing implementation com.google.zxing:core:3.3.3 // zbar imp…

黄图识别-open nsfw

大楷简介&#xff1a; open nsfw是一款开源的黄图识别的模型。对的&#xff0c;只是模型。并且有有python的代码作为预测图片是否黄图。 https://github.com/yahoo/open_nsfw 这里网址。 open nsfw是雅虎开源项目caffeonspark&#xff0c;使用深度学习训练得到caffe模型。ns…

计算机无法对NAS硬盘操作,使用计算机为Synology NAS安装DSM操作系统

Synology NAS由硬件&#xff0c;系统和应用程序套件组成. Synology最著名的是DSM操作系统. DSM操作系统是Synology开发的用于存储的智能操作系统. 它不仅功能强大&#xff0c;而且在DSM中可用. 在操作系统上安装各种应用程序包&#xff0c;以满足您的需求. 可以通过手机或计算机…

Delta-Sigma调制(DSM)技术

前言 数字信号处理和通信系统的性能很大程度上受到了模拟信号到数字信号转换接口——ADC的精度和分辨率的限制。而传统的线性脉冲编码调制&#xff08;PCM&#xff09;ADC受到了制造工艺的限制&#xff0c;无法达到很高的分辨率。但基于Delta-Sigma调制技术的ADC可以在现有工艺…