Java_ATM小项目

java基础项目——模拟ATM机器,存取款 JAV项目————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;
    }
}

Java实现超级简易的银行ATM机项目(详细注释版) 阅读详情

相关推荐

整理的15个公开且可直接使用的电力视觉输电线路领域数据集

而巡检数据是目前来说影响我们做科研的最大阻碍,为此本内容主要总结了,现有的且公开免费的巡检数据集,供大家使用。STN PLAD数据集133个航拍图像,五个电力部件:电力塔及其塔的ID、绝缘子,防震锤,联板(yoke),图像的尺寸在5472×3648到5472×3078。IDID数据集:2000张图像,包含三个类别,正常绝缘子,破损绝缘子和闪络绝缘子三个类别,用于目标检测的实验。TTPLA数据集,用于实例分割,1100张尺寸为3840×2160,包含两个类别,电力杆塔和电力线。主要用于电力杆塔的目标检测。

weixin_42048361的博客 5019

java实现简单的ATM项目

本文实例为大家分享了java实现简单的ATM项目的具体代码,供大家参考,具体内容如下 首先要了解的是,这个ATM项目本身是一个轻量级的项目,只为了完成一些ATM具备的一些方法,并非是真正完成一个ATM的全部功能和需求 那么在这个轻量级的ATM项目中,我将完成添加储蓄账号,添加信用账户,提款,取款等基本功能。 适合新手查看,需要掌握java的继承,多态,封装等基本技术能力 那么,首先创建如下的对象类:Account(账户类),Bank(银行类),CreditAccount(信用账户),SavingAcc

522

UR10e+D435+ag95夹爪 gazebo 仿真记录(一)

学习仿真环境gazebo下利用UR10e机械臂搭建模拟平台,此博客用于记录搭建过程!!主要参考光头明明、总有一天全城的人都要高看我们和bug404_三位博主。最终自己功能包的主要参考了bug404_的ur_platform,感觉这个结构比较合理。运行环境:Ubuntu18.04+Ros-melodic+Gazebo9。

Forbiven的博客 6330

java atm项目_java实现ATM取款项目

java实现ATM取款项目发布时间:2020-09-20 23:50:48来源:脚本之家阅读:100作者:沐易笙项目要求:1、用户需要从控制台输入账号密码,账号或者密码不正确报异常2、每日取款的金额有限制(100,30000),否则报异常3、每次取款都要有记录,并在下一次取款时显示出来思路:1、先在“银行类”里生成一些用户(跳过了注册环节)2、可使用List集合存储取款日志3、可使用Map集合将“...

weixin_39989033的博客 282

[原创]Linux 802.11n CSI tool Monitor模式

Linux 802.11n CSI tool Monitor模式 使用AP模式的缺陷在于ping 命令速度比较慢,且不能精确控制发送的参数,比如接收的包数量是不可控的。Monitor模式可以调制发送速率、发包数量、发送天线个数、HT模式、short/long guard interval等等,因此调通Monitor模式是必须的。期间参考了博主沃一德的CSI Tool安装使用讲解,对他的工作表示感...

u014645508的博客 1万+

使用R语言(ggplot2)绘制KEGG信号通路富集气泡图

本文详细介绍了如何使用R语言的ggplot2包绘制KEGG信号通路富集气泡图,从数据预处理到高级定制技巧,帮助生物信息学研究者直观展示富集分析结果。文章涵盖了气泡图的核心绘制方法、布局优化、常见问题解决方案以及交互式可视化扩展,是进行KEGG富集分析可视化的实用指南。

weixin_42625070的博客 450

JAVA基础语法知识应用实践之ATM项目学习(含完整源代码以及项目框架)

在Account.java里定义:cardId(卡号),userName(用户名),sex(性别),passWord(密码),money(余额),limit(限额),全部选中这些变量生成它们的getter和setter方法。return sex;生成它们的getter和setter方法:右击空白处->generate->getter和setter->全选->生成在ATM.java里定义一个名为accounts的集合,用于存储Account类型的对象。

money666pyc的博客 976

Agentic RAG:RAG从静态到具有理解、推理、决策的Agentic RAG

RAG技术演进:从静态检索到智能代理 RAG(检索增强生成)技术经历了五个关键发展阶段:基础RAG(关键词检索)、高级RAG(语义理解)、模块化RAG(灵活架构)、图RAG(知识图谱)和最新的Agentic RAG(智能代理)。Agentic RAG通过引入自主AI代理,具备反思、规划、工具使用和多代理协作能力,实现了动态决策和自适应工作流。相比传统RAG的静态检索流程,Agentic RAG能处理复杂多步推理任务,通过自我改进机制提高输出质量,并支持多专业代理协作,显著提升了RAG系统在复杂场景下的表现。

2545

java web atm机_Java项目实现模拟ATM机

