第一个代码是账户对象
第二个代码是主要代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68package com.yangyang.atm; /** * 账户类 * @author 洋啊桑 * @version IDEA */ public class Accout { /** *成员变量,私有 */ private String cardId; private String userName; private String passWord; private double money; private double quotaMoney; public Accout(){} public Accout(String cardId, String userName, String passWord, double money, double quotaMoney) { this.cardId = cardId; this.userName = userName; this.passWord = passWord; this.money = money; this.quotaMoney = quotaMoney; } public String getCardId() { return cardId; } public void setCardId(String cardId) { this.cardId = cardId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassWord() { return passWord; } public void setPassWord(String passWord) { this.passWord = passWord; } public double getMoney() { return money; } public void setMoney(double money) { this.money = money; } public double getQuotaMoney() { return quotaMoney; } public void setQuotaMoney(double quotaMoney) { this.quotaMoney = quotaMoney; } }
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377package com.yangyang.atm; import com.yangyang.atm.Accout; /** * ATM系统的入口类 */ import javax.swing.*; import java.util.Random; import java.util.Scanner; import java.util.ArrayList; public class ATMsystem { public static void main(String[] args){ //需要一个集合存储账户对象,进行相关操作 ArrayList<Accout> accouts=new ArrayList(); Scanner sc=new Scanner(System.in); while (true) { System.out.println("================ATM=================="); System.out.println("1:账户登录"); System.out.println("2:账户注册"); System.out.println("请选择你的操作:"); int command=sc.nextInt(); switch(command){ case 1: //用户登录 login(accouts,sc); break; case 2: //用户开户 regist(accouts,sc); break; default:System.out.println("你输入的命令不存在!"); } } } /** * 用户登录的实现 * @param accouts 接受账户集合 * @param sc 扫描器 */ private static void login(ArrayList<Accout> accouts,Scanner sc) { System.out.println("====================用户登录===================="); //判断账户集合中是否有账户存在,如果不存在,登录功能不实现 if(accouts.size()==0){ System.out.println("当前系统中无账户存在,请先开户。"); return; } //2:正式进入登录操作 while (true) { System.out.println("请输入卡号"); String cardId = sc.next(); //判断卡号是否存在,根据卡号在集合中找对象 Accout acc=getAccoutByCardId(cardId,accouts); if(acc!=null){ //存在 while (true) { //输入密码 判断 System.out.println("请输入密码"); String password = sc.next(); if(acc.getPassWord().equals(password)){ //成功 System.out.println("恭喜你登陆成功"+acc.getUserName()+"先生/女士"); //其他功能 showUseCommand(acc,sc,accouts);//当前登录的账户 return;//干掉登陆方法 }else{ //失败 System.out.println("您输入的密码有误"); } } }else{ System.out.println("当前系统中无无改卡号存在"); } } } /** *登录后功能的实现, 查询账户信息 存款 转账 取款 改密码 退出 注销 * @param acc 接收的账户 * @param sc 扫描仪 */ private static void showUseCommand(Accout acc,Scanner sc,ArrayList<Accout>accouts){ while (true) { System.out.println("====================用户操作界面===================="); 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:注销账户"); int number =sc.nextInt(); switch(number){ case 1://查询账户信息(展示当前登录的账户) showAccout(acc); break; case 2://存款 depositMoney(acc,sc); break; case 3://取款 drawMoney(acc,sc); break; case 4://转账 transferMoney(sc,acc,accouts); break; case 5://改密码 updatePassWord(sc,acc); return;//停止执行当前方法 在登录界面验证新密码 case 6://退出 System.out.println("退出成功,欢迎下次光临!"); return;//停止执行当前方法 case 7://注销账户 delateAccout(sc,acc,accouts); return;//停止执行当前方法 default : System.out.println("对不起, 您输入的指令有误!"); } } } /** * 注销账户 * @param sc 扫描仪 * @param acc 自己的账户 * @param accouts 账户集合 */ private static void delateAccout(Scanner sc, Accout acc, ArrayList<Accout> accouts) { System.out.println("=================用户销户界面=================="); System.out.println("确定要销户?y/n"); String choose= sc.next(); switch(choose){ case "y": if(acc.getMoney()>0){ System.out.println("账户尚有余额,不可以注销!"); }else{ accouts.remove(acc); System.out.println("销户成功!"); } break; default: System.out.println("好的,账户继续保留。"); } } /** * 修改密码 * @param sc 扫描仪 * @param acc 账户对象 */ private static void updatePassWord(Scanner sc, Accout acc) { System.out.println("=================用户密码修改=================="); while (true) { System.out.println("请输入旧密码"); String password= sc.next(); //判断密码 if(password.equals(acc.getPassWord())){ //对的 while(true){ System.out.println("请输入新密码"); String newpassword= sc.next(); System.out.println("请确认新密码"); String oknewpassword= sc.next(); if(newpassword.equals(oknewpassword)){ acc.setPassWord(newpassword); System.out.println("恭喜你,密码修改成功"); return;//结束 }else { System.out.println("密码错误"); } } }else{ //错的 System.out.println("抱歉,密码错误!"); } } } /** * 转账 * @param sc 扫描仪 * @param acc 自己的账户 * @param accouts 账户集合 */ private static void transferMoney(Scanner sc, Accout acc, ArrayList<Accout> accouts) { System.out.println("=================用户转账操作=================="); //判断是否有两个账户 if(accouts.size()<2){ System.out.println("对不起,账户数量不足,请先开户~"); return; } //判断自己是否有钱 while (true) { if(acc.getMoney()==0){ System.out.println("抱歉,账户余额不足"); return; } //真正开始转账 System.out.println("请输入对方的卡号"); String cardId=sc.next(); if(cardId.equals(acc.getCardId())){ System.out.println("对不起,您不可以输入自己的卡号"); continue; } //通过卡号判断账户是否存在 Accout accout=getAccoutByCardId(cardId,accouts); if(accout==null){ System.out.println("账户不存在"); }else{ //姓氏认证 String userName=accout.getUserName(); String tip="*"+userName.substring(1);//截取姓氏之后的 System.out.println("请输入["+tip+"]的姓氏"); String prename=sc.next(); // 确认 if(userName.startsWith(prename)){ //通过 System.out.println("请输入转账金额"); double money=sc.nextDouble(); if(money>acc.getMoney()){ System.out.println("抱歉,余额不足。"); }else{ acc.setMoney(acc.getMoney()-money); accout.setMoney(accout.getMoney()+money); showAccout(acc); showAccout(accout); return;//结束 } }else{ System.out.println("对不起,您的输入有误!"); } } } } /** * 取钱 * @param acc * @param sc */ private static void drawMoney(Accout acc, Scanner sc) { System.out.println("=================用户取钱操作=================="); if(acc.getMoney()<100){ System.out.println("抱歉,账户不够100元,无法取钱"); return ; } System.out.println("请输入取款金额"); double money=sc.nextDouble(); //限额 if(money> acc.getQuotaMoney()){ System.out.println("抱歉,超出单次取款限额"); }else { //余额 if(money>acc.getMoney()){ System.out.println("余额不足!"); }else{ acc.setMoney(acc.getMoney()-money); System.out.println("取款成功"+money+"元"); showAccout(acc); return;//结束方法 } } } /** * 存钱 * @param acc 当前账户对象 * @param sc 扫描仪 */ private static void depositMoney(Accout acc,Scanner sc) { System.out.println("=================用户存钱操作=================="); System.out.println("请输入存款的金额"); double money=sc.nextDouble(); acc.setMoney(acc.getMoney()+money); System.out.println("存款成功!信息如下"); while (true) { showAccout(acc); System.out.println("输入1以退出"); Scanner ss=new Scanner(System.in); int s=ss.nextInt(); if(s==1)return; } } /** * 展示账户信息 * @param acc 被展示账户 */ private static void showAccout(Accout acc) { while (true) { System.out.println("=============================当前账户信息如下============================="); System.out.println("卡号:"+acc.getCardId()); System.out.println("户主:"+acc.getUserName()); System.out.println("余额:"+acc.getMoney()); System.out.println("限额:"+acc.getQuotaMoney()); System.out.println("输入1以退出"); Scanner ss=new Scanner(System.in); int s=ss.nextInt(); if(s==1)break; } } /** * 用户开户功能的实现 * @param accouts 接收的账户集合 */ private static void regist(ArrayList<Accout> accouts,Scanner sc) { System.out.println("====================用户开户===================="); //账户类 Accout accout=new Accout(); //录入账户与密码 System.out.println("请输入你的用户名"); String userName=sc.next(); accout.setUserName(userName); while (true) { System.out.println("请输入你的用户密码"); String password=sc.next(); System.out.println("请输入你的确认密码"); String okpassword=sc.next(); //密码查验 if(password.equals(okpassword)) { accout.setPassWord(password); break; }else System.out.println("密码不一致"); } //限额 System.out.println("请输入你的限额"); double quotamoney=sc.nextDouble(); accout.setQuotaMoney(quotamoney); //为账户随机一个8位且与其他账户不重复的密码 String cardId=getRandomCardId(accouts); accout.setCardId(cardId); //将账户对象添加到账户集合中去 accouts.add(accout); System.out.println("恭喜您,"+userName+"先生/女士,您的卡号是"+cardId); } /** * 为账户随机一个8位且与其他账户不重复的密码 * @return */ private static String getRandomCardId(ArrayList<Accout>accouts) { //生成8位数字 Random d=new Random(); while (true) { String cardId=""; for (int i = 0; i <8 ; i++) { cardId+=d.nextInt(10); } //判断是否重复 Accout acc=getAccoutByCardId(cardId,accouts); if(acc==null) return cardId;//无账户 可以用 } } /** * 根据卡号查账户 * @param cardId 卡号 * @param accouts 全都账户集合 * @return 账户对象/null */ private static Accout getAccoutByCardId(String cardId,ArrayList<Accout>accouts){ for(int i=0;i< accouts.size();i++){ Accout acc=accouts.get(i); if(acc.getCardId().equals(cardId))return acc; } return null; } }
最后
以上就是明亮仙人掌最近收集整理的关于Java实现ATM机的全部内容,更多相关Java实现ATM机内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复