美文网首页
C语言入门-ATM机的操作界面(函数进阶版)

C语言入门-ATM机的操作界面(函数进阶版)

作者: 南在南方i | 来源:发表于2019-08-01 00:04 被阅读0次

通过今天的学习,让我进一步的适应了编程的逻辑门路,更深层次的懂得了编程的思想,初步认知与了解函数版块的使用方法

代码的逻辑结构

1.搭建框架
2.不需要做具体的事情
3.将具体的事情交给每一个函数去实现

使用函数的目的

  • 代码结构太复杂 不利于阅读 不利于移植
  • 函数为代码块 一个代码块解决一个问题(一个功能对应一个函数)
  • 代码块的形式为{ }

使用函数的注意事项

  • 先声明 后使用
  • 了解需求进行判断函数是否需要返回值
  • 一个函数可在相应代码段落中多次使用

demo中使用的不同种类函数

int getChoice() {
    int ch;
    while (1) {
        printf("请选择操作:");
        scanf_s("%d", &ch);
        if (ch >= 1 && ch <= 4) {
            return ch;
        }
        else {
            printf("选择不合法 请重新选择:");
            fflush(stdin);
        }
    }
}
  • 此函数需要进入main()函数被下方代码使用,因此需要返回值
void welcome(void) {
    printf("***********\n");
    printf("  welcome\n");
    printf("***********\n\n");
}
  • 此函数只需显示文本无需进行二次操作,因此无需返回值
bool inputpassword(void) {
    int password ;
    int wrongTime=0;

    while (1) {
        printf("请输入密码:");
        scanf_s("%d", &password);
        if (password == orgPassword) {
            return true;
        }
        else {
            wrongTime++;
            if (wrongTime == 4) {
                return false;
            }
            else {
                printf("密码错误,");
            }
        }
    }
}
  • 此函数为bool类型,需要判断对错并在main()函数中进行下步操作,因此需要返回值
  • 注:为方便整洁,可将所有函数全部存入头文件当中并在源文件中进行调用,如图


    将函数存入头文件中.png

ATM机的操作界面(函数进阶版)代码整合

#include <iostream>

void welcome(void);
void exitATM(int status);
bool inputpassword(void);
void showMenu(void);
int getChoice(void);
void withdrow(void);
bool isContinue(void);
void deposit(void);
void setPassword(void);

int orgPassword = 123;
int totalMoney = 1000;

int main()
{
    
    //欢迎
    welcome();

    //输入密码
    bool result = inputpassword();
        if (result == false) {
            exitATM(EXIT_SUCCESS);
        }

        while (1) {
            //进入菜单
            showMenu();

            //选择操作
            int choice = getChoice();

            //判断操作
            
            switch (choice)
            {
            case(1):
                //取款
                withdrow();
                break;
            case(2):
                //存款
                deposit();
                break;
            case(3):
                //设置密码
                setPassword();
                break;
            default:
                exitATM(EXIT_SUCCESS);
                break;
            }
    }
}


//欢迎界面
void welcome(void) {
    printf("***********\n");
    printf("  welcome\n");
    printf("***********\n\n");
}

//结束界面
void exitATM(int status) {
    printf("********************\n");
    printf(" 感谢您的使用 再见!\n");
    printf("********************\n");
    exit(status);
}

//输入密码
bool inputpassword(void) {
    int password ;
    int wrongTime=0;

    while (1) {
        printf("请输入密码:");
        scanf_s("%d", &password);
        if (password == orgPassword) {
            return true;
        }
        else {
            wrongTime++;
            if (wrongTime == 4) {
                return false;
            }
            else {
                printf("密码错误,");
            }
        }
    }
}

//进入界面
void showMenu() {
    printf("***************\n");
    printf("   1.取款\n");
    printf("   2.存款\n");
    printf("   3.更改密码\n");
    printf("   4.退出\n");
    printf("***************\n\n");
}

//进行选择
int getChoice() {
    int ch;
    while (1) {
        printf("请选择操作:");
        scanf_s("%d", &ch);
        if (ch >= 1 && ch <= 4) {
            return ch;
        }
        else {
            printf("选择不合法 请重新选择:");
            fflush(stdin);
        }
    }
}

//取款
void withdrow() {
    int getMoney;

    while (1)
    {
        printf("请输入取款金额:");
        scanf_s("%d", &getMoney);
        if (getMoney < totalMoney) {
            totalMoney = totalMoney-getMoney;
            printf("取款成功 当前余额为%d\n", totalMoney);
            bool result = isContinue();
            if (result == false) {
                return;
            }
        }
        else {
            printf("余额不足,");
        }
        }
    }

bool isContinue() {
    fflush(stdin);

    printf("是否继续取款(Y/N):");
    getchar();
    char ch = getchar();
    if (ch == 'N') {
        return false;
    }if (ch == 'Y') {
        return true;
    }
}

//存款
void deposit(void) {
    int inputMoney;
    printf("请输入存款金额:");
    scanf_s("%d", &inputMoney);
    totalMoney += inputMoney;
    printf("存款成功 余额:%d\n", totalMoney);
}

//更改密码
void setPassword() {
    int newPassword1;
    int newPassword2;
    bool result = inputpassword();
    if (result = true) {
        while (1) {
            printf("请输入新密码:");
            scanf_s("%d", &newPassword1);

            printf("请确认新密码:");
            scanf_s("%d", &newPassword2);

            if (newPassword1 == newPassword2) {
                printf("密码设置成功!\n");
                return;
            }
            else {
                printf("密码错误,");
            }
        }
    }
}

PS.

  • 英语真的很重要 英语真的很重要 英语真的很重要
  • 第一次能完整的写出大概200行的程序,比较有成就感
  • 初入函数还较为吃力,缺乏编程的逻辑思维能力,总是对他人编写好的程序进行观摩后才恍然大悟
  • 头发哗哗的掉 晚安

whereas I was blind, now I see.——《Gospel According to John》

相关文章

网友评论

      本文标题:C语言入门-ATM机的操作界面(函数进阶版)

      本文链接:https://www.haomeiwen.com/subject/glxfdctx.html