您的位置:首页 > 编程语言 > Java开发

基于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寄语:编码时不要全部拷贝别人的代码,要去体会别人的编程思路,对于细节不懂,可以稍加参考!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: