Java模拟实现ATM系统


 ****转载请注明出处哦~ ~ ~****                                   

前言

前言:
自动取款机又称ATM(Automated Teller Machine的缩写),意思是自动柜员机,因大部分用于取款,又称自动取款机。它是一种高度精密的机电一体化装置,利用磁性代码卡或智能卡实现金融交易的自助服务,代替银行柜面人员的工作。可提取现金、查询存款余额、进行账户之间资金划拨、余额查询等工作;此项目是实现了模拟ATM系统。

一、项目需求是什么?

模拟实现银行ATM机系统,可以实现开户,登录账户,查询账户,存款,取款,转账,修改账户密码,注销账户。

二、技术选型

技术点分析:

面向对象分析,使用集合容器,程序流程控制,使用常见API。

1. 面型对象分析:

每个用户对象要对应一个账户对象:所以需要设计账户类Account。

2. 使用集合容器:

系统需要提供一个容器用于存储这些账户对象的信息,我们选ArrayList集合。

3. 程序流程控制:

需要结合分支、循环、跳转等相关操作控制程序的业务逻辑。

4. 使用常见API:

内容比较,分析,数据处理等需要用到String等常用API。

三、实现步骤

1.账户类、首页设计

在这里插入图片描述
在这里插入图片描述
分析:
① 每个用户一个账户对象,需要设计账户类,账户类至少包含(卡号、用户名、余额、取现额度、密码)。
② 需要定义一个ArrayList的集合用于存储账户对象。
③ 需要展示欢迎页包含2个功能:注册开户、登录账户。

2.用户开户功能实现

在这里插入图片描述

分析:
① 开户功能应该独立定义成方法,并传入当前集合对象给该方法。
private static void register(ArrayList accounts, Scanner sc) {

② 需要提示用户输入个人信息,开户的卡号是系统自动生成的8位数。
public static String createCardId()

③ 注意:自动生成的卡号不能与其他用户的卡号重复。

④ 最终把用户开户的信息封装成Account对象,存入到集合中。


3.用户登录功能实现

在这里插入图片描述
分析:
① 需要根据卡号去集合中查询对应的账户对象。

② 如果找到了账户对象,说明卡号存在,继续输入密码。

③ 如果密码也正确,则登录成功

4.用户操作页设计、查询账户、退出账户功能

在这里插入图片描述
分析
① 用户登录成功后,需要进入用户操作页。

② 查询就是直接展示当前登录成功的账户对象的信息。

③ 退出账户是需要回到首页的。

5.用户存款、取款功能

在这里插入图片描述
在这里插入图片描述
分析
① 存款和取款都是拿到当前用户的账户对象。

② 通过调用账户对象的set方法修改其余额

6.用户转账功能

在这里插入图片描述
分析
① 转账功能要分析对方账户是否存在的问题。

② 还要分析自己的余额是否足够的问题。

7.用户密码修改功能、销户功能

修改密码
销户
如果账户还有余额,则不可销户
在这里插入图片描述
分析
① 修改密码就是把当前对象的密码属性使用set方法进行更新。

② 销户是从集合对象中删除当前对象,并回到首页。

四、代码实现

ATMSystem类(ATM系统入口类):

package atmdemo;

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

/**
 * ATM系统的入口类
 */
public class ATMSystem {
   
    public static void main(String[] args) {
   
        //1.定义账户类
        //2.定义一个集合容器,负责存储全部账户对象,进行相应操作
        ArrayList<Account> accounts = new ArrayList<>();
        Scanner sc = new Scanner(System.in);
        //3.展示系统的首页
        while (true) {
   
            System.out.println("=======================欢迎使用ATM系统==================");
            System.out.println("1.登录账户");
            System.out.println("2.注册账户");
            System.out.println("请输入您的操作:");
            int common = sc.nextInt();
            switch (common) {
   
                case 1:
                    //登录操作
                    login(accounts, sc);
                    break;

                case 2:
                    //注册操作
                    register(accounts, sc);
                    break;

                default:
                    System.out.println("您的输入操作有误,请重新输入!!!");
            }
        }
    }

    /**
     * 定义一个方法,实现登录功能
     *
     * @param accounts
     * @param sc
     */
    private static void login(ArrayList<Account> accounts, Scanner sc) {
   
        System.out.println("==================系统登录操作=================");
        //1.判断当时系统是否有账户
        if (accounts.size() == 0) {
   
            System.out.println("当前系统无任何账户,请先开户!!!");
            return;
        }

        //2.让用户输入卡号,根据卡号查询用户是否存在
        while (true) {
   
            System.out.println("请输入您的卡号:");
            String cardId = sc.next();

            //判断卡号是否存在:根据卡号去账户集合中查询账户对象
            Account acc = judgeCardId(accounts, cardId);
            if (acc != null) {
   
                while (true) {
   
                    System.out.println("请您输入密码:");
                    String password = sc.next();
                    if (acc.getPassword().equals(password)) {
   
                        System.out.println(acc.getUsername() + "先生/女生密码正确,登陆成功!!!");

                        //需要显示登录后的操作页
                        showUserCommand(sc, acc, accounts);
                        return;//结束登录后的操作页,回到首页
                    } else {
   
                        System.out.println("密码不正确,请您重新输入!!!");
                    }
                }

            } else {
   
                System.out.println("您输入的卡号不存在,请重新输入!!!"
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值