java实现atm机,java编写atm系统
本文分享用Java实现简单控制台版ATM系统的具体代码,供大家参考。具体内容如下
00-1010
ATM系统项目
1.查询:账号必须存在,密码(三次机会,错了锁卡)
2.取款:账号必须存在,密码(三次机会,错了锁卡),取款金额不能大于存款。
3.存款:账号必须存在,存款金额不能小于0。
4.转账:你的账户和转账账户都必须存在,有密码(三次机会,错了锁卡),转账金额不能超过余额。
5.锁卡:账号必须存在,用密码冻结。
6.卡解锁:账号必须存在,只能用身份证号解锁。
7.换卡:用身份证换卡。
8.加密:可以加密密码,也可以使用身份证。
9.退出:保存数据。
00-1010可以分为四个对象,第一个银行卡对象(卡片存储银行卡信息);第二用户对象(Person存储用户信息);第三功能对象(控制器的具体操作功能类);对象(视图显示操作界面)。可以分为四类。
ATM系统要实现的功能
Card类
打包卡的属性(卡号、密码、余额、卡锁定状态)
包卡的class card {//属性:私有字符串cardid私有字符串密码;私人双钱;私有布尔islock//设置封装属性的set和get方法,publicstringgetcardid(){ returncardid;} public void setCardid(String cardid){ this . cardid=cardid;}公共字符串get password(){ return password;} public void set password(String password){ this . password=password;} public double getMoney(){ return money;} public void set money(double money){ this . money=money;} public boolean ISIS lock(){ return is lock;} public void setis lock(boolean is lock){ this . is lock=is lock;}//Override to String方法@ Override public String to String(){ return card[carid= cardid ,password= password ,money= money ,is lock= is lock ];}//构造卡public Card() {super())的无参数和无参数构造方法;}公卡(字符串cardid,字符串密码,双币,布尔is look){ super();this.cardid=cardidthis.password=密码;this.money=钱;this . is lock=is lock;} }Person类
封装用户信息(用户名、身份证号、手机号、卡)
公共类Person {私有字符串名称;私有字符串userid私弦电话;私卡[]卡;//设置每个封装属性的set和get方法,publicstringgetname(){ return name;} public void set name(String name){ this . name=name;}公共字符串get userid(){ return userid;} public void set userid(String userid){ this . userid=userid;}公共字符串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+"次输入机会,"); &
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。