Android开发Day3(2019-7-30) 银行demo和函数用法

      目的: 今天东哥主要带我们用C语言做了一个简易版的模拟ATM,在之前我们也自己尝试着用了自己的方法做了一个ATM模拟的demo。东哥在上午先是带我们不用函数 一步一步地做了一个demo,下午的时候再用函数的方法做了一个demo。通过两种方法,让我们体会到了其中的差异,让我们了解了函数了用法,加深了循环语句和选择语句的具体用法的理解,让我们体会到了函数的优势所在。


      技术:1.为什么要用函数

                  2.函数的定义和使用


      每个技术如何使用:1.为什么要用函数(函数就是一个代码块)

-代码结构太复杂 不利于阅读  不利于移植  copy

-代码块 一个代码块解决一个问题

-代码块就是{ }  { }

                                        2.(1)

有参函数和无参函数

                                  (2)如果函数放在主函数的前面,可以不用声明;


                                  如果放在主函数的后面的话, 主函数前面需要声明,即 :先声明,后实现

                                          自己创建一个头文件.h

                                                  .h头文件

                                                  .h文件用于函数的声明

                                          实现文件.c封装操作

                                                  .c文件用于实现某个头文件里面的函数


      实际使用:1.ATM(不用函数的方法)模拟实现

#import

#include

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

    //保存原始密码

    int password = 123;

    int inputPwd = 0;

    int totalTime = 4;

    int totalMoney = 1000;

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

    printf("  欢迎使用\n");

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

    //一个模块完成一个功能 耦合性降低

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

    while (1) {

        scanf("%d", &inputPwd);

        if (inputPwd == password) {

            //密码正确

            break;

        }else{

            totalTime--;

            if (totalTime == 0) {

                printf("此卡已冻结 请联系客服!\n");

                //退出

                exit(EXIT_FAILURE);

            }else{

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

            }

        }

    }

    //密码正确

    char choice;

    while(1){

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

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

        printf("2.存款\n");

        printf("3.设置密码\n");

        printf("4.退出\n");

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

        //判断输入是否合法

        char ch[20] = {};

        while (1) {

            //去掉上一次输入的回车符 \n

            printf("请选择操作:");

            int count = scanf("%s", ch);

            if (count != 1) {

                printf("输入不合法 ");

            } else{

                //获取第一个字符

                choice = ch[0];

                if (choice == '1' || choice == '2' || choice == '3' || choice == '4') {

                    break;

                } else{

                    printf("输入不合法 ");

                }

            }

        }

        //检测到底选择的是什么操作

        char choice2;

        int newPassword1 = 0;

        int newPassword2 = 0;

        switch (choice) {

            case '1':

                //取款

                while(1){

                    int outMoney = 0;

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

                    scanf("%d", &outMoney);

                    if (outMoney > totalMoney) {

                      //金额不足

                        printf("余额不足是否继续(y/n):");

                        getchar();

                        choice2 = getchar();

                        if (choice2 == 'n') {

                            break;

                        }

                    }else{

                        totalMoney -= outMoney;

                        printf("取款成功 余额为:%d\n", totalMoney);

                        break;

                    }

                }

                break;

            case '2':

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

                int inputMoney = 0;

                scanf("%d", &inputMoney);

                totalMoney += inputMoney;

                printf("存款成功 余额为:%d\n", totalMoney);

                break;

            case '3':

                while (1) {

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

                    scanf("%d", &newPassword1);

                    printf("请确认密码:");

                    scanf("%d", &newPassword2);

                    if (newPassword1 == newPassword2){

                        password = newPassword1;

                        printf("更改密码成功\n");

                        break;

                    }else{

                        printf("两次密码不一致 ");

                    }

                }

                break;

            default:

                printf("感谢你的使用 再见!!!\n");

                exit(EXIT_SUCCESS);

                break;

        }

    }

    return 0;

}

2.ATM(函数法)实现

#import

bool loginATM(void);

void welcome(void);

void exitATM(int status);

void showMenu(void);

char getChoice(void);

