ATM自动取款机程序设计

#include<stdlib.h>
#include <stdio.h> 
void main() 
{ 
long int a,b,c,d,e,f,g,k,i,m,n,o,p,h,x,y,v;
x=62170042;                      //x是银行卡账号62170042(8位数)
y=00000000;                    //y:身份证号(8位数)
n=0;h=5000;                    //h是银行账户余额,原本余额为5000
k=111111;                      //默认银行卡密码111111(6位数)
key:                           //做标记,程序开始执行,验证密码是否正确
printf("\t\t\t     欢迎使用!\n\n"); 
printf("插入银行卡之后,输入密码,若三次密码输入错误,将终止程序:\n"); 
scanf("%ld",&i);  
if(k==i)                      //此时的i指的是用户输入的银行卡密码,密码输入正确(k=i)才能有后续操作
{ 
   menu:                         //做标记,选择操作继续执行              
   printf("密码正确,请输入所选择的操作类型:\n");  
   printf("请在0-4进行选择:\n");  
   printf("          1:转账\n\t  2:查询\n\t  3:取款\n\t  4:修改密码\n\t  0:退卡\n\t");  
   scanf("%ld",&a);
  switch(a)
  {
  case 1: printf("请输入转账账号:\n"); 
        scanf("%d",&o);                        //o是指银行卡账号
        printf("请输入你需要转账的金额:\n");  //p:转账金额 
        scanf("%d",&p);  
        printf("请输入你选择的操作类型:\n");  
        printf("请输入0或1进行选择:\n");  
        printf("           1:确认\n\t   0:返回上一层\n\t");  
        h=5000-p;                             //h:账户余额
        scanf("%ld",&b);                      
  switch(b)  
  {  
  case 1:
     if(p<h)
		 printf("\n转账%d元成功!\n\n",p);
	 else
		 printf("转账金额大于存款\n");
	   goto menu;break;  
  case 0:goto menu;break;  
  default :printf("\n没有设定此种操作!\n\n");goto menu;  
  }break; 

  select:                              //做标记,查询
  case 2:printf("请输入你选择的操作类型:\n"); 
       printf("在0-2进行选择:\n");  
       printf("            1:查询余额\n\t    0:返回上一层\n\t"); 
       scanf("%ld",&c); 
  switch(c)                            //查询功能
  { 
 case 1:
	   printf("账单如下:          \n");
       printf("姓名:张三          \n");       //用户姓名为张三
	   printf("\n银行卡账号:       %1d  \n\n",x);      //银行卡账号为62170042
	   printf("\n此时此刻银行卡余额为:     %5d元 \n\n",h);	   
	goto select;break; 
 case 0:goto menu; 
 default:printf("\n此操作无效!\n\n");goto select; 
  }
break; 
output:                            // 做标记,取款操作
case 3:printf("请输入你选择的操作类型:\n");  
       printf("请输入0-5进行选择:\n");  
       printf("           1:100元\n\t   2:500元\n\t   3:1000元\n\t   4:2000元\n\t   5:输入金额\n\t   0:返回上一层\n\t"); 
       scanf("%ld",&d); 
switch(d)                         //选择取款金额
{ 
case 0:goto menu;break; 
case 1:h-=100; printf("\n取款100成功!\n\n");goto check;break;
case 2:h-=500; printf("\n取款500成功!\n\n");goto check;break; 
case 3:h-=1000;printf("\n取款1000成功!\n\n");goto check;break; 
case 4:h-=2000;printf("\n取款2000成功!\n\n");goto check;break;
case 5:
	printf("输入取款金额为100的倍数,单次金额最大为2000元: \n"); 
    scanf("%ld",&f);
   while(f%100!=0)
   {
	   printf("\n输入取款金额应为100的倍数,请重新输入\n\n");
   scanf("%ld",&f);
   break;
   }
while(f<=2000) 
{  
h-=f;
printf("\n取款成功!\n\n");break;  
}
goto check;break; 
default:printf("\n此操作无效!\n\n");goto output;
}  
modity:                                 //做标记,修改密码
case 4: printf("请输入你选择的操作类型:\n"); 
printf("请在0或1中进行选择:\n"); 
printf("              1:修改密码\n\t   0:返回上一层\n\t"); 
scanf("%ld",&m); 
switch(m)                   
{ 
case 1:
	   printf("请输入原始密码:\n");//如果输入的密码正确,则验证成功,可以进行修改密码的操作
      scanf("%ld",&g); 
     if(k==g) 
	 { 
     printf("请输入新密码:\n"); 
     scanf("%ld",&g);  
     k=g;   
     printf("\n密码修改成功!\n\n"); 
	 } 
     else  
	 {  
     printf("密码输入错误!\n");
	 printf("请输入身份证号码进行验证:\n");
     scanf("%ld",&v);
	 if(y==v)
	 {      
            printf("\n身份验证成功!\n\n");
			 printf("请输入新密码: \n");
		    
			 scanf("%ld",&g);
		 	 printf("\n密码修改成功!\n\n");goto menu;
	 }
	 else
	 {
		 printf("\n验证失败!无法修改密码!\n\n");
		goto modity;
	 }
	 goto menu;break; 
	 }
	 goto menu;break;  
case 0:   goto menu;break;  
          default:printf("\n密码无法修改!\n\n");
	      goto modity; }break;  
 case 5:  printf("\n退卡成功!\n\n");
	      goto key;break;  
default:  printf("\退卡成功!\n\n");goto key; 
}  
check:                                 //凭条
       printf("请输入你选择的操作编号:\n"); 
       printf("请输入0-3进行选择:\n"); 
       printf("            1:显示余额\n\t   2:打印凭条\n\t   3:继续\n\t   0:退卡\n\t"); 
       scanf("%ld",&e); 
switch(e) 
{ 
case 1:printf("\n你的余额为:%d元!\n\n",h);     goto menu;break; 
case 2:printf("\n谢谢使用!您的凭条打印如下所示:!\n\n");
       printf("姓名:张三          \n");       //用户姓名为张三
	   printf("银行卡账号:123456789\n");      //银行卡账号为123456789
	   printf("\n银行卡余额为:     %5d元 \n\n",h);
	   goto menu;break; 
case 3:goto output;break; 
case 0:goto key;  
default:printf("\n无效操作,请重新选择操作!\n\n");goto check; 
} 
} 
else 
{        
printf("输入原密码错误,请重新输入:\n"); 
n++;                                //n:输入密码错误,三次错误密码之后程序将无法执行 
if(n<=2) 
goto key; 
} 
       scanf("%ld",&c); 
}

思路:

在我的ATM程序设计中,设计所存入的金额原始值(h)为5000元;在程序设计中,原始金额可以根据用户需求自行更改;


用户姓名:张三;
身份证号码:00000000
银行卡账号:123456789
插入银行卡之后,输入密码,密码初始值设为111111(可以进行更改);
密码若连续输入错误三次,程序退出;
取款金额应该为100的整数倍,且取款金额应该少于卡内余额;
单次取款金额应该小于等于2000元;

修改密码时,如果忘记原密码,可以使用身份证号码进行身份验证,验证成功任然可以进行密码修改;

运行结果展示;



猜你喜欢

转载自blog.csdn.net/qq_37843372/article/details/79018682