Java ATM项目——开户

项目来源:黑马程序员

ATM系统-01、项目介绍、功能演示_哔哩哔哩_bilibili

本功能目前只实现账户的开户

新建一个Accout类

package ATM;

/**
 * @author new wei
 * @date 2022/12/4 17:44
 */
public class Account {
    private String cardId;         //银行卡号
    private String userName;       //用户名
    private String passWord;       //账户密码
    private double money;          //账面金额
    private double quoteMoney;     //取款限额值

    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 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 getQuoteMoney() {
        return quoteMoney;
    }

    public void setQuoteMoney(double quoteMoney) {
        this.quoteMoney = quoteMoney;
    }
}

ATM系统

package ATM;

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

/**
 * @author new wei
 * @date 2022/12/4 17:47
 */
public class ATMSystem {
    public static void main(String[] args) {
        ArrayList<Account> accounts = new ArrayList<>();
        // 菜单界面
        System.out.println("======欢迎使用天地银行ATM系统======");
        System.out.println("1、账户登录");
        System.out.println("2、账户开户");

        Scanner sc = new Scanner(System.in);
        System.out.println("请选择您的操作");
        int command = sc.nextInt();

        switch (command){
            case 1:
                //账户登录
                break;
            case 2:
                //账户开户
                register(accounts,sc);
                break;
            default:
                System.out.println("你输入的操作不存在");
        }
    }

    /**
     *用户开户功能的实现
     * @param accounts 接收的账户集合
     */
    private static void register(ArrayList<Account> accounts, Scanner sc) {
        System.out.println("======系统开户操作======");
        //1、创建一个账户对象,用于后期封装账户信息
        Account account = new Account();

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

        while(true) {
            System.out.println("请输入账户密码");
            String password = sc.next();
            System.out.println("请再次确认账户密码");
            String okpassword = sc.next();
            if (password.equals(okpassword)) {
                //密码确认成功
                account.setPassWord(okpassword);
                break;
            } else {
                System.out.println("您输入的密码不相符");
            }
        }

            System.out.println("请输入账户的每次限额");
            double quotamoney = sc.nextDouble();
            account.setQuoteMoney(quotamoney);

            String cardId = getRandomCard(accounts);
            account.setCardId(cardId);

            //3、把账户对象添加到账户集合中去
            accounts.add(account);
            System.out.println(username + "您好,您的卡号为" + cardId + "请您妥善保管");
        }

    /**
     * 创建一个8位不重复的账户号码
     * @param accounts
     * @return
     */
    private static String getRandomCard(ArrayList<Account> accounts) {
        //1、首先生成一个8位的随机数字作为账户
        Random r = new Random();
        while(true){
            String cardId = " ";
            for (int i = 0; i < 8; i++) {
                cardId += r.nextInt(10);
            }
            //2、判断这个8位的卡号是否与现存的账户卡号重复了
            Account acc = getAccountByCardId(cardId,accounts);
            if(acc == null){
                return cardId;
            }
            return null;
        }
    }

    /**
     *根据输入的卡号遍历查询目前所存的账户中是否有重复账户
     * @param cardId
     * @param accounts
     * @return 账户对象、null
     */
    private static Account getAccountByCardId(String cardId,ArrayList<Account> accounts){
        for (int i = 0; i < accounts.size(); i++) {
            Account acc = accounts.get(i);
            if(acc.getCardId().equals(cardId)){
                return acc;
            }
        }
        return null;
    }
}

该项目的难点:生成一个8位的账户号码,并且该号码不能够与已存在的账户号码重复

开户功能的软件流程图

 方法之间的调用

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值