java基础 ATM机系统实例及功能需求

这篇博客详细介绍了如何使用Java进行ATM机系统的设计,包括账户类的分析,ATM类的功能实现,如登录、开户、存款、取款、转账、修改密码和销户等操作。通过面向对象编程,利用ArrayList存储账户信息,并展示了关键代码片段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 学习视频:Java入门基础视频教程,Java零基础自学首选黑马程序员Java入门教程(含Java项目和Java真题)_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Cv411372m?p=83

目录

ATM系统技术分析:

账户类的分析:

ATM类:

1.接受账户类 

2.首页功能:登录+开户

用户开户功能 

用户登录功能实现

3.ATM机功能

用户操作页设计

查看当前账户功能

 存款功能

 取款功能

转账功能

 修改密码功能

销户功能

完整代码

 

思维导图
 

ATM系统技术分析:

1.面向对象编程:每个用户都是一个对象,所以需要一个账类创建用户对象封装账户信息

2.使用集合容器:用ArrayList集合存储账户对象的信息

3.程序流程控制:分钟,循环,跳转

4.使用常用API:登录信息的比较,业务数据的分析

账户类的分析:

1.账户类:定义账户类,封装信息(卡号,姓名,密码,余额,取现额度)

2.账户对象信息存储:ArrayList

public class Account {
    private String userName;
    private String userId;
    private String passWord;
    private double money;
    private double quoteMoney;

    public Account(){}

    public Account(String userName,String userId,String passWord,double money,double quoteMoney){
        this.userId=userId;
        this.money=money;
        this.userName=userName;
        this.passWord=passWord;
        this.quoteMoney=quoteMoney;
    }
    
    
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getUserId() {
        return userId;
    }
    public void setUserId(String userId) {
        this.userId = userId;
    }


    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类:

1.接受账户类 

public static void main(String[] args) {
        // 1.准备容器
        ArrayList<Account> accounts = new ArrayList<>();
        showMain(accounts);
    }

2.首页功能:登录+开户

准备系统首页

public static void showMain(ArrayList<Account> accounts) {
        // 2.准备系统首页
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("==========阿崽银行为您服务==========");
            System.out.println("1.登录账号");
            System.out.println("2.开户");
            System.out.println("==请选择服务(1/2):");
            int command = sc.nextInt();
            switch (command) {
                case 1:
                    // 登录方法
                    login(accounts, sc);
                    break;

                case 2:
                    // 开户
                    newAccount(accounts, sc);
                    break;

                default:
                    System.out.println("输入有误,请重新输入");
                    break;
            }
        }
    }

用户开户功能 

  • 往系统的集合容器中存入一个新的账户对象xx;

1.定义开户方法

2.键盘录入信息

3.生成账户卡号,

  • 卡号由系统自动生成9位数字(卡号唯一)
// 生成卡号方法:随机生成一个卡号:使用Random随机一个9位数字符串,且不能重复
    // 该功能返回卡号为字符串类型
    public static String createCardId(ArrayList<Account> accounts) {
        while (true) {
            String cardID = "";
            Random r = new Random();
            for (int i = 0; i < 9; i++) {
                cardID += r.nextInt(10);
            }
            Account acc = getCardId(cardID, accounts);// 使用功能二判断,得到的是账户类里面的卡号
            if (acc == null) {
                return cardID;
            }
        }
    }
  • 检查卡号是否唯一
    // 检查卡号方法:判断该卡号是否与集合内的卡号重复,
        // 该功能中 如果卡号重复则报告给功能一继续随机 所以应该返回的是账户类中的卡号
        public static Account getCardId(String cardID, ArrayList<Account> accounts) {
            for (int i = 0; i < accounts.size(); i++) {
                Account acc = accounts.get(i);
                if (acc.getUserId().equals(cardID)) {
                    return acc;//返回该账户
                }
            }
            return null;
        }

4.创建Account账户类(已创建)

    static String password = "";// 记录用户输入的密码,保证判断密码的循环可以正常使用

    public static void newAccount(ArrayList<Account> accounts, Scanner sc) {
        System.out.println("==========阿崽银行为您服务==========");
        System.out.println("==========用户开户==========");

        // 姓名
        System.out.println("==请输入您的姓名");
        String name = sc.next();

        // 密码
        while (true) {
            System.out.println("==请输入您的密码");
            password = sc.next();
            System.out.println("==请再次输入您的密码");
            String okPassword = sc.next();
            // 判断两次密码是否一致
            if (okPassword.equals(password)) {
                break;
            } else {
                System.out.println("密码错误,请重新输入");
            }
        }

        // 生成卡号(独立),并且卡号不能重复
        // 功能1:随机生成一个卡号 功能2:判断该卡号是否与集合内的卡号重复
        String cardId = createCardId(accounts);

        // 每日限额
        System.out.println("==请设置每日取现额度");
        double quoteMoney = sc.nextInt();

        double money = 0;
        // 创建一个账户对象封装账户的信息,将得到的信息封装在一个对象里
        // 注意这里要和账户里中的顺序一样且对应,不然存入集合时信息会交叉String userName,String userId,String
        // passWord,double money,double quoteMoney
        Account account = new Account(name, cardId, password, money, quoteMoney);

        // 将对象里的内容装入集合
        accounts.add(account);
        System.out.println("==开户成功!您的卡号是:" + cardId);
    }

    // 功能1:随机生成一个卡号:使用Random随机一个9位数字符串,且不能重复
    // 该功能返回卡号为字符串类型
    public static String createCardId(ArrayList<Account> accounts) {
        while (true) {
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿崽meitoufa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值