[20-05-09][Self-test 40]Java BankSystem 1
2021-01-26 04:16
标签:com owa 登陆用户 用户 界面 man win case noi 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 ) {
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 ) {
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 = "用户名 权限\n";
122
123 for (int i = 0; i ) {
124 str += adminArr[i].getUserName() + " " + adminArr[i].getPermission() + "\n";
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 ) {
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 = "交易记录 交易日期\n";
162 for (int i = 0; i ) {
163 str += records[i].getInfo() + " " + records[i].getDate() + "\n";
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 "\n姓名:" + loginUser.getName() +
156 "\n地址:" + loginUser.getAddress() +
157 "\n余额:" + loginUser.getRemain() +
158 "\n开户日期:" + 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 ) {
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 ) {
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 + "欢迎使用银行管理系统\n\n"
40 + "1、登陆系统\n"
41 + "2、退出系统");
42 switch (item) {
43 case "1":
44 login();
文章标题:[20-05-09][Self-test 40]Java BankSystem 1
文章链接:http://soscw.com/index.php/essay/47114.html