void withdraw(void);//取款

bool isContinue(void);

void deposit(void);//存款

void setPassword(void);

//定义一个全局变量

int orgPassword = 123;

int totalMoney = 1000;

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

    //欢迎界面

    welcome();

    //登录

    bool result = loginATM();

    if (result == false) {

        //密码错误次数过多

        exitATM(EXIT_FAILURE);

    }

    //主要操作

    while (1) {

        //提示操作

        showMenu();

        //接收用户的选择

        char choice = getChoice();

        //判断用户的选择

        switch(choice){

            case '1':

                //取款

                withdraw();

                break;

            case '2':

                //存款

                deposit();

                break;

            case '3':

                //设置密码

                setPassword();

                break;

            default:

                exitATM(EXIT_SUCCESS);

                break;

        }

    }

    return 0;

}

bool loginATM(void){

    int password = 0;

    int wrongTime = 0;

    while(1){

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

        scanf("%d", &password);

        if (password == orgPassword) {

            return true;

        }else{

            wrongTime++;

            if (wrongTime == 4) {

                return false;

            }else{

                printf("密码错误,");

            }

        }

    }

}

void welcome(void){

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

    printf("  欢迎使用ATM\n");

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

}

void exitATM(int status){

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

    printf("  感谢你的使用 再见!!!\n");

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

    exit(status);

}

void showMenu(void){

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

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

    printf("2.存款\n");

    printf("3.设置密码\n");

    printf("4.退出\n");

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

}

char getChoice(void){

    //将输入的所有字符串全部从缓存里面读取出来

    char temp[20] = {};

    while (1) {

        printf("请选择操作:");

        int count = scanf("%s", temp);

        //确保值输入一个字符

        if (count != 1) {

            printf("输入不合法,");

        } else{

            //获取输入的字符

            char ch = temp[0];

            //虽然输入一个字符 也可能不正确

            if (ch == '1' || ch == '2' || ch == '3' || ch == '4') {

                return ch;

            }else{

                printf("输入不合法,");

            }

        }

    }

}

//取款

void withdraw(void){

    int outMoney = 0;

    while (1) {

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

        scanf("%d", &outMoney);

        if(outMoney > 0 && outMoney <= totalMoney){

            totalMoney = totalMoney - outMoney;

            printf("取款成功 余额为:%d\n", totalMoney);

            //提示是否继续

            bool ch = isContinue();

            if (ch == false) {

                return; //break;

            }

        }else{

            printf("余额不足,");

        }

    }

}

bool isContinue(void){

    printf("是否继续?(y/n):");

    getchar();

    char ch = getchar();

    if (ch == 'n') {

        return false;

    }else{

        return true;

    }

}

void deposit(void){

    int intputMoney = 0;

    while (1) {

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

        scanf("%d", &intputMoney);

        totalMoney = totalMoney + intputMoney;

        printf("存款成功,余额为:%d\n", totalMoney);

        bool ch = isContinue();

        if (ch == false) {

            return; //break;

        }

    }

}

void setPassword(void){

    int newPwd1 = 0;

    int newPwd2 = 0;

    while (1) {

        //输入原始密码

        bool result = loginATM();

        if (result == true) {

            while (1) {

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

                scanf("%d", &newPwd1);

                printf("请确认密码:");

                scanf("%d", &newPwd2);

                if (newPwd1 == newPwd2) {

                    printf("设置密码成功!\n");

                    return;

                } else{

                    printf("两次密码不一致,");

                }

            }

        }

    }

}

心得:通过这一天的学习让我慢慢加深了对函数使用的理解,让我明白了在编写程序中使用函数的优势:如果没有函数,当遇到多个类似的功能,需要反复的去重复编写类似的代码,增加了工作量且不便于阅读,出程序看起来会变得非常的臃肿。而如果使用了函数,主程序会变得简易许多,工作量也会大大减少。因此我们在编写程序的使用需要合理使用好函数。

你可能感兴趣的:(Android开发Day3(2019-7-30) 银行demo和函数用法)