用Java简单实现ATM机主要功能

项目介绍

基于大家使用银行卡在ATM机取款操作,进行相对应ATM机操作流程的实现。

项目功能

  1. 注册功能:
    根据用户输入的账号密码申请一张银行卡,存储在银行卡类型的数组中(一张银行卡对应一个有效用户)。
  2. 登录功能:
    登陆失败:重新登陆 或 注册
    登陆成功:对登陆的这张银行卡可以进行一下操作:存款、取款、查余额、转账、退卡功能。

项目知识点

  1. java基本语法的使用
  2. 一维数组
  3. 函数调用,封装
  4. Java类和对象

项目实现思路

  1. 设计并实现系统的相关打印界面:注册、登陆、登陆后操作
  2. 登录系统必须输入正确的卡号和密码,输入错误时提示用户重新登陆。
  3. 实现取款、存款、查余额等功能。

难点

对面向对象编程的理解,以及静态变量和实例变量的理解。
二者区别:
实例变量:跟对象有关,一个对象一份实例变量
静态变量:跟对象无关,一个类一份静态变量

源代码

1.ATM类

public class ATM {

    private static boolean flag = true;
    private int id;
    private int passwd;

    private BankCard bankCard;

    private static Bank bank;
    /* 不写跳1空异常*/
    public ATM(){
        bank = new Bank();
    }

    Scanner  scanner = new Scanner(System.in);


    public void start(){
        int chioce;

        while (flag == true){
            System.out.println("请选择: 1.注册 2.登录 3.退出");
            chioce = scanner.nextInt();
            switch(chioce){
                case 1:

                    System.out.println("请输入账号和密码:");
                    id = scanner.nextInt();
                    passwd = scanner.nextInt();

                    register(id,passwd);

                    break;
                case 2:

                    System.out.println("请输入账号和密码:");
                    id = scanner.nextInt();
                    passwd = scanner.nextInt();

                    login(id,passwd);

                    break;
                case 3:

                    flag = false;
                    break;
            }
        }

    }

    //注册
    private void register(int id, int passwd) {

        //检查此卡号是否存在
        if(bank.contains(id)){
            System.out.println("此卡号已存在,注册失败!");
        }
        else{
            bankCard = new BankCard(id,passwd);
            bank.add(bankCard);
            System.out.println("注册成功!");

        }
    }

    //登录
    private void login(int id, int passwd) {

        //检查此卡号是否存在
        if(bank.login(id,passwd)){
            System.out.println("登陆成功!");
            //登陆成功 返回卡的信息
            bankCard = bank.getcard(id,passwd);
            //调用 ATM功能函数
            function(bankCard);

        }else{
            System.out.println("登陆失败! 请重新登录");
        }
    }

    //ATM功能函数
    private void function(BankCard bankCard) {
        double money;
        int count = 0;

        int chioce;
        while (flag == true){
            System.out.println("请选择: 1.存款 2.取款 3.查余额 4.转账  5.退卡");
            chioce = scanner.nextInt();
            switch(chioce){
                case 1:
                    System.out.println("请输入存款金额:");
                    money = scanner.nextDouble();
                    bank.setMoney(bankCard,money);
                    System.out.println("存款成功!");

                    break;
                case 2:
                    System.out.println("请输入取款金额:");
                    money = scanner.nextDouble();
                    if(bank.getMoney(bankCard,money)){
                        System.out.println("取款成功!");
                    }else{
                        System.out.println("余额不足取款失败!");
                    }

                    break;
                case 3:

                    System.out.println("余额为:"+bank.getBalance(bankCard));

                    break;
                case 4:

                    System.out.println("请输入转账的账号:");
                    while(flag){
                        count = scanner.nextInt();
                        //检查此卡号是否存在
                        if(!bank.contains(count)){
                            System.out.println("此卡号不存在,请重新输入:");
                        } else{
                            flag =false;
                        }
                    }
                    System.out.println("请输入转账的金额:");
                    money = scanner.nextDouble();
                    if(bank.transfer(bankCard,bank.getcard1(count),money)){
                        System.out.println("转账成功!");
                    }else{
                        System.out.println("余额不足,转账失败!");
                    }

                    break;
                    //莫名结束??
                case 5:

                    flag = false;
                    break;
            }

        }



    }





}

