[20-05-09][Self-test 40]Java BankSystem 1

2021-01-26 04:16

阅读:652

标签: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();


评论


亲,登录后才可以留言!