Java_ATM小项目

此项目主要是基础的总结,需要细心细心再细心,写代码之前必须明确自己的需求和主要的逻辑布局,以下是项目的代码块

package ATM;

import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
import java.util.function.DoubleToIntFunction;

public class ATMSystem {
    public static void main(String[] args) {
        //定义账户类
        //定义集合容器,存储银行账户对象
        ArrayList<Account> accounts = new ArrayList<>();
        Scanner sc = new Scanner(System.in);

        //展示系统的首页
        while (true) {
            System.out.println("=========ATM系统==========");
            System.out.println("1.账户登录");
            System.out.println("2.账户开户");
            System.out.println("0.退出");
            System.out.println("请你选择操作:");
            int command = sc.nextInt();
            //对选择的数字进行判断
            switch (command){
                case 0:
                    return;
                case 1:
                    //用户登录
                     login(accounts,sc);   
                    break;
                case 2:
                    //用户账号开户
                    register(accounts,sc);
                    break;
                default:
                    System.out.println("你的输入操作命令有误!!");

            }
        }


    }

    //登录功能
    private static void login(ArrayList<Account> accounts, Scanner sc) {
        System.out.println("=================ATM系统登录============");
        if(accounts.size()==0){
            System.out.println("ATM系统暂无用户,请先创建用户");
            return;//结束当前的方法
        }

        while (true) {
            //正式进入系统
            System.out.println("请你输入登录卡号:");
            String cardId = sc.next();
            Account account = getAccountByCaldId(cardId,accounts);
            if (account!=null){
                while (true) {
                    //卡号存在,用户输入密码,判断密码是否正确
                    System.out.println("请你输入登录密码:");
                    String passWold = sc.next();
                    if(account.getPasswdWord().equals(passWold)){
                        System.out.println("欢迎登录ATM系统~~"+account.getUserName()+"先生/女士");
                        showUserCommand(sc,account,accounts);
                        return;
                    }
                    else {
                        System.out.println("你输入的密码不正确请再次输入~~");
                    }
                }
            }

            else {
                System.out.println("对不起,系统中不存在该系统账户~~");
            }
    }
    }

