模拟ATM机(缺少文件操作部分,不能实现真正意义上的存储)





代码实现:


#import <Foundation/Foundation.h>



// 函数声明部分

int validateInput(int num ,int min , int max);

int isCunZai(int a[] ,int b);

int isKeyRight(int keys[]);

void doAdd();

void doDelete();

void doList();

void setSecret();

int acountIndex = 0;// 账户对应的下标



int main(int argc,const char * argv[]) {

    

    // 定义一个存储账户的数组acount

   int acounts[]={147258,258147,784512,124578,852741};

    

    //定义一个存储密码的数组key

   int keys[] = {10000,10001,10086,100811,123456};

    

    // 定义一个存储钱的数组rmb

   int rmb[] = {100000 , 100000 , 100000 , 100000 , 100000};

    

    

    //判断账号是否存在

    

    //用于接收账户

   int acount = 0;

    // 提示输入账号

    printf("Enter your acount:\n");

   scanf("%d" , &acount);

   if (isCunZai(acounts, acount)) {

       return 0;

    }

    

    //判断密码是否正确

   if (isKeyRight(keys)==1)

       return 0;

    

    // 打印面板

   while (1) {

       int hf = 0;

       //打印面板

        printf("*******************************\n");

        printf("*****欢迎使用XXX银行  **********\n");

        printf("***** 1、取款  2、存款 **********\n");

        printf("***** 3、查看剩余金额  **********\n");

        printf("***** 4、修改密码      **********\n");

        printf("***** 5、退出系统      **********\n");

        printf("*******************************\n");

        

        printf("请输入1 - 5编号对应的功能:\n");

       scanf("%d" , &hf);

       validateInput(hf, 1, 5);

       switch (hf) {

           case 1:

               doDelete(rmb);

               break;

           case 2:

               doAdd(rmb);

               break;

                

           case 3:

               doList(rmb);

               break;

           case 4:

               setSecret(keys);

               break;

           case 5:

               printf("系统退出中...\n");

               printf("系统已经退出\n");

               return 0;

               break;

            

           default:

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

               break;

        }

    }

    

   return 0;

}





// 为判断输入的账号是否存在作准备

BOOL isExist(int a[] ,int b)

{

   int i = 0;

   while (i < 5) {

       if (b == a[i]) {

           return YES;

        }

        i++;

    }

    return NO;

}


// 记录账户的下标

int idx(int a[] ,int b)

{

   int num = 0;

   for (int i = 0;  i < 5; i++) {

       if (a[i] == b) {

            num = i;

           break;

        }

    }

   return num;

}



// 判断账号是否在账户列表中

int isCunZai(int a[] ,int b)

{

   int flag = 0;

   int num = 1;

   while (1)

    {

        // 定义变量用来接受账户

       int acount = 0;

       if (num == 5)

        {

            printf("连续5次输入错误,账户已被拉黑,系统退出中。。。");

           printf("系统已经退出");

            flag = 1;

           break;

        }

        

       if (isExist(a, b))

        {

            

            // 记录 账号的下标 并退出循环

           acountIndex = idx(a, b);

           break;

            

        }else {

            num++;

        }

        

        // 提示输入账号

        printf("Enter your acount:\n");

       scanf("%d" , &acount);

        

    }

   return flag;

}


// 判断密码是否正确

int isKeyRight(int keys[])

{

    

    int key = 0 , num1 = 1 ,q=0;

    while (1) {

        // 提示输入密码

        printf("Enter your key:\n");

        scanf("%d" , &key);

        if (num1 == 3) {

            printf("24小时内禁止操作该卡!");

            q=1;

            break;

        }

        

        if (key == keys[acountIndex]) {

            

            break;

            

        } else {

            printf("你还剩余%d次机会\n" , 3 - num1);

            num1++;

        }

    }

    return q;

}


//判断编号是否合法

int validateInput(int num ,int min , int max){

    

   if (num < min || num > max) {

       printf("非法的输入!\n");

       return 1;

    }

   return 0;

    

}


// 存款

void doAdd(int rmb[])

{

   int rmb1 = 0;

    printf("你选择的是存款\n");

    printf("请输入存款金额\n");

   scanf("%d" , &rmb1);

    rmb[acountIndex] += rmb1;

}



// 取款

void doDelete(int rmb[])

{

   int rmb1 = 0;

    printf("你选择的是取款:\n");

    printf("请输入取款金额:\n");

   scanf("%d" , &rmb1);

    rmb[acountIndex] -= rmb1;

}


// 查剩余金额

void doList(int rmb[])

{

    printf("你选择的是查看余额:\n");

    printf("账户所剩金额为: %d\n",rmb[acountIndex]);

}


// 修改密码

void setSecret(int keys[])

{

   int key = 0;

   int num = 0;

    printf("你选择的是修改密码:\n");

    printf("请输入新的密码:\n");

   scanf("%d" , &key);

    printf("你确认要修改密码么? 1.确认 2.取消\n");

   scanf("%d" , &num);

   if (num == 1) {

        keys[acountIndex] = num;

    }

}




试运行结果:


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值