课堂老师所写的ATM小程序

package ATM;
import javax.swing.JOptionPane;
import java.util.Scanner;

public class day7ATMBat {
    public static void main(String[] args) {
        String[] user = new String[2];//保存用户名
        String[] password = new String[2];//保存密码
        double[] amount = new double[2];//保存账户余额
        loginSelect(user,password,amount);//选择菜单
    }
    
    static void loginSelect(String[] user,String[] password,double[] amount){
        System.out.println("#####欢迎进入ATM取款机#####");
        int n = 1;
        
        while (true){
            System.out.println("请选择菜单:\nA.开户\nB.登录\nC.退出\nD.修改密码");
            Scanner sc = new Scanner(System.in);
            String number = sc.next();
            char opt = number.toCharArray()[0];
            
            switch (opt){
                case 'A':
                    openAnAccount(user,password);
                    loginSelect(user,password,amount);
                    break;
                case 'B':
                    int index = login(user,password);
                    if (index != -1)
                        select(user,password,amount,index);
                    else{
                        n++;
                        if (n == 3)
                            break;
                    }
                    break;
                case 'C':
                    System.out.println("退出系统");
                    System.exit(-1);
                    break;
                case 'D':
                    updatePassword(user,password);
                    System.out.println("恭喜你修改密码成功!");
                    break;
                default:
                    System.out.println("输入有误,请重新选择");
                    break;
            }
        }
    }
    
    static void select(String[] user,String[] password,double[] amount,int index){
        while (true){
            System.out.println("######您好:"+user[index]+"#######");
            System.out.println("请选择菜单:\nA.存款\nB.取款\nC.转账\nD.查询账户余额\nE.返回主菜单");
            
            Scanner sc = new Scanner(System.in);
            char opt = sc.next().toCharArray()[0];
            switch(opt){
                case 'A':
                    saveMoney(user,amount,index);
                    break;
                case 'B':
                    getMoney(user,amount,index);
                    break;
                case 'C':
                    transferAccounts(user,amount,index);
                    break;
                case 'D':
                    queryMoney(user,amount,index);
                    break;
                case 'E':
                    loginSelect(user,password,amount);
                    break;
                default:
                    System.out.println("操作有误重新输入");
                    break;        
            }
        }
    }
    
    static int login(String[] user,String[] password){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入用户名:");
        String userName = sc.next();
        System.out.println("请输入用户密码:");
        String pwd = sc.next();
        
        int index = -1;
        for (int i=0; i<user.length; i++){
            if (user[i] == null){
                System.out.println("你还没有开户");
                loginSelect(user,password,null);
                return -1;
            }else{
                if (user[i].equals(userName)){
                    index = i;
                    break;
                }
            }
        }
        
        if (password[index].equals(pwd))
            return index;
        else
            System.out.println("输入有误");
        return -1;
    }
    
    static void openAnAccount(String[] user,String[] password){
        int index = -1;
        for (int i=0; i<user.length; i++){
            if (user[i] == null){
                index = i;
                break;
            }
        }
        if (index == -1){
            System.out.println("用户已满,请清理");
            return;
        }
        
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入用户名:");
        String loginName = sc.next();
        user[index] = loginName;
        System.out.println("请输入用户密码:");
        String pwd = sc.next();
        password[index] = pwd;
    }
    
    static void getMoney(String[] user,double[] amount,int index){
        System.out.println("请选择取款金额:\nA.100\nB.200\nC.300\nD.500\nE.1000\nF.2000\nG.其他金额");
        Scanner sc = new Scanner(System.in);
        String money = sc.next();
        char opt = money.toCharArray()[0];
        double number = 0.0;
        
        switch(opt){
            case 'A':number = 100;break;
            case 'B':number = 200;break;
            case 'C':number = 300;break;
            case 'D':number = 500;break;
            case 'E':number = 1000;break;
            case 'F':number = 2000;break;
            case 'G':
                System.out.println("请输入其他取款金额:");
                number = sc.nextDouble();
                break;
            default:
                System.out.println("你输入的金额有误");
                break;        
        }
        
        if (!checkMoney(number)){return;}
        if (amount[index] < number){System.out.println("账户余额不足");return;}
        amount[index] -= number;
        System.out.println("取款成功,余额为:"+amount[index]);
        return;
    }
    
