标签:hashmap 账号 abstract 字符串分割 抽象方法 test 表达式 err []
一. 项目功能要求:
项目开始运行显示主菜单为:
银行自助终端系统
****************************
0.------开户
1.------查询
2.------存款
3.------取款
4.------退出
****************************
请选择你要执行的功能:
此时,用户可以通过键盘输入选择自己要实现的功能,如果输入不是0,1,2,3,4,则系统提示:
你选择的菜单不存在!
请重新选择:
要求用户重新输入数据进行菜单选择!
当用户输入0时,则进入开户功能:系统提示:
****************************
你选择的为开户功能
请输入你的姓名:
此时用户需要输入姓名,输入完毕后系统提示:
请输入你的身份证号:
此时用户需要输入18位身份证号,输入完毕如果验证未通过要求继续输入,直到验证通过后系统提示:
请输入你的密码:
此时用户需要输入6位纯数字密码,输入完毕如果验证未通过要求继续输入,验证通过后系统提示:
开户成功,谢谢使用!
银行自助终端系统
****************************
0.------开户
1.------查询
2.------存款
3.------取款
4.------退出
****************************
请选择你要执行的功能:
当用户输入1时,则进入查询功能:系统提示:
****************************
你选择的为查询功能
请输入你要查询的卡号:
此时用户需要输入查询的卡号,系统对卡号进行检测,如果卡号不存在,则提示: 你输入的卡号不存在,请重新输入:
请输入你要查询的卡号:
要求重新输入卡号,当用户输入正确卡号后,则提示:
请输入你的密码:
此时用户需要输入6位纯数字密码,输入完毕如果验证未通过要求继续输入(最多3次),验证通过后系统将显示当前用户账号信息并进入主菜单:
你查询的账号信息为:
******************************
姓名 身份证号 卡号 金额
张三丰 420106198410112062 111111 12800.0
银行自助终端系统
****************************
0.------开户
1.------查询
2.------存款
3.------取款
4.------退出
****************************
请选择你要执行的功能:
当用户输入2时,则进入存款功能:系统提示:
****************************
你选择的为存款功能
请输入你要存款的卡号:
此时用户需要输入存款的卡号,系统对卡号进行检测,如果卡号不存在,则提示:
你输入的卡号不存在,请重新输入:
请输入你要存款的卡号:
要求重新输入卡号,当用户输入正确卡号后,则提示:
请输入你的密码:
此时用户需要输入6位纯数字密码,输入完毕如果验证未通过要求继续输入(最多3次),验证通过后系统将显示当前用户账号信息并进入主菜单:
你要存款的账号信息为:
******************************
姓名 身份证号 卡号 金额
张三丰 420106198410112062 111111 12800.0
请输入你要存入的金额:
此时要求用户输入存款金额,系统对金额进行判断,如果输入的数据小于等于0,则提示:
你输入的数据无效,系统将自动退出!谢谢使用
银行自助终端系统
****************************
0.------开户
1.------查询
2.------存款
3.------取款
4.------退出
****************************
请选择你要执行的功能:
如果用户输入数据合法,系统提示存款成功,并回到主菜单:
存款成功,谢谢使用!
银行自助终端系统
****************************
0.------开户
1.------查询
2.------存款
3.------取款
4.------退出
****************************
请选择你要执行的功能:
数据将存入用户账号,如果用户再次进行数据查询,则能看到已经改变后的账户金额。 (说明:本系统使用文件进行数据存储,因此如果用户重新启动程序,数据将从文件中读取重新初始化到内存!此功能选做,可参考对象的序列化和反序列化或JSON)
当用户输入3时,则进入取款功能:系统提示:
****************************
你选择的为取款功能 请输入你要取款的卡号:
此时用户需要输入取款的卡号,系统对卡号进行检测,如果卡号不存在,则提示:
你输入的卡号不存在,请重新输入:
请输入你要取款的卡号:
要求重新输入卡号,当用户输入正确卡号后,则提示:
请输入你的密码:
此时用户需要输入6位纯数字密码,输入完毕如果验证未通过要求继续输入(最多3次),验证通过后系统将显示当前用户账号信息并进入主菜单:
你要取款的账号信息为:
******************************
姓名 身份证号 卡号 金额
张三丰 420106198410112062 111111 12800.0
请输入你要取款的金额:
此时要求用户输入取款金额,系统对金额进行判断,如果输入的数据小于0或大于账号总金额,则提示:
你输入的数据无效,系统将自动退出!谢谢使用
银行自助终端系统
****************************
0.------开户
1.------查询
2.------存款
3.------取款
4.------退出
****************************
请选择你要执行的功能:
如果用户输入数据合法,系统提示取款成功,并回到主菜单:
取款成功,谢谢使用!
银行自助终端系统
****************************
0.------开户
1.------查询
2.------存款
3.------取款
4.------退出
****************************
请选择你要执行的功能:
数据将从用户账号扣出,如果用户再次进行数据查询,则能看到已经改变后的账户金额。
当用户输入4时,系统将退出。
二.设计要求
(一)包一:com.bank.unionpay 表示银联,在该包下添加:
(二)包二:com.bank.abc 表示农行,在该包下添加:
(三)包三:com.bank.test 表示测试,在该包下添加带main方法的测试类,实现项目要求的模拟ATM机的功能。
程序代码:包一com.bank.unionpay
1 package com.bank.unionpay;
2 /**
3 *
4 * @author Administrator
5 *银联接口
6 */
7 public interface Yinlian {
8 void Chaxun(Yinlian yinl); //查询余额
9 void Cunkuan(Yinlian yinl); //存款
10 void Qukuan(Yinlian yinl); //取款
11 }
1 package com.bank.unionpay;
2
3 import java.util.Scanner;
4
5 /**
6 *
7 * @author Administrator
8 *ATM机抽象类
9 */
10 public abstract class ATM {
11 private int yue; //变量余额
12 public abstract void Kaihu(); //抽象方法——开户
13 public int getYue() { //get余额方法
14 return yue;
15 }
16 public void setYue(int yue) { //set余额方法
17 this.yue = yue;
18 }
19 public void Chaxun(Yinlian yinl) { //查询余额
20 System.out.println("您的账户余额为:"+yue);
21 }
22 public void Cunkuan(Yinlian yinl) { //存款
23 while(true){
24 System.out.println("请输入存款金额:");
25 Scanner sc=new Scanner(System.in);
26 int jine=sc.nextInt(); //输入存款金额
27 if(jine<0){
28 System.out.println("输入有误!"); //负数提示
29 continue;
30 }else{
31 yue+=jine; //重新计算余额
32 break;
33 }
34 }
35 }
36 public void Qukuan(Yinlian yinl) { //取款
37 while(true){
38 System.out.println("请输入取款金额:");
39 Scanner sc=new Scanner(System.in);
40 int jine=sc.nextInt(); //输入取款金额
41 if(jine<=yue){
42 yue-=jine; //重新计算余额
43 break;
44 }else if(jine>yue){
45 System.out.println("余额不足,无法取款!"); //余额不足提示
46 continue;
47 }else{
48 System.out.println("输入有误!"); //负数提示
49 continue;
50 }
51 }
52 }
53 }
package com.bank.unionpay;
/**
*
* @author Administrator
*四大银行——枚举
*/
public enum Bank {
ABC("农行"),ICBC("工行"),CCB("建行"),BOC("中行"); //枚举类型 枚举列表
private final String name; //常量银行名
public String getName(){ //getter方法返回银行名
return this.name;
}
private Bank(String name){ //私有构造方法
this.name=name;
}
}
包二com.bank.abc
1 package com.bank.abc;
2 import java.util.ArrayList;
3 import java.util.HashMap;
4 import java.util.List;
5 import java.util.Map;
6
7 import com.bank.unionpay.Bank;
8 /**
9 *
10 * @author Administrator
11 *银行类——单例模式
12 */
13 public class Bankclass {
14 private Bankclass(){ //禁止外部访问构造方法
15
16 }
17 private static Bankclass bank=new Bankclass(); //内部产生唯一实例
18 public static Bankclass getBankclass() //开放一个方法给调用者返回这个实例
19 {
20 return bank;
21 }
22 private final Bank ABC=Bank.ABC; //银行类型(枚举类型=ABC)
23 private String bankname; //银行名称
24 public List<Long> card=new ArrayList(); //银行卡列表——集合
25 public Map<Long,Bankchuxu> Account=new HashMap<>(); //账号储蓄卡集合
26 }
package com.bank.abc;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;
import java.util.Scanner;
import com.bank.unionpay.ATM;
import com.bank.unionpay.Bank;
/**
*
* @author Administrator
*ATM机的子类
*/
public class ATMzi extends ATM{
private final Bank ABC=Bank.ABC; //银行类型(枚举类型=ABC)
@Override
public void Kaihu() { //开户功能
Bankchuxu bk=new Bankchuxu();
System.out.println("请输入您的姓名:");
while(true){ //输入姓名
try{ //异常处理
Scanner sc=new Scanner(System.in);
bk.setName(sc.nextLine());
break;
}catch(Exception e){
System.out.println("输入有误!");
System.out.println("请重新输入:");
continue;
}
}
while(true){ //输入身份证号
try{
System.out.println("请输入您的身份证号:");
Scanner sc=new Scanner(System.in);
String a=sc.nextLine();
String regex="\\d{15}|\\d{17}[\\dxX]"; //正则表达式控制身份证号
if(a.matches(regex)){
bk.setIDcard(a);
break;
}else{
System.out.println("身份证号格式输入有误!");
continue;
}
}catch(Exception e){
System.out.println("输入有误!");
System.out.println("请重新输入:");
continue;
}
}
while(true){ //输入密码
try{
System.out.println("请输入6位纯数字密码:");
Scanner sc=new Scanner(System.in);
String a=sc.nextLine();
String regex="\\d{6}"; //正则表达式控制密码
if(a.matches(regex)){
bk.setPassword(a);
break;
}
else{
System.out.println("输入密码格式有误!");
continue;
}
}catch(Exception e){
System.out.println("输入有误!");
System.out.println("请重新输入:");
continue;
}
}
while(true){
Random a=new Random();
Long c=a.nextLong(); //生成储蓄卡号
String regex="\\d{19}";
if(c>0&&c.toString().matches(regex)){
bk.setCard(c); //将生成的储蓄卡号赋给储蓄卡卡号属性
Bankclass.getBankclass().card.add(bk.getCard()); //将生成的储蓄卡号存到银行的银行卡列表中
Bankclass.getBankclass().Account.put(bk.getCard(), bk); //卡号+储蓄卡对象
System.out.println("您的账号为:"+bk.getCard());
break;
}else{
continue;
}
}
try {
FileOutputStream out =new FileOutputStream("d:/账号.txt",true); //打印卡号到文本中
StringBuilder shuju=new StringBuilder();
shuju.append(bk.toString()+"\r\n");
byte[] by=shuju.toString().getBytes();
out.write(by);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
1 package com.bank.abc;
2
3 import java.io.BufferedReader;
4 import java.io.FileOutputStream;
5 import java.io.FileReader;
6 import java.util.Scanner;
7
8 import com.bank.test.Jiemian;
9 import com.bank.unionpay.Bank;
10 import com.bank.unionpay.Yinlian;
11
12 /**
13 *
14 * @author Administrator
15 *储蓄卡类
16 */
17 public class Bankchuxu implements Yinlian{
18 protected final Bank ABC=Bank.ABC; //银行类型(枚举类型=ABC)
19 private String name; //姓名
20 private String IDcard; //身份证号
21 protected long card; //银行卡号
22 private String password; //密码
23 protected int yue; //余额
24 //储蓄卡号get、set方法
25 public long getCard() {
26 return card;
27 }
28 public void setCard(long card) {
29 this.card = card;
30 }
31 //姓名get、set方法
32 public String getName() {
33 return name;
34 }
35 public void setName(String name) {
36 this.name = name;
37 }
38 //身份证号get、set方法
39 public String getIDcard() {
40 return IDcard;
41 }
42 public void setIDcard(String iDcard) {
43 IDcard = iDcard;
44 }
45 //密码get、set方法
46 public String getPassword() {
47 return password;
48 }
49 public void setPassword(String password) {
50 this.password = password;
51 }
52 //余额get、set方法
53 public int getYue() {
54 return yue;
55 }
56 public void setYue(int yue) {
57 this.yue = yue;
58 }
59
60 @Override
61 public void Chaxun(Yinlian yinl) { //查询功能
62 try {
63 FileReader fr = new FileReader("d:/账号.txt"); //读取文件中的账号
64 BufferedReader br=new BufferedReader(fr);
65 String str=null;
66 while((str=br.readLine())!= null){
67 Bankchuxu bk=new Bankchuxu();
68 String[] newstr=str.split(" "); //字符串分割放到字符串数组中
69 for(int i=0;i<newstr.length;i++){ //遍历数组将信息传给对象
70 if(i==0)bk.setName(newstr[0]);
71 if(i==1)bk.setIDcard(newstr[1]);
72 if(i==2)bk.setCard(Long.parseLong(newstr[2]));
73 if(i==3)bk.setPassword(newstr[3]);
74 if(i==4)bk.setYue(Integer.parseInt(newstr[4]));
75 }
76 Bankclass.getBankclass().Account.put(bk.getCard(), bk); //将卡号+储蓄卡对象放到集合中
77 }
78 } catch (Exception e1) {
79 // TODO 自动生成的 catch 块
80 e1.printStackTrace();
81 }
82 System.out.println("请输入您要查的账号:"); //输入账号
83 while(true){
84 try{
85 Scanner sc=new Scanner(System.in);
86 long a=sc.nextLong();
87 for(Long temp:Bankclass.getBankclass().Account.keySet()){
88 if(a==temp){
89 card=a; //取卡号
90 }
91 }
92 if(a==card){ //验证卡号
93 System.out.println("请输入您的密码:"); //输入密码
94 int i=0;
95 while(true){
96 Scanner s=new Scanner(System.in);
97 String pw=s.nextLine();
98 if(pw.equals(Bankclass.getBankclass().Account.get(a).getPassword())){ //验证密码
99 System.out.println("你查询的账号信息为:");
100 System.out.println("******************************");
101 System.out.println("姓名 身份证号 卡号 金额");
102 System.out.println(Bankclass.getBankclass().Account.get(a).out());
103 break;
104 }else{
105 i++;
106 if(i==3){ //控制输入次数最多3次
107 System.out.println("密码输错超过3次,无法继续输入!");
108 break;
109 }else{
110 System.out.println("密码输入错误!请重新输入:");
111 continue;
112 }
113 }
114 }
115 break;
116 }else{
117 System.out.println("您输入的卡号不存在,请重新输入:");
118 continue;
119 }
120 }catch(Exception e){
121 System.out.println("您输入的账号格式有误!");
122 System.out.println("请重新输入:");
123 continue;
124 }
125 }
126 }
127
128 @Override
129 public void Cunkuan(Yinlian yinl) { //存款
130 try {
131 FileReader fr = new FileReader("d:/账号.txt");
132 BufferedReader br=new BufferedReader(fr);
133 String str=null;
134 while((str=br.readLine())!= null){
135 Bankchuxu bk=new Bankchuxu();
136 String[] newstr=str.split(" ");
137 for(int i=0;i<newstr.length;i++){
138 if(i==0)bk.setName(newstr[0]);
139 if(i==1)bk.setIDcard(newstr[1]);
140 if(i==2)bk.setCard(Long.parseLong(newstr[2]));
141 if(i==3)bk.setPassword(newstr[3]);
142 if(i==4)bk.setYue(Integer.parseInt(newstr[4]));
143 }
144 Bankclass.getBankclass().Account.put(bk.getCard(), bk); //id+储蓄卡对象
145 }
146 } catch (Exception e1) {
147 // TODO 自动生成的 catch 块
148 e1.printStackTrace();
149 }
150 System.out.println("请输入您要存款的账号:");
151 while(true){
152 try{
153 Scanner sc=new Scanner(System.in);
154 long a=sc.nextLong();
155 for(Long temp:Bankclass.getBankclass().Account.keySet()){
156 if(a==temp){
157 card=a; //取卡号
158 }
159 }
160 if(a==card){ //验证卡号
161 System.out.println("请输入您的密码:"); //输入密码
162 int i=0;
163 while(true){
164 Scanner s=new Scanner(System.in);
165 String pw=s.nextLine();
166 if(pw.equals(Bankclass.getBankclass().Account.get(card).getPassword())){ //验证密码
167 System.out.println("您要存款的账号信息为:");
168 System.out.println("******************************");
169 System.out.println("姓名 身份证号 卡号 金额");
170 System.out.println(Bankclass.getBankclass().Account.get(card).out());
171 while(true){
172 try{
173 System.out.println("请输入存款金额:");
174 Scanner cun=new Scanner(System.in);
175 int jine=cun.nextInt(); //输入存款金额
176 if(jine<0){
177 System.out.println("您输入的数据无效,系统将自动退出!谢谢使用"); //负数提示
178 break;
179 }else{
180 yue=Bankclass.getBankclass().Account.get(card).getYue();
181 yue+=jine; //重新计算余额
182 try {
183 FileOutputStream out =new FileOutputStream("d:/账号.txt");
184 for(Long temp:Bankclass.getBankclass().Account.keySet()){
185 if(a==temp){
186 Bankclass.getBankclass().Account.get(a).setYue(yue);//存储取款后余额
187 }
188 String shuju=new String();
189 shuju=(Bankclass.getBankclass().Account.get(temp).toString()+"\r\n");
190 byte[] by=shuju.toString().getBytes();
191 out.write(by);
192 }
193 out.close();
194 } catch (Exception e) {
195 e.printStackTrace();
196 }
197 System.out.println("存款成功,谢谢使用!");
198 break;
199 }
200 }catch(Exception e){
201 System.out.println("您输入的存款金额格式有误!");
202 System.out.println("请重新输入:");
203 continue;
204 }
205 }
206 break;
207 }else{
208 i++;
209 if(i==3){ //控制输入次数最多3次
210 System.out.println("密码输错超过3次,无法继续输入!");
211 break;
212 }else{
213 System.out.println("密码输入错误!请重新输入:");
214 continue;
215 }
216 }
217 }
218 break;
219 }else{
220 System.out.println("您输入的卡号不存在,请重新输入:");
221 continue;
222 }
223 }catch(Exception e){
224 System.out.println("您输入的账号格式有误!");
225 System.out.println("请重新输入:");
226 continue;
227 }
228 }
229 }
230
231 @Override
232 public void Qukuan(Yinlian yinl) { // 取款
233 try {
234 FileReader fr = new FileReader("d:/账号.txt");
235 BufferedReader br=new BufferedReader(fr);
236 String str=null;
237 while((str=br.readLine())!= null){
238 String[] newstr=str.split(" ");
239 Bankchuxu bk=new Bankchuxu();
240 for(int i=0;i<newstr.length;i++){
241 if(i==0)bk.setName(newstr[0]);
242 if(i==1)bk.setIDcard(newstr[1]);
243 if(i==2)bk.setCard(Long.parseLong(newstr[2]));
244 if(i==3)bk.setPassword(newstr[3]);
245 if(i==4)bk.setYue(Integer.parseInt(newstr[4]));
246 }
247 Bankclass.getBankclass().Account.put(bk.getCard(), bk); //id+储蓄卡对象
248 }
249
250 } catch (Exception e1) {
251 // TODO 自动生成的 catch 块
252 e1.printStackTrace();
253 }
254 System.out.println("请输入您要取款的账号:");
255 while(true){
256 try{
257 Scanner qushu=new Scanner(System.in);
258 long b=qushu.nextLong();
259 for(Long temp:Bankclass.getBankclass().Account.keySet()){
260 if(b==temp){
261 card=b; //取卡号
262 }
263 }
264 if(b==card){ //验证卡号
265 System.out.println("请输入您的密码:"); //输入密码
266 int i=0;
267 while(true){
268 Scanner qumi=new Scanner(System.in);
269 String pw=qumi.nextLine();
270 if(pw.equals(Bankclass.getBankclass().Account.get(b).getPassword())){ //验证密码
271 System.out.println("您要取款的账号信息为:");
272 System.out.println("******************************");
273 System.out.println("姓名 身份证号 卡号 金额");
274 System.out.println(Bankclass.getBankclass().Account.get(card).out());
275 while(true){
276 try{
277 System.out.println("请输入取款金额:");
278 Scanner quj=new Scanner(System.in);
279 int jine=quj.nextInt(); //输入存款金额
280 if(jine>Bankclass.getBankclass().Account.get(b).getYue()||jine<0){
281 System.out.println("您输入的数据无效,系统将自动退出!谢谢使用"); //负数提示
282 break;
283 }else{
284 yue=Bankclass.getBankclass().Account.get(b).getYue();
285 yue-=jine; //重新计算余额
286 try {
287 FileOutputStream out =new FileOutputStream("d:/账号.txt");
288 for(Long temp:Bankclass.getBankclass().Account.keySet()){
289 if(b==temp){
290 Bankclass.getBankclass().Account.get(b).setYue(yue);
291 //存储取款后余额
292 }
293 String shuju=new String();
294 shuju=(Bankclass.getBankclass().Account.get(temp).toString()+"\r\n");
295 byte[] by=shuju.toString().getBytes();
296 out.write(by);
297 }
298 out.close();
299 } catch (Exception e) {
300 e.printStackTrace();
301 }
302 System.out.println("取款成功,谢谢使用!");
303 break;
304 }
305 }catch(Exception e){
306 System.out.println("您输入的存款金额格式有误!");
307 System.out.println("请重新输入:");
308 continue;
309 }
310 }
311 break;
312 }else{
313 i++;
314 if(i==3){ //控制输入次数最多3次
315 System.out.println("密码输错超过3次,无法继续输入!");
316 break;
317 }else{
318 System.out.println("密码输入错误,请重新输入:");
319 continue;
320 }
321 }
322 }
323 break;
324 }else{
325 System.out.println("您输入的卡号不存在,请重新输入:");
326 continue;
327 }
328 }catch(Exception e){
329 System.out.println("您输入的账号格式有误!");
330 System.out.println("请重新输入:");
331 continue;
332 }
333 }
334 }
335 @Override
336 public String toString() {
337 return getName()+ " " +getIDcard()+ " " +getCard()+ " " +getPassword()+" "+getYue()+" "+ABC;
338 }
339 public String out(){
340 return getName()+" "+getIDcard()+" "+getCard()+ " "+getYue();
341 }
342 }
1 package com.bank.abc;
2 /**
3 * 信用卡类
4 */
5 import java.io.BufferedReader;
6 import java.io.FileOutputStream;
7 import java.io.FileReader;
8 import java.util.Scanner;
9
10 import com.bank.test.Jiemian;
11 import com.bank.unionpay.Yinlian;
12
13 /**
14 *
15 * @author Administrator
16 *信用卡——储蓄卡子类
17 */
18 public class Xincard extends Bankchuxu{
19 private int touzhi=2000;
20 public void Qukuan(Yinlian yinl) { //取款
21 try {
22 FileReader fr = new FileReader("d:/信用账号.txt");
23 BufferedReader br=new BufferedReader(fr);
24 String str=null;
25 while((str=br.readLine())!= null){
26 String[] newstr=str.split(" ");
27 Bankchuxu bk=new Bankchuxu();
28 for(int i=0;i<newstr.length;i++){
29 if(i==0)bk.setName(newstr[0]);
30 if(i==1)bk.setIDcard(newstr[1]);
31 if(i==2)bk.setCard(Long.parseLong(newstr[2]));
32 if(i==3)bk.setPassword(newstr[3]);
33 if(i==4)bk.setYue(Integer.parseInt(newstr[4]));
34 }
35 Bankclass.getBankclass().Account.put(bk.getCard(), bk); //id+储蓄卡对象
36 }
37 } catch (Exception e1) {
38 // TODO 自动生成的 catch 块
39 e1.printStackTrace();
40 }
41 System.out.println("请输入您要取款的账号:");
42 while(true){
43 try{
44 Scanner qushu=new Scanner(System.in);
45 long b=qushu.nextLong();
46 for(Long temp:Bankclass.getBankclass().Account.keySet()){
47 if(b==temp){
48 card=b; //取卡号
49 }
50 }
51 if(b==card){ //验证卡号
52 System.out.println("请输入您的密码:"); //输入密码
53 int i=0;
54 while(true){
55 Scanner qumi=new Scanner(System.in);
56 String pw=qumi.nextLine();
57 if(pw.equals(Bankclass.getBankclass().Account.get(b).getPassword())){ //验证密码
58 System.out.println("您要取款的账号信息为:");
59 System.out.println("******************************");
60 System.out.println("姓名 身份证号 卡号 可透支金额");
61 System.out.println(Bankclass.getBankclass().Account.get(card).out());
62 while(true){
63 try{
64 System.out.println("请输入取款金额:");
65 Scanner quj=new Scanner(System.in);
66 int jine=quj.nextInt(); //输入取款金额
67 if(jine<0){
68 System.out.println("您输入的数据无效,系统将自动退出!谢谢使用"); //负数提示
69 Jiemian.jiemian();
70 break;
71 }else{
72 yue=Bankclass.getBankclass().Account.get(b).getYue();
73 if(jine>(yue+touzhi)){
74 System.out.println("取款超出透支额度,请按期还款");
75 }else{
76 yue=yue-jine; //重新计算余额
77 }
78 try {
79 FileOutputStream out =new FileOutputStream("d:/信用账号.txt");
80 for(Long temp:Bankclass.getBankclass().Account.keySet()){
81 if(b==temp){
82 Bankclass.getBankclass().Account.get(b).setYue(yue);
83 //存储取款后余额
84 }
85 String shuju=new String();
86 shuju=(Bankclass.getBankclass().Account.get(temp).toString()+"\r\n");
87 byte[] by=shuju.toString().getBytes();
88 out.write(by);
89 }
90 out.close();
91 } catch (Exception e) {
92 e.printStackTrace();
93 }
94 System.out.println("取款成功,谢谢使用!");
95 break;
96 }
97 }catch(Exception e){
98 System.out.println("您输入的存款金额格式有误!");
99 System.out.println("请重新输入:");
100 continue;
101 }
102 }
103 break;
104 }else{
105 i++;
106 if(i==3){ //控制输入次数最多3次
107 System.out.println("密码输错超过3次,无法继续输入!");
108 break;
109 }else{
110 System.out.println("密码输入错误,请重新输入:");
111 continue;
112 }
113 }
114 }
115 break;
116 }else{
117 System.out.println("您输入的卡号不存在,请重新输入:");
118 continue;
119 }
120 }catch(Exception e){
121 System.out.println("您输入的账号格式有误!");
122 System.out.println("请重新输入:");
123 continue;
124 }
125 }
126 }
127 }
包三:com.bank.test
1 package com.bank.test;
2 /**
3 *
4 * @author Administrator
5 *界面类
6 */
7 public class Jiemian {
8 public static void jiemian() {
9 System.out.println("银行自助终端系统");
10 System.out.println("****************************");
11 System.out.println("0.------开户");
12 System.out.println("1.------查询");
13 System.out.println("2.------存款");
14 System.out.println("3.------取款");
15 System.out.println("4.------退出");
16 System.out.println("5.------信用卡取款");
17 System.out.println("****************************");
18 System.out.println("请选择你要执行的功能:");
19 }
20 }
package com.bank.test;
import java.util.Scanner;
import com.bank.abc.ATMzi;
import com.bank.abc.Bankchuxu;
import com.bank.abc.Bankclass;
import com.bank.abc.Xincard;
import com.bank.unionpay.Yinlian;
/**
*
* @author Administrator
*测试类
*/
public class Test {
public static void main(String[] args) {
Jiemian.jiemian(); //调界面
Yinlian yinl=new Bankchuxu();
while(true){ //死循环实现输入错误返回
Scanner sc=new Scanner(System.in);
try{ //输入异常
int shuru=sc.nextInt();
switch(shuru){
case 0:
System.out.println("****************************");
System.out.println("您选择的为开户功能");
ATMzi a=new ATMzi();
a.Kaihu(); //调用开户
System.out.println("开户成功!");
Jiemian.jiemian();
break;
case 1:
System.out.println("****************************");
System.out.println("您选择的为查询功能");
yinl.Chaxun(yinl);
Jiemian.jiemian();
break;
case 2:
System.out.println("****************************");
System.out.println("您选择的为存款功能");
yinl.Cunkuan(yinl);
Jiemian.jiemian();
break;
case 3:
System.out.println("****************************");
System.out.println("您选择的为取款功能");
yinl.Qukuan(yinl);
Jiemian.jiemian();
break;
case 4:
System.out.println("谢谢使用!");
break;
case 5:
System.out.println("****************************");
System.out.println("您选择的为信用卡取款功能");
Xincard x=new Xincard();
x.Qukuan(x);
Jiemian.jiemian();
break;
default:
System.out.println("您选择的菜单不存在!");
System.out.println("请重新选择:");
continue;
}
if(shuru==4)break;
}catch(Exception e){
System.out.println("输入有误!");
System.out.println("请重新选择:");
}
}
}
}
运行结果:





标签:hashmap 账号 abstract 字符串分割 抽象方法 test 表达式 err []
原文地址:http://www.cnblogs.com/accumulater/p/6177928.html