ATM-Java实现

package cn.oracle;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class Atm {
 public static void main(String[] args) {
  new Atm();
 }

 String name;
 String pwd;
 String nm;
 String pw;
 String op;
 String history = "";
 public double money = 0;
 // 控制台输入
 Scanner sc = new Scanner(System.in);

 // 注册、登录、退出
 public Atm() {
  one: while (true) {
   System.err.println("1.注册\n2.登录\n0.退出\n");
   String op = sc.nextLine();
   switch (op) {
   case "1":
    reg();
    break;

   case "2":
    login();
    break;

   case "0":
    System.err.println("欢迎下次使用,谢谢!");
    break one;

   default:
    System.err.println("输入不正确,请重新输入!");
    break;
   }

  }
 }

 // 定义注册方法
 public void reg() {
  System.err.println("*************欢迎使用*************");
  System.err.println("请输入用户名:");
  name = sc.nextLine();
  System.err.println("请输入密码:");
  String pwd1 = sc.nextLine();
  System.err.println("请重新输入密码:");
  String pwd2 = sc.nextLine();
  if(pwd1.equals(pwd2)){
    pwd = pwd1;
   System.err.println("注册成功!");
   System.err.println("用户名为:" + name);
  }else{
  System.err.println("输入前后两次密码不一致,请重新输入:"); 
  reg();
  }
  
 }

 // 登录
 public void login() {
  System.err.println("请输入用户名和密码:");
  nm = sc.nextLine();
  pw = sc.nextLine();
  if (nm.equals(name) && pw.equals(pwd)) {
   System.err.println("登陆成功!");
   operation();
  } else {
   System.err.println("输入有误,请重新输入:");
  }
 }

 // 登陆成功后,进行选择存款、取款、查询余额、退出
 public void operation() {
  System.err.println("1.存款\n2.取款\n3.查询余额\n4.修改密码\n5.历史记录\n0.退出");
  op = sc.nextLine();
  two: while (true) {
   switch (op) {
   case "1":
    save();
    break;

   case "2":
    withdraw();
    break;

   case "3":
    balance();
    break;
   case "4":
    resetkey();
    break;
   case "5":
    history();
    break;
   case "0":
    System.err.println("返回登录界面");
    break two;
   default:
    System.err.println("选择不正确,请重新选择!");
    break;
   }
   operation();
   return;
  }
 }

 // 定义实时时间
 public String dt() {
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  String str = sdf.format(new Date());
  return str;
 }

 // 定义历史记录方法
 public void history() {
  System.err.println("**************************************************************************************");
  System.err.println("\t时间\t\t操作\t\t金额(元)\t\t余额(元)");
  System.err.println(history);
  System.err.println("**************************************************************************************");
 }

 // 存款 + *******************存款金额限制*******************************
 public void save() {
  System.err.println("请输入存款金额:");
  int money = Integer.parseInt(sc.nextLine()); // 为什么必须要用强制转换 nextLine作用
  if (money <= 0) {
   System.err.println("输入有误,请重新输入:");
   save();
  } else if(money > 3000){
   System.err.println("输入金额超出可存最大金额,请重新输入!");
   save();  
  }
  else {
       this.money  = this.money + money;
   System.err.println("余额为:" + money);
   history += "\n" + dt() + "\t存钱\t\t" + money + "\t\t" + this.money;
  }

 }

 // 取款 *******************取款金额限制*******************************
 public void withdraw() {

  System.err.println("请输入取款金额:");
  int money = Integer.parseInt(sc.nextLine());
  if (money < 0 || money > this.money) {
   System.err.println("输入有误或余额不足,请重新输入:");
   withdraw();
  } else if(money > 3000){
   System.err.println("输入金额超出可取最大金额,请重新输入!");
   withdraw();
  }else {
   this.money = this.money - money;
   System.err.println("余额为:" + this.money);
   history += "\n" + dt() + "\t取款\t\t" + money + "\t\t" + this.money;
  }
 }

 // 查询余额
 public void balance() {

  System.err.println("余额为:" + this.money);
  history += "\n" + dt() + "\t查询余额\t\t" + "**" + "\t\t" + this.money;
 }

 // 修改密码
 public void resetkey() {

  System.err.println("请输入密码:");
  String pwd1 = sc.nextLine();
  System.err.println("请重新输入:");
  String pwd2 = sc.nextLine();

  if (pwd1.equals(pwd2)) {
   if (pwd1.equals(pwd)) {
    System.err.println("修改前后密码一致!");
    return;
   } else {
    pwd = pwd1;
    System.err.println("修改密码成功!");
    history += "\n" + dt() + "\t修改密码\t\t" + "**" + "\t\t" + this.money;
   }
  } else {
   System.err.println("两次输入不一致,请重新输入!");
   resetkey();
  }
 }

}

你可能感兴趣的:(ATM-Java实现)