2015.12.07 ATM_Function

  1 #include <stdio.h>
  2 
  3 #include <stdlib.h>
  4 
  5 #include <stdbool.h>
  6 
  7  
  8 
  9 int password = 123456;
 10 
 11 int balance = 10000;
 12 
 13 bool isLogined = false;
 14 
 15  
 16 
 17 void alert(char *content);
 18 
 19 int getValidOperation(int maxNum);
 20 
 21 void quit(int status);
 22 
 23 void query();
 24 
 25 void isContinue();
 26 
 27 bool inputPassword();
 28 
 29 void takeMoney();
 30 
 31 void changePsw();
 32 
 33  
 34 
 35  
 36 
 37 int main(int argc, const char * argv[]) {
 38 
 39     
 40 
 41     bool result;
 42 
 43     
 44 
 45     while (1) {
 46 
 47         alert("1.输入密码\n2.取款\n3.查询余额\n4.更改密码\n5.退出");
 48 
 49         int operation = INT32_MAX;
 50 
 51         operation = getValidOperation(5);
 52 
 53         switch (operation) {
 54 
 55                 //1.输入密码
 56 
 57             case 1:
 58 
 59                 result = inputPassword();
 60 
 61                 if (result == false) {
 62 
 63                     quit(EXIT_SUCCESS);
 64 
 65                 }else{
 66 
 67                     isLogined = true;
 68 
 69                 }
 70 
 71                 break;
 72 
 73                 //2.取款
 74 
 75             case 2:
 76 
 77                 takeMoney();
 78 
 79                 isContinue();
 80 
 81                 break;
 82 
 83                 
 84 
 85                 //3.查询余额
 86 
 87             case 3:
 88 
 89                 query();
 90 
 91                 isContinue();
 92 
 93                 getchar();
 94 
 95                 break;
 96 
 97                 //4.更改密码
 98 
 99             case 4:
100 
101                 changePsw();
102 
103                 break;
104 
105                 //5.退出
106 
107             case 5:
108 
109                 quit(EXIT_SUCCESS);
110 
111             default:
112 
113                 break;
114 
115         }
116 
117         printf("\n");
118 
119         
120 
121     }
122 
123     return 0;
124 
125 }
126 
127  
128 
129 void alert(char *content){
130 
131     printf("****************\n");
132 
133     printf("%s\n", content);
134 
135     printf("****************\n");
136 
137 }
138 
139  
140 
141 int getValidOperation(int maxNum){
142 
143     int operation;
144 
145     
146 
147     printf("选一个吧:");
148 
149     scanf("%d", &operation);
150 
151     
152 
153     while (operation < 1 || operation > maxNum) {
154 
155         printf("别搞笑,好好输:");
156 
157         getchar();
158 
159         scanf("%d", &operation);
160 
161     }
162 
163     return operation;
164 
165 }
166 
167  
168 
169 void quit(int status){
170 
171     alert("拔卡!拔卡!拔卡!");
172 
173     exit(status);
174 
175 }
176 
177  
178 
179  
180 
181 void query(){
182 
183     if (isLogined == false) {
184 
185         bool result = inputPassword();
186 
187         if (result == false) {
188 
189             quit(EXIT_SUCCESS);
190 
191         }else {
192 
193             isLogined = true;
194 
195         }
196 
197     }else{
198 
199     printf("****************\n");
200 
201     printf("你还有¥%d\n", balance);
202 
203     printf("****************\n");
204 
205     }
206 
207 }
208 
209  
210 
211 void isContinue(){
212 
213     char choose;
214 
215     
216 
217     alert("继续不?(y/n):");
218 
219     getchar();
220 
221     scanf("%c", &choose);
222 
223     
224 
225     while (choose != 'y' && choose != 'n') {
226 
227         printf("好好输!(y/n)\n");
228 
229         getchar();
230 
231         scanf("%c", &choose);
232 
233     }
234 
235     if (choose == 'n') {
236 
237         quit(EXIT_SUCCESS);
238 
239     }
240 
241 }
242 
243  
244 
245  
246 
247 bool inputPassword(){
248 
249     int inputedpassword = INT32_MAX;
250 
251     int totalWrongTime = 3;
252 
253     
254 
255     do {
256 
257         printf("%s", inputedpassword == INT32_MAX ? "密码是啥:": "别骗我!密码是啥:");
258 
259         getchar();
260 
261         scanf("%d", &inputedpassword);
262 
263         
264 
265         totalWrongTime--;
266 
267     } while (inputedpassword != password && totalWrongTime > 0);
268 
269     
270 
271     if (inputedpassword != password) {
272 
273         return false;
274 
275     }else{
276 
277         return true;
278 
279     }
280 
281 }
282 
283  
284 
285  
286 
287 void takeMoney(){
288 
289     if (isLogined == true) {
290 
291         int totalMoney;
292 
293         int num2_1;
294 
295         alert("1.¥100\n2.¥300\n3.¥500\n4.其他金额");
296 
297         num2_1 = getValidOperation(4);
298 
299         switch (num2_1) {
300 
301             case 1:
302 
303                 totalMoney = 100;
304 
305                 break;
306 
307             case 2:
308 
309                 totalMoney = 300;
310 
311                 break;
312 
313             case 3:
314 
315                 totalMoney = 500;
316 
317                 break;
318 
319             case 4:
320 
321                 printf("取多少:");
322 
323                 scanf("%d", &totalMoney);
324 
325                 break;
326 
327             default:
328 
329                 break;
330 
331         }
332 
333         if (totalMoney <= balance) {
334 
335             printf("\n您的余额为:¥%d\n \n", balance -= totalMoney);
336 
337         }else {
338 
339             printf("\n穷B,钱不够!\n \n");
340 
341         }
342 
343         
344 
345     }else{
346 
347         bool result =  inputPassword();
348 
349         if (result == false) {
350 
351             quit(EXIT_SUCCESS);
352 
353         }else {
354 
355             isLogined = true;
356 
357         }
358 
359         
360 
361     }
362 
363 }
364 
365  
366 
367  
368 
369  
370 
371 void changePsw(){
372 
373     if (isLogined == false) {
374 
375         bool result = inputPassword();
376 
377         if (result == false) {
378 
379             quit(EXIT_SUCCESS);
380 
381         }else {
382 
383             isLogined = true;
384 
385         }
386 
387     }else{
388 
389         printf("输入新密码:\n");
390 
391         scanf("%d", &password);
392 
393     }
394 
395 }
396 
397  
398 
399  

 

posted @ 2015-12-07 18:22  芥末勾勒  阅读(135)  评论(0编辑  收藏  举报