iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java基于控制台界面实现ATM系统
  • 593
分享到

Java基于控制台界面实现ATM系统

2024-04-02 19:04:59 593人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

本文实例为大家分享了Java实现ATM系统的具体代码,供大家参考,具体内容如下 这应该算最基础的Javase项目了,但其中逻辑还是得想想的。 功能还算完善,只是对输入数据的校验没做全

本文实例为大家分享了Java实现ATM系统的具体代码,供大家参考,具体内容如下

这应该算最基础的Javase项目了,但其中逻辑还是得想想的。

功能还算完善,只是对输入数据的校验没做全,之后做WEB时再加上。

没有数据库

完整代码在最后。

流程图

登录

想模拟提款机插卡登录的,因此没做注册账号的功能,手动先塞了三个账号。
有三次输入密码机会。

查询

取款

存款

转账

修改密码

退出

代码

文件结构

下面两个类复制过去放到ATM文件夹下就能运行。

package ATM;

import java.text.SimpleDateFORMat;
import java.util.Calendar;
import java.util.Date;

public class Account {

    private String cardID;
    private String username;
    private String passWord;
    private double balance;
    private boolean status;//卡 定状态

    public Account() {
    }

    public Account(String cardID, String username, String password, double balance, boolean status) {
        this.cardID = cardID;
        this.username = username;
        this.password = password;
        this.balance = balance;
        this.status = status;
    }

    public Account(String cardID, String username, String password, double balance) {
        this.cardID = cardID;
        this.username = username;
        this.password = password;
        this.balance = balance;
    }

    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 getBalance() {
        return balance;
    }

    public void setBalance(double balance) {
        this.balance = balance;
    }

    public boolean isStatus() {
        return status;
    }

    public void setStatus(boolean status) {
        this.status = status;
    }

    @Override
    public String toString(){
        System.currentTimeMillis();
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String formatDate = sdf.format(date);
        return "银行:新航路银行\n" +
                "银行账号:"+cardID+"\n"
                +"用户名:"+username+"\n"
                +"余额:"+balance+"\n"
                +formatDate;
    }
}
package ATM;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Scanner;

public class ATM {

    static Scanner sc = new Scanner(System.in);
    static ArrayList<Account> accounts;

    public static void main(String[] args) {

        //模仿插卡ATM,因此没做注册用户功能,这里自己添加了几个用户做测试。
        accounts = new ArrayList<>();
        accounts.add(new Account("10001", "路飞", "ONEPIECE", 100,true));
        accounts.add(new Account("10002", "索隆", "123456", 10000,false));
        accounts.add(new Account("10003", "娜美", "123456", 1000000d,true));

        //登录
        loginVerify();

    }

    //登录验证
    public static void loginVerify() {
        System.out.println("提示:有这些账户");
        for (Account account : accounts) {
            System.out.println("卡号:"+account.getCardID() +"  用户名:" + account.getUsername()+"  密码:"+account.getPassword()+"  余额:"+account.getBalance());
        }
        System.out.println("---------------------------------------------");

        //模拟插卡,手动输入银行卡号
        System.out.print("输入银行卡号:");
        String cardID = sc.next();

        //根据卡号,判断此账号是否存在
        for (int i = 0; i < accounts.size(); i++) {
            Account account = accounts.get(i);
            if (cardID.equals(account.getCardID())) { //判断卡号是否存在
                if(account.isStatus()) { //看该卡是否被锁
                    //账号存在,输入密码
                    System.out.print("请输入密码:");
                    int count = 3;//可输入3次密码
                    while (count > 0) {
                        sc.useDelimiter("\n");
                        String pwd = sc.next();
                        if (pwd.equals(accounts.get(i).getPassword())) {
                            //登录成功,转到主界面
                            mainInterface(accounts.get(i));
                        } else {
                            if(--count == 0){
                                System.out.println("此卡已锁,请到人工处咨询办理。");
                                accounts.get(i).setStatus(false);
                            }else {
                                System.out.println("还有" + count + "次输入机会");
                            }
                        }
                    }
                }else{
                    System.out.println("此卡已锁,请到人工处咨询办理。");
                }
                break;
            }
            if(i == accounts.size()-1){
                System.out.println("此卡号不存在!!");
            }
        }
    }

    public static void mainInterface(Account account) {

        System.out.println("=====================================");
        System.out.println("|| 1.查询余额               5.修改密码||");
        System.out.println("|| 2.取款                  6.退卡    ||");
        System.out.println("|| 3.存款                           ||");
        System.out.println("|| 4.转账                           ||");
        System.out.println("=====================================");
        System.out.print("请输入要操作的号码:");
        int i = sc.nextInt();
        switch (i) {
            case 1:
                queryBalance(account);
                break;
            case 2:
                withdrawal(account);
                break;
            case 3:
                deposit(account);
                break;
            case 4:
                transfer(account);
                break;
            case 5:
                updatePassword(account);
                break;
            case 6:
                exitSystem();
                break;
            default:
                System.out.println("输入号码不对!");
                break;
        }

    }

