100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Java实现ATM银行模拟系统(含完整代码)

Java实现ATM银行模拟系统(含完整代码)

时间:2022-10-19 23:32:04

相关推荐

Java实现ATM银行模拟系统(含完整代码)

目录

引言

功能简介

登录和注册

1、注册

2、登录

具体功能实现

1、存款功能

2、取款功能

3、转账功能

4、查询功能

5、注销账号

6、修改密码

7、退出

完整代码

引言

🏧🏧🏧本文主要介绍了如何通过Java实现ATM银行模拟系统,主要目的是为了能够对之前所学知识做一个简单的总结、更好的巩固一下。本次代码主要使用的是循环语句、方法、集合、类、API等知识。

🔥🔥🔥好了,废话不多说,直接开始看代码吧!

功能简介

😀😀😀首先是创建两个Java文件,一个文件用于各种功能的实现,另一个用于储存客户的信息类。该银行模拟系统首先能够实现的是登录和注册的实现,随后在注册成功并实现登录以后,呈现出各个可实现的功能页面,这些功能主要分为七个,分别是:“存款、取款、转账、查询、注销账号、修改密码、退出”。接下来就对这些功能详略得当地进行讲解。

登录和注册

本块代码主要通过三个方法实现,分别是主菜单、登录、注册。

📖主菜单

通过简单的循环语句实现主菜单页面,各个功能实现过后重新返回主菜单页面

public static void main_menu(ArrayList<Account> b,Scanner sc){while (true){System.out.println("------------------------");System.out.println("1、登录账户");System.out.println("2、注册账号");System.out.println("------------------------");System.out.println("请选择你任意一个功能:");int choice = sc.nextInt();switch (choice) {case 1 -> login(b,sc);case 2 -> enroll(b,sc);}}}

1、注册

🧧注册

在注册功能中,主要注册四个信息,分别是“账户、密码、可控制额度(在转账或者提现的最高限额)、银行卡号”,前面三个只需要为其赋值即可实现,银行卡号的随机生成才是重中之重,这里来着重讲解:首先进入while循环,定义字符串num用于获取卡号,通过一个简单的for循环获取六位随机生成的0到9的数字,生成号银行卡号之后,需要对银行卡号查重,首先判断集合中是否存有其他账户,若没有,则可以直接生成银行卡号,反之则需要将新生成的卡号与其他卡号一一比较,若出现重复,则重新随机生成银行卡号,反之则退出循环,将该账户的所有信息添加进集合中。

