当前位置:首页 > 开发教程 > java教程 >

Java实现简单控制台版ATM系统

时间:2022-05-27 16:29 来源:未知 作者:拥者不珍 收藏

这篇文章主要为大家详细介绍了Java实现简单控制台版ATM系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Java实现简单控制台版ATM系统的具体代码,供大家参考,具体内容如下

ATM系统项目

ATM系统要实现的功能

1.查询:账号必须存在,密码(三次机会,不对就锁卡)

2.取款:账号必须存在,密码(三次机会,不对就锁卡),取款金额不能大于存款

3.存款:账号必须存在,存款金额不能低于0

4.转帐:你的账户,转款账户都必须存在,密码(三次机会,不对就锁卡),转账金额不能超过余额

5.锁卡:账号必须存在,使用密码冻结

6.解卡:账号必须存在,只能使用身份证号进行解锁

7.补卡:使用身份证进行补卡

8.改密:愿密码进行改密,也可以使用身份证进行改密

9.退出: 保存数据

项目分析

可分为四个对象,第一个 银行卡对象(Card 存储银行卡信息);第二个 用户对象(Person 存储用户信息);第三个 功能对象( Controller 具体的操作功能类);视图对象( Views 显示操作界面)。从而可分为四个类

代码

Card类

封装卡的属性(卡号,密码,余额,锁卡状态)

public class Card {
 //封装卡的属性
 private String cardid;
 private String password;
 private double money;
 private boolean islock;

 //设置封装的各属性的set、get方法
 public String getCardid() {
 return cardid;
 }

 public void setCardid(String cardid) {
 this.cardid = cardid;
 }

 public String getPassword() {
 return password;
 }

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

 public double getMoney() {
 return money;
 }

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

 public boolean isIslock() {
 return islock;
 }

 public void setIslock(boolean islock) {
 this.islock = islock;
 }
 
 //重写 to String方法
 @Override
 public String toString() {
  return "Card [cardid=" + cardid + ", password=" + password + ", money=" + money + ", islock=" + islock + "]";
 }
 
 //构造卡的无参和有参构造方法 
 public Card() {
  super();
  
 }
  
 public Card(String cardid, String password, double money, boolean islook) {
  super();
  this.cardid = cardid;
  this.password = password;
  this.money = money;
  this.islock = islock;
 }
 
}

Person类

封装用户信息(用户名,身份证号,手机号码,卡)

public class Person {
 private String name;
 private String userid;
 private String phone;
 private Card[] card;
 
 //设置封装的各属性的set、get方法
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public String getUserid() {
  return userid;
 }
 public void setUserid(String userid) {
  this.userid = userid;
 }
 public String getPhone() {
  return phone;
 }
 public void setPhone(String phone) {
  this.phone = phone;
 }
 public Card[] getCard() {
  return card;
 }
 public void setCard(Card[] card) {
  this.card = card;
 }
  
 //重写 to String方法
 @Override
 public String toString() {
  return "Person [name=" + name + ", userid=" + userid + ", phone=" + phone + ", card=" + card+ "]";
 }
 //构造无参和有参方法 
 public Person() {
  super();
 }
 
 public Person(String name, String userid, String phone, Card[] card) {
  super();
  this.name = name;
  this.userid = userid;
  this.phone = phone;
  this.card = card;
 } 
}

Controller类

创建三个默认账户信息,并构造操作方法

public class Controller {
  Scanner sc = new Scanner(System.in);
  Card c = new Card() ; //生成卡
  
  //创建三组信息
  Card c1 = new Card("1","666666",1000,false); //默认账户1
  Card c2 = new Card("2","666666",1500,false); //默认账户2
  Card c3 = new Card("3","666666",1800,false); //默认账户3
  public void regiser(String name,String userid,String phone,Card[] card) {
    //将Person类的属性赋给对象p
    Person p = new Person(name,userid,phone,card);   
  }
  
  public void query(Person p) {
   
    System.out.println(p);
  }
  
  public boolean verify(String cardid,String password) {
    if(cardid.equals("1")&&password.equals("666666")) { //如果输入的是账户1的账户密码,就得到账户1属性
     c.setMoney(c1.getMoney());
     c.setPassword(c1.getPassword());
    
     if(!c.isIslock()) {    //判断账户1是否被锁
      return true;
     }else {
      System.out.println("抱歉,该卡已被锁");
      return false;
     }
    }
   
    if(cardid.equals("2")&&password.equals("666666")) { //如果输入的是账户2的账户密码,就得到账户2属性
      c.setMoney(c2.getMoney());
      c.setPassword(c2.getPassword());
    
      //判断该卡是否被锁
     if(!c.isIslock()) {   //判断账户2是否被锁
      return true;
     }
    }
   
    if (cardid.equals("3")&&password.equals("666666")) { //如果输入的是账户3的账户密码,就得到账户3属性
     c.setMoney(c3.getMoney());
     c.setPassword(c3.getPassword());
    
     if(!c.isIslock()) {    //判断账户3是否被锁
      return true;
     }
    }
   
    return false;    //一个账户信息都没对上,重新输入
   
  }
   
  //构造查询方法
  public void query(String cardid) {
   
    if(cardid.equals("1")) {              //查询账户1
     System.out.println(c.getMoney());
    }else if(cardid.equals("2")) {           //查询账户2
     System.out.println(c.getMoney());
    }else if(cardid.equals("3")) {           //查询账户3
     System.out.println(c.getMoney());
    }else {
     System.out.println("输入有误");
    }
   
  }
  
