<NO.1 Bank.java>package com.nanky.bank;
import java.util.Scanner;
public class Bank { // Scanner对象(成员变量) // 数据类(成员变量) Data data = new Data();
/** * 显示系统主菜单 */ public void mainMenu() { while (true) { System.out.println("欢迎光临nanky ATM银行(控制台端1.0)"); System.out.println("1.开户"); System.out.println("2.登陆"); System.out.println("3.人为当机,相当于退出"); Scanner sca = new Scanner(System.in); String str = sca.next(); if ("1".equals(str)) { createCard(); } else if ("2".equals(str)) {// 登陆即插卡 insertCard(); } else if ("3".equals(str)) { System.out.println("ATM报销,请联系管理员"); break; } else { System.out.println("没这个选项"); } } }
/** * 显示管理员 菜单项 */ private void adminMenu() { while (true) { System.out.println("1.显示所有账户"); System.out.println("2.显示所有冻结账户"); System.out.println("3.显示所有非冻结账户"); System.out.println("4.冻结账户"); System.out.println("5.解冻账户"); System.out.println("6.退出"); Scanner sca = new Scanner(System.in); String str = sca.next(); if ("1".equals(str)) { showAllUser(); } else if ("2".equals(str)) { showUnEanbleUser(); } else if ("3".equals(str)) { showEanableUser(); } else if ("4".equals(str)) { System.out.println("请输入要操作用户名"); Scanner sc = new Scanner(System.in); String name = sc.next(); if (data.checkUserByUserName(name) != null) { data.isEnableUser(name, true); } else { System.out.println("没有这个用户"); } } else if ("5".equals(str)) { System.out.println("请输入要操作用户名"); Scanner sc = new Scanner(System.in); String name = sc.next(); if (data.checkUserByUserName(name) != null) { data.isEnableUser(name, false); } else { System.out.println("没有这个用户"); } } else if ("6".equals(str)) { break; } else { System.out.println("没这套方案!"); } } }
/** * 显示所有帐户 */ public void showAllUser() { User[] user = data.getAllUserGroup(); for (int i = 0; i < user.length; i++) { System.out.println(user[i].getName()); } adminMenu(); }
/** * 显示所有冻结帐户 */ public void showUnEanbleUser() { User[] user = data.getUnEnableUserGroup(); for (int i = 0; i < user.length; i++) { System.out.println(user[i].getName()); } adminMenu(); }
/** * 显示所以可用(非冻结)帐户 */ public void showEanableUser() { User[] user = data.getEnableUserGroup(); for (int i = 0; i < user.length; i++) { System.out.println(user[i].getName()); } adminMenu(); }
/** * 显示开户菜单 */ public void createCard() {//当然,如果账户名相同呢? System.out.println("欢迎您来nanky ATM银行开户"); System.out.println("请输入开户人名"); Scanner sc1 = new Scanner(System.in); String name = sc1.next(); System.out.println("请输入开户人密码"); Scanner sc2 = new Scanner(System.in); String password = sc2.next(); data.saveUser(new User(name,password,0)); System.out.println(name+"您好,您已经成功开户,账户余额为0.0元"); }
/** * 显示插卡菜单 */ public void insertCard() { System.out.println("请插卡(即输入用户名)"); Scanner sc = new Scanner(System.in); String userName = sc.next(); System.out.println("请输入密码"); Scanner sca = new Scanner(System.in); String passWord = sca.next(); User user = data.checkUser(userName, passWord); if (user != null||("nanky".equals(userName) && "nanky".equals(passWord))) { if ("nanky".equals(userName) && "nanky".equals(passWord)) {// 管理员登陆 adminMenu(); } else {// 普通用户登陆 showCustomMenu(user); } } else { System.out.println("用户名或者密码不对"); } mainMenu(); }
/** * 显示插卡通过后操作菜单 */ public void showCustomMenu(User user) { while (true) { System.out.println(user.getName() + ",欢迎光临ATM"); System.out.println("1.查看余额"); System.out.println("2.修改密码"); System.out.println("3.取钱"); System.out.println("4.存钱"); System.out.println("5.转账"); System.out.println("6.退出"); Scanner sca = new Scanner(System.in); String str = sca.next(); if ("1".equals(str)) { System.out.println("您的余额为:" + user.getMoney()); } else if ("2".equals(str)) { System.out.println("请输入旧密码"); Scanner sc1 = new Scanner(System.in); String oldPassword = sc1.next(); if (user.getPassword().equals(oldPassword)) { System.out.println("请输入新密码"); Scanner sc2 = new Scanner(System.in); String newPassword = sc2.next(); if (user.changePassWord(oldPassword, newPassword)) {// 这里不做二次密码判断了 System.out.println("修改密码成功!"); } else { System.out.println("修改密码失败!"); } } else { System.out.println("密码错误"); }
} else if ("3".equals(str)) { System.out.println("请输入你取多少钱:"); Scanner sc = new Scanner(System.in); try {// 这里做一个异常处理,简单说就是判断你输入的金钱是否合法,就做这里一次,剩下的不做了,我懒 double menoy = sc.nextDouble(); if (user.minusMoney(menoy)) { System.out.println("这是你要的" + menoy + "钱,请收好!"); } else { System.out.println("你没有这么多钱可以取!"); } } catch (Exception e) { System.out.println("你输入的金钱不合法"); }
} else if ("4".equals(str)) { System.out.println("请输入你存多少钱:"); Scanner sc = new Scanner(System.in); try {// 这里做一个异常处理,简单说就是判断你输入的金钱是否合法,在写给你一次吧! double money = sc.nextDouble(); if (user.savaMoney(money)) { System.out.print("放钱中"); for (int i = 0; i <= 300000000; i++) {// 这里给你弄个加载画面,当然等你学到线程了,你可以用sleep if (i == 100000000 || i == 200000000 || i == 300000000) { System.out.print(". "); } } System.out.println(); System.out.println("你已经成功存钱了,余额为:" + user.getMoney()); } } catch (Exception e) { System.out.println("你输入的金钱不合法"); } } else if ("5".equals(str)) { System.out.println("请输入转账人姓名:"); Scanner sc1 = new Scanner(System.in); String inUser = sc1.next(); User inputUser = data.checkUserByUserName(inUser); if (inputUser != null) { System.out.println("请输入你取多少钱:"); Scanner sc2 = new Scanner(System.in); try {// 这里做一个异常处理,简单说就是判断你输入的金钱是否合法,在写给你一次吧! double money = sc2.nextDouble(); if (data.moveMoney(user, inputUser, money)) { System.out.println("你已经成功转给"+inputUser.getName()+money+"钱了!你只有"+user.getMoney()+"了T_T"); } else { System.out.println("你没有这么多钱可以转!"); } } catch (Exception e) { System.out.println("你输入的金钱不合法"); } }else{ System.out.println("没这个家伙!"); } } else if ("6".equals(str)) { System.out.println(user.getName() + ",欢迎下次光临!"); break; } else {
} } }}<NO.2 Test.java>package com.nanky.bank;
public class Test { /** * @param args */ public static void main(String[] args) { Bank m = new Bank(); m.mainMenu(); } }<NO.3 Data.java>package com.nanky.bank;
public class Data { private static int count = 0;// 用来计算有多少用户 User[] userGroup = new User[100];//你这里有100个而已,当超过这个数就会有异常哟,最好能自动增长……
/** * 获得所有用户 * * @return 所有用户的User数组 */ public User[] getAllUserGroup() { return userGroup; }
/** * 获得所有非冻结用户 * * @return 非冻结帐户的User数组 */ public User[] getEnableUserGroup() { User[] userEnable = new User[100];//new一个非冻结账户数组 int num = 0;//计算非冻结账户数 for(int i =0;i<count;i++){//循环遍历账户 if(!userGroup[i].isState()){//如果是非冻结账户 userEnable[num++] = userGroup[i]; } } return userEnable; }
/** * 获得所有冻结帐户 * * @return 冻结帐户的User数组 */ public User[] getUnEnableUserGroup() { User[] userUnEnable = new User[100]; int num = 0; for(int i =0;i<count;i++){ if(userGroup[i].isState()){ userUnEnable[num++] = userGroup[i]; } } return userUnEnable; }
/** * 保存新的用户 * * @param newUser * 新用户对象 */ public void saveUser(User newUser) { userGroup[count++] = newUser; }
/** * 根据用户名和密码查询该用户是否存在 * * @param userName * @param passWord * @return User对象 */ public User checkUser(String userName, String passWord) { for(int i = 0;i<count;i++){ if(userGroup[i].getName().equals(userName)&&userGroup[i].getPassword().equals(passWord)){ return userGroup[i]; } } return null; }
/** * 根据用户名判断用户是否存在 * * @param userName * 用户名 * @return 该用户名对应的用户对象 */ public User checkUserByUserName(String userName) { for(int i = 0;i