ATMSystem



package com.lwt.atmSystem;

public class Account {
 private String password;
 private double balance;

 public Account(String password, double balance) {
  this.password = password;
  this.balance = balance;
 }

 public String getPassword() {
  return password;
 }

 public void setPassword(String password) {
  this.password = password;
 }

 public double getMoney() {
  return balance;
 }

 public void setMoney(double money) {
  this.balance = money;
 }

 void dropMoney(double money) {
  balance -= money;
 }

 void addMoney(double money) {
  balance += money;
 }
}




package com.lwt.atmSystem;

import java.util.Scanner;
import java.util.Timer;
import java.util.TimerTask;

public class ATM {
 Account acct;
 double sum1;
 double sum2;
 public ATM() {
  acct = new Account("123456", 20000.00);
 }

 // 欢迎及系统进入提示
 public void welcome() throws Exception {
  System.out.println("-----------------------------------------" + "\n"
     + "------------欢迎使用xxxx银行ATM系统------------"+ "\n"
     + "-----------------------------------------" + "\n"
     + "请选择:1. 进入系统   2. 退出");
  int num;
  Scanner scanner = new Scanner(System.in);
  num = scanner.nextInt();
  switch (num) {
  case 1:
   enterPwd();
   break;
  case 2:
   exit();
   break;
  default:
   welcome();
  }
 }

 // 密码输入提示
 public void enterPwd() throws Exception {
  String pwd;
  int timer = 0;
  Scanner scanner = new Scanner(System.in);
  do {
   System.out.println("请输入你的密码:");
   pwd = scanner.nextLine();
   if (!isRight(pwd)) {
    System.out.println("你的密码有误,请重新输入:");
    timer++;
   } else {
    langChoose();
   }
  } while (timer < 3);
  System.out.println("由于输入的次数过多,您的卡已经被ATM吞掉,请联系工作人员!");
  System.exit(1);
 }

 // 验证密码是否正确
 public boolean isRight(String pwd) {
  if (acct.getPassword().equals(pwd)) {
   return true;
  } else {
   return false;
  }
 }

 // 语言选择提示
 public void langChoose() throws Exception {
  int num;
  Scanner scanner = new Scanner(System.in);
  System.out.println("请选择服务语言:1 中文;2 英文 ");
  num = scanner.nextInt();
  switch (num) {
  case 1:
   menu();
   break;
  case 2:
   System.out.println("英文系统正在建设中....");
   langChoose();
   break;
  default:
   System.out.println("只能输入1或者2");
   langChoose();
  }
 }

 // 主菜单页面
 public void menu() throws Exception {
  int num;
  int counter = 0;
  System.out.println("------------请选择服务项目------------" + "\n"
     + "1. 查询余额    2. 取款   3. 转账   4. 存款   5. 退出");
  Scanner scanner = new Scanner(System.in);
  do {
   num = scanner.nextInt();
   switch (num) {
   case 1:
    queryBal();
    break;
   case 2:
    withdraw();
    break;
   case 3:
    transferAcct();
    break;
   case 4:
    deposit();
    break;
   case 5:
    exit();
    break;
   default:
    System.out.println("服务项目不存在,请重新选择服务项目!");
    menu();
   }
  } while (counter < 2);
  System.out.println("不要捣乱了,赶紧回家吧!");
  exit();
 }

 // 查询余额
 public void queryBal() throws Exception {
  System.out.println("您卡上的信用余额为" + acct.getMoney());
  menu();
 }