2.Bank类

public class Bank {
    private BankCard[] cards;
    private static int cardsnum = 0;
//  private static double cardsmoney = 0.0;
    private static final int INITSIZE = 10;

    public Bank(){
        cards = new BankCard[INITSIZE];
    }



    //查询卡是否存在
    public boolean contains(int id) {
        for(int i=0;i<cardsnum;i++){

            if (cards[i].getId() == id){
                return true;
            }
        }
        return false;
    }

    //登录
    public boolean login(int id,int passwd) {
        for(int i=0;i<cardsnum;i++){

            if (cards[i].getId() == id && cards[i].getPasswd() == passwd){
                return true;
            }
        }
        return false;
    }

    //添加一张银行卡
    public void add(BankCard card) {
        //判断存卡的数组是否已满
        if(cards.length == cardsnum){
            //数组已满执行扩容操作
            cards = Arrays.copyOf(cards,cards.length+(cards.length>>1));
        }

        //银行卡存入银行卡类型数组
        cards[cardsnum] = card;
        //银行卡数+1
        cardsnum++;


    }
    //输入卡号,密码返回银行卡
    public BankCard getcard(int id, int passwd){

        for(int i=0;i<cardsnum;i++){
            if (cards[i].getId() == id && cards[i].getPasswd() == passwd){
                return cards[i];
            }
        }

        return null;
    }

    //存款
    public boolean setMoney(BankCard card,double money){
        return card.setMoney(money);

    }

    //取款
    public boolean getMoney(BankCard card,double money){
        return card.getMoney(money);
    }

    //查余额
    public double getBalance(BankCard card){

        return card.getBalance();
    }

    //转账
    public boolean transfer(BankCard card, BankCard tempcard, double money){
        if( card.getMoney(money)){
            tempcard.setMoney(money);
            return true;
        }

        return false;
    }

    //输入卡号,密码返回银行卡
    public BankCard getcard1(int id){

        for(int i=0;i<cardsnum;i++){
            if (cards[i].getId() == id){
                return cards[i];
            }
        }

        return null;
    }

}

3.BankCard类

public class BankCard {
    private int id;
    private int passwd;
    private double money;


    public BankCard(int id, int passwd) {
        this.id = id;
        this.passwd = passwd;
    }


    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getPasswd() {
        return passwd;
    }

    public void setPasswd(int passwd) {
        this.passwd = passwd;
    }

    public boolean getMoney(double money) {
        if(this.money>=money){
            this.money -= money;
            return true;
        }else{
            return false;
        }
    }

    public boolean setMoney(double deposit) {
        this.money += deposit;
        return true;
    }