本文实例为大家分享了Java实现模拟ATM机的具体代码,供大家参考,具体内容如下项目名称模拟ATM机项目描述简单实现ATM机功能代码实现测试类public class Test {//模拟多功能ATM机public static void main(String[] args) {ATM atm = new ATM();atm.opearte();}}主类:实现主方法public class AT...

weixin_31591833的博客 608

基于Simulink的雷达跟踪系统仿真(附源码)

此示例包含对雷达系统的基本特征进行建模的子系统。该模型是用于目标位置和速度检测的雷达系统的典型模型。该示例包括雷达脉冲发生器、射频发射器子系统、移动目标的 Simulink 表示、射频接收器和接收模块(Rx 模块)。

珞瑜的博客 3516

CATIA 3DEXPERIENCE R2019x VBA开发介绍

CATIA 3DEXPERIENCE R2019x VBA开发介绍 一、 什么是VBA? 【VBA的官方解释】 VBA(Visual Basic for Applications)是VisualBasic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展Windows的应用程序功能,特别是MicrosoftOffice软件。它也可说是一种应用程式视觉化的 Basic 脚本。 CATIA提供了多种二次开发的接口,其中包括自动化对象编程(Automation)和

WorkMan的博客 5063

小白的一个Java小项目ATM机

我在学完java基础与MySQL,感觉学完这些东西之后又很快把哪些东西忘掉,于是就想用这两个东西做一个小小的项目。 项目需求: 1)通过JDBC来展示数据库

qq_35686293的博客 182

[自动化工具] 解放双手的利器:「自动邮件平台」工具助你高效搞定重复通知任务

摘要:自动邮件平台是一款零门槛自动化工具,帮助用户高效处理重复性邮件任务。该平台支持两种调度模式(指定日期和间隔天数),无需编码即可快速设置账单提醒、活动通知等任务。提供免费托管版(小时级调度)和自主部署版(分钟级调度),满足不同精度需求。典型应用场景包括客户跟进、系统监控等周期性任务。用户只需三步即可完成设置,还能扩展定制化功能。该工具让非技术人员也能轻松实现邮件自动化,释放时间专注更重要的工作。

每日出拳老爷子的博客 109

Java ATM 项目

ATM ATM柜员机模拟项目 项目开发基本要求: (1)功能要求: 登陆 查询剩余金额 存入现金 取款 转帐 修改密码 查询明细 等等 (2)系统界面要求: 要求系统具有友好的用户界面 界面简洁 操作方便 使用语言Java,工具IDEA 1.首先完成登录界面 package ATM_Pakege; import java.awt.Component; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import ja

qq_53120038的博客 1019

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Java从入门到精通 - 项目实战(ATM系统)

本文为Java从入门到精通之项目实战,内容为ATM系统,包含系统架构的搭建、用户开户功能、用户登录功能、操作页展示、查询账户、退出账户、存款、取款功能实现、用户转账功能、销户功能、用户修改密码功能,旨在巩固Java基础语法知识

xian_x_的博客 1063

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

atm有10000元 java_java实现ATM取款项目

本文实例为大家分享了java实现ATM取款项目的具体代码,供大家参考,具体内容如下项目要求:1、用户需要从控制台输入账号密码,账号或者密码不正确报异常2、每日取款的金额有限制(100,30000),否则报异常3、每次取款都要有记录,并在下一次取款时显示出来思路:1、先在“银行类”里生成一些用户(跳过了注册环节)2、可使用List集合存储取款日志3、可使用Map集合将“用户名”和对应的用户信息建立“...

weixin_39574708的博客 395

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Java基础综合项目(ATM系统)

1. ATM系统功能介绍有查询、取款、存款、转账等业务功能,用户选择哪个功能就执行对应预先设定好的程序。由于没有图形化界面编程,所以我们是做不出界面效果的,但是我们可以在控制台模拟ATM机的各项功能。运行程序时,进入登录界面,在此界面可以登录、或者开户。各位同学,你可能会觉得这个案例功能怎么这么多啊!太复杂了,其实也没你想得那么复杂。接下来,我将手把手带领大家把这个ATM系统完成。2. ATM系统中我们会用到哪些技术呢?

qq_41953754的博客 978

JAVA-案列练习-ATM项目

在JAVA入门学习后进行的项目练习——模拟ATM系统。这个案例算是对前面入门的知识一个小的复习。

Hismybestlove的博客 439

Java项目-模拟ATM项目

m0_52132903的博客 357

java小项目 ATM机(简易版)

实训项目

时刻总结 4397

java中atm小项目_ATM小项目

package view;import java.awt.Color;import java.awt.Container;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.Font;import java.awt.GridLayout;import java.awt.Toolkit;import java.aw...

weixin_32046225的博客 120

适合初学者java小项目———银行ATM系统

本项目包含java se最基础的知识,在保证不超纲的条件下能很好锻炼逻辑思维,各方面的功能知识点都有用到,以下是讲解 先创建一个包,这个包有4个类,以下是具体步骤 一.首先我们要创建一个用户对象类,在进行封装。 /** * Atm系统对象 */ public class UserStruct { private String name;//户主名字 private String Id;//卡号 private String code;//密码 privat...

m0_62571837的博客 718

用java完成一个简单的ATM项目

那么在这个轻量级的ATM项目中,我将完成添加储蓄账号,添加信用账户,提款,取款等基本功能。

wymolin的博客 1万+

Java基础项目(ATM系统)

目录一. ATM系统功能介绍需要用到的技术方面(都是java基础) :分析开发流程二、项目架构搭建、欢迎界面设计第一步:先来完成Account类的编写第二步:编写一个ATM类,负责对每一个账户对象进行管理 第三步:在ATM类中,编写欢迎界面三、开户功能实现分析 :四、登录功能分析 :五、展示二级菜单界面分析:六、二级菜单子功能实现1.查询账户分析 :代码:2.存款分析 :代码 :3.取款分析 :代码 :4.转账分析 :代码 :5.修改密码分析 :代码 :6.退出分析 :7.注销分析 :代码 :大家都应该去过

m0_69027602的博客 951
下一篇: java_入门基础笔记
网名_简
博客等级 码龄6年 4粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值