 // 取款
 public void withdraw() throws Exception {
  int num;
  double money = 0;
  //double sum;
  if(sum1==5000){
   System.out.println("\n"+"对不起,您今日取款已达到限制,请选择其他项目或去柜台取钱。");
   TimerTask task = new TimerTask(){
    public void run(){
     sum1 = 0;
    }
   };
   Timer timer = new Timer();
   long delay = 1000*60*60*24;
   long period = 1000*60*60*24;
   timer.scheduleAtFixedRate(task, delay, period);
   menu();
  }
  System.out.println("您选择取款,请注意以下提示:" + "\n"
     + "1)提示该ATM机一次能取款的最大金额为2000元." + "\n"
     + "2)用户的帐户一天取款累计的最大金额为5000."+ "\n"
     + "3)选取系统界面上的固定金额(500,1000,2000),或是输入要取的金额,进行取款." + "\n"
     + "------------请选择取款金额------------"+ "\n"
     + "1.500   2.1000   3.2000   4.其他金额");
  Scanner scanner = new Scanner(System.in);
  // while (scanner.hasNext()) {
  num = scanner.nextInt();
  switch (num) {
  case 1:
   money = 500;

   break;
  case 2:
   money = 1000;
   // sum = sum + money;
   break;
  case 3:
   money = 2000;
   // sum = sum + money;
   break;
  case 4:
   System.out.println("请输入金额:(注意:只能输入100的整数倍,并且要小于2000)");
   Scanner scanner1 = new Scanner(System.in);
   money = scanner1.nextDouble();
   if (money % 100 != 0 || money > 2000) {
    System.out.println("您输入的金额不是100的整数倍或者大于2000,请选择:");
    otherAmt(money);
   }
   // sum = sum + money;
   break;
  default:
   withdraw();
  }

  sum1 = sum1 + money;
  if (money > acct.getMoney()) {
   System.out.println("余额不足请重新输入");
   withdraw();
  } else if (sum1 > 5000) {
   System.out.println("对不起,本次取钱后当天累计金额将超过5000,将跳转到取款界面,请重新取款:" + "\n");
   withdraw();
  } else {
   acct.dropMoney(money);
   // sum = sum + money;
   System.out.println("取款成功你的账户余额为" + acct.getMoney());
   // System.out.println(sum);
   afterWithdraw();

  }
  // }
 }

 // 一次取款大于2000的操作
 public void otherAmt(double money) throws Exception {
  int num;
  System.out.println("1 重新输入取款金额;2 选择退出系统.");
  Scanner scanner = new Scanner(System.in);
  num = scanner.nextInt();
  switch (num) {
  case 1:
   System.out.println("您选择重新输入金额,将返回取款界面...");
   withdraw();
   break;
  case 2:
   exit();
   break;
  default:
   otherAmt(money);
  }
 }

 // 取款成功后的操作
 public void afterWithdraw() throws Exception {
  int num;
  System.out.println("您选择:1 继续取款;2 返回主页面;3 退出");
  Scanner scanner = new Scanner(System.in);
  num = scanner.nextInt();
  switch (num) {
  case 1:
   System.out.println("您选择继续取款,将返回取款界面...");
   withdraw();
   break;
  case 2:
   System.out.println("您选择返回主页面,即将返回...");
   menu();
  case 3:
   System.out.println("您选择退出,即将退出...");
   exit();
   break;
  default:
   afterWithdraw();
  }
 }

 // 转账
 public void transferAcct() throws Exception {
  int num1 = 1;
  int num2 = 0;
  double money = 0;
  System.out.println("请输入转账帐号:");
  Scanner scanner1 = new Scanner(System.in);
  try {
   num1 = scanner1.nextInt();
  } catch (Exception e) {
   System.out.println("账户必须都是数字,并且前后要一致。请重新输入转入账户:");
   transferAcct();
  }
  System.out.println("请再次输入转账帐号:");
  Scanner scanner2 = new Scanner(System.in);
  try {
   num2 = scanner2.nextInt();
  } catch (Exception e) {
   System.out.println("账户必须都是数字,并且前后要一致。请重新输入转入账户:");
   transferAcct();
  }
  while (num1 == num2) {
   inputMoney(money);
   if (money > acct.getMoney()) {
    System.out.println("余额不足请重新输入");
    inputMoney(money);
   } else {
    acct.dropMoney(money);
   }
   System.out.println("转账成功你的账户余额为" + acct.getMoney());
   afterTransferAcct();
  }
  System.out.println("账户必须都是数字,并且前后要一致。请重新输入转入账户:");
  transferAcct();
 }

 // 输入金额
 public void inputMoney(double money) {
  int num;
  System.out.println("请您输入转账金额(注意,转账一次的金额不能超过10000元):");
  Scanner scanner1 = new Scanner(System.in);
  try {
   money = scanner1.nextDouble();
  } catch (Exception e) {
   System.out.println("转账金额必须为数字,请重新输入");
   inputMoney(money);
  }
  if (money > 10000 || money < 1) {
   System.out.println("转账的金额超过10000元或者小于1元,请选择:" + "\n"
      + "1 重新输入转出金额;2 退出系统");
   Scanner scanner2 = new Scanner(System.in);
   num = scanner2.nextInt();
   switch (num) {
   case 1:
    System.out.println("您选择重新输入金额,将返回输入转账金额界面...");
    inputMoney(money);
    break;
   case 2:
    exit();
    break;
   default:
    System.out.println("需选择1或者2,但您没有选择,默认返回输入转账金额界面...");
    inputMoney(money);
    break;
   }
  } else if (money > acct.getMoney()) {
   System.out.println("余额不足请重新输入");
   inputMoney(money);
  } else {
   acct.dropMoney(money);
  }
 }

 // 转账成功后操作
 public void afterTransferAcct() throws Exception {
  int num;
  System.out.println("您选择:1 继续转账;2 返回主页面;3 退出");
  Scanner scanner = new Scanner(System.in);
  num = scanner.nextInt();
  switch (num) {
  case 1:
   System.out.println("您选择继续转账,将返回转账界面...");
   transferAcct();
   break;
  case 2:
   System.out.println("您选择返回主页面,即将返回...");
   menu();
  case 3:
   System.out.println("您选择退出,即将退出...");
   exit();
   break;
  default:
   afterTransferAcct();
  }
 }

 // 存款
 public void deposit() throws Exception {
  double money; 
  if (sum2 == 50000) {
   System.out.println("\n" + "您今日存款已达到限制,请选择其他项目或去柜台存钱。");
   TimerTask task = new TimerTask(){
    public void run(){
     sum1 = 0;
    }
   };
   Timer timer = new Timer();
   long delay = 1000*60*60*24;
   long period = 1000*60*60*24;
   timer.scheduleAtFixedRate(task, delay, period);
   menu();
  }
  System.out.println("您选择存款,请注意以下提示:" + "\n"
     + "1)提示该ATM机一次能存款的最大金额为10000元." + "\n"
     + "2)用户的帐户一天存款累计的最大金额为50000元."+ "\n"
     + "\n" + "请输入金额(1.存款金额必须是整数 2. 存款的金额必须是50的整数倍 3. 存款金额最大限度是 10000元):");
  Scanner scanner = new Scanner(System.in);
  // while(sum2!=50000){
  // while (scanner.hasNext()) {
  money = scanner.nextDouble();
  if (money == (int) money && money % 50 == 0 && money <= 10000) {
   sum2 = sum2 + money;
   if (sum2 > 50000) {
    System.out.println("对不起,本次存钱后当天累计金额将超过50000,将跳转到存款界面,请重新存款:" + "\n");
    deposit();
   }
   // System.out.println(sum2);
   acct.addMoney(money);
   System.out.println("存款成功,你的账户余额为" + acct.getMoney());
   afterDeposit();
  } else {
   System.out.println("输入有误,请重新输入存款金额:");
   deposit();
  }
  // }
  // }
 }

 // 存款成功后操作
 public void afterDeposit() throws Exception {
  int num;
  System.out.println("您选择:1 继续存款;2 返回主页面;3 退出");
  Scanner scanner2 = new Scanner(System.in);
  num = scanner2.nextInt();
  switch (num) {
  case 1:
   System.out.println("您选择继续存款,将返回存款界面...");
   deposit();
   break;
  case 2:
   System.out.println("您选择返回主页面,即将返回...");
   menu();
  case 3:
   System.out.println("您选择退出,即将退出...");
   exit();
   break;
  default:
   afterDeposit();
  }
 }

 // 退出
 public void exit() {
  System.out.println("------------------------------------------------" + "\n"
     + "------------欢迎再次使用xxxx银行ATM系统,再见!------------" + "\n"
     + "------------------------------------------------");
  System.exit(0);
 }
}





package com.lwt.atmSystem;

public class ATMDemo {

 public static void main(String[] args) throws Exception {
  // TODO 自动生成的方法存根
  ATM atm = new ATM();
  atm.welcome();
 }

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值