ATM

#include<stdio.h>

#include <stdlib.h>

void main()

{

 int  Num,a,code,ll=0,l=0,p,n,r=0,x,m,Num1,Num2;

 int num[10],feng[10],money[10],s[6],t[6];

 int i=0;

 for(p=0;p<9;p++)

 {

  num[p]=000000;

  money[p]=5000;

  feng[p]=0;

 }

loop:

 //首先...请蒋老师原谅我N多的goto...

 printf(" _______________________________\n");

 printf("|                               |\n");

 printf("|     欢迎使用ATM自动取款机     |\n");

 printf("|                               |\n");

 printf("|       ~第一小组热情开发~      |\n");

 printf("|_______________________________|\n");

 printf("  请输入卡号:");

 scanf("%d",&Num);

 fflush(stdin);

if(Num==00)

 {

  printf("是否进入管理员模式?1/2:");//是否进入管理员模式。

  scanf("%d",&a);

  fflush(stdin);

        switch(a)

  {

  case 1:

   {

    printf("请输入管理员密码(6位):");

    scanf("%d",&code);

    fflush(stdin);

    if(code!=num[0])

    {

     printf("密码不正确!\n");

     printf("按任意键返回。\n");

     while(getchar()!=EOF)

     {

      system("cls");

      goto loop;

     }

    }

    else

    {

guanlimoshi://密码输入正确后,进入管理模式.

    system("cls");

    printf("|-----欢迎进入管理员模式-------|\n");

    printf("| 1:查询用户帐户信息           |\n");

    printf("| 2:返回欢迎界面               |\n");

    printf("|______________________________|\n");

    printf("   请选择:");

    scanf("%d",&n);

    fflush(stdin);

    switch(n)

    {

    case 1:system("cls");goto guanli;break;

    case 2:system("cls");goto loop;break;

    }

    }

   }

  case 2:{

   system("cls");

   goto loop;

   break;

      }

  default:printf("输入错误!\n");break;

  }

  

 }

 else

 {

  if(feng[Num]==1)//如果输入的不是管理员帐号,则判断该帐号是否被封.

  {

   printf("该帐号已被封存!\n");//如果被封,则返回开头.

   printf("按任意键返回。\n");

   while(getchar()!=EOF)

   {

    system("cls");

    goto loop;}

  }

  else//如果没被封,则开始输入密码.

  {

   printf("请输入密码:");

state:

   scanf("%d",&code);

   fflush(stdin);

   if(code!=num[Num])

   {

    printf("密码不正确!请重新输入:");

    i++;//计算输入错误几次.

    if(i<3)

     goto state;

    else

    {

     printf("连续三次出错!\n");

     ++r;//计算连续三次出错共有几次.

     if(r<2)//小于2则返回欢迎界面.

     {

      i=0;

      printf("按任意键返回。\n");

      while(getchar()!=EOF)

      {

       system("cls");

       goto loop;

      }

     }

     else//大于2则封存帐户,然后返回欢迎界面.

     {

      printf("您的帐号已被封存.\n");

      feng[Num]=1;

      printf("按任意键返回。\n");

      while(getchar()!=EOF)

      {

       system("cls");

       goto loop;

      }

     }

     

    }

   }

   else//如果密码输入正确,则进入用户页面.

   {

    system("cls");

shuru:

   printf("|---欢迎使用ATM自动取款机---|\n");

   printf("|  1.取款       2.余额查询  |\n");

   printf("|  3.密码修改   4.转帐      |\n");

   printf("|  5.历史交易纪录查询       |\n");

   printf("|  6.返回欢迎界面           |\n");

   printf("|___________________________|\n");

   printf("    请输入选项:\n");

   scanf("%d",&x);

   fflush(stdin);

   switch (x)//进行选择.

   {

   case 1:system("cls");goto qukuan;break;

   case 2:system("cls");goto yuechaxun;break;

   case 3:system("cls");goto mimaxiugai;break;

   case 4:system("cls");goto zhuanzhang;break;

   case 5:system("cls");goto lishijilu;break;

   case 6:system("cls");goto loop;break;

   default:printf("输入错误!\n");system("cls");goto shuru;

   }

   

   }

  }

  

qukuan://进入取款页面.

  printf("|----取款----|\n");

  printf("|   1.取款   |\n");

  printf("|   2.返回   |\n");

  printf("|------------|\n");

  scanf("%d",&x);

  fflush(stdin);

  switch (x)

  {

  case 1:{

   if(l>5000)//判断累计取款额.

   {

    printf("累计取款超过5000元,系统出错.\n");

    printf("按任意键返回。\n");

    while(getchar()!=EOF)

    {

     system("cls");

     goto shuru;

    }

   }

   else//若低于5000,则开始取款.

   {

    if(money[Num]<100)//判断此时余额,进行屏幕打印.

    {

     printf("余额不足.\n");//以下N个疯狂的循环道理同此.

     printf("按任意键返回。\n");

     while(getchar()!=EOF)

     {

      system("cls");//原谅我吧蒋老师...我实在没想出啥好方法...

      goto shuru;

     }

    }

    else if(money[Num]<200)//现金在0~200元之间时。

    {

     printf("请选择:1.100元  2.返回上一级\n");

     scanf("%d",&n);

     fflush(stdin);

     switch(n)

     {

     case 1:{

      printf("正在取款,请稍候......\n");

      money[Num]-=100;

      l+=100;

      printf("取款成功!\n");

      printf("按任意键返回。\n");

      while(getchar()!=EOF)

      {

       system("cls");

       goto qukuan;

      }

      break;

         }

     case 2:goto shuru;break;

     default:{

      printf("输入错误!\n");

      printf("按任意键返回。\n");

      while(getchar()!=EOF)

      {

       system("cls"); 

       goto qukuan;

      }

      break;

       }

     }

    }

    else if(money[Num]<500)//现金在0~500元之间时。

    {

     printf("请选择:1.100元 2.200元 3.返回上一级.\n");

     scanf("%d",&n);

     fflush(stdin);

     switch(n)

     {

     case 1:{

      printf("正在取款,请稍候......\n");

      money[Num]-=100;

      l+=100;

      printf("取款成功!\n");

      printf("按任意键返回。\n");

      while(getchar()!=EOF){

       system("cls");

       goto qukuan;}

      break;

         }

     case 2:{

      printf("正在取款,请稍候......\n");

      money[Num]-=200;

      l+=200;

      printf("取款成功!\n");

      printf("按任意键返回。\n");

      while(getchar()!=EOF)

      {

       system("cls");

       goto qukuan;

      }

      break;

         }

     case 3:goto shuru;break;

     default:{

      printf("输入错误!\n");

      printf("按任意键返回。\n");

      while(getchar()!=EOF)

      {

       system("cls"); 

       goto qukuan;

      }

      break;

       }

     }

    }

    else if(money[Num]<1000)//现金在0~1000元之间时。

    {

     printf("请选择:1.100元 2.200元 3.500元 4.返回上一级.\n");

     scanf("%d",&n);

     fflush(stdin);

     switch(n)

     {

     case 1:{

      printf("正在取款,请稍候......\n");

      money[Num]-=100;

      l+=100;

      printf("取款成功!\n");

      printf("按任意键返回。\n");

      while(getchar()!=EOF)

      {

       system("cls");

       goto qukuan;}

      break;

         }

     case 2:{

      printf("正在取款,请稍候......\n");

      money[Num]-=200;

      l+=200;

      printf("取款成功!\n");

      printf("按任意键返回。\n");

      while(getchar()!=EOF)

      {

       system("cls");

       goto qukuan;

      }

      break;

         }

     case 3:{

      printf("正在取款,请稍候......\n");

      money[Num]-=500;

      l+=500;

      printf("取款成功!\n");

      printf("按任意键返回。\n");

      while(getchar()!=EOF)

      {

       system("cls");

       goto qukuan;

      }

      break;

         }

     case 4:goto shuru;break;

     default:{

      printf("输入错误!\n");

      printf("按任意键返回。\n");

      while(getchar()!=EOF)

      {

       system("cls"); 

       goto qukuan;

      }

      break;

       }

     }

    }

    else if(money[Num]<2000)//现金在0~2000元之间时。

    {

     printf("请选择:1.100元 2.200元 3.500元 4.1000元 5.返回上一级.\n");

     scanf("%d",&n);

     fflush(stdin);

     switch(n)

     {

     case 1:{

      printf("正在取款,请稍候......\n");

      money[Num]-=100;

      l+=100;

      printf("取款成功!\n");

      printf("按任意键返回。\n");

      while(getchar()!=EOF)

      {

       system("cls");

       goto qukuan;

      }

      break;

         }

     case 2:{

      printf("正在取款,请稍候......\n");

      money[Num]-=200;

      l+=200;

      printf("取款成功!\n");

      printf("按任意键返回。\n");

      while(getchar()!=EOF){

       system("cls");

       goto qukuan;}

      break;

         }

     case 3:{

      printf("正在取款,请稍候......\n");

      money[Num]-=500;

      l+=500;

      printf("取款成功!\n");

      printf("按任意键返回。\n");

      while(getchar()!=EOF)

      {

       system("cls");

       goto qukuan;

      }

      break;

         }

     case 4:{

      printf("正在取款,请稍候......\n");

      money[Num]-=1000;

      l+=1000;

      printf("取款成功!\n");

      printf("按任意键返回。\n");

      while(getchar()!=EOF)

      {

       system("cls");

       goto qukuan;

      }

      break;

         }

     case 5:goto shuru;break;

     default:{

      printf("输入错误!\n");

      printf("按任意键返回。\n");

      while(getchar()!=EOF)

      {

       system("cls"); 

       goto qukuan;

      }

      break;

       }

     }

    }

    else//现金在2000元以上时。

    {

     printf("请选择:1.100元 2.200元 3.500元 4.1000元 5.2000元 6.返回上一级.\n");

     scanf("%d",&n);

     fflush(stdin);

     switch(n)

     {

     case 1:{

      printf("正在取款,请稍候......\n");

      money[Num]-=100;

      l+=100;

      printf("取款成功!\n");

      printf("按任意键返回。\n");

      while(getchar()!=EOF)

      {

       system("cls");

       goto qukuan;}

      break;

         }

     case 2:{

      printf("正在取款,请稍候......\n");

      money[Num]-=200;

      l+=200;

      printf("取款成功!\n");

      printf("按任意键返回。\n");

      while(getchar()!=EOF)

      {

       system("cls");

       goto qukuan;}

      break;

         }

     case 3:{

      printf("正在取款,请稍候......\n");

      money[Num]-=500;

      l+=500;

      printf("取款成功!\n");

      printf("按任意键返回。\n");

      while(getchar()!=EOF)

      {

       system("cls");

       goto qukuan;

      }

      break;

         }

     case 4:{

      printf("正在取款,请稍候......\n");

      money[Num]-=1000;

      l+=1000;

      printf("取款成功!\n");

      printf("按任意键返回。\n");

      while(getchar()!=EOF)

      {

       system("cls");

       goto qukuan;}

      break;

         }

     case 5:{

      printf("正在取款,请稍候......\n");

      money[Num]-=2000;

      l+=2000;

      printf("取款成功!\n");

      printf("按任意键返回。\n");

      while(getchar()!=EOF)

      {

       system("cls");

       goto qukuan;}

      break;

         }

     case 6:goto shuru;break;

     default:{

      printf("输入错误!\n");

      printf("按任意键返回。\n");

      while(getchar()!=EOF)

      {

       system("cls"); 

       goto qukuan;}

      break;

       }

     }

    }

   }

   break;}

               case 2:goto shuru;break;

               default:{

       printf("输入错误!\n");

       printf("按任意键返回。\n");

       while(getchar()!=EOF)

       {

        system("cls");

        goto qukuan;}

       break;

        }

  }

mimaxiugai://进入修改密码页面。

  printf("|-----修改密码-----|\n");

  printf("| 请选择:         |\n");

  printf("| 1.修改密码。     |\n");

  printf("| 2.返回上一级。   |\n");

  printf("|__________________|\n");

  scanf("%d",&x);

  fflush(stdin);

  switch(x)

  {

  case 1:{

   printf("请输入新密码(六位):\n");//第一次输入。

   for(m=0;m<=5;m++)

   {

    s[m]=getch();//这里,输入时可以显示*,但是不能用退格健。

    printf("*");//退格键会被当作一个字符输入。问题有待解决……

   }

   printf("请重新输入密码(六位):\n");//第二次输入。

   for(m=0;m<=5;m++)

   {

    t[m]=getch();

    printf("*");

   }

   for(m=0;m<=5;m++)//判断两次输入是否相同。

   {

    if(s[m]!=t[m])

    {

     printf("输入与第一遍不符!\n");

     printf("按任意键返回。\n");

     while(getchar()!=EOF)

     {

      system("cls");

      goto mimaxiugai;}

    }

   }//计算出密码。=_=|||凭我的智商只想出了这种方法……

   num[Num]=s[0]*100000+s[1]*10000+s[2]*1000+s[3]*100+s[4]*10+s[5];

   //此种计算密码的方法是错误的,但是没有发现哪里出了错。希望老师帮忙解决下~谢啦~~

   printf("密码修改完成!\n");

   printf("按任意键返回。\n");

   while(getchar()!=EOF)

   {system("cls");

   goto mimaxiugai;}

      }  

  case 2:system("cls");goto shuru;break;

  default:{

   printf("输入错误!\n");

   printf("按任意键返回。\n");

   while(getchar()!=EOF)

   {

    system("cls");

    goto mimaxiugai;}

   break;

    }

  }  

zhuanzhang://进入转账页面。

  printf("|-----转帐-----|\n");

  printf("| 请选择:     |\n");

  printf("| 1.转帐       |\n");

  printf("| 2.返回上一级 |\n");

  printf("|______________|\n");

  scanf("%d",&x);

  fflush(stdin);

  switch(x)

  {

  case 1:{//开始转账。

   printf("请输入转账给的用户账号:\n");

   scanf("%d",&Num1);

   fflush(stdin);

   printf("请再次输入账号:\n");//确认。

   scanf("%d",&Num2);

   fflush(stdin);

   if(Num1==Num2)//如果两次输入相同,则进行转账。

   {

    printf("请输入转账金额:\n");

    scanf("%d",&ll);

    fflush(stdin);

    if(money[Num]>=ll)

    {

    money[Num]-=ll;

    money[Num1]+=ll;

    printf("转账成功!!\n");

    printf("按任意键返回。\n");

    while(getchar()!=EOF)

    {system("cls");

    goto zhuanzhang;}

    }

    else

    {

    printf("余额不足!!\n");

                printf("按任意键返回。\n");

    while(getchar()!=EOF)

    {system("cls");

    goto zhuanzhang;}

    }

    break;

   }

   else

   {//输入不同,则返回。

    printf("账号确认失败!\n");

    printf("按任意键返回。\n");

    while(getchar()!=EOF)

    {system("cls");

    goto zhuanzhang;}

   }

      }

  case 2:system("cls");goto shuru;break;

  default:{

   printf("输入错误!!\n");

   printf("按任意键返回。\n");

   while(getchar()!=EOF)

   {system("cls");

   goto zhuanzhang;}

   break;}

  }

yuechaxun://进入余额查询页面。直接打印出余额。

  printf("|-----余额查询-----|\n");

  printf("|当前余额:%6d---|\n",money[Num]);

  printf("|  按0返回上一级   |\n");

  printf("|__________________|\n");

  scanf("%d",&x);

  fflush(stdin);

  switch(x)//按0返回。

  {

  case 0:system("cls");goto shuru;break;

  default:{

   printf("输入错误!请重新输入。\n");

   printf("按任意键返回。\n");

   while(getchar()!=EOF)

   {

    system("cls");

    goto yuechaxun;

   }

   break;

    }

  }

guanli://进入管理员页面。可以查询用户信息。

  printf("|------查询用户信息------|\n");

  printf("|      1.输入账号.       |\n");

  printf("|     2.返回上一级.      |\n");

  printf("|________________________|\n");

  printf("请输入选项:");

  scanf("%d",&x);

  switch(x)

  {

  case 1:{

   printf("请输入账号:");

   scanf("%d",&Num);

   fflush(stdin);

   printf("|--用户名称:%06d-------|\n",Num);

   printf("|  用户密码:%06d       |\n",num[Num]);

   printf("|  用户余额:%6d       |\n",money[Num]);

   printf("|________________________|\n");

   if(feng[Num]==1)

   {

    printf("该账号已被封存!\n");

    printf("是否解封?(Y/N)\n");

    scanf("%c",&x);

    if((x=='y')||(x=='Y'))

    {

     feng[Num]=0;

     printf("账号已解封!\n");

    }

    else

     break;

   }

   printf("按0返回上一级。");

   scanf("%d",&x);

            fflush(stdin);

            switch(x)

   {

   case 0:{

    system("cls");

    goto guanli;

    break;

       }

   default:break;

   }

      }

  case 2:system("cls");goto guanlimoshi;break;

  default:{

   printf("输入错误!请重新输入:");

   printf("按任意键返回。\n");

   while(getchar()!=EOF)

   {

    system("cls");

    goto guanli;

   }

   break;

    }

  }

lishijilu:

  printf("|----------------历史纪录-----------------|\n");

  printf("| 对不起,本功能尚未完善,敬请期待后续……|\n");

  printf("|               * ^__^ *                  |\n");

  printf("|_________________________________________|\n");

        printf("按任意键返回。\n");

  while(getchar()!=EOF)

  {

   system("cls");

   goto shuru;

  }

  

  

  

 }

 

}

你可能感兴趣的:(ATM)