[20-05-09][Self-test 40]Java BankSystem 1
Posted mirai3usi9
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[20-05-09][Self-test 40]Java BankSystem 1相关的知识,希望对你有一定的参考价值。
1 package test_8_4; 2 3 public class StaffData { 4 5 /** 用户名 */ 6 private String userName; 7 /** 密码 */ 8 private String password; 9 /** 权限 */ 10 private String permission; 11 12 /** 13 * 无参构造方法 14 */ 15 public StaffData() { 16 17 } 18 19 /** 20 * 带参构造方法 21 * 22 * @param userName 用户名 23 * @param password 密码 24 * @param permission 权限 25 */ 26 public StaffData(String userName, String password, String permission) { 27 28 this.userName = userName; 29 this.password = password; 30 this.permission = permission; 31 } 32 33 /** 34 * 获取用户名 35 * 36 * @return 用户名 37 */ 38 public String getUserName() { 39 40 return userName; 41 } 42 43 /** 44 * 设置密码 45 * 46 * @param password 密码 47 */ 48 public void setPassword(String password) { 49 50 this.password = password; 51 } 52 53 /** 54 * 获取密码 55 * 56 * @return 密码 57 */ 58 public String getPassword() { 59 60 return password; 61 } 62 63 /** 64 * 获取权限 65 * 66 * @return 权限 67 */ 68 public String getPermission() { 69 70 return permission; 71 } 72 73 }
1 package test_8_4; 2 3 import javax.swing.JOptionPane; 4 5 public class StaffMethod { 6 7 /** 实例化管理员 */ 8 private static StaffData[] adminArr = new StaffData[30]; 9 /** 管理员数 */ 10 private static int adminNum; 11 /** 登陆用户 */ 12 private StaffData loginAdmin; 13 14 /** 15 * 初始化管理员列表 16 * 17 * @param index 下标 18 * @param userName 用户名 19 * @param password 密码 20 * @param permission 权限 21 */ 22 public void init(int index, String userName, String password, String permission) { 23 24 adminArr[index] = new StaffData(userName, password, permission); 25 adminNum++; 26 } 27 28 /** 29 * 设置当前登陆用户 30 * 31 * @param loginAdmin 当前登陆用户 32 */ 33 public void setLoginAdmin(StaffData loginAdmin) { 34 35 this.loginAdmin = loginAdmin; 36 } 37 38 /** 39 * 获取管理员数组 40 * 41 * @return 管理员数组 42 */ 43 public StaffData[] getAdminArr() { 44 45 return adminArr; 46 } 47 48 /** 49 * 获取管理员数 50 * 51 * @return 管理员数 52 */ 53 public int getAdminNum() { 54 55 return adminNum; 56 } 57 58 /** 59 * 添加职工 60 */ 61 public void addAdmin() { 62 63 String userName = JOptionPane.showInputDialog(null, "请输入用户名"); 64 65 if (checkUserName(userName) == true) { 66 JOptionPane.showMessageDialog(null, "该用户名已存在"); 67 return; 68 } 69 70 String password = "123456"; 71 String permission = JOptionPane.showInputDialog(null, "请输入权限(管理员/职员)"); 72 73 adminArr[adminNum] = new StaffData(userName, password, permission); 74 adminNum++; 75 } 76 77 /** 78 * 检查用户名重复 79 * 80 * @param userName 用户名 81 * @return 是否重复 82 */ 83 private boolean checkUserName(String userName) { 84 85 for (int i = 0; i < adminNum; i++) { 86 if (userName.equals(adminArr[i].getUserName())) { 87 return true; 88 } 89 } 90 return false; 91 } 92 93 /** 94 * 删除职工 95 */ 96 public void delAdmin() { 97 98 int index = findIndex(); 99 100 if (index != -1) { 101 102 if (adminArr[index].getUserName().equals(loginAdmin.getUserName())) { 103 JOptionPane.showMessageDialog(null, "不能删除当前用户"); 104 return; 105 } 106 107 for (int i = 0; i < adminNum; i++) { 108 adminArr[i] = adminArr[i + 1]; 109 } 110 adminNum--; 111 JOptionPane.showMessageDialog(null, "已删除该职工"); 112 } 113 114 } 115 116 /** 117 * 显示职工列表 118 */ 119 public void showAdminList() { 120 121 String str = "用户名 权限 "; 122 123 for (int i = 0; i < adminNum; i++) { 124 str += adminArr[i].getUserName() + " " + adminArr[i].getPermission() + " "; 125 } 126 127 JOptionPane.showMessageDialog(null, str); 128 } 129 130 /** 修改密码 */ 131 public void changePwd() { 132 133 String oldPwd = JOptionPane.showInputDialog(null, "请输入旧密码"); 134 135 if (oldPwd.equals(loginAdmin.getPassword()) == false) { 136 JOptionPane.showMessageDialog(null, "旧密码错误"); 137 return; 138 } 139 140 String newPwd = JOptionPane.showInputDialog(null, "请输入新密码"); 141 String newPwdRe = JOptionPane.showInputDialog(null, "请确认新密码"); 142 143 if (newPwd.equals(newPwdRe) == false) { 144 JOptionPane.showMessageDialog(null, "两次密码输入不一致"); 145 return; 146 } 147 148 loginAdmin.setPassword(newPwd); 149 JOptionPane.showMessageDialog(null, "密码修改成功"); 150 } 151 152 /** 153 * 寻找用户名符合的下标 154 * 155 * @return 下标 156 */ 157 private int findIndex() { 158 159 String userName = JOptionPane.showInputDialog(null, "请输入用户名"); 160 for (int i = 0; i < adminNum; i++) { 161 if (userName.equals(adminArr[i].getUserName())) { 162 return i; 163 } 164 } 165 166 return -1; 167 } 168 169 }
1 package test_8_4; 2 3 import java.util.Date; 4 5 public class UserData { 6 7 /** 卡号 */ 8 private String code; 9 /** 密码 */ 10 private String password; 11 /** 姓名 */ 12 private String name; 13 /** 地址 */ 14 private String address; 15 /** 余额 */ 16 private double remain; 17 /** 开户日期 */ 18 private String date; 19 /** 交易记录 */ 20 private Record[] records = new Record[100]; 21 /** 交易记录条数 */ 22 private int recordsNum; 23 24 /** 25 * 无参构造方法 26 */ 27 public UserData() { 28 29 } 30 31 /** 32 * 带参构造方法 33 * 34 * @param code 卡号 35 * @param password 密码 36 * @param name 姓名 37 * @param address 地址 38 * @param remain 余额 39 * @param date 开户日期 40 */ 41 public UserData(String code, String password, String name, String address, double remain) { 42 43 this.code = code; 44 this.password = password; 45 this.name = name; 46 this.address = address; 47 this.remain = remain; 48 this.date = getCurrentDate(); 49 50 } 51 52 /** 53 * 获取当前日期 54 * 55 * @return 当前日期 56 */ 57 private String getCurrentDate() { 58 59 String str = ""; 60 61 Date date = new Date(); 62 str += (date.getYear() + 1900) + "-" + (date.getMonth() + 1) + "-" + date.getDay(); 63 64 return str; 65 } 66 67 /** 68 * 获取卡号 69 * 70 * @return 卡号 71 */ 72 public String getCode() { 73 74 return code; 75 } 76 77 /** 78 * 设置密码 79 * 80 * @param password 密码 81 */ 82 public void setPassword(String password) { 83 84 this.password = password; 85 } 86 87 /** 88 * 获取密码 89 * 90 * @return 密码 91 */ 92 public String getPassword() { 93 94 return password; 95 } 96 97 /** 98 * 获取姓名 99 * 100 * @return 姓名 101 */ 102 public String getName() { 103 104 return name; 105 } 106 107 /** 108 * 获取地址 109 * 110 * @return 地址 111 */ 112 public String getAddress() { 113 114 return address; 115 } 116 117 /** 118 * 获取余额 119 * 120 * @return 余额 121 */ 122 public double getRemain() { 123 124 return remain; 125 } 126 127 /** 128 * 存款 129 * 130 * @param money 金额 131 */ 132 public void save(double money) { 133 134 remain += money; 135 } 136 137 /** 138 * 取款 139 * 140 * @param money 金额 141 */ 142 public void draw(double money) { 143 144 remain -= money; 145 } 146 147 /** 148 * 添加交易记录 149 */ 150 public void addRecord(String info) { 151 152 records[recordsNum] = new Record(info); 153 recordsNum++; 154 } 155 156 /** 157 * 获取交易记录 158 */ 159 public String getRecordList() { 160 161 String str = "交易记录 交易日期 "; 162 for (int i = 0; i < recordsNum; i++) { 163 str += records[i].getInfo() + " " + records[i].getDate() + " "; 164 } 165 166 return str; 167 } 168 169 /** 170 * 获取开户日期 171 * 172 * @return 开户日期 173 */ 174 public String getDate() { 175 176 return date; 177 } 178 179 }
1 package test_8_4; 2 3 import javax.swing.JOptionPane; 4 5 public class UserMethod { 6 7 /** 用户数组 */ 8 private static UserData[] users = new UserData[100]; 9 /** 用户数 */ 10 private static int userNum; 11 /** 当前登录用户 */ 12 private UserData loginUser; 13 /** 当前登录用户下标 */ 14 private int loginIndex; 15 16 /** 17 * 设置当前登陆用户 18 * 19 * @param loginAdmin 当前登陆用户 20 */ 21 public void setLoginAdmin(UserData loginUser) { 22 23 this.loginUser = loginUser; 24 } 25 26 /** 27 * 设置当前登录用户下标 28 * 29 * @param loginIndex 当前登录用户下标 30 */ 31 public void setLoginIndex(int loginIndex) { 32 33 this.loginIndex = loginIndex; 34 } 35 36 /** 37 * 获取用户数组 38 * 39 * @return users 用户数组 40 */ 41 public UserData[] getUsers() { 42 43 return users; 44 } 45 46 /** 47 * 获取用户数 48 * 49 * @return userNum 用户数 50 */ 51 public int getUserNum() { 52 53 return userNum; 54 } 55 56 57 /** 58 * 初始化用户信息 59 * 60 * @param code 卡号 61 * @param password 密码 62 * @param name 姓名 63 * @param address 地址 64 * @param remain 余额 65 * @param date 开户日期 66 */ 67 public void init(int index, String code, String password, String name, String address, double remain) { 68 69 users[index] = new UserData(code, password, name, address, remain); 70 userNum++; 71 } 72 73 /** 74 * 开户 75 */ 76 public void addUser() { 77 78 String code = JOptionPane.showInputDialog(null, "请输入卡号"); 79 String password = "123456"; 80 String name = JOptionPane.showInputDialog(null, "请输入姓名"); 81 String address = JOptionPane.showInputDialog(null, "请输入地址"); 82 int remain = 0; 83 84 users[userNum] = new UserData(code, password, name, address, remain); 85 userNum++; 86 } 87 88 /** 89 * 存钱 90 */ 91 public void saveMoney() { 92 93 double money = Double.parseDouble(JOptionPane.showInputDialog(null, "请输入存款金额")); 94 loginUser.save(money); 95 96 loginUser.addRecord("存款" + money + "元"); 97 98 JOptionPane.showMessageDialog(null, "取款成功"); 99 100 } 101 102 /** 103 * 取钱 104 */ 105 public void drawMoney() { 106 107 double money = Double.parseDouble(JOptionPane.showInputDialog(null, "请输入取款金额")); 108 109 if (money > loginUser.getRemain()) { 110 JOptionPane.showMessageDialog(null, "余额不足"); 111 } else { 112 loginUser.draw(money); 113 114 loginUser.addRecord("取款" + money + "元"); 115 116 JOptionPane.showMessageDialog(null, "取款成功"); 117 } 118 119 } 120 121 /** 122 * 转账 123 */ 124 public void transfer() { 125 126 String payee = JOptionPane.showInputDialog(null, "请输入收款人卡号"); 127 String name = JOptionPane.showInputDialog(null, "请输入收款人姓名"); 128 129 int payeeIndex = findPayeeIndx(payee, name); 130 131 if (payeeIndex != -1) { 132 double money = Double.parseDouble(JOptionPane.showInputDialog(null, "请输入转账金额")); 133 134 if (money > loginUser.getRemain()) { 135 JOptionPane.showMessageDialog(null, "余额不足"); 136 } else { 137 loginUser.draw(money); 138 users[payeeIndex].save(money); 139 140 loginUser.addRecord("向" + users[payeeIndex].getCode() + "转账" + money + "元"); 141 users[payeeIndex].addRecord("从" + loginUser.getCode() + "收款" + money + "元"); 142 143 JOptionPane.showMessageDialog(null, "转账成功"); 144 } 145 } 146 } 147 148 /** 149 * 查询账户信息 150 */ 151 public void showInfo() { 152 153 String str = 154 "卡号:" + loginUser.getCode() + 155 " 姓名:" + loginUser.getName() + 156 " 地址:" + loginUser.getAddress() + 157 " 余额:" + loginUser.getRemain() + 158 " 开户日期:" + loginUser.getDate(); 159 160 JOptionPane.showMessageDialog(null, str); 161 162 } 163 164 /** 165 * 销户 166 */ 167 public void delUser() { 168 169 int item = JOptionPane.showConfirmDialog(null, "确认注销当前卡号吗?此操作不可逆!"); 170 171 if (item == 0) { 172 for (int i = loginIndex; i < userNum; i++) { 173 users[i] = users[i + 1]; 174 } 175 userNum--; 176 JOptionPane.showMessageDialog(null, "卡已注销"); 177 } 178 179 } 180 181 /** 182 * 查询交易记录 183 */ 184 public void getRecords() { 185 186 JOptionPane.showMessageDialog(null, loginUser.getRecordList()); 187 188 } 189 190 /** 191 * 修改密码 192 */ 193 public void changePwd() { 194 195 String oldPwd = JOptionPane.showInputDialog(null, "请输入旧密码"); 196 197 if (oldPwd.equals(loginUser.getPassword()) == false) { 198 JOptionPane.showMessageDialog(null, "旧密码错误"); 199 return; 200 } 201 202 String newPwd = JOptionPane.showInputDialog(null, "请输入新密码"); 203 String newPwdRe = JOptionPane.showInputDialog(null, "请确认新密码"); 204 205 if (newPwd.equals(newPwdRe) == false) { 206 JOptionPane.showMessageDialog(null, "两次密码输入不一致"); 207 return; 208 } 209 210 loginUser.setPassword(newPwd); 211 JOptionPane.showMessageDialog(null, "密码修改成功"); 212 } 213 214 /** 215 * 获取收款人下标 216 * 217 * @param payee 收款人卡号 218 * @param name 收款人姓名 219 * @return 收款人下标 220 */ 221 private int findPayeeIndx(String payee, String name) { 222 223 for (int i = 0; i < userNum; i++) { 224 if (payee.equals(users[i].getCode()) && name.equals(users[i].getName())) { 225 return i; 226 } 227 } 228 229 JOptionPane.showMessageDialog(null, "收款人卡号或姓名错误"); 230 return -1; 231 } 232 233 }
1 package test_8_4; 2 3 import java.util.Date; 4 5 public class Record { 6 7 /** 交易记录 */ 8 private String info; 9 /** 交易日期 */ 10 private String date; 11 12 /** 13 * 无参构造方法 14 */ 15 public Record() { 16 17 } 18 19 /** 20 * 带参构造方法 21 * 22 * @param info 交易记录 23 * @param date 交易日期 24 */ 25 public Record(String info) { 26 27 this.info = info; 28 this.date = getCurrentDate(); 29 } 30 31 /** 32 * 获取交易记录 33 * 34 * @return info 交易记录 35 */ 36 public String getInfo() { 37 return info; 38 } 39 40 /** 41 * 获取交易日期 42 * 43 * @return date 交易日期 44 */ 45 public String getDate() { 46 return date; 47 } 48 49 /** 50 * 获取当前日期 51 * 52 * @return 当前日期 53 */ 54 private String getCurrentDate() { 55 56 String str = ""; 57 58 Date date = new Date(); 59 str += (date.getYear() + 1900) + "-" + (date.getMonth() + 1) + "-" + date.getDay(); 60 61 return str; 62 } 63 64 }
1 package test_8_4; 2 3 import javax.swing.JOptionPane; 4 5 public class Console { 6 7 /** 实例化职工管理方法类 */ 8 private StaffMethod sm = new StaffMethod(); 9 /** 实例化用户管理方法类 */ 10 private UserMethod um = new UserMethod(); 11 12 /** 13 * 获取实例化职工管理方法类 14 * 15 * @return am 实例化职工管理方法类 16 */ 17 public StaffMethod getAm() { 18 19 return sm; 20 } 21 22 /** 23 * 获取实例化用户管理方法类 24 * 25 * @return um 实例化用户管理方法类 26 */ 27 public UserMethod getUm() { 28 29 return um; 30 } 31 32 /** 33 * 欢迎界面 34 */ 35 public void welcome() { 36 37 while (true) { 38 String item = JOptionPane.showInputDialog(null, "" 39 + "欢迎使用银行管理系统 " 40 + "1、登陆系统 " 41 + "2、退出系统"); 42 switch (item) { 43 case "1": 44 login(); 45 break; 46 case "2": 47 JOptionPane.showMessageDialog(null, "已退出"); 48 System.exit(0); 49 default: 50 JOptionPane.showMessageDialog(null, "请输入1-2"); 51 } 52 } 53 54 } 55 56 /** 57 * 职工管理系统 58 */ 59 private void adminMainMenu() { 60 61 while (true) { 62 String item = JOptionPane.showInputDialog(null, "" 63 + "1、添加职工 " 64 + "2、删除职工 " 65 + "3、显示职工列表 " 66 + "4、修改密码 " 67 + "5、注销登陆"); 68 switch (item) { 69 case "1": 70 sm.addAdmin(); 71 break; 72 case "2": 73 sm.delAdmin(); 74 break; 75 case "3": 76 sm.showAdminList(); 77 break; 78 case "4": 79 sm.changePwd(); 80 break; 81 case "5": 82 JOptionPane.showMessageDialog(null, "已注销登陆"); 83 return; 84 default: 85 JOptionPane.showMessageDialog(null, "请输入1-5"); 86 } 87 } 88 89 } 90 91 /** 92 * 职工主界面 93 */ 94 private void staffMainMenu() { 95 96 while (true) { 97 String item = JOptionPane.showInputDialog(null, "" 98 + "1、进入用户管理系统 " 99 + "2、修改密码 " 100 + "3、注销登陆"); 101 switch (item) { 102 case "1": 103 userManageMenu(); 104 break; 105 case "2": 106 sm.changePwd(); 107 break; 108 case "3": 109 JOptionPane.showMessageDialog(null, "已注销登陆"); 110 return; 111 default: 112 JOptionPane.showMessageDialog(null, "请输入1-3"); 113 } 114 } 115 116 } 117 118 /** 119 * 用户管理界面 120 */ 121 private void userManageMenu() { 122 123 while (true) { 124 String item = JOptionPane.showInputDialog(null, "" 125 + "1、开户 " 126 + "2、用户操作 " 127 + "3、返回上一级"); 128 switch (item) { 129 case "1": 130 um.addUser(); 131 break; 132 case "2": 133 if (userLogin() == true) { 134 userMainMenu(); 135 } 136 break; 137 case "3": 138 return; 139 default: 140 JOptionPane.showMessageDialog(null, "请输入1-3"); 141 } 142 } 143 144 } 145 146 /** 147 * 用户操作界面 148 */ 149 private void userMainMenu() { 150 151 while (true) { 152 String item = JOptionPane.showInputDialog(null, "" 153 + "1、存钱 " 154 + "2、取钱 " 155 + "3、转账 " 156 + "4、查询账户信息 " 157 + "5、查询交易记录 " 158 + "6、修改密码 " 159 + "7、销户 " 160 + "8、退出"); 161 switch (item) { 162 case "1": 163 um.saveMoney(); 164 break; 165 case "2": 166 um.drawMoney(); 167 break; 168 case "3": 169 um.transfer(); 170 break; 171 case "4": 172 um.showInfo(); 173 break; 174 case "5": 175 um.getRecords(); 176 break; 177 case "6": 178 um.changePwd(); 179 break; 180 case "7": 181 um.delUser(); 182 return; 183 case "8": 184 JOptionPane.showMessageDialog(null, "已退出"); 185 return; 186 default: 187 JOptionPane.showMessageDialog(null, "请输入1-8"); 188 } 189 } 190 191 } 192 193 /** 194 * 职工登陆 195 */ 196 private void login() { 197 198 for (int i = 0; i < 3; i++) { 199 String userName = JOptionPane.showInputDialog(null, "请输入用户名"); 200 String password = JOptionPane.showInputDialog(null, "请输入密码"); 201 202 if ("管理员".equals(checkLogin(userName, password))) { 203 adminMainMenu(); 204 return; 205 } else if ("职员".equals(checkLogin(userName, password))) { 206 staffMainMenu(); 207 return; 208 } else { 209 JOptionPane.showMessageDialog(null, "用户名或密码有误,请重新输入"); 210 } 211 } 212 213 JOptionPane.showMessageDialog(null, "非法用户"); 214 System.exit(0); 215 216 } 217 218 /** 219 * 验证职工登陆 220 * 221 * @param userName 用户名 222 * @param password 密码 223 * @return 登陆用户类型 224 */ 225 private String checkLogin(String userName, String password) { 226 227 for (int i = 0; i < sm.getAdminNum(); i++) { 228 if (userName.equals(sm.getAdminArr()[i].getUserName()) && password.equals(sm.getAdminArr()[i].getPassword())) { 229 if ("管理员".equals(sm.getAdminArr()[i].getPermission())) { 230 sm.setLoginAdmin(sm.getAdminArr()[i]); 231 return "管理员"; 232 } else if ("职员".equals(sm.getAdminArr()[i].getPermission())) { 233 sm.setLoginAdmin(sm.getAdminArr()[i]); 234 return "职员"; 235 } 236 } 237 } 238 239 return ""; 240 } 241 242 /** 243 * 用户登陆 244 */ 245 private boolean userLogin() { 246 247 String code = JOptionPane.showInputDialog(null, "请输入卡号"); 248 String password = JOptionPane.showInputDialog(null, "请输入密码"); 249 250 for (int i = 0; i < um.getUserNum(); i++) { 251 if (code.equals(um.getUsers()[i].getCode()) && password.equals(um.getUsers()[i].getPassword())) { 252 um.setLoginAdmin(um.getUsers()[i]); 253 um.setLoginIndex(i); 254 return true; 255 } 256 } 257 258 JOptionPane.showMessageDialog(null, "卡号或密码错误"); 259 return false; 260 261 } 262 263 }
1 package test_8_4; 2 3 /** 4 * <p>Description:银行管理系统</p> 5 * <P>Date:2020/05/09 00:11</p> 6 * <P>JDK:1.8.1_171<P> 7 * <P>JRE:1.8.1_171<P> 8 * <P>IDE:Eclipse version 4.7.3a<P> 9 * 10 * @version v1.0.0 11 * @author MirAi 12 */ 13 public class BankSystem { 14 15 public static void main(String[] args) { 16 17 Console console = new Console(); 18 19 console.getAm().init(0, "Joker", "111", "管理员"); 20 console.getAm().init(1, "Navi", "222", "职员"); 21 console.getAm().init(2, "Queen", "333", "职员"); 22 23 console.getUm().init(0, "001", "111", "Panther", "Shibuya", 2000); 24 console.getUm().init(1, "002", "222", "Mona", "Mementos", 2000); 25 console.getUm().init(2, "003", "333", "Noir", "Aoyama", 2000); 26 console.getUm().init(3, "004", "444", "Violet", "Kichijoji", 2000); 27 28 console.welcome(); 29 } 30 31 }
第一版
以上是关于[20-05-09][Self-test 40]Java BankSystem 1的主要内容,如果未能解决你的问题,请参考以下文章
[20-04-26][Self-test 6]Java CharType
[20-06-04][Self-test 46]Java Linker Manage
[20-06-04][Self-test 46]Java Linker Manage
[20-05-02][Self-test 31]Java Dictionary