案例 ATM项目_用户名

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

案例 ATM项目_用户名_02

2.注册账号。包括账户名。密码,性别,取现额度,随后系统自动生成卡号,并验证卡号是唯一的。

3.用户登录功能,如果没有账户,需要先注册,验证账号密码是否正确。

4.设计用户操作页界面,查询界面,退出界面。

5.存款与取款。更新余额,如果取款金额大于限额或者大于余额,则失败。

6.销户功能,二次确认,保证账户中没有钱才能销户,返回欢迎界面。

ATM操作类

package com.lzk.test;

import java.util.ArrayList;
import java.util.Scanner;

public class ATM {
    private Account loginAcc;
    private ArrayList<Account> accounts = new ArrayList<Account>();
    private Scanner sc = new Scanner(System.in);

    //操作系统
    public void start() {
        while (true) {
            System.out.println("==欢迎进入银行操作系统==");
            System.out.println("1.用户登录");
            System.out.println("2.用户注册");
            System.out.println("请选择:");
            int choice = sc.nextInt();
            switch (choice) {
                case 1:
                    login();
                    break;
                case 2:
                    //register();
                    creatAccount();
                    break;
                default:
                    System.out.println("输入错误,请重新输入!");
                    break;
            }
        }
    }

    //创建账户
    private void creatAccount() {
        Account account = new Account();
        System.out.println("请输入用户名:");
        String userName = sc.next();
        account.setUserName(userName);
        while (true) {
            System.out.println("请输入密码:");
            String password = sc.next();
            System.out.println("请再次输入密码:");
            String SecondPassword = sc.next();
            if (SecondPassword.equals(password)) {
                System.out.println("两次密码一致");
                account.setPassword(password);
                break;
            } else {
                System.out.println("两次密码不一致,请重新输入!");
            }
        }
//        while (true) {
//            System.out.println("请输入性别:");
//            char sex = sc.next().charAt(0);//返回字符的第一个字符
//            if (sex == '男' || sex == '女') {
//                account.setSex(sex);
//                break;
//            } else {
//                System.out.println("您输入的性别有误,请重新输入。");
//            }
//        }
        System.out.println("请输入你的取现额度:");
        double limit = sc.nextDouble();
        account.setLimit(limit);
        String cardID = createCardID();
        account.setCardID(cardID);
        System.out.println("您的卡号为:" + cardID);
        accounts.add(account);
        System.out.println("恭喜您注册成功!");
    }

    ////生成随机卡号,且不能与系统中的其他卡号重复
    private String createCardID() {
        String cardID = "";
        for (int i = 0; i < 10; i++) {
            cardID += (int) (Math.random() * 10);//Math.random() 生成一个0到1之间的随机浮点数。
        }
        if (accounts.contains(cardID)) {
            createCardID();
        } else {
            return cardID;
        }
        return cardID;
    }

    //登录
    private void login() {
        System.out.println("==用户登录==");
        if (accounts.size() == 0) {
            System.out.println("暂无用户,请注册!");
            return;
        }
        while (true) {
            System.out.println("请输入用户卡号:");
            String CardID = sc.next();


            System.out.println("请输入密码:");
            String password = sc.next();
            for (Account account : accounts) {
                if (account.getCardID().equals(CardID) && account.getPassword().equals(password)) {
                    loginAcc = account;
                    System.out.println("登录成功!");
                    ShowUserCommand();
                    return;//跳出login方法,回到start

                } else {
                    System.out.println("用户名或密码错误,请重新输入!");

                }

            }
        }
    }


    //登录成功界面
    private void ShowUserCommand() {
        while (true) {
            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 choice = sc.nextInt();
            switch (choice) {
                case 1:
                    ShowUserAccount();    //查看账户
                    break;
                case 2:
                    depositMoney();    //存款
                    break;
                case 3:
                    drawMoney();    //取款
                    break;
                case 4:
                    transferMoney();    //转账
                    break;
                case 5:
                    changePassword();    //密码修改
                    break;

                case 6:
                    System.out.println("欢迎下次使用!");
                    return;
                case 7:
                    if (deleteAccount()) {
                        System.out.println("注销成功!");
                        return;
                    }//注销
                    break;
                default:
                    System.out.println("输入错误,请重新输入!");
                    break;
            }
        }
    }

    private void changePassword() {
        System.out.println("==密码修改==");
        System.out.println("请输入原密码:");
        String oldPassword = sc.next();
        if (!loginAcc.getPassword().equals(oldPassword)) {
            System.out.println("原密码错误,请重新输入!");
            changePassword();
        }
        while (true) {
            System.out.println("请输入新密码:");
            String newPassword = sc.next();
            System.out.println("请再次输入新密码:");
            String SecondPassword = sc.next();
            if (SecondPassword.equals(newPassword)) {
                loginAcc.setPassword(newPassword);
                System.out.println("密码修改成功!");
                return;
            } else {
                System.out.println("两次密码不一致,请重新输入!");
            }
        }
    }

