温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2022-05-27 16:31:16 来源:亿速云 阅读:194 作者:iii 栏目:开发技术

本篇内容主要讲解“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如何实现简单控制台版ATM系统”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI