模仿ATM,很简单的功能 version 1.0

下面是我做的一个模仿ATM机的一个小程序,这是我的第一个版本,仅仅写了一些存钱,取钱,密码判断的一些逻辑,没有界面 ,不能储存数据。 程序只有两个类 UserAccount和AccountStart,AccountStart里有入口函数,先研究一下的可以看看哟! 这可以帮我调试一小哟!
/**
 * @Chris Ma
 * @version 1.0
 *  May 2th,2009
 *  编写一个储蓄帐户类
 *  属性有
 * 户头帐号
 * 密码
 * 持有者姓名
 * 总金额
 * 交易记录 用字符串表示每次交易记录用“/n"拼接
 * 例如 提取XXX钱/n存入XXX钱
 * 
 * 
 * 功能要求
 * 
 * 创建一个登陆方法 land()2个参数 帐号 和密码 返回布尔值 判断输入的帐号密码是否正确
 * 
 * 创建一个取钱的方法takeout(float money){}
 * 验证参数不能为负(如果出错 提示信息)
 * 在取钱的方法里验证余额是否不足如果余额充足追加记录 提取XXX钱 否则输出余额不足
 * 
 * 创建一个存钱的方法save(float money){}
 * 验证参数不能为负(如果出错 提示信息)
 * 计算总金额 然后追加记录信息 存入XXX钱
 * 
 * 首先创建一个户头 应该有 帐号 密码 持有者名称 开户金额
 * 然后显示
 * 1 取款
 * 2 存款
 * 3 查看余额
 * 4 退出
 * 如果是取款和查看时应该提示密码验证
 *
 *
 *  在账密判断上 模仿真正ATM机 有三次判断的机会
 *
 */
package edu.hy.base;
import java.util.Scanner;
public class UserAccount {
 // 用户账号 密码 持卡人姓名 存款总额 交易记录
 private String userZH;
 private String userPW ;
 private String userName;
 private float userAmount;
 private String userExchangeRecord ;
 //控制交易第一次输出的内容
 private boolean boolcontrol;
 private int intPassWordControl;
 public UserAccount(String userZH,String userPW,String userName,float userAmount)
 {
  this.userZH = userZH;
  this.userPW = userPW;
  this.userName = userName;
  this.userAmount = userAmount;
  land();
 }

 //登录模块
 public void land()
 {
  String strZH;
  String strPW;
  Scanner scanner = new Scanner(System.in);
  System.out.println("请输入您的账号和密码");
  System.out.print("账号:");
  strZH = scanner.nextLine();
  System.out.print("密码:");
  strPW = scanner.nextLine();
  if(this.isLand(strZH, strPW))
  {
   System.out.println("欢迎您"+userName+"先生");
   showSelect();
  }
  else
  {
   if(intPassWordControl==3)
   {
    System.out.println("你的输入次数已达到3次,今天已经不能在输入了");
    System.out.println("欢迎再次使用");
    return;
   }
   else
   {
    System.out.println("你输入的账号密码有错误");
    System.out.println("请重新输入");
    land();
   }
  }
 }
 //判断账号密码是否正确
 private boolean isLand(String userZH,String userPW)
 {
  intPassWordControl++;
  if(this.userZH.equals(userZH)&&this.userPW.equals(userPW))
  {
   intPassWordControl=0;
   return true;
  }
  else
   return false;
 }
 //存取、钱时账户密码验证界面
 private void isShowZPRight()
 {
  
  Scanner scanner = new Scanner(System.in);
  System.out.println("账号:"+userZH);
  System.out.print("请再次输入密码:");
  String userPW = scanner.nextLine();
  if(!this.isLand(userZH, userPW))
  {
   
   if(intPassWordControl==3) return;
   System.out.println("你输入的密码有错误");
   System.out.println("请重新输入");
   
   isShowZPRight();
  }
  else
   intPassWordControl=0;
 };
 //取钱模块
 private void takeout(float money) throws Exception
 {
  if(money<=0)
  {
   System.out.println("你输入的金额有误");
   this.showSelect();
  }
  else
  {
   if(this.userAmount-money>=0)
   {
    System.out.println("请稍等,正在操作......");
    this.userAmount -= money;
    String userExchangeRecord = "提取"+String.valueOf(money)+"元";
    this.setUserExchangeRecord(userExchangeRecord);
    Thread.sleep(3000);
    System.out.println("现金提取成功");
   }
   else
   {
    System.out.println("你的现金不足");
    showSelect();
   }
  }
 }
 //存钱模块
 private void save(float money) throws Exception
 {
  if(money<=0)
  {
   System.out.println("你输入的金额有误");
   this.showSelect();
  }
  else
  {
   System.out.println("请稍等,正在操作......");
   this.userAmount += money;
   String userExchangeRecord = "存入"+String.valueOf(money)+"元";
   this.setUserExchangeRecord(userExchangeRecord);
   Thread.sleep(3000);
   System.out.println("现金存入成功");
  }
 }
 //判断是否需要其它服务
 private void isOtherService()
 {
  Scanner scanner = new Scanner(System.in);
  System.out.println("是否还需要其它服务:1 需要  2 退出");
  int intSer = Integer.parseInt(scanner.nextLine());
  if(intSer==1)
   showSelect();
  else
   System.out.println("欢迎再次使用");

 }
 //功能选择模块
 private void  showSelect()
 {
  System.out.println("请选择服务种类");
  System.out.println("1 取款");
  System.out.println("2 存款");
  System.out.println("3 查看余额");
  System.out.println("4 退出");
  Scanner scanner = new Scanner(System.in);
  int intSelect = Integer.parseInt(scanner.nextLine());
  switch(intSelect)
  {
  case 1:
   isShowZPRight();
   if(intPassWordControl==3)
   {
    System.out.println("你的输入次数已达到3次,今天已经不能在输入了");
    System.out.println("欢迎再次使用");
    break;
   }
   else
   {
    
    System.out.print("请输入您要提取的金额:");
    float takeMoney = Float.parseFloat(scanner.nextLine());
    try
    {
     this.takeout(takeMoney);
    }catch(Exception e){}
    isOtherService();
    break;
   }
  case 2:
   isShowZPRight();
   if(intPassWordControl==3)
   {
    System.out.println("你的输入次数已达到3次,今天已经不能在输入了");
    System.out.println("欢迎再次使用");
    break;
   }
   else
   {
    
    System.out.print("请输入您要存入的金额:");
    float saveMoney = Float.parseFloat(scanner.nextLine());
    try
    {
     this.save(saveMoney);
    }catch(Exception e){}
    isOtherService();
    break;
   }
  case 3:
   System.out.println("账号:"+ this.userZH);
   System.out.println("余额:"+ this.userAmount+"元");
   if(this.userExchangeRecord!=null)
   {
    System.out.println("交易记录:");
    System.out.print(this.getUserExchangeRecord());
   }
   isOtherService();
   break;
  case 4:
   System.out.println("欢迎再次使用");
   break;
  }
 }
 private String getUserExchangeRecord() {
  return userExchangeRecord;
 }
 private void setUserExchangeRecord(String userExchangeRecord)
 {
  if(!this.boolcontrol)
  {
   this.userExchangeRecord = userExchangeRecord+"/n";
   this.boolcontrol = true;
  }
  else
  {
   this.userExchangeRecord+=userExchangeRecord+"/n";
  }
 }
}
/*==========================================================
========================================================*/
package edu.hy.enter;
import edu.hy.base.*;
public class AccountStart {
 
 public static void main(String[] args) {
  UserAccount userAccount = new UserAccount("108642","111111","小王",50000);
 }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值