代码通过三个方法实现,分别是主菜单、登录、注册
完整代码
menu.java
package com.sh.ATM;
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
package com.sh.ATM;
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; }
}