package java项目.ATM机; import java.util.ArrayList; import java.util.Random; import java.util.Scanner; public class ATMSystem { public static void main(String[] args) { ArrayList<Acount> acounts=new ArrayList<>(); System.out.println("欢迎进入ATM系统"); Scanner sc=new Scanner(System.in); while (true) { System.out.println("1.注册账户\t2.登陆账户"); String input=sc.next(); switch(input){ case "1": sign(acounts,sc); break; case "2": denglu(acounts,sc); break; default: System.out.println("您的操作有误请重新输入"); } } } /** * 用户登录 * @param acounts * @param sc */ private static void denglu(ArrayList<Acount> acounts,Scanner sc) { if(acounts.size()==0){ System.out.println("当前系统中无任何用户,请先开户再继续登录"); return; } System.out.println("输入卡号"); String cardId=sc.next(); Acount acc=getAccountCardId(acounts,cardId); if (acc !=null){ while (true) { System.out.println("请输入密码"); String passWord=sc.next(); if (acc.getPassWord().equals(passWord)){ System.out.println("恭喜"+acc.getUserName()+"先生/女士登陆成功,您的卡号是:"+acc.getCardId()); operation(acounts, sc, acc); return; }else { System.out.println("密码错误请重新输入"); } } }else { System.out.println("输入的卡号不存在"); } } private static void operation(ArrayList<Acount> acounts,Scanner sc,Acount acc) { System.out.println("欢迎进入操作界面"); while (true) { System.out.println("1.查询\n2.存款\n3.取款\n4.转账\n5.修改密码\n6.退出\n7.注销当前账号"); System.out.println("请输入要进行的操作"); String input=sc.next(); switch(input){ case"1": //查询账户 showAcount(acc); break; case"2": //存款 Deposit(acounts,sc,acc); break; case"3": //取款 qukuan(sc,acounts,acc); break; case"4": //转账 transfer(sc,acounts,acc); break; case"5": //修改密码 modifypassword(acc,sc,acounts); break; case"6": //退出 System.out.println("退出成功,欢迎下次登录~~"); return; case"7": //注销当前账号 deleteAcount(acc,sc,acounts); break; default: System.out.println("您输入的命令有误"); } } } private static void deleteAcount(Acount acc,Scanner sc,ArrayList<Acount> acounts) { System.out.println("您将要删除次账户,是否要选择删除"); System.out.println("请输入要进行的操作"); System.out.println("输入yes删除账户\n输入no无操作"); String input=sc.next(); if(acc.getMoney()>0){ System.out.println("账户中还有余额,不能删除账户"); }else{ switch (input){ case "yes": acounts.remove(acc); System.out.println("账户删除成功"); case "no": System.out.println("您的账户得到保留"); break; } } } /** * 修改密码 * @param acc */ private static void modifypassword(Acount acc,Scanner sc,ArrayList<Acount> acounts) { while (true) { System.out.println("请输入原始密码"); String passWord=sc.next(); if (passWord.equals(acc.getPassWord())){ System.out.println("请输入新密码"); String password=sc.next(); acc.setPassWord(password); acounts.add(acc); return; }else { System.out.println("您输入的原始密码错误,请重新输入"); } } } /** * 转账功能 * @param sc * @param acounts * @param acc */ private static void transfer(Scanner sc, ArrayList<Acount> acounts, Acount acc) { if (acounts.size()<2){ System.out.println("账户数量小于2无法进行转账,请去注册"); return; } while (true) { System.out.println("输入转账卡号"); String cardId = sc.next(); Acount ac=getAccountCardId(acounts, cardId); if (cardId.equals(ac.getCardId())){ while (true) { System.out.println("输入转账金额"); double money=sc.nextDouble(); if (money>acc.getMoney()){ System.out.println("余额不足,无法转账"); }else { ac.setMoney(money + ac.getMoney()); acounts.add(ac); System.out.println("转账成功"); acc.setMoney(acc.getMoney() - money); showAcount(acc); return;//结束转账方法 } } }else{ System.out.println("输入的卡号不存在"); } } } /** * 取款 * @param sc * @param acounts * @param acc */ private static void qukuan(Scanner sc,ArrayList<Acount> acounts,Acount acc) { for (; ;) { System.out.println("请输入取款金额"); double money=sc.nextDouble(); if(money>acc.getMoney()){ System.out.println("您的余额不足,请重新输入"); } else if(money> acc.getLimit()) { System.out.println("您的取款金额超出交易限制,请重新输入"); }else { acc.setMoney(acc.getMoney()-money); acounts.add(acc); showAcount(acc); return;//结束取钱方法 } } } /** * 存款 * @param acounts * @param sc */ private static void Deposit(ArrayList<Acount> acounts,Scanner sc,Acount acc) { System.out.println("请输入存款金额:"); double money=sc.nextDouble(); acc.setMoney(money+acc.getMoney()); acounts.add(acc);//可写可不写 acc已经在集合中了 System.out.println("存款成功"); } /** * 查询账户 * @param acc */ private static void showAcount(Acount acc) { System.out.println("用户:"+acc.getUserName()+"\n"+"卡号:"+acc.getCardId()+ "\n"+"余额:"+acc.getMoney()+"\n"+"限额:"+acc.getLimit()); } /** * 注册账户 * @param acounts * @param sc */ private static void sign(ArrayList<Acount> acounts,Scanner sc) { Acount acount=new Acount(); System.out.println("请输入用户名"); String username=sc.next(); acount.setUserName(username); while (true) { System.out.println("请输入密码"); String password=sc.next(); System.out.println("请再次确认密码"); String okpassword=sc.next(); if (password.equals(okpassword)){ acount.setPassWord(password); break; }else{ System.out.println("两次密码不一致请重新输入"); } } System.out.println("请输入交易限额"); double limit=sc.nextDouble(); acount.setLimit(limit); String cardId=getcardId(acounts); acount.setCardId(cardId); acounts.add(acount); System.out.println(username+"先生/女士账户注册成功"+"\t卡号:"+cardId+"\t账户限额:"+limit); } /** * 生成8位随机卡号 * @param acounts * @return */ private static String getcardId(ArrayList<Acount> acounts) { while (true) { String cardId = ""; Random rn=new Random(); for (int i = 0; i < 8; i++) { cardId+=rn.nextInt(10); } Acount acc=getAccountCardId(acounts,cardId); if (acc==null){ return cardId; } } } /** * 判断生成的卡号是否重复 * @param acounts * @param cardId * @return */ private static Acount getAccountCardId(ArrayList<Acount> acounts, String cardId) { for (int i = 0; i < acounts.size(); i++) { Acount ac=acounts.get(i); if (ac.getCardId().equals(cardId)){ return ac; } } return null; } }
package java项目.ATM机; public class Acount { private String cardId; private String userName; private String passWord; private double limit; private double money; public Acount(){ } public Acount(String cardId, String userName, String passWord, double limit, double money) { this.cardId = cardId; this.userName = userName; this.passWord = passWord; this.limit = limit; this.money = money; } public String getCardId() { return cardId; } public void setCardId(String cardId) { this.cardId = cardId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassWord() { return passWord; } public void setPassWord(String passWord) { this.passWord = passWord; } public double getLimit() { return limit; } public void setLimit(double limit) { this.limit = limit; } public double getMoney() { return money; } public void setMoney(double money) { this.money = money; } }