Java代码实现银行ATM系统,包含开户、登录、查询账户、退出账户、存款、取款功能实现

您所在的位置:网站首页 取款系统维护不能取款 Java代码实现银行ATM系统,包含开户、登录、查询账户、退出账户、存款、取款功能实现

Java代码实现银行ATM系统,包含开户、登录、查询账户、退出账户、存款、取款功能实现

2024-07-12 03:29| 来源: 网络整理| 查看: 265

一、思路

1.实现ATM系统,首先要创建一个Account类,用来创佳账户。

2.创建一个ATM类,实现start()启动方法,并在main方法里调用。

3.还需要创建一个list集合,用来存放创建账户的对象。

4.创建一个Account类的对象presentLogin,表示当前登录系统的账户。

二、目录

1.系统架构搭建、欢迎页设计

2.开户功能实现

3.登录功能实现

4.操作页展示、查询账户、退出账户

5.存款、取款功能实现

6.转账功能实现

7.销户功能实现

8.用户密码修改

三、实现 1.系统架构搭建、欢迎页设计 1.1创建Account类 public class Account { private String cardId; //卡号 private String name; //姓名 private String sex; //性别 private String password; //密码 private double balance; //余额 private double limit; //每次取现额度 public Account() { } public Account(String cardId, String name, String sex, String password, double balance, double limit) { this.cardId = cardId; this.name = name; this.sex = sex; this.password = password; this.balance = balance; this.limit = limit; } /** * 获取 * @return cardId */ public String getCardId() { return cardId; } /** * 设置 * @param cardId */ public void setCardId(String cardId) { this.cardId = cardId; } /** * 获取 * @return name */ public String getName() { return name; } /** * 设置 * @param name */ public void setName(String name) { this.name = name; } /** * 获取 * @return sex */ public String getSex() { return sex; } /** * 设置 * @param sex */ public void setSex(String sex) { this.sex = sex; } /** * 获取 * @return password */ public String getPassword() { return password; } /** * 设置 * @param password */ public void setPassword(String password) { this.password = password; } /** * 获取 * @return balance */ public double getBalance() { return balance; } /** * 设置 * @param balance */ public void setBalance(double balance) { this.balance = balance; } /** * 获取 * @return limit */ public double getLimit() { return limit; } /** * 设置 * @param limit */ public void setLimit(double limit) { this.limit = limit; } public String toString() { return "Account{cardId = " + cardId + ", name = " + name + ", sex = " + sex + ", password = " + password + ", balance = " + balance + ", limit = " + limit + "}"; } } 1.2创建ATM类

创建一个ATM类,实现start()启动方法,并在main方法里调用。

还需要创建一个list集合,用来存放创建账户的对象。可以在list集合里手动添加两个账户,方便后续测试,节省时间。

创建一个Account类的对象presentLogin,表示当前登录系统的账户。

public static void main(String[] args) { // 添加用户 list.add(new Account("123", "张总", "男", "123", 0, 300)); list.add(new Account("1234", "刘总", "男", "1234", 1000, 300)); // 调用启动方法 startATM(); } // 创建用户集合 public static ArrayList list = new ArrayList(); // 当前登录用户 public static Account presentLogin = new Account(); // 启动方法 private static void startATM() { Scanner sc = new Scanner(System.in); while (true) { System.out.println("========欢迎进入黑马银行ATM系统========"); System.out.println("1、用户登录"); System.out.println("2、用户开户"); System.out.println("请选择您要执行的命令:"); int input = sc.nextInt(); switch (input) { case 1: // 登录 boolean loginSucceed = userLogin(); // 如果登录成功返回true,在执行下一步操作 while (true) { if (loginSucceed) { operational(); break; } } break; case 2: // 开户 openAccount(); break; default: System.out.println("输入有误,请重新输入~"); } } } 2.开户功能实现

当用户输入2时调用开户方法。由于开户时,用户的卡号是随机生成的,所以还需一个生成账户的方法。

2.1生成账户的方法 // 生成卡号 private static String getCardId() { Random random = new Random(); String cardId = ""; while (true) { for (int i = 0; i < 8; i++) { cardId += random.nextInt(10); } if (list.size() == 0) { return cardId; } else { for (int i = 0; i < list.size(); i++) { if (!(list.get(i).getCardId().equals(cardId))) { return cardId; } } } } } 2.2开户功能的实现

在这个方法中,需要调用到生成卡号的方法

// 开户 private static void openAccount() { System.out.println("==系统开户操作=="); System.out.println("请输入您的姓名:"); Scanner sc = new Scanner(System.in); String userName = sc.next(); System.out.println("请输入您的性别:"); while (true) { String sex = sc.next(); if (!(sex.equals("男") || sex.equals("女"))) { System.out.println("输入有误,请重新输入您的性别~"); } else { System.out.println("请输入账户密码:"); while (true) { String password = sc.next(); System.out.println("请您再次输入确认密码:"); String rePassword = sc.next(); if (password.equals(rePassword)) { System.out.println("请您输入账户每次取限额"); double limit = sc.nextDouble(); // 余额,默认设置为0 double balance = 0; // 调用方法生成卡号 String cardId = getCardId(); // 将开户的用户信息存入list集合中 list.add(new Account(cardId, userName, sex, password, balance, limit)); System.out.println("恭喜您," + userName + "先生,您的卡号是:" + cardId); break; } else { System.out.println("两次密码不一致,请重新输入密码"); } } break; } } } 3.登录功能的实现 //登录 private static boolean userLogin() { Scanner sc = new Scanner(System.in); System.out.println("请输入登录卡号:"); while (true) { boolean flag = true; String cardID = sc.next(); for (int i = 0; i < list.size(); i++) { if (list.get(i).getCardId().equals(cardID)) { flag = false; while (true) { System.out.println("请输入登陆密码:"); String password = sc.next(); if (list.get(i).getPassword().equals(password)) { String sex = (list.get(i).getSex() == "男") ? "先生" : "女士"; System.out.println("恭喜您," + list.get(i).getName() + sex + ",您已经进入系统,您的卡号是:" + list.get(i).getCardId()); presentLogin = list.get(i); return true; } else { System.out.println("您输入的密码有误,请重新输入~"); } } } } if (flag) { System.out.println("您输入的账号有误,请重新输入~"); } } } 4.操作页展示、查询账户、退出账户 4.1操作页展示

用户登录成功后进入操作页展示界面,输入数字进行对应的操作。

// 登录成功后 选择要操作的指令 private static void operational() { Scanner sc = new Scanner(System.in); while (true) { System.out.println("==" + presentLogin.getName() + "先生,您可以办理以下业务" + "=="); 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 input = sc.nextInt(); switch (input) { case 1: //TODO 查询账户 searchUser(); break; case 2: //TODO 存款 deposit(); break; case 3: //TODO 取款 withdrawal(); break; case 4: //TODO 转账 transfer(); break; case 5: //TODO 修改密码 boolean IsRevamp = changePassword(); // 修改成功返回true 退出到未登录界面重新登录 if (IsRevamp) { return; } break; case 6: //TODO 退出 return; case 7: //TODO 注销账户 logoff(); return; default: System.out.println("输入有误,请重新输入"); } } } 4.2查询账户 // 查询账户 private static void searchUser() { System.out.println("查询信息如下:"); System.out.println("卡号:" + presentLogin.getCardId()); System.out.println("姓名:" + presentLogin.getName()); System.out.println("性别:" + presentLogin.getSex()); System.out.println("余额:" + presentLogin.getBalance()); System.out.println("限额:" + presentLogin.getLimit()); } 4.3退出账户

退出账户直接 return 即可。

5.存款、取款功能实现 5.1存款 // 存款 public static void deposit() { System.out.println("请输入您要存款的金额:"); Scanner sc = new Scanner(System.in); while (true) { double price = sc.nextDouble(); if (price >= 100) { presentLogin.setBalance(presentLogin.getBalance() + price); System.out.println("已存入金额" + price + ",请核对是否正确"); return; } else { System.out.println("金额要大于100才能存储,请重新输入要存款的金额:"); } } } 5.2取款 // 取款 private static void withdrawal() { if (presentLogin.getBalance() < 100) { System.out.println("您的余额小于100,无法取出"); } else { System.out.println("请输入您要取款的金额:"); Scanner sc = new Scanner(System.in); double price = sc.nextDouble(); if (price > presentLogin.getBalance()) { System.out.println("余额不足"); } else { presentLogin.setBalance(presentLogin.getBalance() - price); System.out.println("您已取款:" + price + ",余额:" + presentLogin.getBalance()); } } } 6.转账功能的实现 // 转账 private static void transfer() { System.out.println("=====欢迎进入黑马银行用户转账界面====="); if (list.size() < 2) { System.out.println("当前系统,账户不足2个,不能转账"); } else { System.out.println("请您输入转账的账户卡号:"); Scanner sc = new Scanner(System.in); String cardId = sc.next(); boolean exist = false; for (int i = 0; i < list.size(); i++) { if (list.get(i).getCardId().equals(cardId)) { exist = true; System.out.println("您当前要为" + "*" + list.get(i).getName().substring(1) + "转账!"); int count = 0; while (count < 3) { System.out.println("请您输入姓氏确认:"); String firstName = sc.next(); if (firstName.equals(list.get(i).getName().substring(0, 1))) { while (true) { System.out.println("请输入转账金额:"); double price = sc.nextDouble(); if (price > presentLogin.getBalance()) { System.out.println("余额不足!"); return; } if (price > presentLogin.getLimit()) { System.out.println("超出限额,一次性最多只能转" + presentLogin.getLimit()); } else { presentLogin.setBalance(presentLogin.getBalance() - price); list.get(i).setBalance(list.get(i).getBalance() + price); System.out.println("您已成功向" + list.get(i).getName() + "转账" + price); return; } } } else { count++; System.out.println("输入信息错误,你还有" + (3 - count) + "次机会"); } } } } if (!exist) { System.out.println("账户不存在"); } } } 7、注销功能

直接从结合中删除账户

// 注销 private static void logoff() { list.remove(presentLogin); } 8、修改密码 // 修改密码 private static boolean changePassword() { System.out.println("=====欢迎进入黑马银行修改密码界面====="); System.out.println("请输入当前账户密码:"); Scanner sc = new Scanner(System.in); String former = sc.next(); if (!(former.equals(presentLogin.getPassword()))) { System.out.println("当前账户密码不正确"); return false; } else { while (true) { System.out.println("请输入新密码:"); String newPassword = sc.next(); System.out.println("请确认新密码:"); String reNewPassword = sc.next(); if (newPassword.equals(reNewPassword)) { presentLogin.setPassword(newPassword); System.out.println("密码修改成功,请重新登陆!"); return true; } else { System.out.println("两次密码不一致~"); } } } } 四、总结

该ATM系统对java基础的多个知识点进行了融合,特别是while和for循环用的比较多。我上传了源码,需要的小伙伴可以下载源码进行验证。有什么问题可以在评论区指出,我看见会第一时间回复。感谢您的阅读!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3