语言模拟ATM自动取款机系统

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了语言模拟ATM自动取款机系统相关的知识,希望对你有一定的参考价值。

C语言实验报告

 

 

 

题目名称:C语言模拟ATM自动取款机系统

C语言模拟实现ATM自动取款机功能:输入密码,余额查询,取款,存款,转账,修改密码,退出功能;

代码实现的功能:

  1. 账号及密码输入:用户输入密码,才能进入。
  2. 登陆成功界面:共有六个选项,查询余额、取款、存款、转账,修改密码,退出分别对应1,2,3,4,5,6选项,若序号输入不正确会予以提示。
  3. 选定1后,进入查询余额界面; 选定2后,进入取款界面; 选定3后,进入存款界面; 选定4后,修改密码,选定5,进入转账;选定6,退出界面;
  4. 如果过程中操作有误,提醒是否继续操作。

二:分析问题

一:问题描述:

(1)

在main()函数用switch语句现实菜单功能,根据用户选择,进入不同功能区;

(2)

模拟ATM自动取款机功能的实现,需要用自定义函数实现板块化。

所用的自定义函数如下:

登录界面:void enter();

登录成功后的界面:void jiemian();

实现密码输入:void land();

实现余额查

询:void inquiry();

实现取款功能:void withdraw();

实现存款功能:void deposit();

实现转账:void zhuangzhang();

实现修改密码:void correctscrect();

结束:void out();

输入有误,提示是否继续:int keep();

(3)

库函数:strcmp();system();

(4)

用户信息

结构体存储个人信息;

结构体数组存储的存储设计数据库知识,本实验模拟ATM机,简化处理,已经注册用户数据信息存储在结构体数组中;

三:解决问题

1. 用户信息

用结构体来描述用户的姓名、卡号、密码以及金额。

假设用户信息在结构体数组中;

2. 主函数函数

Switch语句实现菜单话;

(3)Void  land();

  需要解决的问题:1.密码输入2.检查密码是否输入正确3.密码输入次数不能超过3次。(if语句)    

(4)void jiemian();

提示用户进行操作printf(); 

(5)void withdraw();

1.取款时,输入的金额不能为被100整除;

2.取款的金额不能大于余额;

3.修改余额;

(6)void deposit();

1.存款金额不能不被100整除

(7)void correctscrect();

1.修改密码,需要重复输入二遍来确定密码是否修改成功;

(8)void zhuangzhang();

1.转账金额不能不被100整除

2.输入对方账号

3.转账金额是否足够,不能不被100整除

(9)int keep();

1.当输入有误时,提醒是否继续操作;

