1 package com.xt.lesson20;
2 /**
3 * 简易自动提款机
4
5 1. 创建用户类User(包含卡号、姓名、密码、余额等属性),用户开卡时录入的姓名和密码(自动分配一个卡号、初始金额设置为0)。
6 2. 使用ArrayList或LinkedList存储全部注册用户
7 形式如:ArrayList<User> userList = new ArrayList<User>();
8 3. 实现功能
9 (1)存款
10 (2)取款(如果余额不足要提示)
11 (3)查询余额(只能查看当前卡号的余额)
12 4. 技术要求,使用异常处理用户的错误输入(即程序保护容错功能)。
13
14 * @author LENOVO
15 *
16 */
17 public class User {
18 private String ID;//卡号
19 private String name;//姓名
20 private int password;//密码
21 private int balance;//余额
22
23 //构造方法
24 public User(String ID, String name, int password, int balance) {
25 super();
26 this.ID = ID;
27 this.name = name;
28 this.password = password;
29 this.balance = balance;
30 }
31
32
33
34
35 /**
36 * @return the iD
37 */
38 public String getID() {
39 return ID;
40 }
41
42
43
44
45 /**
46 * @param iD the iD to set
47 */
48 public void setID(String ID) {
49 this.ID = ID;
50 }
51
52
53
54
55 /**
56 * @return the name
57 */
58 public String getName() {
59 return name;
60 }
61
62
63
64
65 /**
66 * @param name the name to set
67 */
68 public void setName(String name) {
69 this.name = name;
70 }
71
72
73
74
75 /**
76 * @return the password
77 */
78 public int getPassword() {
79 return password;
80 }
81
82
83
84
85 /**
86 * @param password the password to set
87 */
88 public void setPassword(int password) {
89 this.password = password;
90 }
91
92
93
94
95 /**
96 * @return the balance
97 */
98 public int getBalance() {
99 return balance;
100 }
101
102
103
104
105 /**
106 * @param balance the balance to set
107 */
108 public void setBalance(int balance) {
109 this.balance = balance;
110 }
111
112
113
114
115 //存款功能的实现
116 public boolean saveMoney(int m){
117 System.out.println("正在验钞,请稍后.......");
118 if(m<0){
119 if(checkMoney(-m)){
120 return true;
121 }else{
122 return false;
123 }
124
125 }else if(m>0){
126 this.balance+=m;
127 System.out.println("操作成功!");
128 return true;
129 }
130 return false;
131 }
132
133 //取款操作
134 public boolean checkMoney(int m){
135 if(m<0){
136 if(saveMoney(-m)){
137 return true;
138 }else{
139 return false;
140 }
141
142 }else if(m>0){
143 System.out.println("请输入密码......");
144 if(checkPassword()){
145 this.balance-=m;
146 System.out.println("操作成功!");
147 return true;
148 }
149 }
150 return false;
151 }
152 //查询余额
153 public void search(){
154 System.out.println("正在处理,请稍后......");
155 if(ID.equals(this.ID)){
156 System.out.println("账户"+ID+"的余额为:"+balance);
157 }else{
158 System.out.println("您输入的账户不存在,请认真核查后重新输入!");
159 }
160 }
161
162 //检验密码操作
163 public boolean checkPassword(){
164 int i;
165 for(i=0;i<3;i++){
166 if(i>0){
167 System.out.println("密码输入错误,请重新输入密码!");
168 }
169 int pas=EnterNum.enterNum();
170 if(pas==password){
171 return true;
172 }
173 }
174 if(i==3)
175 System.out.println("密码输入错误3次,此次操作中断!");
176 return false;
177 }
178 //选择操作方法
179 public void print(){
180 System.out.println("----------------------欢迎使用自动取款机------------------------");
181 System.out.println("[存款----1]");
182 System.out.println("[取款----2]");
183 System.out.println("[查询----3]");
184 System.out.println("[退卡----0]");
185 }
186
187 }
188
189
190
191
192
193
194 //写一个类,进行对输入数字的判断。
195
196 package com.xt.lesson20;
197
198 import java.util.Scanner;
199
200 public class EnterNum {
201 static Scanner scanner=new Scanner(System.in);
202 public static String enterStr(){
203 String str="";
204 try{
205 str=scanner.next();
206 }catch(Exception e){
207
208 }
209 return str;
210
211 }
212 public static int enterNum(){
213 int m = 0;
214
215 try{
216 m=Integer.parseInt(enterStr());
217 }catch(Exception e){
218 System.out.println("您输入的数据不合法!请输入整数......");
219 }
220 return m;
221 }
222
223 }
224
225
226
227
228 //写一个主方法,进行判断操作的选择。
229
230 package com.xt.lesson20;
231
232 import java.util.ArrayList;
233
234 public class MachineTest {
235
236
237 public static void main(String[] args) {
238 ArrayList<User> userList=new ArrayList<User>();
239 userList.add(new User("未知","未知",0,0));//默认值
240 userList.add(new User("200981501","聂庆平",5264,7000));
241 userList.add(new User("200981512","黎明",1562,17000));
242 first:while(true){
243 userList.get(0).print();
244 int a=EnterNum.enterNum();
245 second: switch (a){
246 case 1:{
247 System.out.println("请输入您要存钱的账号:");
248 String id=EnterNum.enterStr();
249 int i;
250 for (i=0;i<userList.size();i++){
251 if(id.equals(userList.get(i).getID())){
252 System.out.println("请输入您存的钱数:");
253 int m=EnterNum.enterNum();
254 if(userList.get(i).saveMoney(m)){
255 break second;
256 }
257 }
258 }
259 if(i==userList.size()){
260 System.out.println("您输入的账户不存在!");
261 break second;
262 }
263 }
264 case 2:{
265 System.out.println("请输入您要取钱的账号:");
266 String id=EnterNum.enterStr();
267 int i;
268 for(i=0;i<userList.size();i++){
269 if(id.equals(userList.get(i).getID())){
270 System.out.println("请输入您取的钱数:");
271 int m=EnterNum.enterNum();
272 userList.get(i).checkMoney(m);
273 break second;
274 }
275 }
276 if(i==userList.size()){
277 System.out.println("您输入的账户不存在!");
278 break second;
279 }
280 }
281 case 3:{
282 System.out.println("请输入您的卡号!");
283 String id=EnterNum.enterStr();
284 int i;
285 for(i=0;i<userList.size();i++){
286 if(id.equals(userList.get(i).getID())){
287 userList.get(i).search();
288 break second;
289 }
290 }
291 if(i==userList.size()){
292 System.out.println("您输入的账户不存在!");
293 break second;
294 }
295 }
296 case 0:{
297 System.out.println("感谢您的使用,再见!");
298 System.exit(0);
299 }
300
301 }
302
303 }
304 }
305
306 }