Java实现超级简易的银行ATM机项目(详细注释版)

首先放一个客户(其实就是老师给的作业)需求的效果图
在这里插入图片描述
在这里先准备所需要的类

用户类:卡号  密码  真实姓名  余额  开户时间
  定义Account类 存储用户信息 封装属性 并提供getXXX和setXXX
银行业务类:  属性:所有的储户   开户 、 存款、 取款  、查询余额、 转账
  BankService   List<Account>      5个方法
   	
日期工具类 :方便调用 
1. 获取系统当前日期时间的方法  static

键盘输入的工具类:
1.获取键盘输入的整数的方法   static
2.获取键盘输入的小数的方法   static
3.获取键盘输入的字符串的方法  static
          
系统操作界面: 用户在没有选择6,退出之前,可以重复做业务
 死循环  用户不退出,永远不退出

在这里先给出几个类 (实不相瞒, 还没写完, 也没法给全部)
Account 类

package com.ATM.bean;

// 卡号  密码  真实姓名  余额  开户时间
// 储存用户信息
public class Account {
    private String cardNum;
    private int password;
    private String accountName;
    private double money;
    private String createDate;

    public Account() {
    }

    public Account(String cardNum, int password, String accountName, double money, String createDate) {
        this.cardNum = cardNum;
        this.password = password;
        this.accountName = accountName;
        this.money = money;
        this.createDate = createDate;
    }

    public String getCardNum() {
        return cardNum;
    }

    public void setCardNum(String cardNum) {
        this.cardNum = cardNum;
    }

    public int getPassword() {
        return password;
    }

    public void setPassword(int password) {
        this.password = password;
    }

    public String getAccountName() {
        return accountName;
    }

    public void setAccountName(String accountName) {
        this.accountName = accountName;
    }

    public double getMoney() {
        return money;
    }

    public void setMoney(double money) {
        this.money = money;
    }

    public String getCreateDate() {
        return createDate;
    }

    public void setCreateDate(String createDate) {
        this.createDate = createDate;
    }
}

日期工具类 DateUtil
获取 yyyyMMddHHmmss + 1000以内的随机数用来作为卡号

package com.ATM.util;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 日期工具类
 */
public class DateUtil {
    /**
     * 获取系统当前日期
     * @param option 1: yyyy-MM-dd HH:mm:ss   2: yyyyMMddHH:mm:ss
     * @return
     */
    public static String getDate(int option){
        Date date=new Date();
        String pattern="";
        if (option!=1&&option!=2){
            pattern="yyyy-MM-dd HH:mm:ss";
        }else{
            pattern=(option==1?"yyyy-MM-dd HH:mm:ss":"yyyyMMddHHmmss");
        }
        SimpleDateFormat sdf=new SimpleDateFormat(pattern);
        return sdf.format(date);
    }
}

键盘输入工具类 KeyBoardInputUtil

package com.ATM.util;

import java.util.Scanner;

/**
 * 键盘输入工具类
 */
public class KeyBoardInputUtil {
    /**
     * 获取键盘输入的整数
     * @return
     */
    public static int getInt(){
        Scanner sn=new Scanner(System.in);
        int num=sn.nextInt();
        return num;
    }
    /**
     * 获取键盘输入的小数
     * @return
     */
    public static double getDouble(){
        Scanner sn=new Scanner(System.in);
        double num=sn.nextDouble();
        return num;
    }
    /**
     * 获取键盘输入的字符串
     * @return
     */
    public static String getString(){
        Scanner sn=new Scanner(System.in);
        String num=sn.next();
        return num;
    }
}

还有两个最重要的类还没完成, 等写完再发 (应该不会忘记吧…)
还有两个类一个是银行的业务类 BankService
还有一个是银行的操作页面 BankView
然后这个小的银行ATM项目就完成啦
在存储方面会用的是集合 ArrayList 来存储数据
嗯, 暂时就这样, 有没有兄弟期待想要 o( ̄▽ ̄)ブ

