2019-07-29 Day2 C语言demo1 银行atm自助程序

目的

通过今天对于C语言数据类型和循环结构,判断结构的学习,完成对于银行自助存取款机的程序模拟,通过完成程序的编写,来锻炼对于循环结构判断结构的使用熟练度,为日后更深入的学习打好基础。

技术

所学习的语法有
1.if ()语句
2.if (){}else{}语句
3.if(){} else if(){}语句
4.for( ; ; ){}循环
5.while(){}循环
6.switch case语句

如何使用所学的知识完成demo

if语句的使用

if(表达式)语句。
例如:if(x>y)printf("%d",x);
此时,如果表达式为真,则执行printf语句。

if else语句的使用

例如:if(x>y)printf("%d",x);
else printf("%d",y);
此时,如果x>y成立为真,则执行语句printf("%d",x),然后直接跳过else,同时也跳过语句printf("%d",y),去执行之后的语句。
如果x>y不成立为假,则不执行语句printf("%d",x),执行语句printf("%d",x)。

if else if语句的使用

if(表达式1)语句1
else if(表达式2)语句2
else if(表达式3)语句3
else if(表达式m)语句m
else 语句 n
此时,哪个表达式为真,则运行哪个if后面的语句。如表达式3成立为真,执行语句3。

for循环的使用

可重复循环并记录次数

int i,a=0;
for(i=0; i<5; i++)  // for循环就控制程序对于语句a++执行5数,执行一次i的值就加1(由for循环中i++控制,i的初始值由i=0控制)
{
    a++;
}
// 程序执行完后i=5, a=5

while语句的使用

while语句也是循环语句 但是并不关心循环的次数

while (表达式)
{
        语句;
}

switch case 语句的使用

根据输入的i的不同的值 进入不同的case实现不同的语句,当出现多种情况并列时switch case看起来更简洁

scanf_s("%d", &i);
        switch (i) {
        case 1:printf("开始取款\n"); break;
        case 2:printf("开始存款\n"); break;
        case 3:printf("开始设置密码\n");break;
        case 4:return 0; 
        default:printf("输入不合法请重新输入\n"); break;

        }

实际使用技术完成demo

1.先定义我们所需要的变量并设置页面


    int i,a,s,q;
    int c = 5;
    int newpassword,newpassword2;
    int password = 123;
    int left = 100;
    int money;
    int totalmoney;
    printf("********************\n");
    printf("      欢迎光临      \n");
    printf("********************\n");
    printf("请输入密码");
    scanf_s("%d", &i);

2.根据现实中的atm机器 并运用循环和判断结构对程序进行编写

if (i == password) {
        begin:
        printf("1.取款\n");
        printf("2.存款\n");
        printf("3.设置密码\n");
        printf("4.退出\n");
        printf("请选择你的操作");
        scanf_s("%d", &a);
        if (a == 1) {begin2:
            printf("请输入取款金额");
            scanf_s("%d", &money);
            totalmoney = left-money;
            if (money <= left) {
                printf("成功,当前余额为%d,返回上一级\n", totalmoney);
                goto begin;
            }
            else {
                printf("金额不足 取款失败是否继续?继续请打1,退出请打2:");
                scanf_s("%d", &s);
                if (s == 1) {
                    goto begin2;
                }
                else if (s == 2) {
                    goto begin;
                }
            }
        }
        if (a == 2) {
            printf("请输入存款金额");
            scanf_s("%d", &money);
            totalmoney = money + left;
            printf("成功!当前余额为%d,返回上一级\n", totalmoney);
            goto begin;
        }
        if (a == 3) {
            printf("请输入原始密码");
            scanf_s("%d", &i);
            if (i == password) {
                begin3:
                printf("请设置新密码:");
                scanf_s("%d", &newpassword);
                printf("再次输入密码:");
                scanf_s("%d", &newpassword2);
                if (newpassword == newpassword2) {
                    printf("密码重置成功!,已自动返回上一级\n");
                    goto begin;
                }
                else {
                    printf("两次输入的密码不一致,请重新输入:");
                    goto begin3;
                }
            }
        }
        if (a == 4) {
            return 0;
        }
    }
    else {
        printf("密码错误,请重新输入:");
        for (c; c>0; ) {
            //printf("密码错误,请重新输入:");
            scanf_s("%d", &i);
            if (i != password) {
                c--;
                if (c <= 0) {
                    printf("今日错误次数过多 此卡已经冻结,按1退出:");
                    scanf_s("%d", &q);
                    if (q == 1)
                    {
                        return 0;
                    }           
                }
                printf("密码输入错误请重试,可尝试次数为%d:", c);
            }
            else {
                goto begin;
            }
        }
    }

在这个程序中,我使用了循环和判断结构,,在今天这个demo的情况下 循环语句使得程序更贴近与现实中atm的同时,很简洁的完成了操作,,同时在这种大量嵌套循环判断的语句中,一定要注意代码格式,这样才更方便错误的检查和他人的阅读。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容