ATM系统(Java)

ATM系统(Java)

1、实现要求

实现基本的ATM系统功能,包括注册,登录,查询,取款,存款,以及修改密码等。

2、代码实现
2.1 Test
package com.ham;public class Test {public static void main(String[] args) {ATM atm=new ATM();atm.start();}
}
2.2 Acoount
package com.ham;public class Account {private String carId;private String name;private char sex;private String password;private double money;private double limitMoney;public Account(String carId, String name, char sex, String password, double money, double limitMoney) {this.carId = carId;this.name = name;this.sex = sex;this.password = password;this.money = money;this.limitMoney = limitMoney;}public Account() {}public String getCarId() {return carId;}public void setCarId(String carId) {this.carId = carId;}public String getName() {return name+(sex=='男'?"先生":"女士");}public void setName(String name) {this.name = name;}public char getSex() {return sex;}public void setSex(char sex) {this.sex = sex;}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 getLimitMoney() {return limitMoney;}public void setLimitMoney(double limitMoney) {this.limitMoney = limitMoney;}
}
2.3ATM
package com.ham;import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;public class ATM {private ArrayList<Account> acconuts=new ArrayList<>();private Scanner sc=new Scanner(System.in);//注册功能private void Register(){Account account =new Account();System.out.println("=======进入到开户操作=========");System.out.println("输入账号名");String name=sc.next();account.setName(name);while (true) {System.out.println("输入密码");String password=sc.next();System.out.println("输入确认密码");String password1=sc.next();if (password.equals(password1)){account.setPassword(password);break;}else {System.out.println("输入不正确");}}while (true) {System.out.println("输入性别");char sex=sc.next().charAt(0);if(sex=='男'||sex=='女'){account.setSex(sex);break;}else {System.out.println("输入不正确,重新输入");}}System.out.println("输入账号限额");double limitMoney=sc.nextDouble();account.setLimitMoney(limitMoney);//生成卡号String cardId=cardId();account.setCarId(cardId);//添加到Arrylistacconuts.add(account);System.out.println("恭喜您"+account.getName()+"开户成功,你的卡号是:"+cardId);}//登录功能private void Login(){if (acconuts.size()==0){System.out.println("用户未注册");return;}while (true) {System.out.println("请输入卡号");String CardId=sc.next();Account acc=getAccountCardId(CardId);if (acc!=null){while (true) {System.out.println("请输入密码");String pw=sc.next();if (pw.equals(acc.getPassword())){System.out.println("欢迎"+acc.getName()+"进入ATM系统,你的卡号是"+acc.getCarId());//登录系统界面showUser(acc);return;}else{System.out.println("密码错误");}}}else {System.out.println("输入账号不存在");}}}//展示登录后的操作界面private void  showUser(Account acc){while (true) {System.out.println(acc.getName()+"你可以选择如下功能");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("请选择操作");String index=sc.next();switch (index){case "1"://查询账号shouAccount(acc);break;case "2"://存款AddMoney(acc);break;case "3"://取款downMoney(acc);break;case "4":break;case "5":updataPassword(acc);return;case "6":System.out.println(acc.getName()+"退出成功");return;case "7"://注销if (deleteUser(acc)){return;}break;default:System.out.println("你选择的操做不正确");}}}//展示账号信息private void shouAccount(Account acc){System.out.println("======信息如下======");System.out.println("卡号"+acc.getCarId());System.out.println("户主"+acc.getName());System.out.println("性别"+acc.getSex());System.out.println("余额"+acc.getMoney());System.out.println("最大限额"+acc.getLimitMoney());}//修改密码private void updataPassword(Account acc){System.out.println("=======修改密码==========");while (true) {System.out.println("请你输入当前密码");String pw=sc.next();if (pw.equals(acc.getPassword())){while (true) {System.out.println("请输入新密码");String pw1=sc.next();System.out.println("请重新输入新密码");String pw2=sc.next();if (pw1.equals(pw2)){acc.setPassword(pw2);System.out.println("密码修改成功,你的新密码是"+pw2);return;}else {System.out.println("输入密码不一致");}}}else {System.out.println("密码错误");}}}//销户private boolean  deleteUser(Account acc){System.out.println("======销户操作======");System.out.println("你确定要销户吗? Y/N");String num=sc.next();switch (num){case "Y":if (acc.getMoney()!=0){System.out.println("你的账号不为零不能销户");return false;}else {acconuts.remove(acc);System.out.println("你的账号已经成功修销户");return true;}default:System.out.println("你的账号保留");return false;}}//取款private void downMoney(Account acc){System.out.println("=====取钱操作=======");if(acc.getMoney()<100){System.out.println("你的账号余额不足");return;}while (true) {System.out.println("请输入取款金额");double money=sc.nextDouble();if (acc.getMoney()>=100){if (money>acc.getLimitMoney()){System.out.println("你的取款金额超过限额"+acc.getLimitMoney());}else {acc.setMoney(acc.getMoney()-money);System.out.println("你取款金额为"+money+"账号余额为"+acc.getMoney());break;}}else {System.out.println("你的账号余额不足,账户余额为"+acc.getMoney());}}}//存款private void AddMoney(Account acc){System.out.println("=====存钱操作=======");System.out.println("请输入存款金额");double num=sc.nextDouble();double num1=acc.getMoney();acc.setMoney(num+num1);System.out.println("存款成功,你的存款金额为"+num+"总金额为"+acc.getMoney());}//生成卡号private String cardId(){while (true) {String cardId="";Random rd=new Random();for (int i=0;i<8;i++){cardId+=rd.nextInt(10);}//判断cardId重复Account acc=getAccountCardId(cardId);if (acc==null){return cardId;}}}//查卡号是否重复private Account getAccountCardId(String cardId){for (int i=0;i<acconuts.size();i++){Account acc=acconuts.get(i);if (cardId.equals(acc.getCarId())){return acc;}}return null;}//启动public void start(){while (true) {System.out.println("======欢迎进入ATM系统=========");System.out.println("1.用户登录");System.out.println("2、用户开户");System.out.println("请选择");String index =sc.next();switch (index){case "1":Login();break;case "2":Register();break;default:System.out.println("输入的不合法");}}}}
3、实现结果

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/729740.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jmap-各种option参数说明

基本情况 jmap&#xff08;JVM Memory Map&#xff09;&#xff1a;作用一方面是获取dump文件&#xff08;堆转储快照文件&#xff0c;二进制文件&#xff09;&#xff0c;它还可以获取目标Java进程的内存相关信息&#xff0c;包括Java堆各区域的使用情况、堆中对象的统计信息…

高清数学公式视频素材、科学公式和方程式视频素材下载

适用于科普、解说的自媒体视频剪辑素材&#xff0c;黑色背景数学、科学公式和方程式视频素材下载。 视频编码&#xff1a;H.264 | 分辨率&#xff1a;3840x2160 (4K) | 无需插件 | 文件大小&#xff1a;16.12MB 来自PR视频素材&#xff0c;下载地址&#xff1a;https://prmuban…

阿里云服务器怎么使用?3分钟搭建网站教程2024新版

使用阿里云服务器快速搭建网站教程&#xff0c;先为云服务器安装宝塔面板&#xff0c;然后在宝塔面板上新建站点&#xff0c;阿里云服务器网aliyunfuwuqi.com以搭建WordPress网站博客为例&#xff0c;来详细说下从阿里云服务器CPU内存配置选择、Web环境、域名解析到网站上线全流…

设计模式学习笔记 - 设计原则 - 10.实战:针对非业务的通用框架开发,如何做需求分析和设计及如何实现一个支持各种统计规则的性能计数器

前言 接下来我们在结合一个支持各种统计规则的性能计数项目&#xff0c;学习针对一个非业务的通用框架开发&#xff0c;如何来做需求分析、设计和实现&#xff0c;同时学习如何灵活应用各种设计原则。 项目背景 设计开发一个小的框架&#xff0c;能够获取接口调用的各种统计信…

RocketMQ的事务消息是如何实现的?

RocketMQ的事务消息是通过 TransactionListener接口来实现的。 在发送事务消息时,首先向RocketMQ Broker 发送一条‘half消息’(半消息),半消息将被存储在broker端的事务消息日志中,但是这个消息还不能被消费者消费。 接下来,在半消息发送成功后,应用程序通过执行本地事务…

C#,煎饼排序问题(Pancake Sorting Problem)算法与源代码

1 煎饼排序问题 给定一个未排序的数组&#xff0c;任务是对给定数组进行排序。您只能在阵列上执行以下操作。 翻转&#xff08;arr&#xff0c;i&#xff09;&#xff1a;将数组从0反转为i 示例&#xff1a; 输入&#xff1a;arr[]{23、10、20、11、12、6、7} 输出&#xff1a…

开发Chrome扩展插件

1.首先开发谷歌chrome扩展插件&#xff0c;没有严格的项目结构目录&#xff0c;但是需要保证里面有一个mainfest.json文件 (必不可少的文件)。在这个文件里有三个属性必不可少&#xff1a;name、version、mainfest_version&#xff1b; // 清单文件的版本&#xff0c;这个必须写…

二叉搜索树(BST)的创建及增,删,查,改(详解)

目录 初识二叉搜索树&#xff08;BST&#xff09;&#xff1a; 二叉搜索树查找元素&#xff1a; 二叉搜索树修改元素: 二叉搜索树中的增加元素&#xff1a; 二叉搜索树中的删除元素&#xff1a; 初识二叉搜索树&#xff08;BST&#xff09;&#xff1a; 一张图简要概括二…

高级语言讲义2016计专(仅高级语言部分)

1.斐波那契序列的第n项可以表示成以下形式&#xff0c;编写一个非递归函数&#xff0c;返回该数列的第n项的数值 #include <stdio.h>int func(int n) {if(n1||n2)return 1;int p1,q1,num;for(int i3; i<n; i) {numpq;qp;pnum;}return num; } 2.在MXN的二维数组A中&am…

window搭建本地mongo数据库并导入数据

1 window下载mongo数据库 官网&#xff1a;www.mongodb.com 选择 Products > Community Edition 就能进入社区版 在这里下载 windows 版对应的安装包 注意&#xff1a;6.0.1 版本的 MongoDB 配置环境变量有问题&#xff0c;并且我不知道怎么解决&#xff0c;如果想要避免出…

算法学习05:离散化、区间合并

算法学习05&#xff1a;离散化、区间合并 文章目录 算法学习05&#xff1a;离散化、区间合并前言需要记忆的模版&#xff1a;一、离散化1.例题&#xff1a;离散化 区间和&#xff1a;拓展: 二、区间合并&#xff08;贪心&#xff09;1.例题&#xff1a; 总结 前言 需要记忆的模…

基于FastAPI构造一个AI模型部署应用

前言 fastapi是目前一个比较流行的python web框架&#xff0c;在大模型日益流行的今天&#xff0c;其云端部署和应用大多数都是基于fastapi框架。所以掌握和理解fastapi框架基本代码和用法尤显重要。 需要注意的是&#xff0c;fastapi主要是通过app对象提供了web服务端的实现代…

基于php的用户登录实现(v1版)(持续迭代)

目录 版本说明 数据库连接 登录页面&#xff1a;login.html 登录处理实现&#xff1a;login.php 用户欢迎页面&#xff1a;welcome.php 用户注册页面&#xff1a;register.html 注册执行&#xff1a;DoRegister.php 版本说明 v1实现功能&#xff1a; 数据库连接&#x…

面试问答之MySQL数据库进阶

文章目录 &#x1f412;个人主页&#xff1a;信计2102罗铠威&#x1f3c5;JavaEE系列专栏&#x1f4d6;前言&#xff1a;&#x1f380; MySQL架构&#x1f415;数据库引擎&#x1f415; InnoDB存储存储引擎&#x1f415;MYISAM &#x1f3e8;索引&#x1f415;哪些情况需要创建…

景联文科技:专业提供高质量大语言模型训练数据

2024年&#xff0c;数字经济被再次写入政府工作报告中&#xff0c;报告指出要深化大数据、人工智能等研发应用&#xff0c;打造具有国际竞争力的数字产业集群。 大模型作为生成式人工智能的基础&#xff0c;日益成为国际科技竞争的焦点。人大代表杨剑宇指出&#xff0c;尽管我国…

008-slot插槽

slot插槽 1、插槽 slot 的简单使用2、插槽分类2.1 默认插槽2.2 具名插槽2.3 作用域插槽 插槽就是子组件中的提供给父组件使用的一个占位符&#xff0c;用<slot></slot> 表示&#xff0c;父组件可以在这个占位符中填充任何模板代码&#xff0c;如 HTML、组件等&…

老阳分享:视频号带货的四大技巧

视频号带货作为新兴的电商模式&#xff0c;在微信这个庞大的社交平台上展现出了巨大的潜力。要想在视频号带货领域取得成功&#xff0c;需要掌握一定的技巧。本文将为您详细解析视频号带货的四大技巧&#xff0c;感兴趣的朋友一起去看看吧。 一、内容创新 内容创新是视频号带货…

【深度学习笔记】5_11 残差网络ResNet

注&#xff1a;本文为《动手学深度学习》开源内容&#xff0c;部分标注了个人理解&#xff0c;仅为个人学习记录&#xff0c;无抄袭搬运意图 5.11 残差网络&#xff08;ResNet&#xff09; 让我们先思考一个问题&#xff1a;对神经网络模型添加新的层&#xff0c;充分训练后的…

springboot项目集成,项目流程概述

一、项目介绍 二、项目设计原则 2.1整体原则 2.2持久层 2.3业务逻辑层 具体分析 三、实战 3.1项目搭建 <dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-crypto</artifactId></dependency>&l…

双链表的实现(数据结构)

链表总体可以分为三大类 一、无头和有头 二、单向和双向 三、循环和不循环 从上面分类得知可以组合成8种不同类型链表&#xff0c;其中单链表最为简单&#xff0c;双联表最为复杂&#xff0c;两种链表都实现后其余链表都不成问题。 我们前期博客已将完成了单向无头不循环链表…