  //构造取钱方法
  public void putMoney() {
    System.out.print("请输入需要取出的金额(将金额再确认一遍):");
    double money = sc.nextDouble();
   //判断钱够不够
    if(money<=c.getMoney()) {
     money = c.getMoney()-money;
     c.setMoney(money);            //钱够取出并更新账户余额
     System.out.println("已取出"+sc.nextDouble()+"元");
     System.out.println("账户余额为:"+money+"元");
    }else {
     System.out.println("对不起,账户余额不足");
    }
  }
  
 //构造存钱方法
 public void addMoney() {

  System.out.println("请将纸币放于存钞口(将金额再确认一遍)");

  double money = sc.nextDouble();

   money = c.getMoney()+money;

  c.setMoney(money);                //存钱并更新账户余额   
  
  System.out.println("已存入"+sc.nextDouble()+"元");
  System.out.println("账户余额为:"+money+"元");   
  

 }
  
 //构造转钱方法
  public void saveMoney() {
    System.out.println("请输入需要转入账户名:");
    String name = sc.next();
    System.out.print("请输入转入金额(将金额再确认一遍):");
    double money = sc.nextDouble();
   
    //判断钱够不够
    if(c.getMoney()>=money) {
     money = c.getMoney()-money;
     c.setMoney(money);               //钱够转钱 更新账户余额
     System.out.println("已转出"+sc.nextDouble()+"元");
     System.out.println("账户余额为:"+money+"元");
    }else {                      //钱不够返回
     System.out.println("对不起,账户余额不足");
    }
  }
  
  //构造锁卡方法
  public void lock() {
    c.setIslock(true);
    System.out.println("该卡已被锁");
  }
  
  //构造解卡方法
  public void unlock() {
    c.setIslock(false);
    System.out.println("该卡可正常使用");
  }
  
  //构造补卡方法
  public void newCard() {
    System.out.println("请输入您的姓名:");
    String name = sc.nextLine();
   
    System.out.println("请输入您的身份证号码:");
    String userid = sc.nextLine();
   
    Person p = new Person(name,userid,null,null); 
   
   
    System.out.println("请输入重办账户号码:");   
    String cardid = sc.nextLine();
   
    System.out.println("请输入要设置的密码(数字):");
    String password = sc.nextLine();
  
    //限制密码位数
    if(password.length()==6) {
     System.out.println("密码设置成功");
    }else {
     System.out.println("密码限制6位,请重新选择功能");    
    }
   
  }   

  
  //构造改密方法
  public void changePwd() {
    System.out.println("请输入密码:");
    String password = sc.next();
   
    if(password.equals(c.getPassword())){
     System.out.println("请输入更改后的密码:");
     String newpassword = sc.next();
     System.out.println("再输入一次密码:");
     String newpassword1 = sc.next();
    
     if(newpassword.equals(newpassword1)) {
     System.out.println("密码修改成功!");
     c.setPassword(newpassword1);
     }else {
     System.out.println("两次密码输入不一致,请重新输入");
     changePwd();
     }
   }else {  
     System.out.println(c.getPassword());
     System.out.println("密码输入错误");
   }
  }
  
  //构造退出方法
  public void save() {
    System.exit(0);
  }
}

View类

实现欢迎界面以及各操作界面

public class View {
 Scanner s = new Scanner(System.in);
 private int count = 3;
 Card c =new Card();
  Controller co = new Controller();
 
  public static void main(String[] args) {
  View v = new View();
  v.show();
 }
 
  public void show() {
  System.out.println("=============欢迎使用使用本行存取一体机=============");
  System.out.println("请输入卡号:");
  String cardid = s.nextLine();
  
  System.out.println("请输入密码:");
  String password =s.nextLine();
  
  //登录界面,账户密码错三次就锁卡
  if(!co.verify(cardid, password)) {
   count--;
   if(count == 0) {
    co.lock();  //调用lock
    System.out.println("密码输入错误"+c.isIslock());
    System.out.println("请重新输入:");
   }
   
   System.out.println("你还有"+count+"次输入机会,");
   System.out.println("输入机会用完后,将会锁卡");
   show();
  }
  //如果账户密码正确就进入功能界面
  if(co.verify(cardid, password)) {
   while(true) {
    System.out.println("请按相应的序号选择功能:1.取款  2.存款  3.查询余额  4.转账  5.修改密码  6.锁卡  7.解卡  8.补卡 9.退出");
    
    switch(s.nextInt()) {
    case 1:  //取款
     co.putMoney();
      break;
    case 2: //存钱
     co.addMoney();
     break;
    case 3: //查询
     co.query(cardid);
     break;
    case 4: //转钱
     co.saveMoney();
     break;
    case 5: //改密
     co.changePwd();
     break;
    case 6: //锁卡
     co.lock();
     break;
    case 7: //解卡
     co.unlock();
     break;
    case 8: //补卡
     co.newCard();
     break;
    case 9: //退出
     System.out.println("感谢使用,欢迎下次光临");
     co.save();
     break;
     
    default: //输入指令错误
     System.out.println("输入有误");
     break;
    }
   }
  }
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持源码搜藏网。


下一篇:没有了

java教程阅读排行

最新文章