基于JAVA语言实现银行简单ATM应用,通过console输入输出的行式模拟
2018-03-21 10:07
691 查看
声明:这里只是用java基础知识来实现,不涉及设计模式。首先分析ATM的功能:余额查询、存款、取款、转账、修改密码、退出。这些都是我们平时操作ATM时比较深刻的。所以我们可以根据功能来创建方法。然后界面调用即可。源码如下:package online.shixun.project;import java.text.SimpleDateFormat;import java.util.Scanner;/*** @author kent* 基于JAVA语言实现银行ATM应用,通过console输入输出的行式模拟**/public class ATMSystem {
//利用二维数组来存储账户信息 private static String[][] accounts = {{"heecoo","123456","1000"},{"kyrie","112233","800"}};
//功能操作数组 private static String[] menus = {"1.余额查询","2.存款","3.取款","4.转账","5.修改密码","0.退出"}; private static Scanner input = new Scanner(System.in);
//界面开始 public static void main(String[] args) { //初始化账户信息 initAccounts(); //显示登录界面 welcome(); //系统登录,登陆成功后返回账户索引ID int accountIndex = login(); //登录成功 if (accountIndex != -1){ while(true){ printMenu(); int menuId = input.nextInt(); switch (menuId){ case 1: queryBalance(accountIndex); break; case 2: deposit(accountIndex); break; case 3: withdraw(accountIndex); break; case 4: int index = transfer(accountIndex); queryBalance(index); break; case 5: changePassword(accountIndex); break; case 0: System.out.println("系统退出成功!"); System.exit(0); default: System.out.println("非法操作"); break; } } } }
//功能实现方法//修改密码private static void changePassword(int accountIndex) {System.out.println("请输入您需要设置的密码:");String passwd1 = input.next();System.out.println("请再输入一次:");String passwd2 = input.next();if(passwd1.equals(passwd2)){System.out.println("密码修改成功!!");accounts[accountIndex][2]=passwd1;}else {System.out.println("您两次输入的密码不一致!请重新操作!");changePassword(accountIndex);}}//登录初始界面private static void welcome() {System.out.println("-----------------------------------------");System.out.println("*******欢迎来到深圳银行********");System.out.println("*******请按照菜单进行操作*******");System.out.println("-----------------------------------------");}private static void initAccounts() {System.out.println("开始初始化.....请稍等...");}//登录界面private static int login() {//int loginAcountsCount = 0;int loginPasswdCount = 0;int valueOfReturn=-1;int loopNumber = 1;int index = 0;System.out.println("请输入账户名:");String acountsName = input.next();for (int i=0;i<accounts.length;i++){if (accounts[i][0].equals(acountsName)){index = i;}}while(loopNumber==1){System.out.println("请输入密码:");if (accounts[index][1].equals(input.next())){System.out.println("登录成功!");System.out.println("当前用户:"+acountsName);SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");System.out.println(dateFormat.format(System.currentTimeMillis()));System.out.println("*********************************************");valueOfReturn = index;loopNumber=-1;}else{loginPasswdCount++;if (loginPasswdCount >= 5){System.out.println("对不起,您已经尝试了5次密码输入." +"您的账户已经被冻结了。" +"不能操作了," +"请到柜台办理密码更改业务!");loopNumber=-1;valueOfReturn=-1;}else{System.out.println("密码错误!!" +"您还有"+(5-loginPasswdCount)+"次机会输入," +"请确保自己的输入!");continue;}}}//System.out.println(valueOfReturn);return valueOfReturn;}//显示操作界面private static void printMenu() {for (int i=0;i<menus.length;i++){System.out.println(menus[i]);}}//余额查询private static void queryBalance(int accountIndex) {System.out.println(accounts[accountIndex][0]+",您的余额为:");System.out.println(accounts[accountIndex][2]);System.out.println("*********************************************");}//存款private static void deposit(int accountIndex){System.out.println("*********************************************");while(true){System.out.println("存钱规则:每次存钱不能超过1000,存款必须是100的整数!");System.out.println("请整理好您的钞票,放入出钞口!(输入存款金额):");int cashCount = input.nextInt();if (cashCount<1000&&cashCount%100==0){int i = Integer.parseInt(accounts[accountIndex][2]);i+=cashCount;accounts[accountIndex][2]=String.valueOf(i);System.out.println("存款成功!请确认!");System.out.println("*********************************************");break;}else{System.out.println("您的操作不符合规范,请仔细阅读存钱规则!");System.out.println("*********************************************");continue;}}}//取款private static void withdraw(int accountIndex){System.out.println("*********************************************");while(true){System.out.println("取钱规则:每次取钱不能超过1000,取款必须是100的整数!确保您的余额是否满足!");System.out.println("输入取款金额:");int cashCount = input.nextInt();int i = Integer.parseInt(accounts[accountIndex][2]);// if (cashCount<1000&&cashCount%100==0&&cashCount < i){// i-=cashCount;// accounts[accountIndex][2]=String.valueOf(i);// System.out.println("请取走钞票!请确认!");// break;// }if (cashCount<1000&&cashCount%100==0&&cashCount > 0){if(cashCount > i){System.out.println("您的账户余额不足!");}else {i-=cashCount;accounts[accountIndex][2]=String.va4000lueOf(i);System.out.println("请取走钞票!请确认!");System.out.println("*********************************************");break;}} else{System.out.println("您的操作不符合规范,请仔细阅读取钱规则!");continue;}}}//转账private static int transfer(int accountIndex){System.out.println("*********************************************");System.out.println("请输入对方账户:");String theSecondAcount = input.next();int index=-1;for (int i=0;i<accounts.length;i++){if (accounts[i][0].equals(theSecondAcount)){index = i;}}if (index == -1){System.out.println("该用户不存在!请核对后再操作!");}else {while(true){System.out.println("转账规则:每次转钱不能超过1000,金额必须是100的整数!确保您的余额是否满足!");System.out.println("输入转账金额:");int cashCount = input.nextInt();int i = Integer.parseInt(accounts[accountIndex][2]);// if (cashCount<1000&&cashCount%100==0&&cashCount < i){// i-=cashCount;// accounts[accountIndex][2]=String.valueOf(i);// System.out.println("请取走钞票!请确认!");// break;// }if (cashCount<1000&&cashCount%100==0&&cashCount > 0){if(cashCount > i){System.out.println("您的账户余额不足!");}else {i-=cashCount;accounts[accountIndex][2]=String.valueOf(i);System.out.println("转账成功!请对方账户确认!");System.out.println("*********************************************");int theI= Integer.parseInt(accounts[index][2]);theI+=cashCount;accounts[index][2]=String.valueOf(theI);System.out.println("您的余额为:");queryBalance(accountIndex);System.out.println("*********************************************");break;}} else{System.out.println("您的操作不符合规范,请仔细阅读转账规则!");continue;}}}return index;}}Heecoo寄语:编码时不要全部拷贝别人的代码,要去体会别人的编程思路,对于细节不懂,可以稍加参考!
相关文章推荐
- 金融IT——模拟银行ATM系统Java实现
- Java基于解释器模式实现定义一种简单的语言功能示例
- 基于局域网络应用Java语言实现远程智能终端的控制
- 通过java监听器实现简单的单点登录功能(基于SSH2框架)
- Flex与java 通过BlazeDS实现通信(简单Demo)
- 使用java简单模拟ping和telnet的实现
- 基于Java实现简单Http服务器之一
- java语言编程模拟ATM自动取款机
- [零基础学JAVA]Java SE应用部分-31.Java IO操作(05)IO操作实例讲解之实现简单MIS 推荐
- 使用java简单模拟ping和telnet的实现
- WINCE基于CH7024实现TV OUT (VGA)功能_CPU(在此为S3C2443)输出的RGB数字信号通过CH7024转换成PAL制式的模拟信号输出到电视
- 基于 java 的 Web Service 简单实现
- JAVA线程的应用实例(运用2种中断线程方式,基于实现进度条为例)
- JSP应用 java反射简单实现
- 使用 Google App Engine 实现基于云计算的小型 Java 数据服务应用
- Base64编码介绍及基于Java语言实现
- Java语言深入--基于JNDI的应用开发
- 使用java简单模拟ping和telnet的实现
- Base64编码介绍及基于Java语言实现
- 使用java简单模拟ping和telnet的实现