    static boolean checkMoney(double number){
        if (number < 100){
            System.out.println("取款失败");
            return false;
        }
        if (number%100 != 0){
            System.out.println("取款金额只能是一百的整数");
            return false;
        }
        return true;
    }
    
    static void saveMoney(String[] user, double[] amount, int index) {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入存款金额:");
        double number = sc.nextDouble();
        // 检查存款的金额校验
        if (!checkMoney(number)) {
            return;
        }
        amount[index] = amount[index] + number;
        System.out.println("存款成功,余额为:" + amount[index]);// 显示余额
        return;
    }

    static void queryMoney(String[] user, double[] amount, int index) {
        System.out.println(user[index] + "您的余额为:" + amount[index]);
    }
    
    static void transferAccounts(String[] user, double[] amount,int index){
        int targetIndex = -1;
        for (int i=0; i<3; i++) {
            targetIndex = ifHaveUser(user);
            if (targetIndex != -1) {
                break;
            } else {// 没找到相应的用户
                System.out.println("第" + (i + 1) + "次,您输入的用户不存在!");
            }
        }

        if (targetIndex == -1) {
            System.out.println("超过3次返回上级菜单!");
            return;
        }

        if (targetIndex == index) {// 如果下标相等提示您不能给自己转账
            System.out.println("您不能给自己转账");
        } else {
            for (int i=0; i<amount.length; i++) {
                Scanner sc = new Scanner(System.in);
                System.out.println("输入您的转账金额:");
                double tranAmount = sc.nextDouble();

                // 检查存款的金额校验
                if (!checkMoney(tranAmount)) {
                    return;
                }
                if (tranAmount > amount[index]) {// 如果转账金额大于,账户余额提示
                    System.out.println("您余额不足!");
                    break;
                } else {
                    amount[index] = amount[index] - tranAmount;
                    amount[targetIndex] = tranAmount;
                    break;
                }
            }
        }
        System.out.println("您的余额为:" + amount[index]);
    }

    static int ifHaveUser(String[] user) {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入转账用户:");
        String userName = sc.next();
        int index = -1;
        for (int i=0; i<user.length; i++) {
            if (userName.equals(user[i])) {
                index = i;
            }
        }
        return index;
    }

    static void updatePassword(String[] user, String[] password) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入用户名:");
        String userName = input.nextLine();
        while (true) {
            int index = -1;
            String oldPwd = null;
            for (int i=0; i<user.length; i++) {//首先要找到当前用户
                if (userName.equals(user[i])) {
                    index = i;
                    oldPwd = password[i];
                }
            }
            if(index == -1) {
                System.out.println("还没有开户,请开户后再来修改密码!");
                return ;
            }
            System.out.println("请输入旧密码:");
            String inputOldPwd = input.nextLine();
            System.out.println("请输入新密码:");
            String newpwd = input.nextLine();
            System.out.println("请输入确认密码:");
            String confimpwd = input.nextLine();
            
            if(!inputOldPwd.equals(oldPwd)) {//如果输入的旧密码不等于新密码,则重新输入
                System.out.println("您输入的旧密码不正确!");
                continue;
            }
            if(!newpwd.equals(confimpwd)) {//新密码与确认密码不匹配
                System.out.println("新密码与确认密码不匹配!");
                continue;
            }
            password[index] = newpwd;
            System.out.println("密码修改成功!");
            break;
        }
    }
}

posted @ 2017-03-07 23:36  沉迷学习,日渐消瘦  阅读(123)  评论(0编辑  收藏  举报