    //查询余额
    public static void queryBalance(Account account) {
        System.out.println("=====================================");
        System.out.println("|| "+account.getUsername() + "的余额: " + account.getBalance());
        System.out.println("=====================================");
        mainInterface(account);
    }

    //取款
    public static void withdrawal(Account account) {
        System.out.print("请输入取款金额:");
        double money = sc.nextInt();
        if (money <= account.getBalance()) {
            account.setBalance(account.getBalance() - money);
            System.out.println("取款成功!!");
            System.out.println("=====================================");
            System.out.println("|| 1.返回主界面             2.打印发票||");
            System.out.println("=====================================");
            int i = sc.nextInt();
            switch (i) {
                case 1:
                    mainInterface(account);
                    break;
                case 2:
                    Date date = new Date();
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                    String formatDate = sdf.format(date);
                    System.out.println("银行:新航路银行\n"+
                            "银行卡:"+account.getCardID()+"\n"+
                            "用户名:"+account.getUsername()+"\n"+
                            "本次取款:"+money+"\n"+
                            formatDate);
                    mainInterface(account);
                    break;
            }
        } else {
            System.out.println("oh,我可怜的孩子!余额不足捏。");
            System.out.println("=====================================");
            System.out.println("|| 1.返回 enter                       ||");
            System.out.println("=====================================");
            sc.next();
            mainInterface(account);
        }
    }

    //存款
    public static void deposit(Account account) {
        System.out.print("请输入要存款金额:");
        double tempMoney = sc.nextDouble();
        account.setBalance(account.getBalance() + tempMoney);
        System.out.println("哔~哔~哔  点钞中...");
        System.out.println("存款成功");
        mainInterface(account);
    }

    //转账
    public static void transfer(Account account) {
        System.out.println("请输入对方卡号(提示账号有:10001 /10002 /10003)");
        String cardID = sc.next();

        //根据卡号,判断此账号是否存在
        for (int i = 0; i < accounts.size(); i++) {
            if (cardID.equals(accounts.get(i).getCardID())) {
                System.out.print("请输入对象用户名验证:");
                sc.nextLine();
                String next = sc.nextLine();
                if(next.equals(accounts.get(i).getUsername())) {
                    System.out.print("请输入要转的金额:");
                    double m = sc.nextDouble();
                    if (m > account.getBalance()) {
                        System.out.println("你没这么多钱,转账失败!");
                        break;
                    } else {
                        account.setBalance(account.getBalance() - m);
                        accounts.get(i).setBalance(m + accounts.get(i).getBalance());
                        System.out.println("转账成功");
                        break;
                    }
                }else{
                    System.out.println("账号与用户名不匹配,转账失败");
                    break;
                }
            }
           if(i == accounts.size()-1) {
               System.out.println("此卡号不存在!!");
           }
        }
        mainInterface(account);
    }

    //5. 修改密码
    public static void updatePassword(Account account){
        System.out.print("请输入新密码:");
        String s1 = sc.next();
        System.out.print("请再次输入新密码:");
        String s2 = sc.next();
        if(s1.equals(s2)){
            account.setPassword(s1);
            System.out.println("密码修改成功,请重新登录!");
            loginVerify();
        }else{
            System.out.println("两次密码不一致");
            mainInterface(account);
        }
    }