    public double getBalance(){
        return this.money;
    }



}
  • 11
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
实现ATM功能需要以下步骤: 1. 创建一个用户类,包含用户名、密码、余额等信息。 2. 创建一个ATM类,包含以下功能: a. 登录功能:输入用户名和密码,验证用户信息是否正确。 b. 查询余额功能:查询当前用户的余额。 c. 存款功能:输入存款金额,将金额加入当前用户的余额中。 d. 取款功能:输入取款金额,将金额从当前用户的余额中减去。 e. 转账功能:输入转账金额和对方账户名,将金额从当前用户的余额中减去,加入对方账户的余额中。 f. 修改密码功能:输入原密码和新密码,修改当前用户的密码。 g. 退出功能:退出ATM操作。 下面是一个简单Java代码实现: ```java import java.util.Scanner; public class ATM { private static User[] users = new User[10]; // 最多支持10个用户 private static int userCount = 0; // 用户数 private static User currentUser = null; // 当前用户 public static void main(String[] args) { initUsers(); // 初始化用户数据 System.out.println("欢迎使用ATM!"); login(); // 登录 System.out.println("登录成功,当前余额:" + currentUser.getBalance()); Scanner scanner = new Scanner(System.in); 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. 退出"); int choice = scanner.nextInt(); if (choice == 1) { queryBalance(); } else if (choice == 2) { deposit(); } else if (choice == 3) { withdraw(); } else if (choice == 4) { transfer(); } else if (choice == 5) { changePassword(); } else if (choice == 6) { System.out.println("退出成功,欢迎下次使用!"); break; } else { System.out.println("请选择正确的操作!"); } } } // 初始化用户数据 private static void initUsers() { users[0] = new User("张三", "123456", 1000); users[1] = new User("李四", "123456", 2000); userCount = 2; } // 登录 private static void login() { Scanner scanner = new Scanner(System.in); while (true) { System.out.println("请输入用户名:"); String username = scanner.nextLine(); System.out.println("请输入密码:"); String password = scanner.nextLine(); for (int i = 0; i < userCount; i++) { if (users[i].getUsername().equals(username) && users[i].getPassword().equals(password)) { currentUser = users[i]; return; } } System.out.println("用户名或密码错误,请重新输入!"); } } // 查询余额 private static void queryBalance() { System.out.println("当前余额:" + currentUser.getBalance()); } // 存款 private static void deposit() { Scanner scanner = new Scanner(System.in); System.out.println("请输入存款金额:"); double amount = scanner.nextDouble(); if (amount < 0) { System.out.println("存款金额不能为负数!"); return; } currentUser.setBalance(currentUser.getBalance() + amount); System.out.println("存款成功,当前余额:" + currentUser.getBalance()); } // 取款 private static void withdraw() { Scanner scanner = new Scanner(System.in); System.out.println("请输入取款金额:"); double amount = scanner.nextDouble(); if (amount < 0) { System.out.println("取款金额不能为负数!"); return; } if (amount > currentUser.getBalance()) { System.out.println("余额不足!"); return; } currentUser.setBalance(currentUser.getBalance() - amount); System.out.println("取款成功,当前余额:" + currentUser.getBalance()); } // 转账 private static void transfer() { Scanner scanner = new Scanner(System.in); System.out.println("请输入转账金额:"); double amount = scanner.nextDouble(); if (amount < 0) { System.out.println("转账金额不能为负数!"); return; } if (amount > currentUser.getBalance()) { System.out.println("余额不足!"); return; } System.out.println("请输入对方账户名:"); String username = scanner.nextLine(); User otherUser = null; for (int i = 0; i < userCount; i++) { if (users[i].getUsername().equals(username)) { otherUser = users[i]; break; } } if (otherUser == null) { System.out.println("对方账户不存在!"); return; } currentUser.setBalance(currentUser.getBalance() - amount); otherUser.setBalance(otherUser.getBalance() + amount); System.out.println("转账成功,当前余额:" + currentUser.getBalance()); } // 修改密码 private static void changePassword() { Scanner scanner = new Scanner(System.in); System.out.println("请输入原密码:"); String oldPassword = scanner.nextLine(); if (!currentUser.getPassword().equals(oldPassword)) { System.out.println("原密码错误!"); return; } System.out.println("请输入新密码:"); String newPassword = scanner.nextLine(); currentUser.setPassword(newPassword); System.out.println("修改密码成功!"); } } class User { private String username; // 用户名 private String password; // 密码 private double balance; // 余额 public User(String username, String password, double balance) { this.username = username; this.password = password; this.balance = balance; } public String getUsername() { return username; } public String getPassword() { return password; } public double getBalance() { return balance; } public void setPassword(String password) { this.password = password; } public void setBalance(double balance) { this.balance = balance; } } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值