JAVA简单ATM的实现

2024-03-20 19:08
文章标签 java 简单 实现 atm

本文主要是介绍JAVA简单ATM的实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

实验要求

登陆界面

1.登陆   2.注册    3.退出

操作界面

1.存款   2.取款 3.转账  4.查余额  5.退卡

效果图

源代码

ATM类

 

package com.company;
import java.util.Scanner;
public class ATM {private Bank bank;private BankCard bankcard;private double money;private int id;private  int passwd;public ATM(){bank=new Bank();}public void login(int id,int passwd){//登陆if(bank.contains(id,passwd)){bankcard=bank.getcard(id,passwd);start2();}else{System.out.println("账号密码错误");}}public boolean register(int id,int passwd){//注册if(bank.contains(id,passwd)){System.out.println("账号已经被注册");return false;}BankCard card=new BankCard(id,passwd);bank.add(card);System.out.println("注册成功");return true;}public void start() {//菜单页面while (true){System.out.println("1. 登陆 2.注册 3.退出");Scanner scanner = new Scanner(System.in);int chioce = scanner.nextInt();if (chioce == 3) {break;}System.out.println("请输入账号:");int id = scanner.nextInt();System.out.println("请输入密码:");int passwd = scanner.nextInt();switch (chioce) {case 1:login(id, passwd);break;case 2:register(id, passwd);break;}}}public void start2(){//登陆之后菜单while (true){int id1=0;System.out.println("1. 存款 2.取款 3.转账 4.查余额 5.退卡");Scanner scanner = new Scanner(System.in);int chioce = scanner.nextInt();if (chioce == 5) {//退出return;}switch (chioce) {case 1://存款System.out.println("请输入存款金额:");money = scanner.nextDouble();bank.deposit(bankcard,money);System.out.println("存款成功!");break;case 2://取款System.out.println("请输入取款金额:");money = scanner.nextDouble();if(bank.withdrawMoney (bankcard,money)) {System.out.println("取款成功!");}break;case 3://转账System.out.println("请输入转账用户id:");id1=scanner.nextInt();if(!bank.contains2(id1)){//检查账户是否注册System.out.println("账户未注册");}else{System.out.println("请输入转账金额:");money = scanner.nextDouble();if(bank.transferAccounts(bankcard,bank.getCard1(id1),money)){System.out.println("转账成功");}else{System.out.println("余额不足,转账失败");}}case 4://查询余额System.out.println("余额为:"+bank.queryAccounts(bankcard));}}}}

Bank类

package com.company;import java.util.Arrays;public class Bank {private BankCard[] cards;//存储银行卡private int size;//计卡的数量private static final int INITSIZE=10;public Bank(){cards=new BankCard[INITSIZE];}public void add(BankCard card){//添加一张银行卡if(cards.length==size){cards= Arrays.copyOf(cards,cards.length+(cards.length>>1));}cards[size]=card;size++;}public boolean contains(int id,int passwd){//查询是否存在银行卡id和passwdfor(int i=0;i<size;i++) {if (cards[i].getId()== id && cards[i].getPasswd() == passwd) {return true;}}return false;}public boolean contains2(int id){//查询是否存在银行卡id和passwdfor(int i=0;i<size;i++) {if (cards[i].getId()== id) {return true;}}return false;}public BankCard getcard(int id,int passwd) {//输入卡号密码返回银行卡for(int i=0;i<size;i++){if(cards[i].getId()== id && cards[i].getPasswd() == passwd){return cards[i];}}return null;}public BankCard getCard1(int id) {//输入卡号返回银行卡for(int i=0;i<size;i++){if(cards[i].getId()== id ){return cards[i];}}return null;}public  boolean deposit(BankCard card, double money) {//存款,利用boolean类型返回两种情况,方便给用户提示;return card.setMoney(money);}public boolean withdrawMoney(BankCard card, double money) {//取款return card.getMoney(money);}public boolean transferAccounts(BankCard card,BankCard card1, double money) {//转账if (card.getMoney(money)) {card1.setMoney(money);return true;} else {return false;}}public double queryAccounts(BankCard card) {//查询余额;return card.getBalance();}
}

Bankcard类

package com.company;public class BankCard {private double money;private  int id;private  int passwd;public BankCard(int id, int passwd) {this.id=id;this.passwd=passwd;}public boolean getMoney(double money) {//在账户上取钱if(this.money>=money){this.money-=money;return true;}else{return false;}}public boolean setMoney(double money) {//在账户哦上存款this.money += money;return true;}public int getId() {return id;}public void setId(int id) {this.id = id;}public int getPasswd() {return passwd;}public void setPasswd(int passwd) {this.passwd = passwd;}public double getBalance() {//返回this.money值return this.money;}
}

 

这篇关于JAVA简单ATM的实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/830461

相关文章

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

Java实现文件图片的预览和下载功能

《Java实现文件图片的预览和下载功能》这篇文章主要为大家详细介绍了如何使用Java实现文件图片的预览和下载功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... Java实现文件(图片)的预览和下载 @ApiOperation("访问文件") @GetMapping("

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

使用Sentinel自定义返回和实现区分来源方式

《使用Sentinel自定义返回和实现区分来源方式》:本文主要介绍使用Sentinel自定义返回和实现区分来源方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Sentinel自定义返回和实现区分来源1. 自定义错误返回2. 实现区分来源总结Sentinel自定

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要