当前位置: 首页 > article >正文

ATM案例(2)

开户功能写完就是登录功能进行查询账户存款取款操作解题逻辑前置校验若集合中无账户直接提示开户终止登录循环接收用户输入的卡号调用getAccountCardId()校验卡号是否存在卡号存在后循环校验密码密码正确则将该账户赋值给loginAcc并展示操作菜单全程通过循环保证用户输入错误时可重新输入直到输入正确或退出。.核心操作模块查询 / 存款 / 取款1查询账户showLoginAccount ()直接读取loginAcc的属性卡号、姓名、余额等展示给用户依赖loginAcc的非空性必须登录后才能调用。2存款depositMoney ()解题逻辑接收用户输入的存款金额通过loginAcc.setMoney()更新账户余额原余额 存款金额提示存款成功并展示最新余额。3取款drawMoney ()解题逻辑前置校验账户余额不足 100 元时禁止取款循环接收用户输入的取款金额做两层校验校验 1余额是否≥取款金额不足则提示校验 2取款金额是否≤单次取现额度超出则提示限额校验通过后更新账户余额原余额 - 取款金额提示取款成功并展示最新余额。菜单交互模块主菜单start ()循环展示「登录 / 开户」通过 switch 执行对应操作操作菜单showUserCommand ()登录成功后循环展示「查询 / 存款 / 取款等」通过 switch 执行对应操作选择 “退出” 则终止当前循环回到主菜单。package com.sy; import com.sy.Account; import java.util.ArrayList; import java.util.Random; import java.util.Scanner; public class ATM { //创建一个存储账户对象的集合 private ArrayListAccount accounts new ArrayList(); //创建一个键盘录入对象 Scanner sc new Scanner(System.in); //启动ATM系统 展示欢迎页面 public void start(){ while (true){ System.out.println(欢迎您进入到了ATM系统); System.out.println(1.用户登录); System.out.println(2.用户开户); System.out.println(请选择); int command sc.nextInt(); switch (command ){ case 1: this.login(); showLoginAccount(); depositMoney(); drawMoney(); break; case 2: this.createAccount(); break; default: System.out.println(没有该操作~~); } } } //完成用户开户功能 private void createAccount(){ System.out.println(系统用户开户操作); //1.创建一个账户对象用于封装用户的开户信息 Account acc new Account(); //2.让用户输入自己的开户信息赋值给账户对象 System.out.println(请输入您的账户名称); String name sc.next(); acc.setUserName(name); while (true){ System.out.println(请输入您的性别); char sex sc.next().charAt(0); if (sex 男 || sex 女){ acc.setSex(sex); break; }else { System.out.println(请输入的性别有误~); } } while (true){ System.out.println(请输入您的账户密码); String passWord sc.next(); System.out.println(请您再次输入确认密码); String okPassWord sc.next(); if (okPassWord.equals(passWord)){ acc.setPassWord(okPassWord); break; }else { System.out.println(您输入的2次密码不一样请您重新输入~); } } System.out.println(请您输入您的取现额度); double limit sc.nextDouble(); acc.setLimit(limit); //生成一个卡号 String newCardId createCardId(); acc.setCardId(newCardId); //把这个账户对象存储到集合中去 accounts.add(acc); System.out.println(恭喜您 acc.getUserName() 开户成功您的卡号是 acc.getCardId()); } //根据卡号查询账户对象返回 private Account getAccountCardId(String cradId){ //遍历全部账户对象 for (int i 0; i accounts.size(); i) { Account acc accounts.get(i); if (acc.getCardId().equals(cradId)){ return acc; } } return null;//查无此账户这个卡号不存在 } //生成卡号 private String createCardId(){ while (true){ //1.定义一个String类型的变量 String cardId ; //2.使用循环 Random r new Random(); for (int i 0; i 8; i) { int data r.nextInt(10); cardId data; } //3.判断cardId中记住的卡号 Account acc getAccountCardId(cardId); if (acc null){ return cardId; } } } //记住登录后的用户账户 private Account loginAcc; //完成用户的登录操作 private void login(){ System.out.println(系统登录); //1.判断系统中是否存在账户对象存在才能登陆如果不存在直接结束 if (accounts.size() 0){ System.out.println(当前系统中无任何账户请先开户再来登录~); return; } //2.系统中存在账户对象可以开始进行登录操作了 while (true){ System.out.println(请您输入登录卡号); String cardId sc.next(); //3.判断这个卡号是否存在 Account acc getAccountCardId(cardId); if (acc null){ System.out.println(您输入的登录卡号不存在请确认~); }else{ while (true){ //卡号存在 System.out.println(请您输入登录密码); String passWord sc.next(); if (acc.getPassWord().equals(passWord)){ loginAcc acc; System.out.println(恭喜您 acc.getUserName() 登录成功您的卡号是 acc.getCardId() ); showUserCommand(); return; }else { System.out.println(您输入的密码不正确请确认~); } } } } } //展示登录后的操作页面 private void showUserCommand(){ while(true){ System.out.println(loginAcc.getUserName() 您可以选择如下功能进行账户的处理); 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: //查询当前账户 showLoginAccount(); break; case 2: //存款 depositMoney(); break; case 3: //取款 drawMoney(); break; case 4: //转账 break; case 5: //密码修改 break; case 6: //退出 System.out.println(loginAcc.getUserName() 退出成功); return; case 7: //注销 break; default: System.out.println(您选择的操作不存在~); } } } //展示当前登录信息 private void showLoginAccount(){ System.out.println(当前您的账户信息如下); System.out.println(卡号 loginAcc.getCardId()); System.out.println(户主 loginAcc.getUserName()); System.out.println(性别 loginAcc.getSex()); System.out.println(余额 loginAcc.getMoney()); System.out.println(每次取现额度 loginAcc.getLimit()); } //存钱 public void depositMoney(){ System.out.println(存钱操作); System.out.println(请您输入存款金额); double money sc.nextInt(); //更新当前登录的账户余额 loginAcc.setMoney(loginAcc.getMoney() money); System.out.println(恭喜您您存入 money 成功当前余额为 loginAcc.getMoney()); } //取款 private void drawMoney(){ System.out.println(取钱操作); //1.判断账户余额是否达到了100元 if (loginAcc.getMoney() 100){ System.out.println(您的账户余额不足100不允许取钱~); return; } //2.让用户输入取款金额 while(true){ System.out.println(请您输入取款金额); double money sc.nextInt(); //3.判断账户余额是否足够 if (loginAcc.getMoney() money){ //4.判断当前金额是否超出最大限额 if (money loginAcc.getLimit()){ System.out.println(您当前取款金额超过了每次限额您最多可取: loginAcc.getLimit() 元); }else { //代表可以开始取钱了,更新当前账户余额 loginAcc.setMoney(loginAcc.getMoney() - money); System.out.println(您取款 money 成功现在余额是 loginAcc.getMoney()); break; } }else { System.out.println(余额不足您账户当前余额 loginAcc.getMoney()); } } } }

相关文章:

ATM案例(2)

开户功能写完,就是登录功能进行查询账户,存款,取款操作解题逻辑:前置校验:若集合中无账户,直接提示开户,终止登录;循环接收用户输入的卡号,调用getAccountCardId()校验卡…...

Z-Image-GGUF负向提示词库:去水印、防模糊、避畸变的高质量生成守则

Z-Image-GGUF负向提示词库:去水印、防模糊、避畸变的高质量生成守则 1. 引言:为什么你的AI图片总是不完美? 你有没有遇到过这样的情况:用AI生成了一张图片,乍一看还不错,但仔细一看,角落里有个…...

企业IT必看:用小米手机自带邮件APP配置Exchange的完整避坑指南(含服务器参数详解)

企业IT必看:用小米手机自带邮件APP配置Exchange的完整避坑指南(含服务器参数详解) 作为企业IT支持人员,最常遇到的场景之一就是为员工批量配置企业邮箱。Exchange作为企业级邮件解决方案,其安全性、同步效率和管理便捷…...

PHP伪随机数漏洞深度利用:从mt_rand()预测到token伪造的CTF通关教程

PHP伪随机数安全攻防实战:从种子预测到Token伪造的CTF全解析 1. PHP伪随机数机制的安全隐患 PHP的mt_rand()函数作为梅森旋转算法(Mersenne Twister)的实现,长期以来被开发者视为"足够随机"的选择。但鲜为人知的是,这个看似可靠的随…...

Local AI MusicGen真实案例:为30秒短视频自动生成匹配情绪BGM

Local AI MusicGen真实案例:为30秒短视频自动生成匹配情绪BGM 你有没有遇到过这种情况?精心剪辑了一段30秒的短视频,画面、转场、字幕都到位了,但就是找不到一首情绪对味、长度合适的背景音乐。不是太长需要裁剪,就是…...

揭秘RuView:WiFi信号实现无摄像头人体姿态追踪的技术革命

揭秘RuView:WiFi信号实现无摄像头人体姿态追踪的技术革命 【免费下载链接】RuView Production-ready implementation of InvisPose - a revolutionary WiFi-based dense human pose estimation system that enables real-time full-body tracking through walls usi…...

JavaScript基础课程二十一、前端框架入门(Vue3 组合式 API)

本课作为前端框架入门核心课,聚焦Vue3组合式API,从理念、语法到实战全方位讲解。Vue3凭借数据驱动、声明式渲染的特性,彻底简化原生DOM操作,让开发更聚焦业务逻辑。组合式API作为Vue3主推方案,解决了复杂项目逻辑分散的…...

从聚水潭到金蝶云出库单

聚水潭数据集成到金蝶云星空:其他出库单在系统对接和数据集成领域,我们经常需要处理不同业务系统之间的数据交换问题。本案例的核心任务是将聚水潭的“其他出库单”数据高效、可靠地集成到金蝶云星空。以下描述的是解决这一问题所采用的技术方案与实现细…...

终极指南:如何用AlienFX-Tools完全掌控你的Alienware设备

终极指南:如何用AlienFX-Tools完全掌控你的Alienware设备 【免费下载链接】alienfx-tools Alienware systems lights, fans, and power control tools and apps 项目地址: https://gitcode.com/gh_mirrors/al/alienfx-tools 厌倦了臃肿的Alienware Command C…...

dify的部署(详细)

Dify的部署(详细) 如果追求更好的阅读体验,可以移至本人的个人博客 Dify的部署(详细) 什么是Dify? Dify是一个开源的大语言模型(LLM)应用开发平台,旨在简化和加速生成…...

突破音乐格式壁垒:QMCDecode让你的数字音乐重获自由

突破音乐格式壁垒:QMCDecode让你的数字音乐重获自由 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,默认转换…...

5分钟搞懂Homography矩阵:OpenCV图像拼接实战指南(附Python代码)

5分钟掌握OpenCV图像拼接:从特征匹配到全景合成的实战技巧 当你站在高处拍摄风景时,是否遇到过镜头视野不够宽广的困扰?或是需要将多张局部照片拼接成完整画面?图像拼接技术正是解决这类问题的利器。本文将带你用Python和OpenCV快…...

保姆级教学:从零部署Qwen3-ASR,打造你的语音转文字工具

保姆级教学:从零部署Qwen3-ASR,打造你的语音转文字工具 1. 引言:为什么选择Qwen3-ASR? 语音识别技术正在改变我们与数字世界互动的方式。想象一下,会议录音自动转文字、方言视频自动生成字幕、智能家居听懂你的指令—…...

Java开发者必备:Mirage Flow模型API调用与SpringBoot集成指南

Java开发者必备:Mirage Flow模型API调用与SpringBoot集成指南 1. 开篇:为什么Java开发者需要关注Mirage Flow? 如果你是一名Java开发者,最近可能经常听到同事或社区在讨论各种AI模型。你可能会想,这些听起来很酷的AI…...

一站式AI数据自动化标注与训练平台 AI自动标注 模型训练 数据推理一体化平台

YOLO可视化训练工具 项目简介 零配置、开箱即用的YOLO模型可视化训练平台,集成标注、训练、推理全流程于一体。本工具专为计算机视觉开发者、研究人员及企业用户设计,无需复杂环境配置,通过直观的可视化界面即可完成从数据标注到模型部署的完…...

新手必看!万物识别镜像部署全攻略:从零到识别只需10分钟

新手必看!万物识别镜像部署全攻略:从零到识别只需10分钟 你是不是经常在网上看到一张图片,特别想知道里面是什么东西?或者工作中需要处理大量图片,手动给每张图打标签简直让人崩溃?今天我要分享的这个工具…...

【华为OD机考真题】流水线调度 · 最短完工时间 (Java/Go)

一、题目题目描述: 一个工厂有 m 条流水线,来并行完成 n 个独立的作业,该工厂设置了一个调度系统,在安排作业时,总是优先执行处理时间最短的作业。 现给定流水线个数 m,需要完成的作业数 n,每个…...

OpenClaw技能组合:百川2-13B量化模型处理复杂工作流的秘诀

OpenClaw技能组合:百川2-13B量化模型处理复杂工作流的秘诀 1. 从零搭建电商价格监控系统的动机 去年双十一期间,我负责跟踪30多个竞品的价格波动。手动刷新网页、记录Excel、计算差价的过程让我每天工作到凌晨两点。这种重复劳动让我开始思考&#xff…...

驱动管理与系统优化:Driver Store Explorer全方位空间清理指南

驱动管理与系统优化:Driver Store Explorer全方位空间清理指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer [RAPR] 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 你是否遇到过系统C盘空间莫名减少的情况?即…...

英语课件PPT免费模板2026实测优选清单

英语教师备课常陷入两难:想做精美课件吸引学生注意力,却没时间设计PPT;网上搜索英语课件PPT免费模板,要么质量粗糙、排版混乱,要么暗藏水印、无法编辑,浪费大量备课时间。本文实测5款主流工具,筛…...

中文文献怎么检索更全?新手常见坑与修复方法

很多人第一次写毕业论文、做文献综述或准备开题报告时,都会遇到一个非常具体、也非常折磨人的问题:明明已经查了很多中文文献,结果还是总觉得“不够全”。这种感觉你大概率不陌生。输入一个关键词,数据库一下子出来几百篇&#xf…...

OpenClaw故障排查手册:Qwen3-32B镜像连接失败7种解决方案

OpenClaw故障排查手册:Qwen3-32B镜像连接失败7种解决方案 1. 问题背景与典型症状 上周在本地部署Qwen3-32B镜像时,我的OpenClaw突然报出ModelProviderConnectionError错误。这个RTX4090D优化版镜像本应是开箱即用的,但实际对接过程中遇到了…...

从价格战到价值战:蚂蚁保定期寿险调价背后的市场新周期

且买且珍惜,就在2026年3月,蚂蚁保等主流平台将多款热销的定期寿险产品给悄悄换上了新“价签”,对于许多关注互联网保险的用户而言,一场酝酿已久的行业性调价正式拉开了序幕。这并非一次简单的产品迭代,而是标志着互联网…...

《深度研究:提示工程架构师在Agentic AI上下文工程用户体验设计的创新实践》

深度研究:提示工程架构师在Agentic AI上下文工程用户体验设计的创新实践 一、引言:为什么你用AI总觉得“它不懂我”? 钩子:你经历过这些AI“尬聊”时刻吗? 早上你跟AI助手说:“帮我订明天去上海的高铁票,要靠窗的。”它秒回:“已为你预订G123次列车08:00出发的靠窗座…...

DeOldify移动端适配初探:在Android设备上实现本地图片上色功能

DeOldify移动端适配初探:在Android设备上实现本地图片上色功能 你有没有翻看家里老相册的经历?那些泛黄的黑白照片,承载着珍贵的记忆,却总让人觉得少了点色彩的温度。过去,给老照片上色是件专业且耗时的事&#xff0c…...

ChatGPTuino:ESP32/Arduino轻量级LLM嵌入式客户端

1. ChatGPTuino 库概述:面向嵌入式设备的轻量级 OpenAI API 客户端ChatGPTuino 是一个专为资源受限嵌入式平台设计的 Arduino 兼容库,其核心目标是将 OpenAI 的 ChatGPT 文本生成能力无缝集成到 WiFi 连接的微控制器系统中。该库并非简单封装 HTTP 请求&…...

RK3588上跑iperf3测速前,你的RTL8188eus USB WiFi驱动真的装对了吗?避坑指南

RK3588上RTL8188eus USB WiFi驱动深度调优指南:从编译到iperf3测速全流程解析 在RK3588平台上部署RTL8188eus USB WiFi驱动看似简单,实则暗藏玄机。许多开发者往往在驱动"看似"安装成功后,却面临连接不稳定、速度不达标等棘手问题。…...

广州口碑第一,数谷AI定制优化究竟为企业解决了哪些痛点?

广州口碑第一,数谷AI定制优化究竟为企业解决了哪些痛点?在2026年这个节点,大湾区的商业竞争早已从“流量争夺”全面转向了“模型权重博弈”。如果你走进深圳龙岗华通大厦的会议室,或是漫步在东莞松山湖的科技园区,会发…...

3分钟掌握ncmdump:网易云音乐NCM文件解密与转换的完整指南

3分钟掌握ncmdump:网易云音乐NCM文件解密与转换的完整指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否遇到过从网易云音乐下载的歌曲只能在特定客户端播放,无法在其他设备或播放器使用的困扰&#…...

windows安装docker desktop wsl too old,wsl --update速度为0解决方法

WSL needs updating Your version of Windows Subsystem for Linux (WSL) is too old. Run the command below to update or for more information, visit .the Microsoft WSL documentation wsl --update 如果你遇到 C:\Users\a1>wsl --update 正在安装: 适用于 Linux …...