基于JAVA语言实现银行简单ATM应用,通过console输入输出的行式模拟

声明:这里只是用java基础知识来实现,不涉及设计模式。吐舌头

首先分析ATM的功能:余额查询、存款、取款、转账、修改密码、退出。这些都是我们平时操作ATM时比较深刻的。

所以我们可以根据功能来创建方法。然后界面调用即可。源码如下:

package online.shixun.project;


import java.text.SimpleDateFormat;
import java.util.Scanner;
/**
 * @author kent
 * 基于JAVA语言实现银行ATM应用,通过console输入输出的行式模拟
 *
 */
public class ATMSystem {
    //利用二维数组来存储账户信息
    private static String[][] accounts = {{"heecoo","123456","1000"},{"kyrie","112233","800"}};
    //功能操作数组
    private static String[] menus = {"1.余额查询","2.存款","3.取款","4.转账","5.修改密码","0.退出"};
    private static Scanner input = new Scanner(System.in);
    //界面开始
    public static void main(String[] args) {
       //初始化账户信息
        initAccounts();

        //显示登录界面
        welcome();
        //系统登录,登陆成功后返回账户索引ID
        int accountIndex = login();
        //登录成功
        if (accountIndex != -1){
            while(true){
                printMenu();
                int menuId = input.nextInt();
                switch (menuId){
                    case 1:
                        queryBalance(accountIndex);
                        break;
                    case 2:
                        deposit(accountIndex);
                        break;
                    case 3:
                        withdraw(accountIndex);
                        break;
                    case 4:
                        int index = transfer(accountIndex);
                        queryBalance(index);
                        break;
                    case 5:
                        changePassword(accountIndex);
                        break;
                    case 0:
                        System.out.println("系统退出成功!");
                        System.exit(0);
                        default:
                            System.out.println("非法操作");
                            break;
                }
            }
        }
    }

//功能实现方法
    //修改密码
    private static void changePassword(int accountIndex) {
        System.out.println("请输入您需要设置的密码:");
        String passwd1 = input.next();
        System.out.println("请再输入一次:");
        String passwd2 = input.next();
        if(passwd1.equals(passwd2)){
            System.out.println("密码修改成功!!");
            accounts[accountIndex][2]=passwd1;
        }else {
            System.out.println("您两次输入的密码不一致!请重新操作!");
            changePassword(accountIndex);
        }
    }


    //登录初始界面
    private static void welcome() {
        System.out.println("-----------------------------------------");
        System.out.println("*******欢迎来到深圳银行********");
        System.out.println("*******请按照菜单进行操作*******");
        System.out.println("-----------------------------------------");

    }

    private static void initAccounts() {
        System.out.println("开始初始化.....请稍等...");

    }

    //登录界面
    private static int login() {
        //int loginAcountsCount = 0;
        int loginPasswdCount = 0;
        int valueOfReturn=-1;
        int loopNumber = 1;
        int index = 0;
        System.out.println("请输入账户名:");
        String acountsName = input.next();
        for (int i=0;i<accounts.length;i++){
            if (accounts[i][0].equals(acountsName)){
                index = i;
            }
        }
        while(loopNumber==1){
            System.out.println("请输入密码:");
            if (accounts[index][1].equals(input.next())){
                System.out.println("登录成功!");
                System.out.println("当前用户:"+acountsName);
                SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                System.out.println(dateFormat.format(System.currentTimeMillis()));
                System.out.println("*********************************************");
                valueOfReturn = index;
                loopNumber=-1;
            }else{
                loginPasswdCount++;
                if (loginPasswdCount >= 5){
                    System.out.println("对不起,您已经尝试了5次密码输入." +
                            "您的账户已经被冻结了。" +
                            "不能操作了," +
                            "请到柜台办理密码更改业务!");
                    loopNumber=-1;
                    valueOfReturn=-1;
                }else{
                    System.out.println("密码错误!!" +
                            "您还有"+
                            (5-loginPasswdCount)+
                            "次机会输入," +
                            "请确保自己的输入!");
                    continue;
                }
            }
        }
        //System.out.println(valueOfReturn);
        return valueOfReturn;
    }