    //用户操作页面
    private static void showUserCommand(Scanner sc,Account account,ArrayList<Account> accounts) {
        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.退出");
            System.out.println("7.注销账户");
            System.out.println("请选择:功能");
            int command = sc.nextInt();
            switch (command){
                case 1:
                    //查询账户
                    showAccount(account);
                    break;
                case 2:
                    //存款
                    depositMoney(account,sc);
                    break;
                case 3:
                    //取款
                    drawMoney(account,sc);
                    break;
                case 4:
                    //转账
                    transferMoney(account,sc,accounts);
                    break;
                case 5:
                    //修改密码
                    updaePassWold(sc,account);
                    return;
                case 6:
                    //退出
                    System.out.println("欢迎下次登录!!!");
                    //跳出当前方法
                    return;
                case 7:
                    //注销账户
                    boolean flag = deleteAccount(sc,accounts,account);
                    if (flag){
                        return;
                    }else {
                        break;
                    }

                default:
                    System.out.println("你输入的号码有误!!!");
            }
        }


    }

    //销户功能
    private static boolean deleteAccount(Scanner sc, ArrayList<Account> accounts,Account account) {
        System.out.println("您确定需要销毁账户吗?y/n");
        String rs = sc.next();
        if (rs.equals("y")){
            if (account.getMoney()>0){
                System.out.println("账户余额不为0,销户失败!");
                return false;
            }
            else {
                System.out.println("账户销户完成!!!");
                accounts.remove(account);
                return true;

            }

        }
        else {
            System.out.println("好的当前账户保留使用~");
            return false;
        }
    }

    //修改密码
    private static void updaePassWold(Scanner sc, Account account) {
        System.out.println("=============用户密码修改=============");
        while (true) {
            System.out.println("请你输入当前密码");
            String passWold = sc.next();
            if (passWold.equals(account.getPasswdWord())){
                while (true) {
                    System.out.println("请输入新密码:");
                    String newpassWold = sc.next();

                    System.out.println("请确认密码:");
                    String okpassWold = sc.next();

                    if (newpassWold.equals(okpassWold)){
                        account.setPasswdWord(okpassWold);
                        System.out.println("恭喜你修改密码成功~");
                        return;
                    }
                    else {
                        System.out.println("对不起你输入新密码有误!请重新输入~");
                    }
                }
            }
            else {
                System.out.println("你输入的密码不正确!");
            }
        }
    }

    //转账功能
    private static void transferMoney(Account account, Scanner sc, ArrayList<Account> accounts) {
        //不能转账的两个情况
        //1.判断系统是否有两个用户对象
        if (accounts.size()<2){
            System.out.println("当前系统中,不足两个账户,不能使用转账功能!");
            return;
        }
        if (account.getMoney()==0){
            System.out.println("对不起你也没钱,转账失败!!");
            return;
        }

        //开始转账
        while (true) {

            System.out.println("请您输入对方的卡号:");
            String cardId = sc.next();

            //输入的卡号为自己卡号
            if (cardId.equals(account.getCardId())){
                System.out.println("自己不能给自己转账,请输入正确的卡号:");
                //结束档次执行,进入下一次循环
                continue;
            }

            //判断卡号是否存在系统
            Account account1 = getAccountByCaldId(cardId,accounts);
            if (account1 ==null){
                System.out.println("对不起,你输入的这个账号不存在~~");
            }

            else {
                //进行姓氏验证
                String userNname = account.getUserName();//黑马周芷若
                String tip = "*"+userNname.substring(1);
                System.out.println("请你输入["+tip+"]的姓氏");
                //这个账号存在了,继续认证姓氏
                String preName =sc.next();

                //判断是否正确
                if (userNname.startsWith(preName)){
                    //认证通过
                    System.out.println("请你输入转账金额:");
                    double money =sc.nextDouble();

                    //判断转账金额是否足够
                    if (money>account.getMoney()){
                        System.out.println("对不起,您的余额不足!最多可以转账:"+account.getMoney());
                    }

                    else {
                        //进行转账操作
                        account.setMoney(account.getMoney()-money);
                        account1.setMoney(money+account1.getMoney());
                        System.out.println("转账成功,您的余额为:"+account.getMoney());
                        //退出转账代码
                        return;
                    }
                }
                //姓氏验证没有通过
                else {
                    System.out.println("对不起,你输入的信息有误");
                }

            }
        }
    }

    //取钱操作
    private static void drawMoney(Account account, Scanner sc) {
        //1.判断账户是否有100元
        if(account.getMoney()<100){
            System.out.println("对不起当前账户金额不足100,不能取钱");
            return;
        }
        while (true) {
            System.out.println("请你输入取款金额:");
            double money = sc.nextDouble();

            //3.判断输入金额是否符合体现要求和余额要求
            if (money>account.getQuotaMoney()){
                System.out.println("对不起,您当前取款金额超出每次限制!");
            }
            else {
                if (account.getMoney()<money){
                    System.out.println("对不起,你的余额不足!"+account.getMoney());
                }
                else {
                    System.out.println("恭喜你取款成功!");
                    account.setMoney(account.getMoney()-money);
                    showAccount(account);
                    return;

                }
            }
        }
    }

    //存款功能
    private static void depositMoney(Account account, Scanner sc) {
        System.out.println("=============用户存款操作================");
        System.out.println("请你输入存款金额:");
        double money = sc.nextDouble();
        account.setMoney(account.getMoney()+money);
        System.out.println("恭喜你存钱成功~~,当前账户信息如下:");
        showAccount(account);
    }

    //查询账户内容
    private static void showAccount(Account account) {
        System.out.println("=============当前账户信息如下==============");
        System.out.println("账户名称:"+account.getUserName());
        System.out.println("账户号码:"+account.getCardId());
        System.out.println("账户余额:"+account.getMoney());
        System.out.println("账户体现金额:"+account.getQuotaMoney());
    }

    //用户开户功能
    private static void register(ArrayList<Account> accounts,Scanner sc) {
        //1.创建一个账户对象,用于后期封装账户信息
        Account account = new Account();

        //2.录入当前这个账户信息,添加到账户对象中去
        System.out.println("请你输入账户用户名:");
        String userName = sc.next();
        account.setUserName(userName);

        while (true) {
            System.out.println("请你输入账户密码:");
            String passwdWord = sc.next();

            System.out.println("请你确认账户密码:");
            String okpasswdWord = sc.next();
            if (okpasswdWord.equals(passwdWord)){
                account.setPasswdWord(okpasswdWord);
                break;
            }
            else {
                System.out.println("对不起,你二次输入的密码不正确,请重新输入~~");
            }
        }
        System.out.println("请输入账户当次限额:");
        double quotaMoney = sc.nextDouble();
        account.setQuotaMoney(quotaMoney);

        //为账户创建一个8位不重复的卡号
        String cardID = getRandmCardId(accounts);
        account.setCardId(cardID);

        //3.把账户对象添加到账户集合中去
        accounts.add(account);
        System.out.println("恭喜你,"+userName+"先生/女士,你开户成功,你的卡号是:"+cardID+",请您妥善保管卡号~");

    }

    //返回一个8位不重复的卡号
    private static String getRandmCardId(ArrayList<Account> accounts) {

        while (true) {
            String cardId = "";
            Random r =new Random();
            for (int i = 0; i < 8; i++) {
                cardId+=r.nextInt(10);
            }
            //判断创建的卡号是否已经在集合中存在
            Account acc = getAccountByCaldId(cardId,accounts);
            if(acc ==null){
                return cardId;
            }
        }

    }

    //查找集合中是否有该账户id的对象,返回对象
    private static Account getAccountByCaldId(String cardId,ArrayList<Account> accounts){
        for (int i = 0; i <accounts.size() ; i++) {
            if(accounts.get(i).getCardId().equals(cardId)){
                return accounts.get(i);
            }
        }
        //没有账户id
        return null;
    }





}

 Account -class

package ATM;

public class Account {
    //定义成员变量

    private String cardId;//账号
    private String userName;//用户名
    private String passwdWord;//用户密码
    private double money;//账户余额
    private double quotaMoney;//每次体现金额

    public Account() {
    }

    public Account(String cardId, String userName, String passwdWord, double money, double quotaMoney) {
        this.cardId = cardId;
        this.userName = userName;
        this.passwdWord = passwdWord;
        this.money = money;
        this.quotaMoney = quotaMoney;
    }

    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 String getPasswdWord() {
        return passwdWord;
    }

    public void setPasswdWord(String passwdWord) {
        this.passwdWord = passwdWord;
    }

    public double getMoney() {
        return money;
    }

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

    public double getQuotaMoney() {
        return quotaMoney;
    }

    public void setQuotaMoney(double quotaMoney) {
        this.quotaMoney = quotaMoney;
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值