    private boolean deleteAccount() {
        System.out.println("==注销==");
        System.out.println("请问是否确认注销?(Y/N)");
        String choice = sc.next();
        if (choice.equals("Y")) {
            accounts.remove(loginAcc);
            if (loginAcc.getMoney() != 0) {
                System.out.println("账户余额不为0,无法注销!");
                return false;
            } else {
                accounts.remove(loginAcc);
                System.out.println("注销成功!");
                return true;
            }

        } else {
            System.out.println("注销失败!");
            return false;
        }
    }

        private void transferMoney () {
            System.out.println("==转账==");
            if (accounts.size() < 2) {
                System.out.println("转账失败,账户数量不足!");
                return;
            }
            if (loginAcc.getMoney() == 0) {
                System.out.println("转账失败,账户余额不足!");
                return;
            }
            while (true) {
                System.out.println("请输入转账卡号:");
                String CardID = sc.next();
                Account targetAcc = null;
                for (Account account : accounts) {
                    if (account.getCardID().equals(CardID)) {
                        targetAcc = account;
                        break;
                    }
                }
                if (targetAcc == null) {
                    System.out.println("转账卡号不存在,请重新输入!");
                } else if (targetAcc.equals(loginAcc)) {
                    System.out.println("不能转账给自己!");

                } else {
                    String name = "*" + targetAcc.getUserName().substring(1);
                    System.out.println("被转账人的姓氏为:" + name);
                    String preName = sc.next();
                    if (targetAcc.getUserName().startsWith(preName)) {
                        System.out.println("请输入转账金额:");
                        double money = sc.nextDouble();
                        if (loginAcc.getMoney() < money) {
                            System.out.println("余额不足,请重新输入!您的余额为:" + loginAcc.getMoney());
                            return;
                        }
                        loginAcc.setMoney(loginAcc.getMoney() - money);
                        targetAcc.setMoney(targetAcc.getMoney() + money);
                        System.out.println("转账成功!");
                        return;
                    } else {
                        System.out.println("姓氏不匹配,请重新输入!");
                        return;
                    }

                }
            }
        }

        private void drawMoney () {
            System.out.println("==取款==");
            System.out.println("请输入取款金额:");
            double money = sc.nextDouble();
            if (loginAcc.getMoney() < money || money > loginAcc.getLimit()) {
                System.out.println("余额不足或取款金额超过取现额度,请重新输入!");
                return;
            }
            loginAcc.setMoney(loginAcc.getMoney() - money);
            System.out.println("取款成功!");
            System.out.println("当前余额:" + loginAcc.getMoney());
        }

        private void depositMoney () {
            System.out.println("==存款==");
            System.out.println("请输入存款金额:");
            double money = sc.nextDouble();
            loginAcc.setMoney(loginAcc.getMoney() + money);
            System.out.println("存款成功!");
            System.out.println("当前余额:" + loginAcc.getMoney());

        }

        //case1:查看账户
        private void ShowUserAccount () {
            System.out.println("==查看账户==");
            System.out.println("卡号:" + loginAcc.getCardID());
            System.out.println("用户名:" + loginAcc.getUserName());
            System.out.println("余额:" + loginAcc.getMoney());
            System.out.println("取现额度:" + loginAcc.getLimit());
            System.out.println("性别:" + loginAcc.getSex());
        }
    }

Account构造器

package com.lzk.test;

public class Account {
    private String cardID;
    private String userName;
    private char sex;
    private String password;

    public Account() {
    }

    private double money;
    private double limit;// 限额



    public String getCardID() {
        return cardID;
    }

    public void setCardID(String cardID) {
        this.cardID = cardID;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public char getSex() {
        return sex;
    }

    public void setSex(char sex) {
        this.sex = sex;
    }

    public String getPassword() {
        return password;
    }

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

    public double getMoney() {
        return money;
    }

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

    public double getLimit() {
        return limit;
    }

    public void setLimit(double limit) {
        this.limit = limit;
    }



    public Account(String cardID, String userName, char sex, String password, double money, double limit) {
        this.cardID = cardID;
        this.userName = userName;
        this.sex = sex;
        this.password = password;
        this.money = money;
        this.limit = limit;
    }
}

start启动器

package com.lzk.test;


import java.util.Random;
import java.util.Scanner;

public  class test {
    public static void main(String[] args) {
        ATM atm = new ATM();
        atm.start();

    }

}