ATM案例
D:\code\黑马\code\ATM-system
-
实体类
public class Account { private String cardId; private String userName; private char sex; private String passWord; private double money; private double limit; // 限额 public Account() { } public Account(String cardId, String userName, char sex, String passWord, double money, double limit) { this.cardId = cardId; this.userName = userName; this.sex = sex; this.passWord = passWord; this.money = money; this.limit = limit; } public String getCardId() { return cardId; } public void setCardId(String cardId) { this.cardId = cardId; } public String getUserName() { return userName + ( sex == '男' ? "先生" : "女士"); } public void setUserName(String userName) { this.userName = userName; } public char getSex() { return sex; } public void setSex(char sex) { this.sex = sex; } 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 double getLimit() { return limit; } public void setLimit(double limit) { this.limit = limit; } }
-
操作类
-
欢迎界面
public void start(){ while (true) { System.out.println("===欢迎您进入到了ATM系统==="); System.out.println("1、用户登录"); System.out.println("2、用户开户"); System.out.println("请选择:"); String command = sc.next(); switch (command){ case "1": // 用户登录 login(); break; case "2": // 用户开户 createAccount(); break; default: System.out.println("没有该操作~~"); } } }
-
开户功能
private void createAccount(){ System.out.println("==系统开户操作=="); Account acc = new Account(); System.out.println("请您输入您的账户名称:"); String name = sc.next(); acc.setUserName(name); while (true) { System.out.println("请您输入您的性别:"); char sex = sc.next().charAt(0); if(sex == '男' || sex == '女'){ acc.setSex(sex); break; }else { System.out.println("您输入的性别有误~只能是男或者女~"); } } while (true) { System.out.println("请您输入您的账户密码:"); String passWord = sc.next(); System.out.println("请您输入您的确认密码:"); String okPassWord = sc.next(); if(okPassWord.equals(passWord)){ acc.setPassWord(okPassWord); break; }else { System.out.println("您输入的2次密码不一致,请您确认~~"); } } System.out.println("请您输入您的取现额度:"); double limit = sc.nextDouble(); acc.setLimit(limit); String newCardId = createCardId(); acc.setCardId(newCardId); accounts.add(acc); System.out.println("恭喜您," + acc.getUserName() + "开户成功,您的卡号是:" + acc.getCardId()); }
- 生成八位随机数且不重复作为卡号
private String createCardId(){ while (true) { String cardId = ""; Random r = new Random(); for (int i = 0; i < 8; i++) { int data = r.nextInt(10); // 0 - 9 cardId += data; } Account acc = getAccountByCardId(cardId); if(acc == null){ return cardId; } } } private Account getAccountByCardId(String cardId){ for (int i = 0; i < accounts.size(); i++) { Account acc = accounts.get(i); if(acc.getCardId().equals(cardId)){ return acc; } } return null;
-
登录功能
private void login(){ System.out.println("==系统登录=="); if(accounts.size() == 0){ System.out.println("当前系统中无任何账户,请先开户再来登录~~"); return; } while (true) { System.out.println("请您输入您的登录卡号:"); String cardId = sc.next(); Account acc = getAccountByCardId(cardId); if(acc == null){ System.out.println("您输入的登录卡号不存在,请确认~~"); }else { while (true) { System.out.println("请您输入登录密码:"); String passWord = sc.next(); if(acc.getPassWord().equals(passWord)){ loginAcc = acc; System.out.println("恭喜您," + acc.getUserName() + "成功登录了系统,您的卡号是:" + acc.getCardId()); showUserCommand(); return; }else { System.out.println("您输入的密码不正确,请确认~~"); } } } } }
-
登录成功后续功能(详见代码)
-
-
测试类
public class Test { public static void main(String[] args) { ATM atm = new ATM(); atm.start(); } }