您好,欢迎访问一九零五行业门户网

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系统的详细内容。
其它类似信息

推荐信息