    //显示操作界面
    private static void printMenu() {
        for (int i=0;i<menus.length;i++){
            System.out.println(menus[i]);
        }
    }


    //余额查询
    private static void  queryBalance(int accountIndex) {
        System.out.println(accounts[accountIndex][0]+",您的余额为:");
        System.out.println(accounts[accountIndex][2]);
        System.out.println("*********************************************");

    }

    //存款
    private static void deposit(int accountIndex){
        System.out.println("*********************************************");
        while(true){
            System.out.println("存钱规则:每次存钱不能超过1000,存款必须是100的整数!");
            System.out.println("请整理好您的钞票,放入出钞口!(输入存款金额):");
            int cashCount = input.nextInt();
            if (cashCount<1000&&cashCount%100==0){
                int i =  Integer.parseInt(accounts[accountIndex][2]);
                i+=cashCount;
                accounts[accountIndex][2]=String.valueOf(i);
                System.out.println("存款成功!请确认!");
                System.out.println("*********************************************");
                break;
            }else{
                System.out.println("您的操作不符合规范,请仔细阅读存钱规则!");
                System.out.println("*********************************************");
                continue;
            }
        }
    }

    //取款
    private static void withdraw(int accountIndex){
        System.out.println("*********************************************");
        while(true){
            System.out.println("取钱规则:每次取钱不能超过1000,取款必须是100的整数!确保您的余额是否满足!");
            System.out.println("输入取款金额:");
            int cashCount = input.nextInt();
            int i =  Integer.parseInt(accounts[accountIndex][2]);
//            if (cashCount<1000&&cashCount%100==0&&cashCount < i){
//                i-=cashCount;
//                accounts[accountIndex][2]=String.valueOf(i);
//                System.out.println("请取走钞票!请确认!");
//                break;
//               }
                if (cashCount<1000&&cashCount%100==0&&cashCount > 0){
                    if(cashCount > i){
                        System.out.println("您的账户余额不足!");
                    }else {
                                i-=cashCount;
                                accounts[accountIndex][2]=String.valueOf(i);
                                System.out.println("请取走钞票!请确认!");
                        System.out.println("*********************************************");
                        break;
                    }
                } else{
                System.out.println("您的操作不符合规范,请仔细阅读取钱规则!");
                continue;
            }
        }

    }

    //转账
    private static int transfer(int accountIndex){
        System.out.println("*********************************************");
        System.out.println("请输入对方账户:");
        String theSecondAcount = input.next();
        int index=-1;
        for (int i=0;i<accounts.length;i++){
            if (accounts[i][0].equals(theSecondAcount)){
                index = i;
            }
        }
        if (index == -1){
            System.out.println("该用户不存在!请核对后再操作!");
        }else {
            while(true){
                System.out.println("转账规则:每次转钱不能超过1000,金额必须是100的整数!确保您的余额是否满足!");
                System.out.println("输入转账金额:");
                int cashCount = input.nextInt();
                int i =  Integer.parseInt(accounts[accountIndex][2]);
//            if (cashCount<1000&&cashCount%100==0&&cashCount < i){
//                i-=cashCount;
//                accounts[accountIndex][2]=String.valueOf(i);
//                System.out.println("请取走钞票!请确认!");
//                break;
//               }
                if (cashCount<1000&&cashCount%100==0&&cashCount > 0){
                    if(cashCount > i){
                        System.out.println("您的账户余额不足!");
                    }else {
                        i-=cashCount;
                        accounts[accountIndex][2]=String.valueOf(i);
                        System.out.println("转账成功!请对方账户确认!");
                        System.out.println("*********************************************");
                        int theI= Integer.parseInt(accounts[index][2]);
                        theI+=cashCount;
                        accounts[index][2]=String.valueOf(theI);
                        System.out.println("您的余额为:");
                        queryBalance(accountIndex);
                        System.out.println("*********************************************");
                        break;
                    }
                } else{
                    System.out.println("您的操作不符合规范,请仔细阅读转账规则!");
                    continue;
                }
            }

        }
        return index;
    }

}
Heecoo寄语:编码时不要全部拷贝别人的代码,要去体会别人的编程思路,对于细节不懂,可以稍加参考!


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值