zoukankan      html  css  js  c++  java
  • ATM函数实现

    #include <stdio.h>
    #include <stdlib.h>
    #define kSuccess 1
    #define kWrong 0
    
    int password=123456;
    float balance = 1000;
    //输入密码操作
    int inputpassword(void);
    //退出程序操作
    void shut(void);
    //提示用户操作
    void show(char *a[],int n);//指针数组 数组中的每一个元素均为指针 这里元素均为字符串 所以用到指针数组
    //用户选择
    int choice(int max);
    //修改密码操作
    void revise(void);
    //取款操作
    void draw(void);
    //是否继续
    void continuation(void);
    
    int main(int argc, const char * argv[]) {
        // inputpassword();不需要 下面又调用了一次
        int receive = inputpassword();
        if (receive == kWrong) {
            shut();
        }
        
        while(1){
            char *a[4]={"修改密码","取款","查询","退出"};
            show(a, 4);
            int op=choice(4);
            switch (op) {
                case 1:
                    revise();
                    continuation();
                    break;
                case 2:
                    draw();
                    continuation();
                    break;
                case 3:
                    printf("您的余额的为:%f
    ",balance);
                    continuation();
                    break;
                case 4:
                    shut();
                    break;
                default:
                    break;
            }
        }
        
        return 0;
    }
    
    int inputpassword(void)
    {
        int wrongtime = 0;
        int inputpwd = 0;
        while(1){
            printf("请输入密码:");
            scanf("%d",&inputpwd);
            if (inputpwd == password) {
                return kSuccess;
            }else{
                wrongtime++;
                if (wrongtime == 4) {
                    printf("抱歉,您的密码输入错误次数过多,您的银行卡将被锁定
    ");
                    return kWrong;
                }else{
                    printf("密码错误 ");
                }
            }
        }
    }
    
    void shut(void)
    {
        printf("感谢您的使用 再见!");
        exit(EXIT_SUCCESS);
    }
    
    void show(char *a[],int n)
    {
        printf("****************
    ");
        for (int i=0; i<n;i++ ) {
            printf("%d.%s
    ",i+1,a[ i ]);
        }
        printf("****************
    ");
    }
    
    int choice(int max)
    {
        int op = 0;
        while(1){
            printf("请按提示选择操作:");
            scanf("%d",&op);
            if (op>0&&op<=max) {
                return op;
            }else{
                printf("输入有误");
            }
        }
    }
    
    void revise(void)
    {
        int inputpwd = 0;
        while(1){
            printf("请输入原密码:");
            scanf("%d",&inputpwd);
            if (inputpwd ==password) {
                printf("请输入新密码:");
                scanf("%d",&password);
                while(1){
                    printf("请再次输入新密码:");
                    scanf("%d",&inputpwd);
                    if (inputpwd == password) {
                        printf("密码修改成功 !");
                        break;
                    }else{
                        printf("您两次输入的密码不一致:");
                    }
                }
                break;
            }else{
                printf("密码错误 ");
            }
        }
    }
    
    void draw(void)
    {
        int money = 0;
        char *a[5]={"100","200","500","1000","其他"};
        show(a, 5);
        int op=choice(5);
        switch (op) {
            case 1:
                money =100;
                break;
                case 2:
                money =200;
                break;
                case 3:
                money = 500;
                break;
                case 4:
                money = 1000;
                break;
                case 5:
                printf("请输入您的取款金额:");
                scanf("%d",&money);
                break;
            default:
                break;
        }
        if (money<balance) {
            balance-=money;
            printf("取款成功");
        }else{
            printf("余额不足!");
        }
    }
    
    void continuation(void)
    {
        printf("是否继续:‘y'/'n'
    ");
        char op;
        getchar();
        op=getchar();
        if (op=='n') {
            shut();
        }
    }
  • 相关阅读:
    redis为何单线程 效率还这么高 为何使用跳表不使用B+树做索引(阿里)
    阿里笔试-生产者消费者模式
    调用 redis 原子命令,保证多线程安全 的incr命令问题
    忽略警告注解@SuppressWarnings详解
    怎样查出连续数字中缺失的数字
    IDEA-Maven的Dependencies中出现红色波浪线
    Java实现AES加密(window机器和linux机器) 注意window机器 和linux机器算法稍有不同
    PR代码提交规范
    接口的幂等性,如何保证
    bash 括号(小括号,双小括号,中括号,双中括号,大括号)
  • 原文地址:https://www.cnblogs.com/kinghyt/p/10156707.html
Copyright © 2011-2022 走看看