public static void enroll(ArrayList<Account> b,Scanner sc){ //注册Account a = new Account();System.out.println("账户:");a.setName(sc.next());System.out.println("密码:");a.setPwd(sc.next());System.out.println("可控制额度:");a.setLine(sc.nextInt());Random r = new Random();boolean flag = true;while (flag) {String num = "";for (int i = 0; i < 6; i++) {int count = r.nextInt(0, 10);num += count;}if (b.size()>0) {for (int j = 0; j < b.size(); j++) {if (num.equals(b.get(j).getNum())) {flag = true;} else {flag = false;a.setNum(num);System.out.println("您的银行卡号是:" + num);}}}else {flag=false;a.setNum(num);System.out.println("您的银行卡号是:" + num);}}b.add(a);}

2、登录

🏝️登录

通过方法获取集合b,并在代码头部位置通过b.size()判断集合中是否存有数据(即有无账户),若有账户,则进入while循环,先进行账户名的判断,通过count与b.size()比较,判断是否还有可判断的账户名,若没有则显示“账户名错误!请重新输入:”(判断失败一次,count自增1,直到count与b.size()相等的情况下),若有账户名,则通过API中的equala()函数对字符串进行比较,用户名正确则进入while循环中判断密码是否正确,不正确则重新输入密码,正确则跳转至Menu()函数。

public static void login(ArrayList<Account> b, Scanner sc){//登录int count = 0;if(b.size()==0){System.out.println("Sry,该系统中还没有账户");}else {while (true) {while (count < b.size()) {System.out.println("账户名:");String name = sc.next();for (int i = 0; i < b.size(); i++) {Account a = b.get(i);if (a.getName().equals(name)) {while (true) {System.out.println("密码:");String pwd = sc.next();if (pwd.equals(a.getPwd())) {System.out.println("登录成功!");Menu(b,a,sc);} else {System.out.print("密码错误!请重新输入:");}}} else {count++;if (count == b.size()) {System.out.print("账户名错误!请重新输入:");}}}}}}}

具体功能实现

✨功能展览页面

public static void Menu(ArrayList<Account> b,Account a,Scanner sc){ //菜单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 choice = sc.nextInt();switch (choice){case 1 ->savings(b,a,sc);case 2 ->withdrawal(b,a,sc);case 3 ->transfer(b,a,sc);case 4 ->view(b,a,sc);case 5 ->logout(b,a,sc);case 6 ->change(b,a,sc);case 7 -> exit(b,a,sc);}}

1、存款功能

💰存款

通过简单的输入语句即可实现

public static void savings(ArrayList<Account> b,Account a,Scanner sc){ //存款System.out.println("请输入存款金额:");int count = sc.nextInt();a.setBalance(a.getBalance()+count);System.out.println("存款成功:"+count);System.out.println("该账户的余额为:"+a.getBalance());Menu(b,a,sc);}

2、取款功能

🤑取款

在取款功能中主要通过两个if语句实现对“余额是否足够”、“是否超出可控制额度”判断,只有在二者均实现的情况下,才可以完成取款功能。

public static void withdrawal(ArrayList<Account> b,Account a,Scanner sc){//取款boolean flag = true;while (flag) {System.out.println("请输入取款金额:");int count = sc.nextInt();if (count > a.getBalance()) {System.out.println("不好意思您没有这么多的钱");} else {if(count>a.getLine()){System.out.println("超出可控制余额!");}else {a.setBalance(a.getBalance() - count);System.out.println("取款成功:" + count);System.out.println("该账户的余额为:" + a.getBalance());Menu(b, a, sc);}}}}

3、转账功能

🧧转账

首先通过一个if语句判断是否系统中有第二个账户可供转账,若没有则直接跳转至Menu()页面,进入转账页面之后,通过与输入的账户卡号比较,若未查询到,则重新跳转至Menu()页面,若查询到,则输出此账户的账户名(遮挡住姓氏),通过对姓氏的确认来判断转账目标是否正确,不正确则重新输入。之后的代码则与取款有异曲同工之妙。

public static void transfer(ArrayList<Account> b,Account a,Scanner sc) { //转账if (b.size() == 1) {System.out.println("该系统中没有可供转账的账户!");Menu(b, a, sc);}int count1 = 1;System.out.println("请输入要转账的账户:");String num = sc.next();boolean flag1 = true;boolean flag2 = true;for (int i = 0; i < b.size(); i++) {if (b.get(i).getNum().equals(num)) {Account c = b.get(i);String str1 ="*";str1 += c.getName().substring(1);System.out.println("查询到"+str1+"的客户");while (flag1) {System.out.println("输入该客户的姓氏以确定目标正确:");char str2 = sc.next().charAt(0);if (str2 == c.getName().charAt(0)) {System.out.println("客户目标正确!");flag1 = false;} else {System.out.println("客户目标错误!");}}while (flag2) {System.out.println("输入转账金额:");int count = sc.nextInt();if (count > a.getBalance()) {System.out.println("不好意思您没有这么多的钱");}else {if(count>a.getLine()){System.out.println("超出可控制余额!");}else {flag2 =false;c.setBalance(c.getBalance()+count);a.setBalance(a.getBalance()-count);System.out.println("转账成功:"+count);}}}}else {count1+=1;if(count1==b.size()){System.out.println("查无此人");}}}Menu(b, a, sc);}

4、查询功能

ℹ️查询

public static void view(ArrayList<Account> b,Account a,Scanner sc){ //查询System.out.println("账户:"+a.getName());System.out.println("余额:"+a.getBalance());System.out.println("可控制余额:"+a.getLine());System.out.println("卡号:"+a.getNum());Menu(b, a, sc);}

5、注销账号

😐注销

通过集合中remove函数实现对账户的删除

public static void logout(ArrayList<Account> b,Account a,Scanner sc){ //注销账号b.remove(a);System.out.println("注销成功!");Menu(b, a, sc);}

6、修改密码

😟修改密码

修改密码的时候,通过比较两次密码是否一致来确定修改是否成功

public static void change(ArrayList<Account> b,Account a,Scanner sc){ //修改密码System.out.println("输入要修改的密码:");String pwd1 = sc.next();boolean flag = true;while (flag){System.out.println("确认密码:");String pwd2 = sc.next();if (pwd1.equals(pwd2)){flag=false;System.out.println("修改成功!");}else{System.out.println("密码有误!");}}Menu(b, a, sc);}

7、退出

😭退出

无需多言,直接返回至菜单界面

public static void exit(ArrayList<Account> b,Account a,Scanner sc){ //退出main_menu(b,sc);}}

创作不易给个三连吧

完整代码

menu.java

import java.util.ArrayList;import java.util.Random;import java.util.Scanner;public class menu {public static void main(String[] args) {ArrayList<Account> Accounts = new ArrayList<>();Scanner sc = new Scanner(System.in);main_menu(Accounts,sc);}public static void main_menu(ArrayList<Account> b,Scanner sc){while (true){System.out.println("------------------------");System.out.println("1、登录账户");System.out.println("2、注册账号");System.out.println("------------------------");System.out.println("请选择你任意一个功能:");int choice = sc.nextInt();switch (choice) {case 1 -> login(b,sc);case 2 -> enroll(b,sc);}}}public static void Menu(ArrayList<Account> b,Account a,Scanner sc){ //菜单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 choice = sc.nextInt();switch (choice){case 1 ->savings(b,a,sc);case 2 ->withdrawal(b,a,sc);case 3 ->transfer(b,a,sc);case 4 ->view(b,a,sc);case 5 ->logout(b,a,sc);case 6 ->change(b,a,sc);case 7 -> exit(b,a,sc);}}public static void login(ArrayList<Account> b, Scanner sc){//登录int count = 0;if(b.size()==0){System.out.println("Sry,该系统中还没有账户");}else {while (true) {while (count < b.size()) {System.out.println("账户名:");String name = sc.next();for (int i = 0; i < b.size(); i++) {Account a = b.get(i);if (a.getName().equals(name)) {while (true) {System.out.println("密码:");String pwd = sc.next();if (pwd.equals(a.getPwd())) {System.out.println("登录成功!");Menu(b,a,sc);} else {System.out.print("密码错误!请重新输入:");}}} else {count++;if (count == b.size()) {System.out.print("账户名错误!请重新输入");}}}}}}}public static void enroll(ArrayList<Account> b,Scanner sc){ //注册Account a = new Account();System.out.println("账户:");a.setName(sc.next());System.out.println("密码:");a.setPwd(sc.next());System.out.println("可控制额度:");a.setLine(sc.nextInt());Random r = new Random();boolean flag = true;while (flag) {String num = "";for (int i = 0; i < 6; i++) {int count = r.nextInt(0, 10);num += count;}if (b.size()>0) {for (int j = 0; j < b.size(); j++) {if (num.equals(b.get(j).getNum())) {flag = true;} else {flag = false;a.setNum(num);System.out.println("您的银行卡号是:" + num);}}}else {flag=false;a.setNum(num);System.out.println("您的银行卡号是:" + num);}}b.add(a);}public static void savings(ArrayList<Account> b,Account a,Scanner sc){ //存款System.out.println("请输入存款金额:");int count = sc.nextInt();a.setBalance(a.getBalance()+count);System.out.println("存款成功:"+count);System.out.println("该账户的余额为:"+a.getBalance());Menu(b,a,sc);}public static void withdrawal(ArrayList<Account> b,Account a,Scanner sc){//取款boolean flag = true;while (flag) {System.out.println("请输入取款金额:");int count = sc.nextInt();if (count > a.getBalance()) {System.out.println("不好意思您没有这么多的钱");} else {if(count>a.getLine()){System.out.println("超出可控制余额!");}else {a.setBalance(a.getBalance() - count);System.out.println("取款成功:" + count);System.out.println("该账户的余额为:" + a.getBalance());Menu(b, a, sc);}}}}public static void transfer(ArrayList<Account> b,Account a,Scanner sc) { //转账if (b.size() == 1) {System.out.println("该系统中没有可供转账的账户!");Menu(b, a, sc);}int count1 = 1;System.out.println("请输入要转账的账户:");String num = sc.next();boolean flag1 = true;boolean flag2 = true;for (int i = 0; i < b.size(); i++) {if (b.get(i).getNum().equals(num)) {Account c = b.get(i);String str1 ="*";str1 += c.getName().substring(1);System.out.println("查询到"+str1+"的客户");while (flag1) {System.out.println("输入该客户的姓氏以确定目标正确:");char str2 = sc.next().charAt(0);if (str2 == c.getName().charAt(0)) {System.out.println("客户目标正确!");flag1 = false;} else {System.out.println("客户目标错误!");}}while (flag2) {System.out.println("输入转账金额:");int count = sc.nextInt();if (count > a.getBalance()) {System.out.println("不好意思您没有这么多的钱");}else {if(count>a.getLine()){System.out.println("超出可控制余额!");}else {flag2 =false;c.setBalance(c.getBalance()+count);a.setBalance(a.getBalance()-count);System.out.println("转账成功:"+count);}}}}else {count1+=1;if(count1==b.size()){System.out.println("查无此人");}}}Menu(b, a, sc);}public static void view(ArrayList<Account> b,Account a,Scanner sc){ //查询System.out.println("账户:"+a.getName());System.out.println("余额:"+a.getBalance());System.out.println("可控制余额:"+a.getLine());System.out.println("卡号:"+a.getNum());Menu(b, a, sc);}public static void logout(ArrayList<Account> b,Account a,Scanner sc){ //注销账号b.remove(a);System.out.println("注销成功!");Menu(b, a, sc);}public static void change(ArrayList<Account> b,Account a,Scanner sc){ //修改密码System.out.println("输入要修改的密码:");String pwd1 = sc.next();boolean flag = true;while (flag){System.out.println("确认密码:");String pwd2 = sc.next();if (pwd1.equals(pwd2)){flag=false;System.out.println("修改成功!");}else{System.out.println("密码有误!");}}Menu(b, a, sc);}public static void exit(ArrayList<Account> b,Account a,Scanner sc){ //退出main_menu(b,sc);}}

Account.java

public class Account {private String name;private String pwd;private int balance=0;//余额private int line;//可控制额度private String num;public Account() {}public Account(String name, String pwd, int balance, int line,String num) {this.name = name;this.pwd = pwd;this.balance = balance;this.line = line;this.num = num;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}public int getBalance() {return balance;}public void setBalance(int balance) {this.balance = balance;}public int getLine() {return line;}public void setLine(int line) { this.line = line; }public String getNum() { return num;}public void setNum(String num) { this.num = num; }}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。