(8)void out();

 1.调用main(),下一个用户操作;

 

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include<string.h>
  4 #include <unistd.h>
  5 void enter();//进入界面
  6 void jiemian();//登录成功界面
  7 void land();//登录
  8 void inquiry();//查询余额
  9 void withdraw();//取款
 10 void deposit();//存款
 11 void correctscrect();//修改密码
 12 void out();//退出
 13 void zhuangzhang();//转账
 14 int keep();//当输入有误是否继续
 15 
 16 /*
 17 **用户信息
 18 */
 19 struct essage
 20 {
 21     char name[20];
 22     long int acountion;
 23     long int  keyword;
 24     float money;
 25 };
 26 struct essage a[5]= {{"zhangsan",3205,1234,2000},{"wanger",3027,2345,3000},{"lisi",3023,3456,2345}};
 27 
 28 int X;
 29 int main()
 30 {
 31     int i;
 32 
 33     land();
 34     jiemian();
 35 /**
 36 菜单
 37 **/
 38     while(-1)
 39     {
 40 
 41         printf("请输入编号:\n");
 42         scanf("%d",&i);
 43         switch  (i)
 44         {
 45         case 1 :
 46         {
 47             system("cls");
 48             inquiry();
 49             printf("按任意键继续!\n");
 50             system("pause");
 51             jiemian();
 52             break;
 53         }
 54         case 2:
 55         {
 56             system("cls");
 57             withdraw();
 58             printf("按任意键继续!\n");
 59 
 60             system("pause");
 61             jiemian();
 62             break;
 63         }
 64         case 3:
 65         {
 66             system("cls");
 67             deposit();
 68             printf("按任意键继续!\n");
 69 
 70             system("pause");
 71             jiemian();
 72             break;
 73         }
 74 
 75         case 4:
 76         {
 77             system("cls");
 78             correctscrect();
 79             printf("按任意键继续!\n");
 80 
 81             system("pause");
 82             jiemian();
 83             break;
 84         }
 85 
 86         case 5:
 87         {
 88             system("cls");
 89             zhuangzhang();
 90             system("pause");
 91             jiemian();
 92             break;
 93         }
 94         case 6:
 95         {
 96             printf("欢迎下次!\n");
 97             system("cls");
 98             main();
 99 
100         }
101         default :
102         {
103             break;
104 
105         }
106 
107         }
108     }
109     return 0;
110 }
111 
112 void enter()
113 {
114     printf("******************************\n");
115     printf("********welcome to ATM!*******\n");
116     printf("******************************\n");
117 }
118 int  keep()
119 {
120     char a;
121     printf("是否继续?\n");
122     while(-1)
123     {
124 
125         printf("继续请输入:y   退出按n\n");
126         getchar();
127 
128         //a= getchar();
129         //getchar();
130         scanf("%c",&a);
131         if(a ==y)
132         {
133             return 1;
134         }
135         else if(a==n)
136             return 0;
137         else
138         {
139             printf("输入有误!\n");
140             continue;
141         }
142     }
143 }
144 
145 
146 
147 void land()
148 {
149     long int   keyword;
150     int i;
151     int count=0;
152     while(-1)
153     {
154         printf("请输入密码:\n");
155         count++;
156         scanf("%ld",&keyword);
157         for(i = 0; i<3; i++)
158         {
159 
160 
161             if(keyword==a[i].keyword)
162             {
163                 X = i;
164                 return;
165             }
166         }
167         if(count==3)
168         {
169             printf("你输入的密码次数超过3次!\n");
170             exit(0);
171 
172         }
173         else
174         {
175 
176             printf("你输入密码有误!请重新输入!\n");
177 
178         }
179     }
180 }
181 
182 
183 
184 
185 
186 
187 
188 void inquiry()
189 {
190     printf("你当前余额为:%f\n",a[X].money);
191 }
192 void  jiemian()
193 {
194     printf("**************1.查询余额           2.取款*************\n");
195     printf("**************3.存款               4.修改密码*********\n");
196     printf("**************5.转账               6.退出**************\n");
197 
198 }
199 void deposit()
200 {
201     int  n;
202     int j;
203     while(-1)
204     {
205         printf("请输入存储金额:\n");
206         scanf("%d",&n);
207 
208         if(n%100==0)
209         {
210             a[X].money+=n;
211             printf("存款成功!\n");
212             printf("当前余额:%f",a[X].money);
213             return;
214         }
215         else
216         {
217             printf("输入金额有错!\n");
218             j = keep();
219             if(j == 1)
220             {
221                 system("cls");
222                 continue;
223             }
224             else
225                 return ;
226 
227         }
228     }
229 }
230 void withdraw()
231 {
232     int  n;
233     int m;
234     if(a[X].money<100)
235     {
236         printf("余额不足!\n");
237         return;
238 
239     }
240 
241     while(-1)
242     {
243 
244         printf("请输入取款金额!\n");
245         scanf("%d",&n);
246 
247         if(n>a[X].money)
248         {
249             printf("余额不足!\n");
250             m = keep();
251             if(m ==1)
252                 continue;
253             else
254                 return;
255         }
256         if(n%100!=0)
257         {
258             printf("输入有误!请重新输入取款金额!\n");
259 
260             //  system("pause");
261             m = keep();
262             if(m==1)
263                 continue;
264             else
265                 return;
266         }
267         else
268         {
269             printf("成功!");
270             a[X].money=a[X].money-n;
271             return ;
272 
273         }
274     }
275 
276 }
277 void correctscrect()
278 {
279     int b;
280     long int n;
281     long int m;
282     long int  q;
283     while(-1)
284     {
285         printf("请输入旧密码:\n");
286         scanf("%ld",&q);
287         if((q!=a[X].keyword))
288         {
289             printf("输入有误!\n");
290             b =keep();
291             if(b ==1)
292                 continue;
293             else
294                 return;
295         }
296         else
297             break;
298     }
299     while(-1)
300     {
301         printf("请输入新密码:\n");
302         scanf("%ld",&n);
303         printf("请在一次输入新密码:\n");
304         scanf("%ld",&m);
305         if(n!=m)
306         {
307             printf("二次密码不一样!\n");
308             b = keep();
309             if(b == 1)
310                 continue;
311             else
312                 return ;
313         }
314         else
315         {
316             printf("修改密码成功!\n");
317             a[X].keyword = n;
318             break;
319         }
320     }
321 }
322 
323 
324 void zhuangzhang()
325 {
326     long int  n;
327     int   m;
328     int i;
329     int j;
330     int leap=1;
331 
332 
333     printf("转账!\n");
334     while(leap!=0)
335     {
336         printf("输入转账账号!\n");
337         scanf("%ld",&n);
338 
339         for(i = 0; i<3; i++)
340         {
341             if(a[i].acountion==n)
342             {
343                 leap=0;
344                 break;
345             }
346 
347         }
348         if(leap!=0)
349         {
350 
351             printf("你输入的账号不存在!\n");
352             j = keep();
353             if(j == 1)
354             {
355                 system("cls");
356                 continue;
357             }
358             else
359                 return ;
360         }
361     }
362 
363 
364 
365     while(-1)
366     {
367         printf("输入转账金额;\n");
368         scanf("%d",&m);
369         if(a[X].money<100)
370         {
371             printf("余额不足!\n");
372             j= keep();
373             if(j ==1)
374                 continue;
375             else
376                 return;
377 
378         }
379 
380         if(m>a[X].money)
381         {
382             printf("余额不足!\n");
383             j= keep();
384             if(j ==1)
385                 continue;
386             else
387                 return;
388         }
389         if(m%100!=0)
390         {
391             printf("输入有误!请重新输入取款金额!\n");
392             j = keep();
393             if(j==1)
394                 continue;
395             else
396                 return;
397         }
398         else
399         {
400             printf("转账成功!");
401             a[X].money=a[X].money-m;
402             a[i].money = a[i].money+m;
403 
404             return ;
405 
406         }
407     }

 

 

 

以上是关于语言模拟ATM自动取款机系统的主要内容,如果未能解决你的问题,请参考以下文章

用java编写的ATM机源代码

模拟ATM(C语言)

使用Java语言中(类和对象)编写: ATM自动存取款机的程序?

Java ATM模拟系统报告

Java编程实现程序用于模拟ATM取款机。

用java编写多线程银行ATM 模拟程序