需求分析
首先ATM银行系统包括两个基础大功能:开户和登陆账户(当然在系统中没有一个账户时不能登录,需要先开户)。
一名用户有6项基本信息描述:姓名、性别、银行卡号、银行卡密码、账户余额、取款限额。
在登录账户后又有7项功能:查询账户信息、存款、取款、转账、修改密码、退出、注销账户。
代码展示
// ATM.javapublic class ATM {private int id;private String name;private char sex;private double moneyLeft;private double moneyCon;private String code;public ATM() {}public ATM(int id, String name, char sex, double moneyLeft, double moneyCon, String code) {this.id = id;this.name = name;this.sex = sex;this.moneyLeft = moneyLeft;this.moneyCon = moneyCon;this.code = code;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public char getSex() {return sex;}public void setSex(char sex) {this.sex = sex;}public double getMoneyLeft() {return moneyLeft;}public void setMoneyLeft(double moneyLeft) {this.moneyLeft = moneyLeft;}public double getMoneyCon() {return moneyCon;}public void setMoneyCon(double moneyCon) {this.moneyCon = moneyCon;}public String getCode() {return code;}public void setCode(String code) {this.code = code;} }
// ATMOperator.javapublic class ATMOperator {ArrayList<ATM> ATMlist = new ArrayList<>();//开户public void register() {ATM user = new ATM();Scanner sc = new Scanner(System.in);System.out.println("请输入你的用户名");String name = sc.next();user.setName(name);while (true) {System.out.println("请输入你的性别,‘男’ 或 ‘女’ ");String tmp = sc.next();char sex = tmp.charAt(0);if (sex != '男' && sex != '女') {System.out.println("请输入‘男’ 或 ‘女’");} else {user.setSex(sex);break;}}while (true) {System.out.println("请输入你的密码");String code = sc.next();System.out.println("请确认你的密码");String confirmCode = sc.next();if (code.equals(confirmCode)) {user.setCode(code);break;} else {System.out.println("两次密码不一致,请重新输入密码");}}System.out.println("请输入你的每次取款限额");double moneyCon = sc.nextDouble();user.setMoneyCon(moneyCon);String id = "";Random r = new Random();for (int i = 0; i < 7; i++) {int num = r.nextInt(10);id += num;}System.out.println("恭喜你,开户成功!卡号是:" + id);int id1 = Integer.parseInt(id);user.setId(id1);ATMlist.add(user);}//查询打印账户信息public void print(int n) {System.out.println("----------" + ATMlist.get(n).getName() + "先生的账户信息----------");System.out.println("账户卡号:" + ATMlist.get(n).getId());System.out.println("账户名:" + ATMlist.get(n).getName());System.out.println("性别:" + ATMlist.get(n).getSex());System.out.println("余额:" + ATMlist.get(n).getMoneyLeft());System.out.println("取款限额:" + ATMlist.get(n).getMoneyCon());System.out.println("--------------------------------");}//展示登录界面public void showLogon(int user) {Scanner sc = new Scanner(System.in);while (true) {System.out.println("请输入你需要办理的业务号");System.out.println("1、查询打印账户信息");System.out.println("2、存款");System.out.println("3、取款");System.out.println("4、转账");System.out.println("5、修改密码");System.out.println("6、退出");System.out.println("7、注销账户");String n = sc.next();switch (n) {case "1":print(user);break;case "2":saveMoney(user);break;case "3":getMoney(user);break;case "4":transforAccounts(user);break;case "5":changePassword(user);break;case "6":return;case "7":unsubscribe(user);break;default:System.out.println("请输入正确的指令");break;}}}//登录账户public int logon() {if (ATMlist.size() == 0) {System.out.println("您还未开户,请先开户");throw new RuntimeException("Exception occurred");}Scanner sc = new Scanner(System.in);System.out.println("请输入你的卡号");int id = sc.nextInt();int tmp = -1;for (int i = 0; i < ATMlist.size(); i++) {if (ATMlist.get(i).getId() == id) {System.out.println(ATMlist.get(i).getName() + "先生,您已经成功登录账户");tmp = i;break;}}if (tmp == -1) {System.out.println("您输入的卡号不存在");throw new RuntimeException("Exception occurred");} else {showLogon(tmp);return tmp;}}//存款public void saveMoney(int user) {Scanner sc = new Scanner(System.in);System.out.println("请输入你要存的金额");double saveMoney = sc.nextDouble();double rs = saveMoney + ATMlist.get(user).getMoneyLeft();System.out.println("存钱成功!您的余额为:" + rs);ATMlist.get(user).setMoneyLeft(rs);}//取款public void getMoney(int user) {Scanner sc = new Scanner(System.in);System.out.println("请输入你要取的金额");double money = sc.nextDouble();if (money > ATMlist.get(user).getMoneyLeft()) {System.out.println("余额不足,取款失败");} else {double rs = ATMlist.get(user).getMoneyLeft() - money;ATMlist.get(user).setMoneyLeft(rs);System.out.println("取款成功!你的余额为:" + ATMlist.get(user).getMoneyLeft());}}//转账public void transforAccounts(int user) {Scanner sc = new Scanner(System.in);System.out.println("请输入你的转账对象的卡号");int id = sc.nextInt();for (int i = 0; i < ATMlist.size(); i++) {if (id == ATMlist.get(i).getId()) {System.out.println("请问是要给*" + ATMlist.get(i).getName().substring(1) + "转账吗?");String tmp = sc.next();char answer = tmp.charAt(0);if (answer == (ATMlist.get(i).getName().charAt(0))) {System.out.println("请输入你要转账的金额");double money = sc.nextDouble();if (money > ATMlist.get(user).getMoneyLeft()) {System.out.println("你的余额不足,转账失败");return;} else {if (money > ATMlist.get(user).getMoneyCon()) {System.out.println("超出取款限额,请重试");return;} else {double rs = ATMlist.get(user).getMoneyLeft() - money;ATMlist.get(user).setMoneyLeft(rs);double otherrs = ATMlist.get(i).getMoneyLeft() + money;ATMlist.get(i).setMoneyLeft(otherrs);System.out.println("转账成功!您的余额为:" + rs);}}} else {System.out.println("你输入的对方账户姓氏不正确,请重试");return;}}else System.out.println("卡号输入有误,请重试");}}//修改密码public void changePassword(int user) {Scanner sc = new Scanner(System.in);System.out.println("确认为本人,请输入你的新密码");String newcode = sc.next();System.out.println("请确认新密码");String confirmCode = sc.next();if (newcode.equals(confirmCode)) {ATMlist.get(user).setCode(newcode);System.out.println("修改密码成功!请牢记密码");} else {System.out.println("两次密码不一致,请重试");return;}}//退出public void exit() {;}//注销账户public void unsubscribe(int user) {Scanner sc = new Scanner(System.in);while (true) {System.out.println("你确定要注销该账户?y/n");String answer = sc.next();if (answer.equals("y")) {System.out.println("你已成功注销账户");ATMlist.remove(user);break;} else if (answer.equals("n")) {System.out.println("你选择了保留账户");break;} else {System.out.println("请输入 y/n");}}}public void start() {Scanner sc = new Scanner(System.in);while (true){System.out.println("请选择你要进行的操作");System.out.println(("1、开户"));System.out.println("2、登录账户");System.out.println("0、退出系统");String num = sc.next();switch (num) {case "0":return;case "1":register();break;case "2":int user = logon();break;default:System.out.println("请输入正确的指令");break;}}} }
// Test.java (测试用例)public class Test {public static void main(String[] args) {ATMOperator ts = new ATMOperator();ts.start();} }
场景测试
1、首先是在未开户情况下的登录账户操作:
2、开户
(一)性别乱填
(二)密码输入不一致
(三)正常开户
3、登录账户,但是登录密码错误
4、成功登录账户
a. 查询打印账户信息
b. 存款取款
c.转账(这里转账卡号输错情况写错了,截图懒得改了....)
转账需要2个用户,我先开2个用户,并给梨花存2000元:
现在我用梨花的账户给小王’转账2500:
余额不足,那我转1500:
超出梨花转账限额,那我转100:
成功!
d.修改密码
e.注销账户
以上就是所有基本功能!
感谢阅读!!