    //6. 退出
    public static void exitSystem() {

        System.exit(0);
        //loginVerify();
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: Java基于控制台界面实现ATM系统

本文链接: https://www.lsjlt.com/news/149940.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java基于控制台界面实现ATM系统
    本文实例为大家分享了Java实现ATM系统的具体代码,供大家参考,具体内容如下 这应该算最基础的Javase项目了,但其中逻辑还是得想想的。 功能还算完善,只是对输入数据的校验没做全...
    99+
    2024-04-02
  • Java实现简单控制台版ATM系统
    本文实例为大家分享了Java实现简单控制台版ATM系统的具体代码,供大家参考,具体内容如下 ATM系统项目 ATM系统要实现的功能 1.查询:账号必须存在,密码(三次机会,不对就锁卡...
    99+
    2024-04-02
  • Java如何实现简单控制台版ATM系统
    本篇内容主要讲解“Java如何实现简单控制台版ATM系统”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java如何实现简单控制台版ATM系统”吧!ATM系统项目ATM系统要实现的功能查询:账号必...
    99+
    2023-06-30
  • Java实现ATM银行管理系统(控制台版本)
    目录前言介绍创建抽象类Card类创建普通银行类继承Card创建普通信用卡继承Card创建普通医保卡继承CardATM主要方法业务类逻辑实现main方法测试启动类控制台打印前言介绍 最...
    99+
    2024-04-02
  • Java如何实现ATM银行管理系统控制台版本
    这篇文章主要讲解了“Java如何实现ATM银行管理系统控制台版本”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java如何实现ATM银行管理系统控制台版本”吧!创建抽象类Card类abstr...
    99+
    2023-07-02
  • Java实现基础银行ATM系统
    目录一、前言二、使用步骤三、运行效果图:本文实例为大家分享了Java实现银行ATM系统的具体代码,供大家参考,具体内容如下 一、前言 银行ATM系列简单操作 二、使用步骤 1.创建...
    99+
    2024-04-02
  • java基于控制台的学生学籍管理系统
    本文实例为大家分享了java实现学生学籍管理系统的具体代码,供大家参考,具体内容如下 关键技术:循环,switch条件判断,创建对象,ArrayList()动态数组或集合,priva...
    99+
    2024-04-02
  • java控制台实现学生管理系统
    本文实例为大家分享了java控制台实现学生管理系统的具体代码,供大家参考,具体内容如下 编写一个学生成绩管理程序。学生的属性包括学号、姓名、年龄等。每个学生要学习若干课程,每门课程有...
    99+
    2024-04-02
  • Java如何实现ATM系统
    这篇文章主要介绍Java如何实现ATM系统,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.系统准备,首页,用户开户功能系统准备,首页设计系统准备内容分析:每个用户的账户信息都是一个对象,需要提供账户类需要准备一个容...
    99+
    2023-06-29
  • java实现ATM机系统(2.0版)
    java实现银行ATM自助取款机,实现功能:用户登录、余额查询、存钱、取钱、转账、修改密码、退出系统。 用java实现一个ATM机系统(2.0版) 设计思路 设计五个类包括测试类: ...
    99+
    2024-04-02
  • Java实现ATM机操作系统
    本文实例为大家分享了Java实现ATM机操作系统的具体代码,供大家参考,具体内容如下 用IO流操作txt文件作为数据库模拟实现一个ATM业务操作系统---->网上银行,实现登录...
    99+
    2024-04-02
  • java控制台实现学生信息管理系统
    简介 最近学了java基础后对以前不会写的作业深有感触,想起以前各种在网上找资料找别人的代码参考,所以今天特地写了了简单的基于控制台的学生信息管理系统供还在学基础的同学参考,写的有问...
    99+
    2024-04-02
  • Java实现学生管理系统(控制台版本)
    目录前言介绍创建学生类Student main方法实现CRUD查询方法添加方法删除方法修改方法控制台打印前言介绍 最近很多同学找我帮忙做一些课程设计或Web前端大作业、其中...
    99+
    2024-04-02
  • java实现简单银行ATM系统
    本文实例为大家分享了java实现简单银行ATM系统的具体代码,供大家参考,具体内容如下 #ATM系统 ##功能 模拟银行ATM机系统,具有注册、登录功能用户登录后可实现以下功能:1)...
    99+
    2024-04-02
  • Java简单实现银行ATM系统
    本文实例为大家分享了Java实现银行ATM系统的具体代码,供大家参考,具体内容如下 实现步骤: 定义账户类,用于后期创建账户对象封装用户的账户信息。 账户类中的信息至少需要包含(卡号...
    99+
    2024-04-02
  • java实现银行ATM管理系统
    本文实例为大家分享了java实现银行ATM管理系统的具体代码,供大家参考,具体内容如下 功能 账户类、首页设计 分析 ① 每个用户一个账户对象,需要设计账户类,账户类至少包含(卡号、...
    99+
    2024-04-02
  • Java基于字符界面的简易收银台
    用Java实现简易收银台,供大家参考,具体内容如下 简易收银台的实现并不难,主要实现这几个类: 商品类 Goods (将商品根据编号,名称,价格存放) 商...
    99+
    2024-04-02
  • Java如何实现ATM机模拟系统
    这篇“Java如何实现ATM机模拟系统”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java如何实现ATM机模拟系统”文章吧...
    99+
    2023-07-02
  • Java如何实现ATM机操作系统
    这篇“Java如何实现ATM机操作系统”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java如何实现ATM机操作系统”文章吧...
    99+
    2023-06-30
  • Java详解实现ATM机模拟系统
    目录一、概述二、程序概要设计三、程序详细设计四、程序演示一、概述 (1)选题分析 (2) 开发环境 开发环境,选择IDEA这一Java开发软件,基于JDK1.8版本,在本机windo...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作