下篇在这!!!直接点击跳转到主类!!

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,下面是一个简单的Java程序实现模拟银行ATM: 首先,我们需要创建一个ATM类,它代表了整个ATM的控制器。在ATM类中,我们需要定义以下属性: - cardNumber:表示插入的银行卡号码; - cardPin:表示银行卡的密码; - balance:表示银行卡的余额; - isCardInserted:表示是否插入了银行卡; - isPinValid:表示银行卡密码是否正确。 ``` import java.sql.*; public class ATM { private String cardNumber; private int cardPin; private double balance; private boolean isCardInserted; private boolean isPinValid; private Connection connection; public ATM() { isCardInserted = false; isPinValid = false; balance = 0; } public void insertCard(String cardNumber, int cardPin) { this.cardNumber = cardNumber; this.cardPin = cardPin; isCardInserted = true; validatePin(); } public void ejectCard() { isCardInserted = false; isPinValid = false; cardNumber = ""; cardPin = 0; } public void validatePin() { try { Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/atm", "root", "password"); Statement stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM accounts WHERE card_number='" + cardNumber + "'"); if (rs.next()) { int pin = rs.getInt("pin"); if (pin == cardPin) { isPinValid = true; balance = rs.getDouble("balance"); } } rs.close(); stmt.close(); connection.close(); } catch (Exception e) { System.out.println(e); } } public void checkBalance() { if (isCardInserted && isPinValid) { System.out.println("Your balance is: " + balance); } else { System.out.println("Please insert your card and enter your PIN."); } } public void withdraw(double amount) { if (isCardInserted && isPinValid) { if (amount <= balance) { balance -= amount; try { Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/atm", "root", "password"); Statement stmt = connection.createStatement(); stmt.executeUpdate("UPDATE accounts SET balance=" + balance + " WHERE card_number='" + cardNumber + "'"); stmt.close(); connection.close(); } catch (Exception e) { System.out.println(e); } System.out.println("You have withdrawn " + amount + ". Your new balance is " + balance + "."); } else { System.out.println("Insufficient funds. Your balance is " + balance + "."); } } else { System.out.println("Please insert your card and enter your PIN."); } } } ``` 在ATM类中,我们定义了以下方法: - insertCard:插入银行卡,并验证密码; - ejectCard:退卡; - validatePin:验证密码是否正确; - checkBalance:查询余额; - withdraw:取款。 在validatePin方法中,我们通过JDBC连接到MySQL数据库,根据卡号从accounts表中查询密码和余额。如果密码正确,将isPinValid设置为true,并将余额设置为balance。 在withdraw方法中,我们首先检查卡是否插入并且密码是否正确。如果是,则检查余额是否足够取款。如果足够,则将余额减去取款金额,并将新的余额更新到数据库中。 下面是一个简单的测试程序,它创建一个ATM对象并模拟了一些操作: ``` import java.util.Scanner; public class TestATM { public static void main(String[] args) { ATM atm = new ATM(); Scanner scanner = new Scanner(System.in); System.out.println("Welcome to the ATM!"); System.out.println("Please insert your card."); System.out.print("Enter card number: "); String cardNumber = scanner.nextLine(); System.out.print("Enter PIN: "); int cardPin = scanner.nextInt(); atm.insertCard(cardNumber, cardPin); while (true) { System.out.println("What would you like to do?"); System.out.println("1. Check balance"); System.out.println("2. Withdraw"); System.out.println("3. Eject card"); int choice = scanner.nextInt(); switch (choice) { case 1: atm.checkBalance(); break; case 2: System.out.print("Enter amount to withdraw: "); double amount = scanner.nextDouble(); atm.withdraw(amount); break; case 3: atm.ejectCard(); System.out.println("Thank you for using the ATM!"); System.exit(0); default: System.out.println("Invalid choice. Please try again."); break; } } } } ``` 这个程序模拟了一个ATM的基本功能,包括插卡、验证密码、查询余额和取款。当用户选择退出时,程序将退卡并结束。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZZDT0917

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值